aboutsummaryrefslogtreecommitdiff
path: root/crypto/heimdal/doc/doxyout
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/heimdal/doc/doxyout')
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/html/doxygen.css473
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/html/doxygen.pngbin0 -> 1281 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/html/graph_legend.dot22
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/html/graph_legend.html88
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/html/graph_legend.pngbin0 -> 4256 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/html/group__gssapi.html892
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/html/gssapi_mechs_intro.html30
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/html/gssapi_services_intro.html43
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/html/index.html36
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/html/internalvsmechname.html36
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/html/modules.html29
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/html/pages.html34
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/html/tab_b.gifbin0 -> 35 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/html/tab_l.gifbin0 -> 706 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/html/tab_r.gifbin0 -> 2585 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/html/tabs.css102
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/__gss_c_attr_stream_sizes_oid_desc.31
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_add_oid_set_member.31
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_canonicalize_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_import_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_init_sec_context.31
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_inquire_attrs_for_mech.31
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_inquire_saslname_for_mech.31
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_oid_equal.31
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_release_cred.31
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_release_iov_buffer.31
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_release_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_unwrap_iov.31
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_wrap.31
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_wrap_iov.31
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_wrap_iov_length.31
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/gssapi.3389
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/gssapi_mechs_intro.315
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/gssapi_services_intro.365
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/man/man3/internalvsmechname.320
-rw-r--r--crypto/heimdal/doc/doxyout/gssapi/manpages19
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/doxygen.css473
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/doxygen.pngbin0 -> 1281 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/example__evp__cipher_8c-example.html173
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/examples.html29
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/graph_legend.dot22
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/graph_legend.html88
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/graph_legend.pngbin0 -> 4256 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__core.html190
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__des.html910
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__dh.html581
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__evp.html2366
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__misc.html106
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__rand.html425
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__rsa.html278
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/index.html47
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/modules.html35
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/page_des.html45
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/page_dh.html30
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/page_evp.html30
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/page_rand.html28
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/page_rsa.html31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/tab_b.gifbin0 -> 35 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/tab_l.gifbin0 -> 706 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/tab_r.gifbin0 -> 2585 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/html/tabs.css102
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_cbc_cksum.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_cbc_encrypt.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_cfb64_encrypt.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_check_key_parity.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_ecb3_encrypt.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_ecb_encrypt.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_ede3_cbc_encrypt.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_encrypt.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_init_random_number_generator.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_is_weak_key.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_key_sched.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_new_random_key.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_pcbc_encrypt.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_random_key.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_set_key.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_set_key_checked.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_set_key_unchecked.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_set_odd_parity.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_string_to_key.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_check_pubkey.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_compute_key.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_generate_key.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_generate_parameters_ex.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_get_default_method.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_get_ex_data.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_ltm_method.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_new.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_new_method.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_null_method.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_set_default_method.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_set_ex_data.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_set_method.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_size.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_up_ref.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_BytesToKey.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_block_size.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_cipher.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_cleanup.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_ctrl.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_flags.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_get_app_data.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_init.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_iv_length.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_key_length.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_mode.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_rand_key.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_set_app_data.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_set_key_length.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_block_size.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_iv_length.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_key_length.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CipherFinal_ex.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CipherInit_ex.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CipherUpdate.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_Digest.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_DigestFinal_ex.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_DigestInit_ex.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_DigestUpdate.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_block_size.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_cleanup.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_create.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_destroy.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_init.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_md.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_size.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_block_size.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_size.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_128_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_128_cfb8.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_192_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_192_cfb8.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_256_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_256_cfb8.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_camellia_128_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_camellia_192_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_camellia_256_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_des_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_des_ede3_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_enc_null.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_get_cipherbyname.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_128_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_128_cfb8.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_192_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_192_cfb8.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_256_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_256_cfb8.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_camellia_128_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_camellia_192_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_camellia_256_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_des_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_des_ede3_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_md2.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_md4.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_md5.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_rc2_40_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_rc2_64_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_rc2_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_sha1.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_sha256.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_sha384.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_sha512.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_md2.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_md4.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_md5.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_md_null.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc2_40_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc2_64_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc2_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc4.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc4_40.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha1.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha256.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha384.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha512.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_wincrypt_des_ede3_cbc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/OpenSSL_add_all_algorithms.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/OpenSSL_add_all_algorithms_conf.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/OpenSSL_add_all_algorithms_noconf.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/PKCS5_PBKDF2_HMAC_SHA1.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_add.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_bytes.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_cleanup.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_file_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_get_rand_method.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_load_file.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_pseudo_bytes.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_seed.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_set_rand_engine.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_set_rand_method.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_status.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_write_file.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_get_app_data.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_get_method.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_new.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_new_method.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_set_app_data.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_set_method.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_up_ref.31
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_core.376
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_des.3392
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_dh.3310
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.31299
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_misc.344
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_rand.3200
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_rsa.3152
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_des.335
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_dh.310
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_evp.39
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_rand.36
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_rsa.312
-rw-r--r--crypto/heimdal/doc/doxyout/hcrypto/manpages153
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/html/annotated.html35
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/html/doxygen.css473
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/html/doxygen.pngbin0 -> 1281 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/html/functions.html85
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/html/functions_vars.html85
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/html/graph_legend.dot22
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/html/graph_legend.html87
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/html/graph_legend.pngbin0 -> 4256 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/html/index.html33
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/html/struct_h_d_b.html430
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/html/structhdb__entry__ex.html39
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/html/tab_b.gifbin0 -> 35 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/html/tab_l.gifbin0 -> 706 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/html/tab_r.gifbin0 -> 2585 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/html/tabs.css102
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/HDB.3185
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb__del.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb__get.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb__put.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_auth_status.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_check_constrained_delegation.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_check_pkinit_ms_upn_match.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_check_s4u2self.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_close.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_destroy.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_entry_ex.317
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_fetch_kvno.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_firstkey.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_get_realms.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_lock.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_nextkey.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_open.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_password.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_remove.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_rename.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_store.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_unlock.31
-rw-r--r--crypto/heimdal/doc/doxyout/hdb/manpages24
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/doxygen.css473
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/doxygen.pngbin0 -> 1281 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/graph_legend.dot22
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/graph_legend.html88
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/graph_legend.pngbin0 -> 4256 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/group__hx509.html89
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/group__hx509__ca.html1179
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/group__hx509__cert.html1425
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/group__hx509__cms.html504
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/group__hx509__crypto.html92
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/group__hx509__env.html311
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/group__hx509__error.html308
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/group__hx509__keyset.html781
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/group__hx509__lock.html29
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/group__hx509__misc.html88
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/group__hx509__name.html470
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/group__hx509__peer.html237
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/group__hx509__print.html452
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/group__hx509__query.html29
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/group__hx509__revoke.html378
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/group__hx509__verify.html714
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/index.html35
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/modules.html44
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/page_ca.html26
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/page_cert.html28
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/page_cms.html30
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/page_env.html26
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/page_error.html26
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/page_keyset.html29
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/page_lock.html26
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/page_name.html32
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/page_peer.html27
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/page_print.html26
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/page_revoke.html28
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/pages.html50
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/tab_b.gifbin0 -> 35 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/tab_l.gifbin0 -> 706 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/tab_r.gifbin0 -> 2585 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/html/tabs.css102
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509.345
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_bitstring_print.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3573
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_sign.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_sign_self.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_crl_dp_uri.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_eku.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_hostname.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_jid.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_ms_upn.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_otherName.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_pkinit.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_rfc822name.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_init.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_ca.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_domaincontroller.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_notAfter.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_notAfter_lifetime.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_notBefore.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_proxy.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_serialnumber.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_spki.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_subject.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_template.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_unique.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_subject_expand.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_template_units.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert.3700
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_binary.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_check_eku.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_cmp.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_find_subjectAltName_otherName.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_SPKI.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_SPKI_AlgorithmIdentifier.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_attribute.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_base_subject.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_friendly_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_issuer.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_issuer_unique_id.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_notAfter.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_notBefore.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_serialnumber.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_subject.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_subject_unique_id.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_init.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_init_data.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_keyusage_print.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_ref.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_set_friendly_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_add.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_append.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_end_seq.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_filter.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_find.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_info.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_init.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_iter_f.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_merge.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_next_cert.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_start_seq.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_store.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ci_print_names.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_clear_error_string.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms.3206
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_create_signed_1.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_envelope_1.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_unenvelope.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_unwrap_ContentInfo.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_verify_signed.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_wrap_ContentInfo.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_context_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_context_init.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_context_set_missing_revoke.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_add_revoked_certs.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_alloc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_lifetime.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_sign.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crypto.340
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3143
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_add.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_add_binding.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_find.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_find_binding.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_lfind.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_err.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_error.3129
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_free_error_string.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_free_octet_string_list.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_general_name_unparse.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_get_error_string.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_get_one_cert.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_keyset.3373
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_lock.35
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_misc.340
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name.3235
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_binary.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_cmp.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_copy.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_expand.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_is_null_p.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_to_Name.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_to_string.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ocsp_request.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ocsp_verify.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_oid_print.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_oid_sprint.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_parse_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer.3113
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_add_cms_alg.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_alloc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_set_cert.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_set_cms_algs.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_print.3211
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_print_cert.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_print_stdout.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query.35
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_alloc.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_cmp_func.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_eku.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_friendly_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_issuer_serial.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_option.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_statistic_file.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_unparse_stats.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke.3171
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_add_crl.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_add_ocsp.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_init.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_ocsp_print.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_verify.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_set_error_string.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_set_error_stringv.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_unparse_der_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_cert.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_ctx_add_flags.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_ctx_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_ctx_init.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_ctx_set_print.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3309
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_attach_anchors.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_attach_revoke.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_ctx_f_allow_default_trustanchors.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_destroy_ctx.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_hostname.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_init_ctx.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_path.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_set_max_depth.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_set_proxy_certificate.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_set_strict_rfc3280_verification.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_set_time.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_signature.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_xfree.31
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/page_ca.36
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/page_cert.310
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/page_cms.318
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.36
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/page_error.36
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/page_keyset.325
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/page_lock.36
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/page_name.318
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/page_peer.38
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/page_print.36
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/man/man3/page_revoke.310
-rw-r--r--crypto/heimdal/doc/doxyout/hx509/manpages172
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/annotated.html35
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/doxygen.css473
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/doxygen.pngbin0 -> 1281 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/graph_legend.dot22
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/graph_legend.html89
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/graph_legend.pngbin0 -> 4256 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/group__krb5.html2237
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/group__krb5__address.html1003
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/group__krb5__auth.html320
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/group__krb5__ccache.html2264
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/group__krb5__credential.html858
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/group__krb5__crypto.html1262
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/group__krb5__deprecated.html1289
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/group__krb5__digest.html87
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/group__krb5__error.html239
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/group__krb5__keytab.html1055
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/group__krb5__pac.html155
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/group__krb5__principal.html1180
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/group__krb5__storage.html2092
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/group__krb5__support.html1320
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/group__krb5__ticket.html73
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/group__krb5__v4compat.html134
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/index.html37
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/krb5_ccache_intro.html74
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/krb5_fileformats.html154
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/krb5_init_creds_intro.html29
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/krb5_introduction.html204
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/krb5_keytab_intro.html82
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/krb5_principal_intro.html32
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/modules.html45
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/pages.html41
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/structkrb5__crypto__iov.html40
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/tab_b.gifbin0 -> 35 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/tab_l.gifbin0 -> 706 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/tab_r.gifbin0 -> 2585 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/html/tabs.css102
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5.31092
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb524_convert_creds_kdc.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb524_convert_creds_kdc_ccache.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_acc_ops.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_acl_match_file.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_acl_match_string.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_add_et_list.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_add_extra_addresses.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_add_ignore_addresses.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_addr2sockaddr.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address.3461
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address_compare.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address_order.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address_prefixlen_boundary.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address_search.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_allow_weak_crypto.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_anyaddr.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_append_addresses.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_auth.3138
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_auth_getremoteseqnumber.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_build_principal.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_c_enctype_compare.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_cache_end_seq_get.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_cache_get_first.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_cache_match.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_cache_next.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_clear_mcred.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_close.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_copy_cache.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_copy_creds.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_copy_match_f.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_default.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_default_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_destroy.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_end_seq_get.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_gen_new.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_config.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_flags.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_friendly_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_full_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_kdc_offset.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_lifetime.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_ops.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_prefix_ops.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_principal.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_type.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_version.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_initialize.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_last_change_time.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_move.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_new_unique.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_next_cred.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_register.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_remove_cred.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_resolve.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_retrieve_cred.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_config.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_default_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_flags.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_friendly_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_kdc_offset.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_start_seq_get.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_store_cred.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_support_switch.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_switch.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3888
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache_intro.369
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cccol_cursor_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cccol_cursor_new.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cccol_cursor_next.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cccol_last_change_time.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_change_password.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cksumtype_to_enctype.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_clear_error_message.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_clear_error_string.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_compare_creds.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_file_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_free_strings.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_bool.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_bool_default.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_list.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_string.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_string_default.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_strings.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_time.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_time_default.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_parse_file_multi.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_parse_string_multi.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_bool.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_bool_default.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_list.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_string.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_string_default.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_strings.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_time.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_time_default.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_address.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_addresses.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_context.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_creds.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_creds_contents.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_data.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_host_realm.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_keyblock.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_keyblock_contents.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_principal.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_ticket.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_create_checksum_iov.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_credential.3279
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_creds_get_ticket_flags.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto.3550
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_destroy.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_fx_cf2.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_getblocksize.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_getconfoundersize.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_getenctype.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_getpadsize.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_init.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_iov.317
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_alloc.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_cmp.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_copy.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_ct_cmp.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_realloc.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_zero.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_decrypt_iov_ivec.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_deprecated.3269
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_digest.338
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_digest_probe.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_eai_to_heim_errno.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_encrypt_iov_ivec.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_enctype_disable.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_enctype_enable.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_enctype_valid.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_enctypes_compatible_keys.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_error.3105
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_expand_hostname.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_expand_hostname_realms.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fcc_ops.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fileformats.3233
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_address.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_addresses.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_config_files.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_context.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_cred_contents.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_creds.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_creds_contents.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_data.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_data_contents.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_error_string.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_host_realm.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_keyblock.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_keyblock_contents.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_principal.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_ticket.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_unparsed_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fwd_tgt_creds.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_generate_subkey.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_generate_subkey_extended.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_cred_from_kdc.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_cred_from_kdc_opt.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_default_config_files.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_default_in_tkt_etypes.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_dns_canonicalize_hostname.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_extra_addresses.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_fcache_version.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_forwarded_creds.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_ignore_addresses.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_in_tkt_with_keytab.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_in_tkt_with_password.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_in_tkt_with_skey.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_keyblock.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_keytab.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_opt_alloc.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_opt_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_opt_get_error.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_opt_init.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_password.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_kdc_sec_offset.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_max_time_skew.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_use_admin_kdc.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_validated_creds.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_h_addr2addr.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_h_addr2sockaddr.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_h_errno_to_heim_errno.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_context.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_get.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_get_error.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_init.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_intro.38
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_set_keytab.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_set_password.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_set_service.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_step.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_ets.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_introduction.3259
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_is_config_principal.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_is_thread_safe.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kerberos_enctypes.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keyblock_get_enctype.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keyblock_init.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keyblock_zero.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytab.3486
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytab_intro.374
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytab_key_proc.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytype_to_enctypes.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytype_to_enctypes_default.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytype_to_string.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_krbhst_get_addrinfo.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_add_entry.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_close.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_compare.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_copy_entry_contents.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_default.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_default_modify_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_default_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_destroy.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_end_seq_get.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_free_entry.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_get_entry.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_get_full_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_get_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_get_type.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_have_content.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_next_entry.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_read_service_key.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_register.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_remove_entry.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_resolve.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_start_seq_get.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kuserok.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_make_addrport.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_make_principal.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_max_sockaddr_size.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_mcc_ops.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_pac.366
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_pac_get_buffer.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_pac_verify.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_parse_address.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_parse_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_parse_name_flags.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_parse_nametype.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_password_key_proc.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_plugin_register.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_prepend_config_files_default.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_princ_realm.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_princ_set_realm.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3519
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_compare.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_compare_any_realm.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_get_num_comp.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_get_realm.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_get_type.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_intro.317
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_is_krbtgt.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_match.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_set_realm.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_set_type.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_print_address.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_random_to_key.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_ctx.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_in_ctx_alloc.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_in_set_keytab.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_in_set_pac_check.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_out_ctx_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_out_get_server.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_realm_compare.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_address.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_addrs.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_authdata.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_creds.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_creds_tag.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_data.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_int16.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_int32.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_int8.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_keyblock.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_principal.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_string.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_stringz.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_times.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_uint16.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_uint32.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_uint8.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_config_files.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_default_in_tkt_etypes.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_dns_canonicalize_hostname.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_error_message.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_error_string.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_extra_addresses.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_fcache_version.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_home_dir_access.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_ignore_addresses.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_kdc_sec_offset.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_max_time_skew.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_password.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_real_time.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_use_admin_kdc.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_sname_to_principal.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_sockaddr2address.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_sockaddr2port.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_sockaddr_uninteresting.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage.31055
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_clear_flags.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_emem.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_free.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_from_data.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_from_fd.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_from_mem.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_from_readonly_mem.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_get_byteorder.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_get_eof_code.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_is_flags.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_read.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_seek.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_set_byteorder.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_set_eof_code.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_set_flags.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_set_max_alloc.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_to_data.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_truncate.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_write.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_address.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_addrs.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_authdata.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_creds.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_creds_tag.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_data.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_int16.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_int32.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_int8.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_keyblock.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_principal.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_string.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_stringz.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_times.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_uint16.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_uint32.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_uint8.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_string_to_keytype.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_support.3650
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket.334
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_authorization_data_type.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_client.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_endtime.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_flags.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_server.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_fixed.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_fixed_flags.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_fixed_short.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_flags.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_short.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.360
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_verify_checksum_iov.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_vset_error_string.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_vwarn.31
-rw-r--r--crypto/heimdal/doc/doxyout/krb5/manpages360
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/annotated.html39
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/doxygen.css473
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/doxygen.pngbin0 -> 1281 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/examples.html30
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/functions.html78
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/functions_vars.html78
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/graph_legend.dot22
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/graph_legend.html89
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/graph_legend.pngbin0 -> 4256 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/group__ntlm__core.html936
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/index.html37
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/modules.html30
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/structntlm__buf.html82
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type1.html118
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type2.html159
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type2__coll__graph.map1
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type2__coll__graph.md51
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type2__coll__graph.pngbin0 -> 821 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type3.html194
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type3__coll__graph.map1
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type3__coll__graph.md51
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type3__coll__graph.pngbin0 -> 951 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/tab_b.gifbin0 -> 35 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/tab_l.gifbin0 -> 706 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/tab_r.gifbin0 -> 2585 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/tabs.css102
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/html/test__ntlm_8c-example.html408
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/challenge.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/context.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/data.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/domain.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/flags.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_build_ntlm1_master.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_build_ntlm2_master.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_calculate_lm2.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_calculate_ntlm1.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_calculate_ntlm2.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_decode_targetinfo.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_encode_targetinfo.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_encode_type1.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_encode_type2.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_encode_type3.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_buf.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_targetinfo.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_type1.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_type2.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_type3.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_keyex_unwrap.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_nt_key.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_ntlmv2_key.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_verify_ntlm2.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/hostname.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/length.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/lm.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_buf.348
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_core.3421
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_type1.368
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_type2.380
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_type3.396
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/os.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/sessionkey.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/targetinfo.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/targetname.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/username.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/man/man3/ws.31
-rw-r--r--crypto/heimdal/doc/doxyout/ntlm/manpages39
-rw-r--r--crypto/heimdal/doc/doxyout/wind/html/doxygen.css473
-rw-r--r--crypto/heimdal/doc/doxyout/wind/html/doxygen.pngbin0 -> 1281 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/wind/html/graph_legend.dot22
-rw-r--r--crypto/heimdal/doc/doxyout/wind/html/graph_legend.html87
-rw-r--r--crypto/heimdal/doc/doxyout/wind/html/graph_legend.pngbin0 -> 4256 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/wind/html/group__wind.html680
-rw-r--r--crypto/heimdal/doc/doxyout/wind/html/index.html30
-rw-r--r--crypto/heimdal/doc/doxyout/wind/html/modules.html28
-rw-r--r--crypto/heimdal/doc/doxyout/wind/html/tab_b.gifbin0 -> 35 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/wind/html/tab_l.gifbin0 -> 706 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/wind/html/tab_r.gifbin0 -> 2585 bytes
-rw-r--r--crypto/heimdal/doc/doxyout/wind/html/tabs.css102
-rw-r--r--crypto/heimdal/doc/doxyout/wind/man/man3/wind.3326
-rw-r--r--crypto/heimdal/doc/doxyout/wind/man/man3/wind_profile.31
-rw-r--r--crypto/heimdal/doc/doxyout/wind/man/man3/wind_punycode_label_toascii.31
-rw-r--r--crypto/heimdal/doc/doxyout/wind/man/man3/wind_stringprep.31
-rw-r--r--crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs2read.31
-rw-r--r--crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs2utf8.31
-rw-r--r--crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs2utf8_length.31
-rw-r--r--crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs2write.31
-rw-r--r--crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs4utf8.31
-rw-r--r--crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs4utf8_length.31
-rw-r--r--crypto/heimdal/doc/doxyout/wind/man/man3/wind_utf8ucs2.31
-rw-r--r--crypto/heimdal/doc/doxyout/wind/man/man3/wind_utf8ucs2_length.31
-rw-r--r--crypto/heimdal/doc/doxyout/wind/man/man3/wind_utf8ucs4.31
-rw-r--r--crypto/heimdal/doc/doxyout/wind/man/man3/wind_utf8ucs4_length.31
-rw-r--r--crypto/heimdal/doc/doxyout/wind/manpages14
958 files changed, 55244 insertions, 0 deletions
diff --git a/crypto/heimdal/doc/doxyout/gssapi/html/doxygen.css b/crypto/heimdal/doc/doxyout/gssapi/html/doxygen.css
new file mode 100644
index 000000000000..22c484301dd1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/html/doxygen.css
@@ -0,0 +1,473 @@
+BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
+ font-family: Geneva, Arial, Helvetica, sans-serif;
+}
+BODY,TD {
+ font-size: 90%;
+}
+H1 {
+ text-align: center;
+ font-size: 160%;
+}
+H2 {
+ font-size: 120%;
+}
+H3 {
+ font-size: 100%;
+}
+CAPTION {
+ font-weight: bold
+}
+DIV.qindex {
+ width: 100%;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navpath {
+ width: 100%;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navtab {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+TD.navtab {
+ font-size: 70%;
+}
+A.qindex {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D;
+}
+A.qindex:visited {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D
+}
+A.qindex:hover {
+ text-decoration: none;
+ background-color: #ddddff;
+}
+A.qindexHL {
+ text-decoration: none;
+ font-weight: bold;
+ background-color: #6666cc;
+ color: #ffffff;
+ border: 1px double #9295C2;
+}
+A.qindexHL:hover {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff;
+}
+A.qindexHL:visited {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff
+}
+A.el {
+ text-decoration: none;
+ font-weight: bold
+}
+A.elRef {
+ font-weight: bold
+}
+A.code:link {
+ text-decoration: none;
+ font-weight: normal;
+ color: #0000FF
+}
+A.code:visited {
+ text-decoration: none;
+ font-weight: normal;
+ color: #0000FF
+}
+A.codeRef:link {
+ font-weight: normal;
+ color: #0000FF
+}
+A.codeRef:visited {
+ font-weight: normal;
+ color: #0000FF
+}
+A:hover {
+ text-decoration: none;
+ background-color: #f2f2ff
+}
+DL.el {
+ margin-left: -1cm
+}
+.fragment {
+ font-family: monospace, fixed;
+ font-size: 95%;
+}
+PRE.fragment {
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ margin-left: 2px;
+ margin-right: 8px;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+}
+DIV.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px
+}
+
+DIV.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ margin-bottom: 6px;
+ font-weight: bold;
+}
+DIV.groupText {
+ margin-left: 16px;
+ font-style: italic;
+ font-size: 90%
+}
+BODY {
+ background: white;
+ color: black;
+ margin-right: 20px;
+ margin-left: 20px;
+}
+TD.indexkey {
+ background-color: #e8eef2;
+ font-weight: bold;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TD.indexvalue {
+ background-color: #e8eef2;
+ font-style: italic;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TR.memlist {
+ background-color: #f0f0f0;
+}
+P.formulaDsp {
+ text-align: center;
+}
+IMG.formulaDsp {
+}
+IMG.formulaInl {
+ vertical-align: middle;
+}
+SPAN.keyword { color: #008000 }
+SPAN.keywordtype { color: #604020 }
+SPAN.keywordflow { color: #e08000 }
+SPAN.comment { color: #800000 }
+SPAN.preprocessor { color: #806020 }
+SPAN.stringliteral { color: #002080 }
+SPAN.charliteral { color: #008080 }
+SPAN.vhdldigit { color: #ff00ff }
+SPAN.vhdlchar { color: #000000 }
+SPAN.vhdlkeyword { color: #700070 }
+SPAN.vhdllogic { color: #ff0000 }
+
+.mdescLeft {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.mdescRight {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.memItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplParams {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ color: #606060;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+FORM.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+INPUT.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+TD.tiny {
+ font-size: 75%;
+}
+a {
+ color: #1A41A8;
+}
+a:visited {
+ color: #2A3798;
+}
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #84b0c7;
+}
+TH.dirtab {
+ background: #e8eef2;
+ font-weight: bold;
+}
+HR {
+ height: 1px;
+ border: none;
+ border-top: 1px solid black;
+}
+
+/* Style for detailed member documentation */
+.memtemplate {
+ font-size: 80%;
+ color: #606060;
+ font-weight: normal;
+ margin-left: 3px;
+}
+.memnav {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+.memitem {
+ padding: 4px;
+ background-color: #eef3f5;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #dedeee;
+ -moz-border-radius: 8px 8px 8px 8px;
+}
+.memname {
+ white-space: nowrap;
+ font-weight: bold;
+}
+.memdoc{
+ padding-left: 10px;
+}
+.memproto {
+ background-color: #d5e1e8;
+ width: 100%;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #84b0c7;
+ font-weight: bold;
+ -moz-border-radius: 8px 8px 8px 8px;
+}
+.paramkey {
+ text-align: right;
+}
+.paramtype {
+ white-space: nowrap;
+}
+.paramname {
+ color: #602020;
+ font-style: italic;
+ white-space: nowrap;
+}
+/* End Styling for detailed member documentation */
+
+/* for the tree view */
+.ftvtree {
+ font-family: sans-serif;
+ margin:0.5em;
+}
+/* these are for tree view when used as main index */
+.directory {
+ font-size: 9pt;
+ font-weight: bold;
+}
+.directory h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+
+/* The following two styles can be used to replace the root node title */
+/* with an image of your choice. Simply uncomment the next two styles, */
+/* specify the name of your image and be sure to set 'height' to the */
+/* proper pixel height of your image. */
+
+/* .directory h3.swap { */
+/* height: 61px; */
+/* background-repeat: no-repeat; */
+/* background-image: url("yourimage.gif"); */
+/* } */
+/* .directory h3.swap span { */
+/* display: none; */
+/* } */
+
+.directory > h3 {
+ margin-top: 0;
+}
+.directory p {
+ margin: 0px;
+ white-space: nowrap;
+}
+.directory div {
+ display: none;
+ margin: 0px;
+}
+.directory img {
+ vertical-align: -30%;
+}
+/* these are for tree view when not used as main index */
+.directory-alt {
+ font-size: 100%;
+ font-weight: bold;
+}
+.directory-alt h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+.directory-alt > h3 {
+ margin-top: 0;
+}
+.directory-alt p {
+ margin: 0px;
+ white-space: nowrap;
+}
+.directory-alt div {
+ display: none;
+ margin: 0px;
+}
+.directory-alt img {
+ vertical-align: -30%;
+}
+
diff --git a/crypto/heimdal/doc/doxyout/gssapi/html/doxygen.png b/crypto/heimdal/doc/doxyout/gssapi/html/doxygen.png
new file mode 100644
index 000000000000..f0a274bbaffd
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/html/doxygen.png
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/gssapi/html/graph_legend.dot b/crypto/heimdal/doc/doxyout/gssapi/html/graph_legend.dot
new file mode 100644
index 000000000000..4df0f1aa4864
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/html/graph_legend.dot
@@ -0,0 +1,22 @@
+digraph G
+{
+ edge [fontname="FreeSans",fontsize=10,labelfontname="FreeSans",labelfontsize=10];
+ node [fontname="FreeSans",fontsize=10,shape=record];
+ Node9 [shape="box",label="Inherited",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",fillcolor="grey75",style="filled" fontcolor="black"];
+ Node10 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node10 [shape="box",label="PublicBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPublicBase.html"];
+ Node11 -> Node10 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node11 [shape="box",label="Truncated",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="red",URL="$classTruncated.html"];
+ Node13 -> Node9 [dir=back,color="darkgreen",fontsize=10,style="solid",fontname="FreeSans"];
+ Node13 [shape="box",label="ProtectedBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classProtectedBase.html"];
+ Node14 -> Node9 [dir=back,color="firebrick4",fontsize=10,style="solid",fontname="FreeSans"];
+ Node14 [shape="box",label="PrivateBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPrivateBase.html"];
+ Node15 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node15 [shape="box",label="Undocumented",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="grey75"];
+ Node16 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node16 [shape="box",label="Templ< int >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+ Node17 -> Node16 [dir=back,color="orange",fontsize=10,style="dashed",label="< int >",fontname="FreeSans"];
+ Node17 [shape="box",label="Templ< T >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+ Node18 -> Node9 [dir=back,color="darkorchid3",fontsize=10,style="dashed",label="m_usedClass",fontname="FreeSans"];
+ Node18 [shape="box",label="Used",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classUsed.html"];
+}
diff --git a/crypto/heimdal/doc/doxyout/gssapi/html/graph_legend.html b/crypto/heimdal/doc/doxyout/gssapi/html/graph_legend.html
new file mode 100644
index 000000000000..ccda6dbea63e
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/html/graph_legend.html
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalGSS-APIlibrary: Graph Legend</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Graph Legend</h1>This page explains how to interpret the graphs that are generated by doxygen.<p>
+Consider the following example: <div class="fragment"><pre class="fragment"><span class="comment">/*! Invisible class because of truncation */</span>
+<span class="keyword">class </span>Invisible { };
+<span class="comment"></span>
+<span class="comment">/*! Truncated class, inheritance relation is hidden */</span>
+<span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };
+
+<span class="comment">/* Class not documented with doxygen comments */</span>
+<span class="keyword">class </span>Undocumented { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using public inheritance */</span>
+<span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };
+<span class="comment"></span>
+<span class="comment">/*! A template class */</span>
+<span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>Templ { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using protected inheritance */</span>
+<span class="keyword">class </span>ProtectedBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using private inheritance */</span>
+<span class="keyword">class </span>PrivateBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is used by the Inherited class */</span>
+<span class="keyword">class </span>Used { };
+<span class="comment"></span>
+<span class="comment">/*! Super class that inherits a number of other classes */</span>
+<span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,
+ <span class="keyword">protected</span> ProtectedBase,
+ <span class="keyword">private</span> PrivateBase,
+ <span class="keyword">public</span> Undocumented,
+ <span class="keyword">public</span> Templ&lt;int&gt;
+{
+ <span class="keyword">private</span>:
+ Used *m_usedClass;
+};
+</pre></div> If the <code>MAX_DOT_GRAPH_HEIGHT</code> tag in the configuration file is set to 240 this will result in the following graph:<p>
+<center><div align="center">
+<img src="graph_legend.png" alt="graph_legend.png">
+</div>
+</center> <p>
+The boxes in the above graph have the following meaning: <ul>
+<li>
+A filled gray box represents the struct or class for which the graph is generated. </li>
+<li>
+A box with a black border denotes a documented struct or class. </li>
+<li>
+A box with a grey border denotes an undocumented struct or class. </li>
+<li>
+A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
+</ul>
+The arrows have the following meaning: <ul>
+<li>
+A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
+<li>
+A dark green arrow is used for protected inheritance. </li>
+<li>
+A dark red arrow is used for private inheritance. </li>
+<li>
+A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
+<li>
+A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:17 2011 for HeimdalGSS-APIlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/gssapi/html/graph_legend.png b/crypto/heimdal/doc/doxyout/gssapi/html/graph_legend.png
new file mode 100644
index 000000000000..9b96937bfd5f
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/html/graph_legend.png
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/gssapi/html/group__gssapi.html b/crypto/heimdal/doc/doxyout/gssapi/html/group__gssapi.html
new file mode 100644
index 000000000000..35a68c4dbd9e
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/html/group__gssapi.html
@@ -0,0 +1,892 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalGSS-APIlibrary: Heimdal GSS-API functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal GSS-API functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GSSAPI_LIB_FUNCTION OM_uint32 <br>
+GSSAPI_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gssapi.html#g233373d4e0baa31615eb4d4f0ccb9683">gss_add_oid_set_member</a> (OM_uint32 *minor_status, const gss_OID member_oid, gss_OID_set *oid_set)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GSSAPI_LIB_FUNCTION OM_uint32 <br>
+GSSAPI_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gssapi.html#gb02ec963066cc8e5e6682799457208e9">gss_wrap_iov</a> (OM_uint32 *minor_status, gss_ctx_id_t context_handle, int conf_req_flag, gss_qop_t qop_req, int *conf_state, gss_iov_buffer_desc *iov, int iov_count)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GSSAPI_LIB_FUNCTION OM_uint32 <br>
+GSSAPI_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gssapi.html#g399bb326e47574aca7b28d6886d29fd0">gss_unwrap_iov</a> (OM_uint32 *minor_status, gss_ctx_id_t context_handle, int *conf_state, gss_qop_t *qop_state, gss_iov_buffer_desc *iov, int iov_count)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GSSAPI_LIB_FUNCTION OM_uint32 <br>
+GSSAPI_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gssapi.html#g6216cfcb1ba8dc2d1a1d680d21752f26">gss_wrap_iov_length</a> (OM_uint32 *minor_status, gss_ctx_id_t context_handle, int conf_req_flag, gss_qop_t qop_req, int *conf_state, gss_iov_buffer_desc *iov, int iov_count)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GSSAPI_LIB_FUNCTION OM_uint32 <br>
+GSSAPI_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gssapi.html#g2dbb20a4c9a3cf5072ef081cd37e54b4">gss_release_iov_buffer</a> (OM_uint32 *minor_status, gss_iov_buffer_desc *iov, int iov_count)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GSSAPI_LIB_FUNCTION OM_uint32 <br>
+GSSAPI_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gssapi.html#g06e9814b830ed2fc4a756775a5bfd943">gss_canonicalize_name</a> (OM_uint32 *minor_status, const gss_name_t input_name, const gss_OID mech_type, gss_name_t *output_name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GSSAPI_LIB_FUNCTION OM_uint32 <br>
+GSSAPI_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gssapi.html#g0afe06fd5264ebfb93ecca4bcc70895b">gss_import_name</a> (OM_uint32 *minor_status, const gss_buffer_t input_name_buffer, const gss_OID input_name_type, gss_name_t *output_name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GSSAPI_LIB_FUNCTION OM_uint32 <br>
+GSSAPI_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gssapi.html#g8eb94eab14874226b748710f833474eb">gss_init_sec_context</a> (OM_uint32 *minor_status, const gss_cred_id_t initiator_cred_handle, gss_ctx_id_t *context_handle, const gss_name_t target_name, const gss_OID input_mech_type, OM_uint32 req_flags, OM_uint32 time_req, const gss_channel_bindings_t input_chan_bindings, const gss_buffer_t input_token, gss_OID *actual_mech_type, gss_buffer_t output_token, OM_uint32 *ret_flags, OM_uint32 *time_rec)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GSSAPI_LIB_FUNCTION OM_uint32 <br>
+GSSAPI_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gssapi.html#gdc725eaf82322d8cf50812fc26442893">gss_inquire_saslname_for_mech</a> (OM_uint32 *minor_status, const gss_OID desired_mech, gss_buffer_t sasl_mech_name, gss_buffer_t mech_name, gss_buffer_t mech_description)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GSSAPI_LIB_FUNCTION OM_uint32 <br>
+GSSAPI_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gssapi.html#gf472671a43512495de04ca0c69079e5d">gss_inquire_attrs_for_mech</a> (OM_uint32 *minor_status, gss_const_OID mech, gss_OID_set *mech_attr, gss_OID_set *known_mech_attrs)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GSSAPI_LIB_FUNCTION int <br>
+GSSAPI_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gssapi.html#gc98677df7ae9bbc387cd68002a97ad15">gss_oid_equal</a> (gss_const_OID a, gss_const_OID b)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GSSAPI_LIB_FUNCTION OM_uint32 <br>
+GSSAPI_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gssapi.html#gd2990721c56fe83e06d45648874680d7">gss_release_cred</a> (OM_uint32 *minor_status, gss_cred_id_t *cred_handle)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GSSAPI_LIB_FUNCTION OM_uint32 <br>
+GSSAPI_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gssapi.html#g0691190338f1f24170bd5f695ff1e721">gss_release_name</a> (OM_uint32 *minor_status, gss_name_t *input_name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">GSSAPI_LIB_FUNCTION OM_uint32 <br>
+GSSAPI_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gssapi.html#g89a6d98056b75a8a25152de268833f51">gss_wrap</a> (OM_uint32 *minor_status, const gss_ctx_id_t context_handle, int conf_req_flag, gss_qop_t qop_req, const gss_buffer_t input_message_buffer, int *conf_state, gss_buffer_t output_message_buffer)</td></tr>
+
+<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">gss_OID_desc GSSAPI_LIB_FUNCTION&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gssapi.html#g961f7a7f9f92e06b91c6d503e524a672">__gss_c_attr_stream_sizes_oid_desc</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g233373d4e0baa31615eb4d4f0ccb9683"></a><!-- doxytag: member="gss_add_oid_set_member.c::gss_add_oid_set_member" ref="g233373d4e0baa31615eb4d4f0ccb9683" args="(OM_uint32 *minor_status, const gss_OID member_oid, gss_OID_set *oid_set)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_add_oid_set_member </td>
+ <td>(</td>
+ <td class="paramtype">OM_uint32 *&nbsp;</td>
+ <td class="paramname"> <em>minor_status</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const gss_OID&nbsp;</td>
+ <td class="paramname"> <em>member_oid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_OID_set *&nbsp;</td>
+ <td class="paramname"> <em>oid_set</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add a oid to the oid set, function does not make a copy of the oid, so the pointer to member_oid needs to be stable for the whole time oid_set is used.<p>
+If there is a duplicate member of the oid, the new member is not added to to the set.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>minor_status</em>&nbsp;</td><td>minor status code. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>member_oid</em>&nbsp;</td><td>member to add to the oid set </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>oid_set</em>&nbsp;</td><td>oid set to add the member too</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a gss_error code, see gss_display_status() about printing the error code. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g06e9814b830ed2fc4a756775a5bfd943"></a><!-- doxytag: member="gss_canonicalize_name.c::gss_canonicalize_name" ref="g06e9814b830ed2fc4a756775a5bfd943" args="(OM_uint32 *minor_status, const gss_name_t input_name, const gss_OID mech_type, gss_name_t *output_name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_canonicalize_name </td>
+ <td>(</td>
+ <td class="paramtype">OM_uint32 *&nbsp;</td>
+ <td class="paramname"> <em>minor_status</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const gss_name_t&nbsp;</td>
+ <td class="paramname"> <em>input_name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const gss_OID&nbsp;</td>
+ <td class="paramname"> <em>mech_type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_name_t *&nbsp;</td>
+ <td class="paramname"> <em>output_name</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+gss_canonicalize_name takes a Internal Name (IN) and converts in into a mechanism specific Mechanism Name (MN).<p>
+The input name may multiple name, or generic name types.<p>
+If the input_name if of the GSS_C_NT_USER_NAME, and the Kerberos mechanism is specified, the resulting MN type is a GSS_KRB5_NT_PRINCIPAL_NAME.<p>
+For more information about <a class="el" href="internalvsmechname.html">internalVSmechname</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>minor_status</em>&nbsp;</td><td>minor status code. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>input_name</em>&nbsp;</td><td>name to covert, unchanged by <a class="el" href="group__gssapi.html#g06e9814b830ed2fc4a756775a5bfd943">gss_canonicalize_name()</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>mech_type</em>&nbsp;</td><td>the type to convert Name too. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>output_name</em>&nbsp;</td><td>the resulting type, release with <a class="el" href="group__gssapi.html#g0691190338f1f24170bd5f695ff1e721">gss_release_name()</a>, independent of input_name.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a gss_error code, see gss_display_status() about printing the error code. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g0afe06fd5264ebfb93ecca4bcc70895b"></a><!-- doxytag: member="gss_import_name.c::gss_import_name" ref="g0afe06fd5264ebfb93ecca4bcc70895b" args="(OM_uint32 *minor_status, const gss_buffer_t input_name_buffer, const gss_OID input_name_type, gss_name_t *output_name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_import_name </td>
+ <td>(</td>
+ <td class="paramtype">OM_uint32 *&nbsp;</td>
+ <td class="paramname"> <em>minor_status</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const gss_buffer_t&nbsp;</td>
+ <td class="paramname"> <em>input_name_buffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const gss_OID&nbsp;</td>
+ <td class="paramname"> <em>input_name_type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_name_t *&nbsp;</td>
+ <td class="paramname"> <em>output_name</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Import a name internal or mechanism name<p>
+Type of name and their format:<ul>
+<li>GSS_C_NO_OID</li><li>GSS_C_NT_USER_NAME</li><li>GSS_C_NT_HOSTBASED_SERVICE</li><li>GSS_C_NT_EXPORT_NAME</li><li>GSS_C_NT_ANONYMOUS</li><li>GSS_KRB5_NT_PRINCIPAL_NAME</li></ul>
+<p>
+For more information about <a class="el" href="internalvsmechname.html">internalVSmechname</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>minor_status</em>&nbsp;</td><td>minor status code </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>input_name_buffer</em>&nbsp;</td><td>import name buffer </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>input_name_type</em>&nbsp;</td><td>type of the import name buffer </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>output_name</em>&nbsp;</td><td>the resulting type, release with <a class="el" href="group__gssapi.html#g0691190338f1f24170bd5f695ff1e721">gss_release_name()</a>, independent of input_name</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a gss_error code, see gss_display_status() about printing the error code. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8eb94eab14874226b748710f833474eb"></a><!-- doxytag: member="gss_init_sec_context.c::gss_init_sec_context" ref="g8eb94eab14874226b748710f833474eb" args="(OM_uint32 *minor_status, const gss_cred_id_t initiator_cred_handle, gss_ctx_id_t *context_handle, const gss_name_t target_name, const gss_OID input_mech_type, OM_uint32 req_flags, OM_uint32 time_req, const gss_channel_bindings_t input_chan_bindings, const gss_buffer_t input_token, gss_OID *actual_mech_type, gss_buffer_t output_token, OM_uint32 *ret_flags, OM_uint32 *time_rec)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_init_sec_context </td>
+ <td>(</td>
+ <td class="paramtype">OM_uint32 *&nbsp;</td>
+ <td class="paramname"> <em>minor_status</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const gss_cred_id_t&nbsp;</td>
+ <td class="paramname"> <em>initiator_cred_handle</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_ctx_id_t *&nbsp;</td>
+ <td class="paramname"> <em>context_handle</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const gss_name_t&nbsp;</td>
+ <td class="paramname"> <em>target_name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const gss_OID&nbsp;</td>
+ <td class="paramname"> <em>input_mech_type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">OM_uint32&nbsp;</td>
+ <td class="paramname"> <em>req_flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">OM_uint32&nbsp;</td>
+ <td class="paramname"> <em>time_req</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const gss_channel_bindings_t&nbsp;</td>
+ <td class="paramname"> <em>input_chan_bindings</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const gss_buffer_t&nbsp;</td>
+ <td class="paramname"> <em>input_token</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_OID *&nbsp;</td>
+ <td class="paramname"> <em>actual_mech_type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_buffer_t&nbsp;</td>
+ <td class="paramname"> <em>output_token</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">OM_uint32 *&nbsp;</td>
+ <td class="paramname"> <em>ret_flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">OM_uint32 *&nbsp;</td>
+ <td class="paramname"> <em>time_rec</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+As the initiator build a context with an acceptor.<p>
+Returns in the major<ul>
+<li>GSS_S_COMPLETE - if the context if build</li><li>GSS_S_CONTINUE_NEEDED - if the caller needs to continue another round of gss_i nit_sec_context</li><li>error code - any other error code</li></ul>
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>minor_status</em>&nbsp;</td><td>minor status code.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>initiator_cred_handle</em>&nbsp;</td><td>the credential to use when building the context, if GSS_C_NO_CREDENTIAL is passed, the default credential for the mechanism will be used.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>context_handle</em>&nbsp;</td><td>a pointer to a context handle, will be returned as long as there is not an error.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>target_name</em>&nbsp;</td><td>the target name of acceptor, created using <a class="el" href="group__gssapi.html#g0afe06fd5264ebfb93ecca4bcc70895b">gss_import_name()</a>. The name is can be of any name types the mechanism supports, check supported name types with gss_inquire_names_for_mech().</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>input_mech_type</em>&nbsp;</td><td>mechanism type to use, if GSS_C_NO_OID is used, Kerberos (GSS_KRB5_MECHANISM) will be tried. Other available mechanism are listed in the <a class="el" href="gssapi_mechs_intro.html">GSS-API mechanisms</a> section.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>req_flags</em>&nbsp;</td><td>flags using when building the context, see <a class="el" href="gssapi_services_intro.html#gssapi_context_flags">Context creation flags</a></td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>time_req</em>&nbsp;</td><td>time requested this context should be valid in seconds, common used value is GSS_C_INDEFINITE</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>input_chan_bindings</em>&nbsp;</td><td>Channel bindings used, if not exepected otherwise, used GSS_C_NO_CHANNEL_BINDINGS</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>input_token</em>&nbsp;</td><td>input token sent from the acceptor, for the initial packet the buffer of { NULL, 0 } should be used.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>actual_mech_type</em>&nbsp;</td><td>the actual mech used, MUST NOT be freed since it pointing to static memory.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>output_token</em>&nbsp;</td><td>if there is an output token, regardless of complete, continue_needed, or error it should be sent to the acceptor</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ret_flags</em>&nbsp;</td><td>return what flags was negotitated, caller should check if they are accetable. For example, if GSS_C_MUTUAL_FLAG was negotiated with the acceptor or not.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>time_rec</em>&nbsp;</td><td>amount of time this context is valid for</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a gss_error code, see gss_display_status() about printing the error code. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf472671a43512495de04ca0c69079e5d"></a><!-- doxytag: member="gss_mo.c::gss_inquire_attrs_for_mech" ref="gf472671a43512495de04ca0c69079e5d" args="(OM_uint32 *minor_status, gss_const_OID mech, gss_OID_set *mech_attr, gss_OID_set *known_mech_attrs)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_inquire_attrs_for_mech </td>
+ <td>(</td>
+ <td class="paramtype">OM_uint32 *&nbsp;</td>
+ <td class="paramname"> <em>minor_status</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_const_OID&nbsp;</td>
+ <td class="paramname"> <em>mech</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_OID_set *&nbsp;</td>
+ <td class="paramname"> <em>mech_attr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_OID_set *&nbsp;</td>
+ <td class="paramname"> <em>known_mech_attrs</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+List support attributes for a mech and/or all mechanisms.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>minor_status</em>&nbsp;</td><td>minor status code </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>mech</em>&nbsp;</td><td>given together with mech_attr will return the list of attributes for mechanism, can optionally be GSS_C_NO_OID. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>mech_attr</em>&nbsp;</td><td>see mech parameter, can optionally be NULL, release with gss_release_oid_set(). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>known_mech_attrs</em>&nbsp;</td><td>all attributes for mechanisms supported, release with gss_release_oid_set(). </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gdc725eaf82322d8cf50812fc26442893"></a><!-- doxytag: member="gss_mo.c::gss_inquire_saslname_for_mech" ref="gdc725eaf82322d8cf50812fc26442893" args="(OM_uint32 *minor_status, const gss_OID desired_mech, gss_buffer_t sasl_mech_name, gss_buffer_t mech_name, gss_buffer_t mech_description)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_inquire_saslname_for_mech </td>
+ <td>(</td>
+ <td class="paramtype">OM_uint32 *&nbsp;</td>
+ <td class="paramname"> <em>minor_status</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const gss_OID&nbsp;</td>
+ <td class="paramname"> <em>desired_mech</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_buffer_t&nbsp;</td>
+ <td class="paramname"> <em>sasl_mech_name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_buffer_t&nbsp;</td>
+ <td class="paramname"> <em>mech_name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_buffer_t&nbsp;</td>
+ <td class="paramname"> <em>mech_description</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Returns different protocol names and description of the mechanism.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>minor_status</em>&nbsp;</td><td>minor status code </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>desired_mech</em>&nbsp;</td><td>mech list query </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>sasl_mech_name</em>&nbsp;</td><td>SASL GS2 protocol name </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>mech_name</em>&nbsp;</td><td>gssapi protocol name </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>mech_description</em>&nbsp;</td><td>description of gssapi mech</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns GSS_S_COMPLETE or a error code. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc98677df7ae9bbc387cd68002a97ad15"></a><!-- doxytag: member="gss_oid_equal.c::gss_oid_equal" ref="gc98677df7ae9bbc387cd68002a97ad15" args="(gss_const_OID a, gss_const_OID b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GSSAPI_LIB_FUNCTION int GSSAPI_LIB_CALL gss_oid_equal </td>
+ <td>(</td>
+ <td class="paramtype">gss_const_OID&nbsp;</td>
+ <td class="paramname"> <em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_const_OID&nbsp;</td>
+ <td class="paramname"> <em>b</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Compare two GSS-API OIDs with each other.<p>
+GSS_C_NO_OID matches nothing, not even it-self.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>a</em>&nbsp;</td><td>first oid to compare </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>b</em>&nbsp;</td><td>second oid to compare</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>non-zero when both oid are the same OID, zero when they are not the same. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd2990721c56fe83e06d45648874680d7"></a><!-- doxytag: member="gss_release_cred.c::gss_release_cred" ref="gd2990721c56fe83e06d45648874680d7" args="(OM_uint32 *minor_status, gss_cred_id_t *cred_handle)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_release_cred </td>
+ <td>(</td>
+ <td class="paramtype">OM_uint32 *&nbsp;</td>
+ <td class="paramname"> <em>minor_status</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_cred_id_t *&nbsp;</td>
+ <td class="paramname"> <em>cred_handle</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Release a credentials<p>
+Its ok to release the GSS_C_NO_CREDENTIAL/NULL credential, it will return a GSS_S_COMPLETE error code. On return cred_handle is set ot GSS_C_NO_CREDENTIAL.<p>
+Example:<p>
+<div class="fragment"><pre class="fragment"> gss_cred_id_t cred = GSS_C_NO_CREDENTIAL;
+ major = <a class="code" href="group__gssapi.html#gd2990721c56fe83e06d45648874680d7">gss_release_cred</a>(&amp;minor, &amp;cred);
+</pre></div><p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>minor_status</em>&nbsp;</td><td>minor status return code, mech specific </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cred_handle</em>&nbsp;</td><td>a pointer to the credential too release</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>an gssapi error code </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2dbb20a4c9a3cf5072ef081cd37e54b4"></a><!-- doxytag: member="gss_aeap.c::gss_release_iov_buffer" ref="g2dbb20a4c9a3cf5072ef081cd37e54b4" args="(OM_uint32 *minor_status, gss_iov_buffer_desc *iov, int iov_count)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_release_iov_buffer </td>
+ <td>(</td>
+ <td class="paramtype">OM_uint32 *&nbsp;</td>
+ <td class="paramname"> <em>minor_status</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_iov_buffer_desc *&nbsp;</td>
+ <td class="paramname"> <em>iov</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>iov_count</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free all buffer allocated by <a class="el" href="group__gssapi.html#gb02ec963066cc8e5e6682799457208e9">gss_wrap_iov()</a> or <a class="el" href="group__gssapi.html#g399bb326e47574aca7b28d6886d29fd0">gss_unwrap_iov()</a> by looking at the GSS_IOV_BUFFER_FLAG_ALLOCATED flag.
+</div>
+</div><p>
+<a class="anchor" name="g0691190338f1f24170bd5f695ff1e721"></a><!-- doxytag: member="gss_release_name.c::gss_release_name" ref="g0691190338f1f24170bd5f695ff1e721" args="(OM_uint32 *minor_status, gss_name_t *input_name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_release_name </td>
+ <td>(</td>
+ <td class="paramtype">OM_uint32 *&nbsp;</td>
+ <td class="paramname"> <em>minor_status</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_name_t *&nbsp;</td>
+ <td class="paramname"> <em>input_name</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free a name<p>
+import_name can point to NULL or be NULL, or a pointer to a gss_name_t structure. If it was a pointer to gss_name_t, the pointer will be set to NULL on success and failure.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>minor_status</em>&nbsp;</td><td>minor status code </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>input_name</em>&nbsp;</td><td>name to free</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a gss_error code, see gss_display_status() about printing the error code. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g399bb326e47574aca7b28d6886d29fd0"></a><!-- doxytag: member="gss_aeap.c::gss_unwrap_iov" ref="g399bb326e47574aca7b28d6886d29fd0" args="(OM_uint32 *minor_status, gss_ctx_id_t context_handle, int *conf_state, gss_qop_t *qop_state, gss_iov_buffer_desc *iov, int iov_count)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_unwrap_iov </td>
+ <td>(</td>
+ <td class="paramtype">OM_uint32 *&nbsp;</td>
+ <td class="paramname"> <em>minor_status</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_ctx_id_t&nbsp;</td>
+ <td class="paramname"> <em>context_handle</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>conf_state</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_qop_t *&nbsp;</td>
+ <td class="paramname"> <em>qop_state</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_iov_buffer_desc *&nbsp;</td>
+ <td class="paramname"> <em>iov</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>iov_count</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Decrypt or verifies the signature on the data.
+</div>
+</div><p>
+<a class="anchor" name="g89a6d98056b75a8a25152de268833f51"></a><!-- doxytag: member="gss_wrap.c::gss_wrap" ref="g89a6d98056b75a8a25152de268833f51" args="(OM_uint32 *minor_status, const gss_ctx_id_t context_handle, int conf_req_flag, gss_qop_t qop_req, const gss_buffer_t input_message_buffer, int *conf_state, gss_buffer_t output_message_buffer)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_wrap </td>
+ <td>(</td>
+ <td class="paramtype">OM_uint32 *&nbsp;</td>
+ <td class="paramname"> <em>minor_status</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const gss_ctx_id_t&nbsp;</td>
+ <td class="paramname"> <em>context_handle</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>conf_req_flag</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_qop_t&nbsp;</td>
+ <td class="paramname"> <em>qop_req</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const gss_buffer_t&nbsp;</td>
+ <td class="paramname"> <em>input_message_buffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>conf_state</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_buffer_t&nbsp;</td>
+ <td class="paramname"> <em>output_message_buffer</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Wrap a message using either confidentiality (encryption + signature) or sealing (signature).<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>minor_status</em>&nbsp;</td><td>minor status code. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>context_handle</em>&nbsp;</td><td>context handle. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>conf_req_flag</em>&nbsp;</td><td>if non zero, confidentiality is requestd. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>qop_req</em>&nbsp;</td><td>type of protection needed, in most cases it GSS_C_QOP_DEFAULT should be passed in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>input_message_buffer</em>&nbsp;</td><td>messages to wrap </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>conf_state</em>&nbsp;</td><td>returns non zero if confidentiality was honoured. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>output_message_buffer</em>&nbsp;</td><td>the resulting buffer, release with gss_release_buffer(). </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb02ec963066cc8e5e6682799457208e9"></a><!-- doxytag: member="gss_aeap.c::gss_wrap_iov" ref="gb02ec963066cc8e5e6682799457208e9" args="(OM_uint32 *minor_status, gss_ctx_id_t context_handle, int conf_req_flag, gss_qop_t qop_req, int *conf_state, gss_iov_buffer_desc *iov, int iov_count)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_wrap_iov </td>
+ <td>(</td>
+ <td class="paramtype">OM_uint32 *&nbsp;</td>
+ <td class="paramname"> <em>minor_status</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_ctx_id_t&nbsp;</td>
+ <td class="paramname"> <em>context_handle</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>conf_req_flag</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_qop_t&nbsp;</td>
+ <td class="paramname"> <em>qop_req</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>conf_state</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_iov_buffer_desc *&nbsp;</td>
+ <td class="paramname"> <em>iov</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>iov_count</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Encrypts or sign the data.<p>
+This is a more complicated version of <a class="el" href="group__gssapi.html#g89a6d98056b75a8a25152de268833f51">gss_wrap()</a>, it allows the caller to use AEAD data (signed header/trailer) and allow greater controll over where the encrypted data is placed.<p>
+The maximum packet size is gss_context_stream_sizes.max_msg_size.<p>
+The caller needs provide the folloing buffers when using in conf_req_flag=1 mode:<p>
+<ul>
+<li>HEADER (of size gss_context_stream_sizes.header) { DATA or SIGN_ONLY } (optional, zero or more) PADDING (of size gss_context_stream_sizes.blocksize, if zero padding is zero, can be omitted) TRAILER (of size gss_context_stream_sizes.trailer)</li></ul>
+<p>
+<ul>
+<li>on DCE-RPC mode, the caller can skip PADDING and TRAILER if the DATA elements is padded to a block bountry and header is of at least size gss_context_stream_sizes.header + gss_context_stream_sizes.trailer.</li></ul>
+<p>
+HEADER, PADDING, TRAILER will be shrunken to the size required to transmit any of them too large.<p>
+To generate <a class="el" href="group__gssapi.html#g89a6d98056b75a8a25152de268833f51">gss_wrap()</a> compatible packets, use: HEADER | DATA | PADDING | TRAILER<p>
+When used in conf_req_flag=0,<p>
+<ul>
+<li>HEADER (of size gss_context_stream_sizes.header) { DATA or SIGN_ONLY } (optional, zero or more) PADDING (of size gss_context_stream_sizes.blocksize, if zero padding is zero, can be omitted) TRAILER (of size gss_context_stream_sizes.trailer)</li></ul>
+<p>
+The input sizes of HEADER, PADDING and TRAILER can be fetched using <a class="el" href="group__gssapi.html#g6216cfcb1ba8dc2d1a1d680d21752f26">gss_wrap_iov_length()</a> or gss_context_query_attributes().
+</div>
+</div><p>
+<a class="anchor" name="g6216cfcb1ba8dc2d1a1d680d21752f26"></a><!-- doxytag: member="gss_aeap.c::gss_wrap_iov_length" ref="g6216cfcb1ba8dc2d1a1d680d21752f26" args="(OM_uint32 *minor_status, gss_ctx_id_t context_handle, int conf_req_flag, gss_qop_t qop_req, int *conf_state, gss_iov_buffer_desc *iov, int iov_count)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_wrap_iov_length </td>
+ <td>(</td>
+ <td class="paramtype">OM_uint32 *&nbsp;</td>
+ <td class="paramname"> <em>minor_status</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_ctx_id_t&nbsp;</td>
+ <td class="paramname"> <em>context_handle</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>conf_req_flag</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_qop_t&nbsp;</td>
+ <td class="paramname"> <em>qop_req</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>conf_state</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">gss_iov_buffer_desc *&nbsp;</td>
+ <td class="paramname"> <em>iov</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>iov_count</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Update the length fields in iov buffer for the types:<ul>
+<li>GSS_IOV_BUFFER_TYPE_HEADER</li><li>GSS_IOV_BUFFER_TYPE_PADDING</li><li>GSS_IOV_BUFFER_TYPE_TRAILER</li></ul>
+<p>
+Consider using gss_context_query_attributes() to fetch the data instead.
+</div>
+</div><p>
+<hr><h2>Variable Documentation</h2>
+<a class="anchor" name="g961f7a7f9f92e06b91c6d503e524a672"></a><!-- doxytag: member="gss_aeap.c::__gss_c_attr_stream_sizes_oid_desc" ref="g961f7a7f9f92e06b91c6d503e524a672" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">gss_OID_desc GSSAPI_LIB_FUNCTION <a class="el" href="group__gssapi.html#g961f7a7f9f92e06b91c6d503e524a672">__gss_c_attr_stream_sizes_oid_desc</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<b>Initial value:</b><div class="fragment"><pre class="fragment">
+ {10, rk_UNCONST(<span class="stringliteral">"\x2a\x86\x48\x86\xf7\x12\x01\x02\x01\x03"</span>)}
+</pre></div>Query the context for parameters.<p>
+SSPI equivalent if this function is QueryContextAttributes.<p>
+<ul>
+<li>GSS_C_ATTR_STREAM_SIZES data is a gss_context_stream_sizes. </li></ul>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:16 2011 for HeimdalGSS-APIlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/gssapi/html/gssapi_mechs_intro.html b/crypto/heimdal/doc/doxyout/gssapi/html/gssapi_mechs_intro.html
new file mode 100644
index 000000000000..9480c95c7af0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/html/gssapi_mechs_intro.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalGSS-APIlibrary: GSS-API mechanisms</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="gssapi_mechs_intro">GSS-API mechanisms </a></h1><h2><a class="anchor" name="gssapi_mechs">
+GSS-API mechanisms</a></h2>
+<ul>
+<li>Kerberos 5 - GSS_KRB5_MECHANISM</li><li>SPNEGO - GSS_SPNEGO_MECHANISM</li><li>NTLM - GSS_NTLM_MECHANISM </li></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:16 2011 for HeimdalGSS-APIlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/gssapi/html/gssapi_services_intro.html b/crypto/heimdal/doc/doxyout/gssapi/html/gssapi_services_intro.html
new file mode 100644
index 000000000000..e92217f4f055
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/html/gssapi_services_intro.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalGSS-APIlibrary: Introduction to GSS-API services</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="gssapi_services_intro">Introduction to GSS-API services </a></h1><h2><a class="anchor" name="gssapi_services">
+GSS-API services</a></h2>
+<h3><a class="anchor" name="gssapi_services_context">
+Context creation</a></h3>
+<ul>
+<li>delegation</li><li>mutual authentication</li><li>anonymous</li><li>use per message before context creation has completed</li></ul>
+<p>
+return status:<ul>
+<li>support conf</li><li>support int</li></ul>
+<h3><a class="anchor" name="gssapi_context_flags">
+Context creation flags</a></h3>
+<ul>
+<li>GSS_C_DELEG_FLAG</li><li>GSS_C_MUTUAL_FLAG</li><li>GSS_C_REPLAY_FLAG</li><li>GSS_C_SEQUENCE_FLAG</li><li>GSS_C_CONF_FLAG</li><li>GSS_C_INTEG_FLAG</li><li>GSS_C_ANON_FLAG</li><li>GSS_C_PROT_READY_FLAG</li><li>GSS_C_TRANS_FLAG</li><li>GSS_C_DCE_STYLE</li><li>GSS_C_IDENTIFY_FLAG</li><li>GSS_C_EXTENDED_ERROR_FLAG</li><li>GSS_C_DELEG_POLICY_FLAG</li></ul>
+<h3><a class="anchor" name="gssapi_services_permessage">
+Per-message services</a></h3>
+<ul>
+<li>conf</li><li>int</li><li>message integrity</li><li>replay detection</li><li>out of sequence </li></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:16 2011 for HeimdalGSS-APIlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/gssapi/html/index.html b/crypto/heimdal/doc/doxyout/gssapi/html/index.html
new file mode 100644
index 000000000000..a1a21dbfe9e9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/html/index.html
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalGSS-APIlibrary: Heimdal GSS-API Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal GSS-API Library</h1>
+<p>
+<h3 align="center">1.5.1 </h3>Heimdal implements the following mechanisms:<p>
+<ul>
+<li>Kerberos 5</li><li>SPNEGO</li><li>NTLM</li></ul>
+<p>
+See <a class="el" href="gssapi_mechs_intro.html#gssapi_mechs">GSS-API mechanisms</a> for more describtion about these mechanisms.<p>
+The project web page: <a href="http://www.h5l.org/">http://www.h5l.org/</a><p>
+<ul>
+<li><a class="el" href="gssapi_services_intro.html">Introduction to GSS-API services</a></li><li><a class="el" href="gssapi_mechs_intro.html#gssapi_mechs">GSS-API mechanisms</a></li><li><a class="el" href="internalvsmechname.html#gssapi_api_INvsMN">Name forms</a> </li></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:16 2011 for HeimdalGSS-APIlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/gssapi/html/internalvsmechname.html b/crypto/heimdal/doc/doxyout/gssapi/html/internalvsmechname.html
new file mode 100644
index 000000000000..ae7591d85ebf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/html/internalvsmechname.html
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalGSS-APIlibrary: Internal names and mechanism names</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="internalVSmechname">Internal names and mechanism names </a></h1><h2><a class="anchor" name="gssapi_api_INvsMN">
+Name forms</a></h2>
+There are two forms of name in GSS-API, Internal form and Contiguous string ("flat") form. gss_export_name() and <a class="el" href="group__gssapi.html#g0afe06fd5264ebfb93ecca4bcc70895b">gss_import_name()</a> can be used to convert between the two forms.<p>
+<ul>
+<li>The contiguous string form is described by an oid specificing the type and an octet string. A special form of the contiguous string form is the exported name object. The exported name defined for each mechanism, is something that can be stored and complared later. The exported name is what should be used for ACLs comparisons.</li></ul>
+<p>
+<ul>
+<li>The Internal form</li></ul>
+<p>
+There is also special form of the Internal Name (IN), and that is the Mechanism Name (MN). In the mechanism name all the generic information is stripped of and only contain the information for one mechanism. In GSS-API some function return MN and some require MN as input. Each of these function is marked up as such.<p>
+Describe relationship between import_name, canonicalize_name, export_name and friends. </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:16 2011 for HeimdalGSS-APIlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/gssapi/html/modules.html b/crypto/heimdal/doc/doxyout/gssapi/html/modules.html
new file mode 100644
index 000000000000..520850b7c0ac
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/html/modules.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalGSS-APIlibrary: Module Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li class="current"><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Modules</h1>Here is a list of all modules:<ul>
+<li><a class="el" href="group__gssapi.html">Heimdal GSS-API functions</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:16 2011 for HeimdalGSS-APIlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/gssapi/html/pages.html b/crypto/heimdal/doc/doxyout/gssapi/html/pages.html
new file mode 100644
index 000000000000..130a0574f4ca
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/html/pages.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalGSS-APIlibrary: Page Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Related Pages</h1>Here is a list of all related documentation pages:<ul>
+<li><a class="el" href="gssapi_services_intro.html">Introduction to GSS-API services</a>
+
+<li><a class="el" href="gssapi_mechs_intro.html">GSS-API mechanisms</a>
+
+<li><a class="el" href="internalvsmechname.html">Internal names and mechanism names</a>
+
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:16 2011 for HeimdalGSS-APIlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/gssapi/html/tab_b.gif b/crypto/heimdal/doc/doxyout/gssapi/html/tab_b.gif
new file mode 100644
index 000000000000..0d623483ffdf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/html/tab_b.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/gssapi/html/tab_l.gif b/crypto/heimdal/doc/doxyout/gssapi/html/tab_l.gif
new file mode 100644
index 000000000000..9b1e6337c929
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/html/tab_l.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/gssapi/html/tab_r.gif b/crypto/heimdal/doc/doxyout/gssapi/html/tab_r.gif
new file mode 100644
index 000000000000..ce9dd9f533cb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/html/tab_r.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/gssapi/html/tabs.css b/crypto/heimdal/doc/doxyout/gssapi/html/tabs.css
new file mode 100644
index 000000000000..95f00a91da30
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/html/tabs.css
@@ -0,0 +1,102 @@
+/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
+
+DIV.tabs
+{
+ float : left;
+ width : 100%;
+ background : url("tab_b.gif") repeat-x bottom;
+ margin-bottom : 4px;
+}
+
+DIV.tabs UL
+{
+ margin : 0px;
+ padding-left : 10px;
+ list-style : none;
+}
+
+DIV.tabs LI, DIV.tabs FORM
+{
+ display : inline;
+ margin : 0px;
+ padding : 0px;
+}
+
+DIV.tabs FORM
+{
+ float : right;
+}
+
+DIV.tabs A
+{
+ float : left;
+ background : url("tab_r.gif") no-repeat right top;
+ border-bottom : 1px solid #84B0C7;
+ font-size : x-small;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+DIV.tabs A:hover
+{
+ background-position: 100% -150px;
+}
+
+DIV.tabs A:link, DIV.tabs A:visited,
+DIV.tabs A:active, DIV.tabs A:hover
+{
+ color: #1A419D;
+}
+
+DIV.tabs SPAN
+{
+ float : left;
+ display : block;
+ background : url("tab_l.gif") no-repeat left top;
+ padding : 5px 9px;
+ white-space : nowrap;
+}
+
+DIV.tabs INPUT
+{
+ float : right;
+ display : inline;
+ font-size : 1em;
+}
+
+DIV.tabs TD
+{
+ font-size : x-small;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+DIV.tabs SPAN {float : none;}
+/* End IE5-Mac hack */
+
+DIV.tabs A:hover SPAN
+{
+ background-position: 0% -150px;
+}
+
+DIV.tabs LI.current A
+{
+ background-position: 100% -150px;
+ border-width : 0px;
+}
+
+DIV.tabs LI.current SPAN
+{
+ background-position: 0% -150px;
+ padding-bottom : 6px;
+}
+
+DIV.navpath
+{
+ background : none;
+ border : none;
+ border-bottom : 1px solid #84B0C7;
+}
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/__gss_c_attr_stream_sizes_oid_desc.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/__gss_c_attr_stream_sizes_oid_desc.3
new file mode 100644
index 000000000000..3dff74cffef0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/__gss_c_attr_stream_sizes_oid_desc.3
@@ -0,0 +1 @@
+.so man3/gssapi.3
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_add_oid_set_member.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_add_oid_set_member.3
new file mode 100644
index 000000000000..3dff74cffef0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_add_oid_set_member.3
@@ -0,0 +1 @@
+.so man3/gssapi.3
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_canonicalize_name.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_canonicalize_name.3
new file mode 100644
index 000000000000..3dff74cffef0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_canonicalize_name.3
@@ -0,0 +1 @@
+.so man3/gssapi.3
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_import_name.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_import_name.3
new file mode 100644
index 000000000000..3dff74cffef0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_import_name.3
@@ -0,0 +1 @@
+.so man3/gssapi.3
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_init_sec_context.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_init_sec_context.3
new file mode 100644
index 000000000000..3dff74cffef0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_init_sec_context.3
@@ -0,0 +1 @@
+.so man3/gssapi.3
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_inquire_attrs_for_mech.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_inquire_attrs_for_mech.3
new file mode 100644
index 000000000000..3dff74cffef0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_inquire_attrs_for_mech.3
@@ -0,0 +1 @@
+.so man3/gssapi.3
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_inquire_saslname_for_mech.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_inquire_saslname_for_mech.3
new file mode 100644
index 000000000000..3dff74cffef0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_inquire_saslname_for_mech.3
@@ -0,0 +1 @@
+.so man3/gssapi.3
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_oid_equal.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_oid_equal.3
new file mode 100644
index 000000000000..3dff74cffef0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_oid_equal.3
@@ -0,0 +1 @@
+.so man3/gssapi.3
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_release_cred.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_release_cred.3
new file mode 100644
index 000000000000..3dff74cffef0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_release_cred.3
@@ -0,0 +1 @@
+.so man3/gssapi.3
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_release_iov_buffer.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_release_iov_buffer.3
new file mode 100644
index 000000000000..3dff74cffef0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_release_iov_buffer.3
@@ -0,0 +1 @@
+.so man3/gssapi.3
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_release_name.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_release_name.3
new file mode 100644
index 000000000000..3dff74cffef0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_release_name.3
@@ -0,0 +1 @@
+.so man3/gssapi.3
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_unwrap_iov.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_unwrap_iov.3
new file mode 100644
index 000000000000..3dff74cffef0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_unwrap_iov.3
@@ -0,0 +1 @@
+.so man3/gssapi.3
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_wrap.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_wrap.3
new file mode 100644
index 000000000000..3dff74cffef0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_wrap.3
@@ -0,0 +1 @@
+.so man3/gssapi.3
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_wrap_iov.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_wrap_iov.3
new file mode 100644
index 000000000000..3dff74cffef0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_wrap_iov.3
@@ -0,0 +1 @@
+.so man3/gssapi.3
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_wrap_iov_length.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_wrap_iov_length.3
new file mode 100644
index 000000000000..3dff74cffef0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gss_wrap_iov_length.3
@@ -0,0 +1 @@
+.so man3/gssapi.3
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/gssapi.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gssapi.3
new file mode 100644
index 000000000000..1ad1c821eaf0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gssapi.3
@@ -0,0 +1,389 @@
+.TH "Heimdal GSS-API functions" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalGSS-APIlibrary" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal GSS-API functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL \fBgss_add_oid_set_member\fP (OM_uint32 *minor_status, const gss_OID member_oid, gss_OID_set *oid_set)"
+.br
+.ti -1c
+.RI "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL \fBgss_wrap_iov\fP (OM_uint32 *minor_status, gss_ctx_id_t context_handle, int conf_req_flag, gss_qop_t qop_req, int *conf_state, gss_iov_buffer_desc *iov, int iov_count)"
+.br
+.ti -1c
+.RI "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL \fBgss_unwrap_iov\fP (OM_uint32 *minor_status, gss_ctx_id_t context_handle, int *conf_state, gss_qop_t *qop_state, gss_iov_buffer_desc *iov, int iov_count)"
+.br
+.ti -1c
+.RI "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL \fBgss_wrap_iov_length\fP (OM_uint32 *minor_status, gss_ctx_id_t context_handle, int conf_req_flag, gss_qop_t qop_req, int *conf_state, gss_iov_buffer_desc *iov, int iov_count)"
+.br
+.ti -1c
+.RI "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL \fBgss_release_iov_buffer\fP (OM_uint32 *minor_status, gss_iov_buffer_desc *iov, int iov_count)"
+.br
+.ti -1c
+.RI "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL \fBgss_canonicalize_name\fP (OM_uint32 *minor_status, const gss_name_t input_name, const gss_OID mech_type, gss_name_t *output_name)"
+.br
+.ti -1c
+.RI "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL \fBgss_import_name\fP (OM_uint32 *minor_status, const gss_buffer_t input_name_buffer, const gss_OID input_name_type, gss_name_t *output_name)"
+.br
+.ti -1c
+.RI "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL \fBgss_init_sec_context\fP (OM_uint32 *minor_status, const gss_cred_id_t initiator_cred_handle, gss_ctx_id_t *context_handle, const gss_name_t target_name, const gss_OID input_mech_type, OM_uint32 req_flags, OM_uint32 time_req, const gss_channel_bindings_t input_chan_bindings, const gss_buffer_t input_token, gss_OID *actual_mech_type, gss_buffer_t output_token, OM_uint32 *ret_flags, OM_uint32 *time_rec)"
+.br
+.ti -1c
+.RI "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL \fBgss_inquire_saslname_for_mech\fP (OM_uint32 *minor_status, const gss_OID desired_mech, gss_buffer_t sasl_mech_name, gss_buffer_t mech_name, gss_buffer_t mech_description)"
+.br
+.ti -1c
+.RI "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL \fBgss_inquire_attrs_for_mech\fP (OM_uint32 *minor_status, gss_const_OID mech, gss_OID_set *mech_attr, gss_OID_set *known_mech_attrs)"
+.br
+.ti -1c
+.RI "GSSAPI_LIB_FUNCTION int GSSAPI_LIB_CALL \fBgss_oid_equal\fP (gss_const_OID a, gss_const_OID b)"
+.br
+.ti -1c
+.RI "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL \fBgss_release_cred\fP (OM_uint32 *minor_status, gss_cred_id_t *cred_handle)"
+.br
+.ti -1c
+.RI "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL \fBgss_release_name\fP (OM_uint32 *minor_status, gss_name_t *input_name)"
+.br
+.ti -1c
+.RI "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL \fBgss_wrap\fP (OM_uint32 *minor_status, const gss_ctx_id_t context_handle, int conf_req_flag, gss_qop_t qop_req, const gss_buffer_t input_message_buffer, int *conf_state, gss_buffer_t output_message_buffer)"
+.br
+.in -1c
+.SS "Variables"
+
+.in +1c
+.ti -1c
+.RI "gss_OID_desc GSSAPI_LIB_FUNCTION \fB__gss_c_attr_stream_sizes_oid_desc\fP"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_add_oid_set_member (OM_uint32 * minor_status, const gss_OID member_oid, gss_OID_set * oid_set)"
+.PP
+Add a oid to the oid set, function does not make a copy of the oid, so the pointer to member_oid needs to be stable for the whole time oid_set is used.
+.PP
+If there is a duplicate member of the oid, the new member is not added to to the set.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIminor_status\fP minor status code.
+.br
+\fImember_oid\fP member to add to the oid set
+.br
+\fIoid_set\fP oid set to add the member too
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+a gss_error code, see gss_display_status() about printing the error code.
+.RE
+.PP
+
+.SS "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_canonicalize_name (OM_uint32 * minor_status, const gss_name_t input_name, const gss_OID mech_type, gss_name_t * output_name)"
+.PP
+gss_canonicalize_name takes a Internal Name (IN) and converts in into a mechanism specific Mechanism Name (MN).
+.PP
+The input name may multiple name, or generic name types.
+.PP
+If the input_name if of the GSS_C_NT_USER_NAME, and the Kerberos mechanism is specified, the resulting MN type is a GSS_KRB5_NT_PRINCIPAL_NAME.
+.PP
+For more information about \fBinternalVSmechname\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIminor_status\fP minor status code.
+.br
+\fIinput_name\fP name to covert, unchanged by \fBgss_canonicalize_name()\fP.
+.br
+\fImech_type\fP the type to convert Name too.
+.br
+\fIoutput_name\fP the resulting type, release with \fBgss_release_name()\fP, independent of input_name.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+a gss_error code, see gss_display_status() about printing the error code.
+.RE
+.PP
+
+.SS "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_import_name (OM_uint32 * minor_status, const gss_buffer_t input_name_buffer, const gss_OID input_name_type, gss_name_t * output_name)"
+.PP
+Import a name internal or mechanism name
+.PP
+Type of name and their format:
+.IP "\(bu" 2
+GSS_C_NO_OID
+.IP "\(bu" 2
+GSS_C_NT_USER_NAME
+.IP "\(bu" 2
+GSS_C_NT_HOSTBASED_SERVICE
+.IP "\(bu" 2
+GSS_C_NT_EXPORT_NAME
+.IP "\(bu" 2
+GSS_C_NT_ANONYMOUS
+.IP "\(bu" 2
+GSS_KRB5_NT_PRINCIPAL_NAME
+.PP
+.PP
+For more information about \fBinternalVSmechname\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIminor_status\fP minor status code
+.br
+\fIinput_name_buffer\fP import name buffer
+.br
+\fIinput_name_type\fP type of the import name buffer
+.br
+\fIoutput_name\fP the resulting type, release with \fBgss_release_name()\fP, independent of input_name
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+a gss_error code, see gss_display_status() about printing the error code.
+.RE
+.PP
+
+.SS "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_init_sec_context (OM_uint32 * minor_status, const gss_cred_id_t initiator_cred_handle, gss_ctx_id_t * context_handle, const gss_name_t target_name, const gss_OID input_mech_type, OM_uint32 req_flags, OM_uint32 time_req, const gss_channel_bindings_t input_chan_bindings, const gss_buffer_t input_token, gss_OID * actual_mech_type, gss_buffer_t output_token, OM_uint32 * ret_flags, OM_uint32 * time_rec)"
+.PP
+As the initiator build a context with an acceptor.
+.PP
+Returns in the major
+.IP "\(bu" 2
+GSS_S_COMPLETE - if the context if build
+.IP "\(bu" 2
+GSS_S_CONTINUE_NEEDED - if the caller needs to continue another round of gss_i nit_sec_context
+.IP "\(bu" 2
+error code - any other error code
+.PP
+.PP
+\fBParameters:\fP
+.RS 4
+\fIminor_status\fP minor status code.
+.br
+\fIinitiator_cred_handle\fP the credential to use when building the context, if GSS_C_NO_CREDENTIAL is passed, the default credential for the mechanism will be used.
+.br
+\fIcontext_handle\fP a pointer to a context handle, will be returned as long as there is not an error.
+.br
+\fItarget_name\fP the target name of acceptor, created using \fBgss_import_name()\fP. The name is can be of any name types the mechanism supports, check supported name types with gss_inquire_names_for_mech().
+.br
+\fIinput_mech_type\fP mechanism type to use, if GSS_C_NO_OID is used, Kerberos (GSS_KRB5_MECHANISM) will be tried. Other available mechanism are listed in the \fBGSS-API mechanisms\fP section.
+.br
+\fIreq_flags\fP flags using when building the context, see \fBContext creation flags\fP
+.br
+\fItime_req\fP time requested this context should be valid in seconds, common used value is GSS_C_INDEFINITE
+.br
+\fIinput_chan_bindings\fP Channel bindings used, if not exepected otherwise, used GSS_C_NO_CHANNEL_BINDINGS
+.br
+\fIinput_token\fP input token sent from the acceptor, for the initial packet the buffer of { NULL, 0 } should be used.
+.br
+\fIactual_mech_type\fP the actual mech used, MUST NOT be freed since it pointing to static memory.
+.br
+\fIoutput_token\fP if there is an output token, regardless of complete, continue_needed, or error it should be sent to the acceptor
+.br
+\fIret_flags\fP return what flags was negotitated, caller should check if they are accetable. For example, if GSS_C_MUTUAL_FLAG was negotiated with the acceptor or not.
+.br
+\fItime_rec\fP amount of time this context is valid for
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+a gss_error code, see gss_display_status() about printing the error code.
+.RE
+.PP
+
+.SS "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_inquire_attrs_for_mech (OM_uint32 * minor_status, gss_const_OID mech, gss_OID_set * mech_attr, gss_OID_set * known_mech_attrs)"
+.PP
+List support attributes for a mech and/or all mechanisms.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIminor_status\fP minor status code
+.br
+\fImech\fP given together with mech_attr will return the list of attributes for mechanism, can optionally be GSS_C_NO_OID.
+.br
+\fImech_attr\fP see mech parameter, can optionally be NULL, release with gss_release_oid_set().
+.br
+\fIknown_mech_attrs\fP all attributes for mechanisms supported, release with gss_release_oid_set().
+.RE
+.PP
+
+.SS "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_inquire_saslname_for_mech (OM_uint32 * minor_status, const gss_OID desired_mech, gss_buffer_t sasl_mech_name, gss_buffer_t mech_name, gss_buffer_t mech_description)"
+.PP
+Returns different protocol names and description of the mechanism.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIminor_status\fP minor status code
+.br
+\fIdesired_mech\fP mech list query
+.br
+\fIsasl_mech_name\fP SASL GS2 protocol name
+.br
+\fImech_name\fP gssapi protocol name
+.br
+\fImech_description\fP description of gssapi mech
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns GSS_S_COMPLETE or a error code.
+.RE
+.PP
+
+.SS "GSSAPI_LIB_FUNCTION int GSSAPI_LIB_CALL gss_oid_equal (gss_const_OID a, gss_const_OID b)"
+.PP
+Compare two GSS-API OIDs with each other.
+.PP
+GSS_C_NO_OID matches nothing, not even it-self.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIa\fP first oid to compare
+.br
+\fIb\fP second oid to compare
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+non-zero when both oid are the same OID, zero when they are not the same.
+.RE
+.PP
+
+.SS "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_release_cred (OM_uint32 * minor_status, gss_cred_id_t * cred_handle)"
+.PP
+Release a credentials
+.PP
+Its ok to release the GSS_C_NO_CREDENTIAL/NULL credential, it will return a GSS_S_COMPLETE error code. On return cred_handle is set ot GSS_C_NO_CREDENTIAL.
+.PP
+Example:
+.PP
+.PP
+.nf
+ gss_cred_id_t cred = GSS_C_NO_CREDENTIAL;
+ major = gss_release_cred(&minor, &cred);
+.fi
+.PP
+.PP
+\fBParameters:\fP
+.RS 4
+\fIminor_status\fP minor status return code, mech specific
+.br
+\fIcred_handle\fP a pointer to the credential too release
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+an gssapi error code
+.RE
+.PP
+
+.SS "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_release_iov_buffer (OM_uint32 * minor_status, gss_iov_buffer_desc * iov, int iov_count)"
+.PP
+Free all buffer allocated by \fBgss_wrap_iov()\fP or \fBgss_unwrap_iov()\fP by looking at the GSS_IOV_BUFFER_FLAG_ALLOCATED flag.
+.SS "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_release_name (OM_uint32 * minor_status, gss_name_t * input_name)"
+.PP
+Free a name
+.PP
+import_name can point to NULL or be NULL, or a pointer to a gss_name_t structure. If it was a pointer to gss_name_t, the pointer will be set to NULL on success and failure.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIminor_status\fP minor status code
+.br
+\fIinput_name\fP name to free
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+a gss_error code, see gss_display_status() about printing the error code.
+.RE
+.PP
+
+.SS "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_unwrap_iov (OM_uint32 * minor_status, gss_ctx_id_t context_handle, int * conf_state, gss_qop_t * qop_state, gss_iov_buffer_desc * iov, int iov_count)"
+.PP
+Decrypt or verifies the signature on the data.
+.SS "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_wrap (OM_uint32 * minor_status, const gss_ctx_id_t context_handle, int conf_req_flag, gss_qop_t qop_req, const gss_buffer_t input_message_buffer, int * conf_state, gss_buffer_t output_message_buffer)"
+.PP
+Wrap a message using either confidentiality (encryption + signature) or sealing (signature).
+.PP
+\fBParameters:\fP
+.RS 4
+\fIminor_status\fP minor status code.
+.br
+\fIcontext_handle\fP context handle.
+.br
+\fIconf_req_flag\fP if non zero, confidentiality is requestd.
+.br
+\fIqop_req\fP type of protection needed, in most cases it GSS_C_QOP_DEFAULT should be passed in.
+.br
+\fIinput_message_buffer\fP messages to wrap
+.br
+\fIconf_state\fP returns non zero if confidentiality was honoured.
+.br
+\fIoutput_message_buffer\fP the resulting buffer, release with gss_release_buffer().
+.RE
+.PP
+
+.SS "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_wrap_iov (OM_uint32 * minor_status, gss_ctx_id_t context_handle, int conf_req_flag, gss_qop_t qop_req, int * conf_state, gss_iov_buffer_desc * iov, int iov_count)"
+.PP
+Encrypts or sign the data.
+.PP
+This is a more complicated version of \fBgss_wrap()\fP, it allows the caller to use AEAD data (signed header/trailer) and allow greater controll over where the encrypted data is placed.
+.PP
+The maximum packet size is gss_context_stream_sizes.max_msg_size.
+.PP
+The caller needs provide the folloing buffers when using in conf_req_flag=1 mode:
+.PP
+.IP "\(bu" 2
+HEADER (of size gss_context_stream_sizes.header) { DATA or SIGN_ONLY } (optional, zero or more) PADDING (of size gss_context_stream_sizes.blocksize, if zero padding is zero, can be omitted) TRAILER (of size gss_context_stream_sizes.trailer)
+.PP
+.PP
+.IP "\(bu" 2
+on DCE-RPC mode, the caller can skip PADDING and TRAILER if the DATA elements is padded to a block bountry and header is of at least size gss_context_stream_sizes.header + gss_context_stream_sizes.trailer.
+.PP
+.PP
+HEADER, PADDING, TRAILER will be shrunken to the size required to transmit any of them too large.
+.PP
+To generate \fBgss_wrap()\fP compatible packets, use: HEADER | DATA | PADDING | TRAILER
+.PP
+When used in conf_req_flag=0,
+.PP
+.IP "\(bu" 2
+HEADER (of size gss_context_stream_sizes.header) { DATA or SIGN_ONLY } (optional, zero or more) PADDING (of size gss_context_stream_sizes.blocksize, if zero padding is zero, can be omitted) TRAILER (of size gss_context_stream_sizes.trailer)
+.PP
+.PP
+The input sizes of HEADER, PADDING and TRAILER can be fetched using \fBgss_wrap_iov_length()\fP or gss_context_query_attributes().
+.SS "GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_wrap_iov_length (OM_uint32 * minor_status, gss_ctx_id_t context_handle, int conf_req_flag, gss_qop_t qop_req, int * conf_state, gss_iov_buffer_desc * iov, int iov_count)"
+.PP
+Update the length fields in iov buffer for the types:
+.IP "\(bu" 2
+GSS_IOV_BUFFER_TYPE_HEADER
+.IP "\(bu" 2
+GSS_IOV_BUFFER_TYPE_PADDING
+.IP "\(bu" 2
+GSS_IOV_BUFFER_TYPE_TRAILER
+.PP
+.PP
+Consider using gss_context_query_attributes() to fetch the data instead.
+.SH "Variable Documentation"
+.PP
+.SS "gss_OID_desc GSSAPI_LIB_FUNCTION \fB__gss_c_attr_stream_sizes_oid_desc\fP"
+.PP
+\fBInitial value:\fP
+.PP
+.nf
+
+ {10, rk_UNCONST('\x2a\x86\x48\x86\xf7\x12\x01\x02\x01\x03')}
+.fi
+Query the context for parameters.
+.PP
+SSPI equivalent if this function is QueryContextAttributes.
+.PP
+.IP "\(bu" 2
+GSS_C_ATTR_STREAM_SIZES data is a gss_context_stream_sizes.
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/gssapi_mechs_intro.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gssapi_mechs_intro.3
new file mode 100644
index 000000000000..821705e4f491
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gssapi_mechs_intro.3
@@ -0,0 +1,15 @@
+.TH "gssapi_mechs_intro" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalGSS-APIlibrary" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+gssapi_mechs_intro \- GSS-API mechanisms
+.SH "GSS-API mechanisms"
+.PP
+.IP "\(bu" 2
+Kerberos 5 - GSS_KRB5_MECHANISM
+.IP "\(bu" 2
+SPNEGO - GSS_SPNEGO_MECHANISM
+.IP "\(bu" 2
+NTLM - GSS_NTLM_MECHANISM
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/gssapi_services_intro.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gssapi_services_intro.3
new file mode 100644
index 000000000000..d43b2140740b
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/gssapi_services_intro.3
@@ -0,0 +1,65 @@
+.TH "gssapi_services_intro" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalGSS-APIlibrary" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+gssapi_services_intro \- Introduction to GSS-API services
+.SH "GSS-API services"
+.PP
+.SS "Context creation"
+.IP "\(bu" 2
+delegation
+.IP "\(bu" 2
+mutual authentication
+.IP "\(bu" 2
+anonymous
+.IP "\(bu" 2
+use per message before context creation has completed
+.PP
+.PP
+return status:
+.IP "\(bu" 2
+support conf
+.IP "\(bu" 2
+support int
+.PP
+.SS "Context creation flags"
+.IP "\(bu" 2
+GSS_C_DELEG_FLAG
+.IP "\(bu" 2
+GSS_C_MUTUAL_FLAG
+.IP "\(bu" 2
+GSS_C_REPLAY_FLAG
+.IP "\(bu" 2
+GSS_C_SEQUENCE_FLAG
+.IP "\(bu" 2
+GSS_C_CONF_FLAG
+.IP "\(bu" 2
+GSS_C_INTEG_FLAG
+.IP "\(bu" 2
+GSS_C_ANON_FLAG
+.IP "\(bu" 2
+GSS_C_PROT_READY_FLAG
+.IP "\(bu" 2
+GSS_C_TRANS_FLAG
+.IP "\(bu" 2
+GSS_C_DCE_STYLE
+.IP "\(bu" 2
+GSS_C_IDENTIFY_FLAG
+.IP "\(bu" 2
+GSS_C_EXTENDED_ERROR_FLAG
+.IP "\(bu" 2
+GSS_C_DELEG_POLICY_FLAG
+.PP
+.SS "Per-message services"
+.IP "\(bu" 2
+conf
+.IP "\(bu" 2
+int
+.IP "\(bu" 2
+message integrity
+.IP "\(bu" 2
+replay detection
+.IP "\(bu" 2
+out of sequence
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/gssapi/man/man3/internalvsmechname.3 b/crypto/heimdal/doc/doxyout/gssapi/man/man3/internalvsmechname.3
new file mode 100644
index 000000000000..4b4c66e3177c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/man/man3/internalvsmechname.3
@@ -0,0 +1,20 @@
+.TH "internalvsmechname" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalGSS-APIlibrary" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+internalvsmechname \- Internal names and mechanism names
+.SH "Name forms"
+.PP
+There are two forms of name in GSS-API, Internal form and Contiguous string ('flat') form. gss_export_name() and \fBgss_import_name()\fP can be used to convert between the two forms.
+.PP
+.IP "\(bu" 2
+The contiguous string form is described by an oid specificing the type and an octet string. A special form of the contiguous string form is the exported name object. The exported name defined for each mechanism, is something that can be stored and complared later. The exported name is what should be used for ACLs comparisons.
+.PP
+.PP
+.IP "\(bu" 2
+The Internal form
+.PP
+.PP
+There is also special form of the Internal Name (IN), and that is the Mechanism Name (MN). In the mechanism name all the generic information is stripped of and only contain the information for one mechanism. In GSS-API some function return MN and some require MN as input. Each of these function is marked up as such.
+.PP
+Describe relationship between import_name, canonicalize_name, export_name and friends.
diff --git a/crypto/heimdal/doc/doxyout/gssapi/manpages b/crypto/heimdal/doc/doxyout/gssapi/manpages
new file mode 100644
index 000000000000..d55654dfaa91
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/gssapi/manpages
@@ -0,0 +1,19 @@
+gssapi/man/man3/__gss_c_attr_stream_sizes_oid_desc.3
+gssapi/man/man3/gss_add_oid_set_member.3
+gssapi/man/man3/gss_canonicalize_name.3
+gssapi/man/man3/gss_import_name.3
+gssapi/man/man3/gss_init_sec_context.3
+gssapi/man/man3/gss_inquire_attrs_for_mech.3
+gssapi/man/man3/gss_inquire_saslname_for_mech.3
+gssapi/man/man3/gss_oid_equal.3
+gssapi/man/man3/gss_release_cred.3
+gssapi/man/man3/gss_release_iov_buffer.3
+gssapi/man/man3/gss_release_name.3
+gssapi/man/man3/gss_unwrap_iov.3
+gssapi/man/man3/gss_wrap.3
+gssapi/man/man3/gss_wrap_iov.3
+gssapi/man/man3/gss_wrap_iov_length.3
+gssapi/man/man3/gssapi.3
+gssapi/man/man3/gssapi_mechs_intro.3
+gssapi/man/man3/gssapi_services_intro.3
+gssapi/man/man3/internalvsmechname.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/doxygen.css b/crypto/heimdal/doc/doxyout/hcrypto/html/doxygen.css
new file mode 100644
index 000000000000..22c484301dd1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/doxygen.css
@@ -0,0 +1,473 @@
+BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
+ font-family: Geneva, Arial, Helvetica, sans-serif;
+}
+BODY,TD {
+ font-size: 90%;
+}
+H1 {
+ text-align: center;
+ font-size: 160%;
+}
+H2 {
+ font-size: 120%;
+}
+H3 {
+ font-size: 100%;
+}
+CAPTION {
+ font-weight: bold
+}
+DIV.qindex {
+ width: 100%;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navpath {
+ width: 100%;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navtab {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+TD.navtab {
+ font-size: 70%;
+}
+A.qindex {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D;
+}
+A.qindex:visited {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D
+}
+A.qindex:hover {
+ text-decoration: none;
+ background-color: #ddddff;
+}
+A.qindexHL {
+ text-decoration: none;
+ font-weight: bold;
+ background-color: #6666cc;
+ color: #ffffff;
+ border: 1px double #9295C2;
+}
+A.qindexHL:hover {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff;
+}
+A.qindexHL:visited {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff
+}
+A.el {
+ text-decoration: none;
+ font-weight: bold
+}
+A.elRef {
+ font-weight: bold
+}
+A.code:link {
+ text-decoration: none;
+ font-weight: normal;
+ color: #0000FF
+}
+A.code:visited {
+ text-decoration: none;
+ font-weight: normal;
+ color: #0000FF
+}
+A.codeRef:link {
+ font-weight: normal;
+ color: #0000FF
+}
+A.codeRef:visited {
+ font-weight: normal;
+ color: #0000FF
+}
+A:hover {
+ text-decoration: none;
+ background-color: #f2f2ff
+}
+DL.el {
+ margin-left: -1cm
+}
+.fragment {
+ font-family: monospace, fixed;
+ font-size: 95%;
+}
+PRE.fragment {
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ margin-left: 2px;
+ margin-right: 8px;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+}
+DIV.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px
+}
+
+DIV.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ margin-bottom: 6px;
+ font-weight: bold;
+}
+DIV.groupText {
+ margin-left: 16px;
+ font-style: italic;
+ font-size: 90%
+}
+BODY {
+ background: white;
+ color: black;
+ margin-right: 20px;
+ margin-left: 20px;
+}
+TD.indexkey {
+ background-color: #e8eef2;
+ font-weight: bold;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TD.indexvalue {
+ background-color: #e8eef2;
+ font-style: italic;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TR.memlist {
+ background-color: #f0f0f0;
+}
+P.formulaDsp {
+ text-align: center;
+}
+IMG.formulaDsp {
+}
+IMG.formulaInl {
+ vertical-align: middle;
+}
+SPAN.keyword { color: #008000 }
+SPAN.keywordtype { color: #604020 }
+SPAN.keywordflow { color: #e08000 }
+SPAN.comment { color: #800000 }
+SPAN.preprocessor { color: #806020 }
+SPAN.stringliteral { color: #002080 }
+SPAN.charliteral { color: #008080 }
+SPAN.vhdldigit { color: #ff00ff }
+SPAN.vhdlchar { color: #000000 }
+SPAN.vhdlkeyword { color: #700070 }
+SPAN.vhdllogic { color: #ff0000 }
+
+.mdescLeft {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.mdescRight {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.memItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplParams {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ color: #606060;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+FORM.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+INPUT.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+TD.tiny {
+ font-size: 75%;
+}
+a {
+ color: #1A41A8;
+}
+a:visited {
+ color: #2A3798;
+}
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #84b0c7;
+}
+TH.dirtab {
+ background: #e8eef2;
+ font-weight: bold;
+}
+HR {
+ height: 1px;
+ border: none;
+ border-top: 1px solid black;
+}
+
+/* Style for detailed member documentation */
+.memtemplate {
+ font-size: 80%;
+ color: #606060;
+ font-weight: normal;
+ margin-left: 3px;
+}
+.memnav {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+.memitem {
+ padding: 4px;
+ background-color: #eef3f5;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #dedeee;
+ -moz-border-radius: 8px 8px 8px 8px;
+}
+.memname {
+ white-space: nowrap;
+ font-weight: bold;
+}
+.memdoc{
+ padding-left: 10px;
+}
+.memproto {
+ background-color: #d5e1e8;
+ width: 100%;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #84b0c7;
+ font-weight: bold;
+ -moz-border-radius: 8px 8px 8px 8px;
+}
+.paramkey {
+ text-align: right;
+}
+.paramtype {
+ white-space: nowrap;
+}
+.paramname {
+ color: #602020;
+ font-style: italic;
+ white-space: nowrap;
+}
+/* End Styling for detailed member documentation */
+
+/* for the tree view */
+.ftvtree {
+ font-family: sans-serif;
+ margin:0.5em;
+}
+/* these are for tree view when used as main index */
+.directory {
+ font-size: 9pt;
+ font-weight: bold;
+}
+.directory h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+
+/* The following two styles can be used to replace the root node title */
+/* with an image of your choice. Simply uncomment the next two styles, */
+/* specify the name of your image and be sure to set 'height' to the */
+/* proper pixel height of your image. */
+
+/* .directory h3.swap { */
+/* height: 61px; */
+/* background-repeat: no-repeat; */
+/* background-image: url("yourimage.gif"); */
+/* } */
+/* .directory h3.swap span { */
+/* display: none; */
+/* } */
+
+.directory > h3 {
+ margin-top: 0;
+}
+.directory p {
+ margin: 0px;
+ white-space: nowrap;
+}
+.directory div {
+ display: none;
+ margin: 0px;
+}
+.directory img {
+ vertical-align: -30%;
+}
+/* these are for tree view when not used as main index */
+.directory-alt {
+ font-size: 100%;
+ font-weight: bold;
+}
+.directory-alt h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+.directory-alt > h3 {
+ margin-top: 0;
+}
+.directory-alt p {
+ margin: 0px;
+ white-space: nowrap;
+}
+.directory-alt div {
+ display: none;
+ margin: 0px;
+}
+.directory-alt img {
+ vertical-align: -30%;
+}
+
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/doxygen.png b/crypto/heimdal/doc/doxyout/hcrypto/html/doxygen.png
new file mode 100644
index 000000000000..f0a274bbaffd
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/doxygen.png
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/example__evp__cipher_8c-example.html b/crypto/heimdal/doc/doxyout/hcrypto/html/example__evp__cipher_8c-example.html
new file mode 100644
index 000000000000..cb89b668d7ad
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/example__evp__cipher_8c-example.html
@@ -0,0 +1,173 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdal crypto library: example_evp_cipher.c</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>example_evp_cipher.c</h1>This is an example how to use <a class="el" href="group__hcrypto__evp.html#g98da5a5c1aa25d9cb2e4717fa11314bd">EVP_CipherInit_ex()</a>, <a class="el" href="group__hcrypto__evp.html#g863349e1001b36cfd6c4afedddd12862">EVP_CipherUpdate()</a> and <a class="el" href="group__hcrypto__evp.html#g714eef7d737fd68171d852043a4995de">EVP_CipherFinal_ex()</a>.<p>
+<div class="fragment"><pre class="fragment"><span class="comment">/*</span>
+<span class="comment"> * Copyright (c) 2008 Kungliga Tekniska Högskolan</span>
+<span class="comment"> * (Royal Institute of Technology, Stockholm, Sweden).</span>
+<span class="comment"> * All rights reserved.</span>
+<span class="comment"> *</span>
+<span class="comment"> * Redistribution and use in source and binary forms, with or without</span>
+<span class="comment"> * modification, are permitted provided that the following conditions</span>
+<span class="comment"> * are met:</span>
+<span class="comment"> *</span>
+<span class="comment"> * 1. Redistributions of source code must retain the above copyright</span>
+<span class="comment"> * notice, this list of conditions and the following disclaimer.</span>
+<span class="comment"> *</span>
+<span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span>
+<span class="comment"> * notice, this list of conditions and the following disclaimer in the</span>
+<span class="comment"> * documentation and/or other materials provided with the distribution.</span>
+<span class="comment"> *</span>
+<span class="comment"> * 3. Neither the name of the Institute nor the names of its contributors</span>
+<span class="comment"> * may be used to endorse or promote products derived from this software</span>
+<span class="comment"> * without specific prior written permission.</span>
+<span class="comment"> *</span>
+<span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND</span>
+<span class="comment"> * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
+<span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
+<span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE</span>
+<span class="comment"> * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span>
+<span class="comment"> * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</span>
+<span class="comment"> * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span>
+<span class="comment"> * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
+<span class="comment"> * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
+<span class="comment"> * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</span>
+<span class="comment"> * SUCH DAMAGE.</span>
+<span class="comment"> */</span>
+
+<span class="preprocessor">#include &lt;krb5-types.h&gt;</span> <span class="comment">/* should really be stdint.h */</span>
+<span class="preprocessor">#include &lt;hcrypto/evp.h&gt;</span>
+
+<span class="preprocessor">#include &lt;stdio.h&gt;</span>
+<span class="preprocessor">#include &lt;stdlib.h&gt;</span>
+<span class="preprocessor">#include &lt;string.h&gt;</span>
+<span class="preprocessor">#include &lt;err.h&gt;</span>
+<span class="preprocessor">#include &lt;assert.h&gt;</span>
+
+<span class="preprocessor">#include "roken.h"</span>
+
+<span class="comment">/* key and initial vector */</span>
+<span class="keyword">static</span> <span class="keywordtype">char</span> key[16] =
+ <span class="stringliteral">"\xaa\xbb\x45\xd4\xaa\xbb\x45\xd4"</span>
+ <span class="stringliteral">"\xaa\xbb\x45\xd4\xaa\xbb\x45\xd4"</span>;
+<span class="keyword">static</span> <span class="keywordtype">char</span> ivec[16] =
+ <span class="stringliteral">"\xaa\xbb\x45\xd4\xaa\xbb\x45\xd4"</span>
+ <span class="stringliteral">"\xaa\xbb\x45\xd4\xaa\xbb\x45\xd4"</span>;
+
+<span class="keyword">static</span> <span class="keywordtype">void</span>
+usage(<span class="keywordtype">int</span> exit_code) __attribute__((noreturn));
+
+<span class="keyword">static</span> <span class="keywordtype">void</span>
+usage(<span class="keywordtype">int</span> exit_code)
+{
+ printf(<span class="stringliteral">"usage: %s in out\n"</span>, getprogname());
+ exit(exit_code);
+}
+
+
+<span class="keywordtype">int</span>
+main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv)
+{
+ <span class="keywordtype">int</span> encryptp = 1;
+ <span class="keyword">const</span> <span class="keywordtype">char</span> *ifn = NULL, *ofn = NULL;
+ FILE *in, *out;
+ <span class="keywordtype">void</span> *ibuf, *obuf;
+ <span class="keywordtype">int</span> ilen, olen;
+ <span class="keywordtype">size_t</span> block_size = 0;
+ <span class="keyword">const</span> EVP_CIPHER *c = <a name="a0"></a><a class="code" href="group__hcrypto__evp.html#g2747bac943db15c97167ac37fdc2af43">EVP_aes_128_cbc</a>();
+ EVP_CIPHER_CTX ctx;
+ <span class="keywordtype">int</span> ret;
+
+ setprogname(argv[0]);
+
+ <span class="keywordflow">if</span> (argc == 2) {
+ <span class="keywordflow">if</span> (strcmp(argv[1], <span class="stringliteral">"--version"</span>) == 0) {
+ printf(<span class="stringliteral">"version"</span>);
+ exit(0);
+ }
+ <span class="keywordflow">if</span> (strcmp(argv[1], <span class="stringliteral">"--help"</span>) == 0)
+ usage(0);
+ usage(1);
+ } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argc == 4) {
+ block_size = atoi(argv[1]);
+ <span class="keywordflow">if</span> (block_size == 0)
+ errx(1, <span class="stringliteral">"invalid blocksize %s"</span>, argv[1]);
+ ifn = argv[2];
+ ofn = argv[3];
+ } <span class="keywordflow">else</span>
+ usage(1);
+
+ in = fopen(ifn, <span class="stringliteral">"r"</span>);
+ <span class="keywordflow">if</span> (in == NULL)
+ errx(1, <span class="stringliteral">"failed to open input file"</span>);
+ out = fopen(ofn, <span class="stringliteral">"w+"</span>);
+ <span class="keywordflow">if</span> (out == NULL)
+ errx(1, <span class="stringliteral">"failed to open output file"</span>);
+
+ <span class="comment">/* Check that key and ivec are long enough */</span>
+ assert(<a name="a1"></a><a class="code" href="group__hcrypto__evp.html#g4793a9e130da86ac42c497b19395b748">EVP_CIPHER_key_length</a>(c) &lt;= <span class="keyword">sizeof</span>(key));
+ assert(<a name="a2"></a><a class="code" href="group__hcrypto__evp.html#g7edebe76d19dee11686a6698d24f19f5">EVP_CIPHER_iv_length</a>(c) &lt;= <span class="keyword">sizeof</span>(ivec));
+
+ <span class="comment">/*</span>
+<span class="comment"> * Allocate buffer, the output buffer is at least</span>
+<span class="comment"> * EVP_CIPHER_block_size() longer</span>
+<span class="comment"> */</span>
+ ibuf = malloc(block_size);
+ obuf = malloc(block_size + <a name="a3"></a><a class="code" href="group__hcrypto__evp.html#g3123ff4b426783dd972538249b9e9d4d">EVP_CIPHER_block_size</a>(c));
+
+ <span class="comment">/*</span>
+<span class="comment"> * Init the memory used for EVP_CIPHER_CTX and set the key and</span>
+<span class="comment"> * ivec.</span>
+<span class="comment"> */</span>
+ <a name="a4"></a><a class="code" href="group__hcrypto__evp.html#g13d0ff0e87312566cb6b3591157f9754">EVP_CIPHER_CTX_init</a>(&amp;ctx);
+ <a name="a5"></a><a class="code" href="group__hcrypto__evp.html#g98da5a5c1aa25d9cb2e4717fa11314bd">EVP_CipherInit_ex</a>(&amp;ctx, c, NULL, key, ivec, encryptp);
+
+ <span class="comment">/* read in buffer */</span>
+ <span class="keywordflow">while</span> ((ilen = fread(ibuf, 1, block_size, in)) &gt; 0) {
+ <span class="comment">/* encrypto/decrypt */</span>
+ ret = <a name="a6"></a><a class="code" href="group__hcrypto__evp.html#g863349e1001b36cfd6c4afedddd12862">EVP_CipherUpdate</a>(&amp;ctx, obuf, &amp;olen, ibuf, ilen);
+ <span class="keywordflow">if</span> (ret != 1) {
+ <a name="a7"></a><a class="code" href="group__hcrypto__evp.html#gc16dd3987cd90c8bcdbad5290c558359">EVP_CIPHER_CTX_cleanup</a>(&amp;ctx);
+ errx(1, <span class="stringliteral">"EVP_CipherUpdate failed"</span>);
+ }
+ <span class="comment">/* write out to output file */</span>
+ fwrite(obuf, 1, olen, out);
+ }
+ <span class="comment">/* done reading */</span>
+ fclose(in);
+
+ <span class="comment">/* clear up any last bytes left in the output buffer */</span>
+ ret = <a name="a8"></a><a class="code" href="group__hcrypto__evp.html#g714eef7d737fd68171d852043a4995de">EVP_CipherFinal_ex</a>(&amp;ctx, obuf, &amp;olen);
+ <a class="code" href="group__hcrypto__evp.html#gc16dd3987cd90c8bcdbad5290c558359">EVP_CIPHER_CTX_cleanup</a>(&amp;ctx);
+ <span class="keywordflow">if</span> (ret != 1)
+ errx(1, <span class="stringliteral">"EVP_CipherFinal_ex failed"</span>);
+
+ <span class="comment">/* write the last bytes out and close */</span>
+ fwrite(obuf, 1, olen, out);
+ fclose(out);
+
+ <span class="keywordflow">return</span> 0;
+}
+</pre></div> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:03 2011 for Heimdal crypto library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/examples.html b/crypto/heimdal/doc/doxyout/hcrypto/html/examples.html
new file mode 100644
index 000000000000..d6a887c4b887
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/examples.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdal crypto library: Examples</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Examples</h1>Here is a list of all examples:<ul>
+<li><a class="el" href="example__evp__cipher_8c-example.html">example_evp_cipher.c</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:06 2011 for Heimdal crypto library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/graph_legend.dot b/crypto/heimdal/doc/doxyout/hcrypto/html/graph_legend.dot
new file mode 100644
index 000000000000..4df0f1aa4864
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/graph_legend.dot
@@ -0,0 +1,22 @@
+digraph G
+{
+ edge [fontname="FreeSans",fontsize=10,labelfontname="FreeSans",labelfontsize=10];
+ node [fontname="FreeSans",fontsize=10,shape=record];
+ Node9 [shape="box",label="Inherited",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",fillcolor="grey75",style="filled" fontcolor="black"];
+ Node10 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node10 [shape="box",label="PublicBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPublicBase.html"];
+ Node11 -> Node10 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node11 [shape="box",label="Truncated",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="red",URL="$classTruncated.html"];
+ Node13 -> Node9 [dir=back,color="darkgreen",fontsize=10,style="solid",fontname="FreeSans"];
+ Node13 [shape="box",label="ProtectedBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classProtectedBase.html"];
+ Node14 -> Node9 [dir=back,color="firebrick4",fontsize=10,style="solid",fontname="FreeSans"];
+ Node14 [shape="box",label="PrivateBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPrivateBase.html"];
+ Node15 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node15 [shape="box",label="Undocumented",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="grey75"];
+ Node16 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node16 [shape="box",label="Templ< int >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+ Node17 -> Node16 [dir=back,color="orange",fontsize=10,style="dashed",label="< int >",fontname="FreeSans"];
+ Node17 [shape="box",label="Templ< T >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+ Node18 -> Node9 [dir=back,color="darkorchid3",fontsize=10,style="dashed",label="m_usedClass",fontname="FreeSans"];
+ Node18 [shape="box",label="Used",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classUsed.html"];
+}
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/graph_legend.html b/crypto/heimdal/doc/doxyout/hcrypto/html/graph_legend.html
new file mode 100644
index 000000000000..2b5383bf7535
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/graph_legend.html
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdal crypto library: Graph Legend</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Graph Legend</h1>This page explains how to interpret the graphs that are generated by doxygen.<p>
+Consider the following example: <div class="fragment"><pre class="fragment"><span class="comment">/*! Invisible class because of truncation */</span>
+<span class="keyword">class </span>Invisible { };
+<span class="comment"></span>
+<span class="comment">/*! Truncated class, inheritance relation is hidden */</span>
+<span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };
+
+<span class="comment">/* Class not documented with doxygen comments */</span>
+<span class="keyword">class </span>Undocumented { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using public inheritance */</span>
+<span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };
+<span class="comment"></span>
+<span class="comment">/*! A template class */</span>
+<span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>Templ { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using protected inheritance */</span>
+<span class="keyword">class </span>ProtectedBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using private inheritance */</span>
+<span class="keyword">class </span>PrivateBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is used by the Inherited class */</span>
+<span class="keyword">class </span>Used { };
+<span class="comment"></span>
+<span class="comment">/*! Super class that inherits a number of other classes */</span>
+<span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,
+ <span class="keyword">protected</span> ProtectedBase,
+ <span class="keyword">private</span> PrivateBase,
+ <span class="keyword">public</span> Undocumented,
+ <span class="keyword">public</span> Templ&lt;int&gt;
+{
+ <span class="keyword">private</span>:
+ Used *m_usedClass;
+};
+</pre></div> If the <code>MAX_DOT_GRAPH_HEIGHT</code> tag in the configuration file is set to 240 this will result in the following graph:<p>
+<center><div align="center">
+<img src="graph_legend.png" alt="graph_legend.png">
+</div>
+</center> <p>
+The boxes in the above graph have the following meaning: <ul>
+<li>
+A filled gray box represents the struct or class for which the graph is generated. </li>
+<li>
+A box with a black border denotes a documented struct or class. </li>
+<li>
+A box with a grey border denotes an undocumented struct or class. </li>
+<li>
+A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
+</ul>
+The arrows have the following meaning: <ul>
+<li>
+A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
+<li>
+A dark green arrow is used for protected inheritance. </li>
+<li>
+A dark red arrow is used for private inheritance. </li>
+<li>
+A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
+<li>
+A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:06 2011 for Heimdal crypto library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/graph_legend.png b/crypto/heimdal/doc/doxyout/hcrypto/html/graph_legend.png
new file mode 100644
index 000000000000..9b96937bfd5f
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/graph_legend.png
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__core.html b/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__core.html
new file mode 100644
index 000000000000..5b2805884a1f
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__core.html
@@ -0,0 +1,190 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdal crypto library: hcrypto function controlling behavior</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hcrypto function controlling behavior</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__core.html#gdeab70eab0fd570d0322bca3a72681ba">EVP_CIPHER_CTX_rand_key</a> (EVP_CIPHER_CTX *ctx, void *key)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__core.html#g97c103e02bc22ed1c4ef196ba0571941">EVP_CIPHER_CTX_ctrl</a> (EVP_CIPHER_CTX *ctx, int type, int arg, void *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__core.html#g8d39c8f6846136633bc84ca14ef4ec0e">OpenSSL_add_all_algorithms</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__core.html#gd3aae18798d3ec4da0a3f4affe29263a">OpenSSL_add_all_algorithms_conf</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__core.html#g99be2e9346299cc4d4804d7b7be18028">OpenSSL_add_all_algorithms_noconf</a> (void)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g97c103e02bc22ed1c4ef196ba0571941"></a><!-- doxytag: member="evp.c::EVP_CIPHER_CTX_ctrl" ref="g97c103e02bc22ed1c4ef196ba0571941" args="(EVP_CIPHER_CTX *ctx, int type, int arg, void *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int EVP_CIPHER_CTX_ctrl </td>
+ <td>(</td>
+ <td class="paramtype">EVP_CIPHER_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>arg</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Perform a operation on a ctx<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>context to perform operation on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>type of operation. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>arg</em>&nbsp;</td><td>argument to operation. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>addition data to operation.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 for success, 0 for failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gdeab70eab0fd570d0322bca3a72681ba"></a><!-- doxytag: member="evp.c::EVP_CIPHER_CTX_rand_key" ref="gdeab70eab0fd570d0322bca3a72681ba" args="(EVP_CIPHER_CTX *ctx, void *key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int EVP_CIPHER_CTX_rand_key </td>
+ <td>(</td>
+ <td class="paramtype">EVP_CIPHER_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Generate a random key for the specificed EVP_CIPHER.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>EVP_CIPHER_CTX type to build the key for. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>return key, must be at least <a class="el" href="group__hcrypto__evp.html#g4793a9e130da86ac42c497b19395b748">EVP_CIPHER_key_length()</a> byte long.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 for success, 0 for failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8d39c8f6846136633bc84ca14ef4ec0e"></a><!-- doxytag: member="evp.c::OpenSSL_add_all_algorithms" ref="g8d39c8f6846136633bc84ca14ef4ec0e" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void OpenSSL_add_all_algorithms </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add all algorithms to the crypto core.
+</div>
+</div><p>
+<a class="anchor" name="gd3aae18798d3ec4da0a3f4affe29263a"></a><!-- doxytag: member="evp.c::OpenSSL_add_all_algorithms_conf" ref="gd3aae18798d3ec4da0a3f4affe29263a" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void OpenSSL_add_all_algorithms_conf </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add all algorithms to the crypto core using configuration file.
+</div>
+</div><p>
+<a class="anchor" name="g99be2e9346299cc4d4804d7b7be18028"></a><!-- doxytag: member="evp.c::OpenSSL_add_all_algorithms_noconf" ref="g99be2e9346299cc4d4804d7b7be18028" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void OpenSSL_add_all_algorithms_noconf </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add all algorithms to the crypto core, but don't use the configuration file.
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:05 2011 for Heimdal crypto library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__des.html b/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__des.html
new file mode 100644
index 000000000000..0f9dc548098a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__des.html
@@ -0,0 +1,910 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdal crypto library: DES crypto functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>DES crypto functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g4179bef43ceb72cc2034f39e7d2d5ae4">DES_set_odd_parity</a> (DES_cblock *key)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int HC_DEPRECATED&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gcf0d611296ad70edf90a3130b2f62c71">DES_check_key_parity</a> (DES_cblock *key)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g0d8a49cafee4be6cd3922bfb6323fd2d">DES_is_weak_key</a> (DES_cblock *key)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int HC_DEPRECATED&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gad10e059974f3048b3de49599989486b">DES_set_key</a> (DES_cblock *key, DES_key_schedule *ks)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g8131d59b5c0f65ca8bba0873932680d5">DES_set_key_unchecked</a> (DES_cblock *key, DES_key_schedule *ks)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g3157dd2419a25cd4381867f012117d07">DES_set_key_checked</a> (DES_cblock *key, DES_key_schedule *ks)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gf5b4967f13a4a52c214c28b6e57a3a95">DES_key_sched</a> (DES_cblock *key, DES_key_schedule *ks)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g39662a8c2218601d402a895f08813662">DES_encrypt</a> (uint32_t u[2], DES_key_schedule *ks, int encp)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#ga5cf9203994e3a5ece2ef7a85e7a2875">DES_ecb_encrypt</a> (DES_cblock *input, DES_cblock *output, DES_key_schedule *ks, int encp)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g4946e6d9a944f8f029df4e6c68d1868e">DES_cbc_encrypt</a> (const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int encp)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g336e497f66748e92b93fc0b4512d78c2">DES_pcbc_encrypt</a> (const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int encp)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gf2de06942efdf1bd45ce0a8c0597654e">DES_ecb3_encrypt</a> (DES_cblock *input, DES_cblock *output, DES_key_schedule *ks1, DES_key_schedule *ks2, DES_key_schedule *ks3, int encp)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g36a83e8a4de4ac0f93ea932229dc3607">DES_ede3_cbc_encrypt</a> (const void *in, void *out, long length, DES_key_schedule *ks1, DES_key_schedule *ks2, DES_key_schedule *ks3, DES_cblock *iv, int encp)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g9c2b24baea3d4e69524335a79e22ae2d">DES_cfb64_encrypt</a> (const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int *num, int encp)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gbf8f1cc95fd03ec1ef59563f9659ec42">DES_cbc_cksum</a> (const void *in, DES_cblock *output, long length, DES_key_schedule *ks, DES_cblock *iv)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g60893cdc75d9ce8cbf4a5d7a874855c8">DES_string_to_key</a> (const char *str, DES_cblock *key)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int HC_DEPRECATED&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gcd3642bcd8a7e93ea977786e5b540d5f">DES_new_random_key</a> (DES_cblock *key)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void HC_DEPRECATED&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g45739e74db49d07bfaa0d7918efd4875">DES_init_random_number_generator</a> (DES_cblock *seed)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void HC_DEPRECATED&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gd70d485549f7444589f3283e938c0258">DES_random_key</a> (DES_cblock *key)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+See the <a class="el" href="page_des.html">DES - Data Encryption Standard crypto interface</a> for description and examples. <hr><h2>Function Documentation</h2>
+<a class="anchor" name="gbf8f1cc95fd03ec1ef59563f9659ec42"></a><!-- doxytag: member="des.c::DES_cbc_cksum" ref="gbf8f1cc95fd03ec1ef59563f9659ec42" args="(const void *in, DES_cblock *output, long length, DES_key_schedule *ks, DES_cblock *iv)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint32_t DES_cbc_cksum </td>
+ <td>(</td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">long&nbsp;</td>
+ <td class="paramname"> <em>length</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_key_schedule *&nbsp;</td>
+ <td class="paramname"> <em>ks</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>iv</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Crete a checksum using DES in CBC encryption mode. This mode is only used for Kerberos 4, and it should stay that way.<p>
+The IV must always be diffrent for diffrent input data blocks.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>data to checksum </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>output</em>&nbsp;</td><td>the checksum </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>length of data </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ks</em>&nbsp;</td><td>key schedule to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>iv</em>&nbsp;</td><td>initial vector to use </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4946e6d9a944f8f029df4e6c68d1868e"></a><!-- doxytag: member="des.c::DES_cbc_encrypt" ref="g4946e6d9a944f8f029df4e6c68d1868e" args="(const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int encp)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void DES_cbc_encrypt </td>
+ <td>(</td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">long&nbsp;</td>
+ <td class="paramname"> <em>length</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_key_schedule *&nbsp;</td>
+ <td class="paramname"> <em>ks</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>iv</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>encp</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Encrypt/decrypt a block using DES in Chain Block Cipher mode (cbc).<p>
+The IV must always be diffrent for diffrent input data blocks.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>data to encrypt </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>data to encrypt </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>length of data </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ks</em>&nbsp;</td><td>key schedule to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>iv</em>&nbsp;</td><td>initial vector to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>encp</em>&nbsp;</td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9c2b24baea3d4e69524335a79e22ae2d"></a><!-- doxytag: member="des.c::DES_cfb64_encrypt" ref="g9c2b24baea3d4e69524335a79e22ae2d" args="(const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int *num, int encp)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void DES_cfb64_encrypt </td>
+ <td>(</td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">long&nbsp;</td>
+ <td class="paramname"> <em>length</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_key_schedule *&nbsp;</td>
+ <td class="paramname"> <em>ks</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>iv</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>num</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>encp</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Encrypt/decrypt using DES in cipher feedback mode with 64 bit feedback.<p>
+The IV must always be diffrent for diffrent input data blocks.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>data to encrypt </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>data to encrypt </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>length of data </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ks</em>&nbsp;</td><td>key schedule to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>iv</em>&nbsp;</td><td>initial vector to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>num</em>&nbsp;</td><td>offset into in cipher block encryption/decryption stop last time. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>encp</em>&nbsp;</td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gcf0d611296ad70edf90a3130b2f62c71"></a><!-- doxytag: member="des.c::DES_check_key_parity" ref="gcf0d611296ad70edf90a3130b2f62c71" args="(DES_cblock *key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int HC_DEPRECATED DES_check_key_parity </td>
+ <td>(</td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>key</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Check if the key have correct parity.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>key to check the parity. </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf2de06942efdf1bd45ce0a8c0597654e"></a><!-- doxytag: member="des.c::DES_ecb3_encrypt" ref="gf2de06942efdf1bd45ce0a8c0597654e" args="(DES_cblock *input, DES_cblock *output, DES_key_schedule *ks1, DES_key_schedule *ks2, DES_key_schedule *ks3, int encp)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void DES_ecb3_encrypt </td>
+ <td>(</td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_key_schedule *&nbsp;</td>
+ <td class="paramname"> <em>ks1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_key_schedule *&nbsp;</td>
+ <td class="paramname"> <em>ks2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_key_schedule *&nbsp;</td>
+ <td class="paramname"> <em>ks3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>encp</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Encrypt/decrypt a block using triple DES using EDE mode, encrypt/decrypt/encrypt.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>input</em>&nbsp;</td><td>data to encrypt </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>output</em>&nbsp;</td><td>data to encrypt </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ks1</em>&nbsp;</td><td>key schedule to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ks2</em>&nbsp;</td><td>key schedule to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ks3</em>&nbsp;</td><td>key schedule to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>encp</em>&nbsp;</td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga5cf9203994e3a5ece2ef7a85e7a2875"></a><!-- doxytag: member="des.c::DES_ecb_encrypt" ref="ga5cf9203994e3a5ece2ef7a85e7a2875" args="(DES_cblock *input, DES_cblock *output, DES_key_schedule *ks, int encp)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void DES_ecb_encrypt </td>
+ <td>(</td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_key_schedule *&nbsp;</td>
+ <td class="paramname"> <em>ks</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>encp</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Encrypt/decrypt a block using DES.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>input</em>&nbsp;</td><td>data to encrypt </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>output</em>&nbsp;</td><td>data to encrypt </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ks</em>&nbsp;</td><td>key schedule to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>encp</em>&nbsp;</td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g36a83e8a4de4ac0f93ea932229dc3607"></a><!-- doxytag: member="des.c::DES_ede3_cbc_encrypt" ref="g36a83e8a4de4ac0f93ea932229dc3607" args="(const void *in, void *out, long length, DES_key_schedule *ks1, DES_key_schedule *ks2, DES_key_schedule *ks3, DES_cblock *iv, int encp)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void DES_ede3_cbc_encrypt </td>
+ <td>(</td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">long&nbsp;</td>
+ <td class="paramname"> <em>length</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_key_schedule *&nbsp;</td>
+ <td class="paramname"> <em>ks1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_key_schedule *&nbsp;</td>
+ <td class="paramname"> <em>ks2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_key_schedule *&nbsp;</td>
+ <td class="paramname"> <em>ks3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>iv</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>encp</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Encrypt/decrypt using Triple DES in Chain Block Cipher mode (cbc).<p>
+The IV must always be diffrent for diffrent input data blocks.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>data to encrypt </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>data to encrypt </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>length of data </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ks1</em>&nbsp;</td><td>key schedule to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ks2</em>&nbsp;</td><td>key schedule to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ks3</em>&nbsp;</td><td>key schedule to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>iv</em>&nbsp;</td><td>initial vector to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>encp</em>&nbsp;</td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g39662a8c2218601d402a895f08813662"></a><!-- doxytag: member="des.c::DES_encrypt" ref="g39662a8c2218601d402a895f08813662" args="(uint32_t u[2], DES_key_schedule *ks, int encp)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void DES_encrypt </td>
+ <td>(</td>
+ <td class="paramtype">uint32_t&nbsp;</td>
+ <td class="paramname"> <em>u</em>[2], </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_key_schedule *&nbsp;</td>
+ <td class="paramname"> <em>ks</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>encp</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Encrypt/decrypt a block using DES. Also called ECB mode<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>u</em>&nbsp;</td><td>data to encrypt </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ks</em>&nbsp;</td><td>key schedule to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>encp</em>&nbsp;</td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g45739e74db49d07bfaa0d7918efd4875"></a><!-- doxytag: member="rnd_keys.c::DES_init_random_number_generator" ref="g45739e74db49d07bfaa0d7918efd4875" args="(DES_cblock *seed)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void HC_DEPRECATED DES_init_random_number_generator </td>
+ <td>(</td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>seed</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Seed the random number generator. Deprecated, use <a class="el" href="page_rand.html">RAND - random number</a><p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>seed</em>&nbsp;</td><td>a seed to seed that random number generate with. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g0d8a49cafee4be6cd3922bfb6323fd2d"></a><!-- doxytag: member="des.c::DES_is_weak_key" ref="g0d8a49cafee4be6cd3922bfb6323fd2d" args="(DES_cblock *key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int DES_is_weak_key </td>
+ <td>(</td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>key</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Checks if the key is any of the weaks keys that makes DES attacks trival.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>key to check.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 if the key is weak, 0 otherwise. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf5b4967f13a4a52c214c28b6e57a3a95"></a><!-- doxytag: member="des.c::DES_key_sched" ref="gf5b4967f13a4a52c214c28b6e57a3a95" args="(DES_cblock *key, DES_key_schedule *ks)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int DES_key_sched </td>
+ <td>(</td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_key_schedule *&nbsp;</td>
+ <td class="paramname"> <em>ks</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Compatibility function for eay libdes, works just like <a class="el" href="group__hcrypto__des.html#g3157dd2419a25cd4381867f012117d07">DES_set_key_checked()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>a key to initialize the key schedule with. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ks</em>&nbsp;</td><td>a key schedule to initialize.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on invalid parity, -2 on weak key. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gcd3642bcd8a7e93ea977786e5b540d5f"></a><!-- doxytag: member="rnd_keys.c::DES_new_random_key" ref="gcd3642bcd8a7e93ea977786e5b540d5f" args="(DES_cblock *key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int HC_DEPRECATED DES_new_random_key </td>
+ <td>(</td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>key</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Generate a random des key using a random block, fixup parity and skip weak keys.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>is set to a random key.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, non zero on random number generator failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g336e497f66748e92b93fc0b4512d78c2"></a><!-- doxytag: member="des.c::DES_pcbc_encrypt" ref="g336e497f66748e92b93fc0b4512d78c2" args="(const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int encp)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void DES_pcbc_encrypt </td>
+ <td>(</td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">long&nbsp;</td>
+ <td class="paramname"> <em>length</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_key_schedule *&nbsp;</td>
+ <td class="paramname"> <em>ks</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>iv</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>encp</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Encrypt/decrypt a block using DES in Propagating Cipher Block Chaining mode. This mode is only used for Kerberos 4, and it should stay that way.<p>
+The IV must always be diffrent for diffrent input data blocks.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>data to encrypt </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>data to encrypt </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>length of data </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ks</em>&nbsp;</td><td>key schedule to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>iv</em>&nbsp;</td><td>initial vector to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>encp</em>&nbsp;</td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd70d485549f7444589f3283e938c0258"></a><!-- doxytag: member="rnd_keys.c::DES_random_key" ref="gd70d485549f7444589f3283e938c0258" args="(DES_cblock *key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void HC_DEPRECATED DES_random_key </td>
+ <td>(</td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>key</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Generate a random key, deprecated since it doesn't return an error code, use <a class="el" href="group__hcrypto__des.html#gcd3642bcd8a7e93ea977786e5b540d5f">DES_new_random_key()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>is set to a random key. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gad10e059974f3048b3de49599989486b"></a><!-- doxytag: member="des.c::DES_set_key" ref="gad10e059974f3048b3de49599989486b" args="(DES_cblock *key, DES_key_schedule *ks)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int HC_DEPRECATED DES_set_key </td>
+ <td>(</td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_key_schedule *&nbsp;</td>
+ <td class="paramname"> <em>ks</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Setup a des key schedule from a key. Deprecated function, use <a class="el" href="group__hcrypto__des.html#g8131d59b5c0f65ca8bba0873932680d5">DES_set_key_unchecked()</a> or <a class="el" href="group__hcrypto__des.html#g3157dd2419a25cd4381867f012117d07">DES_set_key_checked()</a> instead.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>a key to initialize the key schedule with. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ks</em>&nbsp;</td><td>a key schedule to initialize.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3157dd2419a25cd4381867f012117d07"></a><!-- doxytag: member="des.c::DES_set_key_checked" ref="g3157dd2419a25cd4381867f012117d07" args="(DES_cblock *key, DES_key_schedule *ks)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int DES_set_key_checked </td>
+ <td>(</td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_key_schedule *&nbsp;</td>
+ <td class="paramname"> <em>ks</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Just like <a class="el" href="group__hcrypto__des.html#g8131d59b5c0f65ca8bba0873932680d5">DES_set_key_unchecked()</a> except checking that the key is not weak for or have correct parity.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>a key to initialize the key schedule with. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ks</em>&nbsp;</td><td>a key schedule to initialize.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on invalid parity, -2 on weak key. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8131d59b5c0f65ca8bba0873932680d5"></a><!-- doxytag: member="des.c::DES_set_key_unchecked" ref="g8131d59b5c0f65ca8bba0873932680d5" args="(DES_cblock *key, DES_key_schedule *ks)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int DES_set_key_unchecked </td>
+ <td>(</td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_key_schedule *&nbsp;</td>
+ <td class="paramname"> <em>ks</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Setup a des key schedule from a key. The key is no longer needed after this transaction and can cleared.<p>
+Does NOT check that the key is weak for or have wrong parity.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>a key to initialize the key schedule with. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ks</em>&nbsp;</td><td>a key schedule to initialize.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4179bef43ceb72cc2034f39e7d2d5ae4"></a><!-- doxytag: member="des.c::DES_set_odd_parity" ref="g4179bef43ceb72cc2034f39e7d2d5ae4" args="(DES_cblock *key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void DES_set_odd_parity </td>
+ <td>(</td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>key</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the parity of the key block, used to generate a des key from a random key. See <a class="el" href="page_des.html#des_keygen">DES key generation</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>key to fixup the parity for. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g60893cdc75d9ce8cbf4a5d7a874855c8"></a><!-- doxytag: member="des.c::DES_string_to_key" ref="g60893cdc75d9ce8cbf4a5d7a874855c8" args="(const char *str, DES_cblock *key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void DES_string_to_key </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>str</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DES_cblock *&nbsp;</td>
+ <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Convert a string to a DES key. Use something like <a class="el" href="group__hcrypto__misc.html#gece1627cc5535ef7b5e86e2f5a3eec04">PKCS5_PBKDF2_HMAC_SHA1()</a> to create key from passwords.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>The string to convert to a key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>the resulting key </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:05 2011 for Heimdal crypto library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__dh.html b/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__dh.html
new file mode 100644
index 000000000000..8152b6479b05
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__dh.html
@@ -0,0 +1,581 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdal crypto library: Diffie-Hellman functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Diffie-Hellman functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const DH_METHOD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#gbfe13af1fef654a94a9be268df6d8809">DH_ltm_method</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">DH *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g76c6e12bd1f0b9977d80fee83b086031">DH_new</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">DH *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g2e97e03aee56c6094bb7fd6322b3ce68">DH_new_method</a> (ENGINE *engine)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g1f15312ca21e290ee714e86578820c35">DH_free</a> (DH *dh)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#gf7c3e51cba326865c3684012c2337df1">DH_up_ref</a> (DH *dh)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g9e1fdd62e3bfe4b671dbfc363f0e6297">DH_size</a> (const DH *dh)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g7a03e7589a8473ed34cf2a4177709c0e">DH_set_ex_data</a> (DH *dh, int idx, void *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g25fff6e977829c49410f046b8cc3471d">DH_get_ex_data</a> (DH *dh, int idx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g11ef051e93bc408f3e7ba77d44c5d3cb">DH_generate_parameters_ex</a> (DH *dh, int prime_len, int generator, BN_GENCB *cb)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g8995ef180ab448fdedde5da65f6ea249">DH_check_pubkey</a> (const DH *dh, const BIGNUM *pub_key, int *codes)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#gb90ec6b9e64f62c05754731c0c13ea01">DH_generate_key</a> (DH *dh)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#gf8b793df62108341ed3dc54a0ca75ca8">DH_compute_key</a> (unsigned char *shared_key, const BIGNUM *peer_pub_key, DH *dh)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#ge8f6c9ec1c2e4904439227a952980fdd">DH_set_method</a> (DH *dh, const DH_METHOD *method)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const DH_METHOD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g1e3dc0dbc1ba678716d28654c0eded84">DH_null_method</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g6c63e1e8af5957d7f798439c854d06b6">DH_set_default_method</a> (const DH_METHOD *meth)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const DH_METHOD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#ge2b07654d087940e36e7583887d8b070">DH_get_default_method</a> (void)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+See the <a class="el" href="page_dh.html">DH - Diffie-Hellman key exchange</a> for description and examples. <hr><h2>Function Documentation</h2>
+<a class="anchor" name="g8995ef180ab448fdedde5da65f6ea249"></a><!-- doxytag: member="dh.c::DH_check_pubkey" ref="g8995ef180ab448fdedde5da65f6ea249" args="(const DH *dh, const BIGNUM *pub_key, int *codes)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int DH_check_pubkey </td>
+ <td>(</td>
+ <td class="paramtype">const DH *&nbsp;</td>
+ <td class="paramname"> <em>dh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const BIGNUM *&nbsp;</td>
+ <td class="paramname"> <em>pub_key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>codes</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Check that the public key is sane.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>dh</em>&nbsp;</td><td>the local peer DH parameters. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>pub_key</em>&nbsp;</td><td>the remote peer public key parameters. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>codes</em>&nbsp;</td><td>return that the failures of the pub_key are.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure and *codes is set the the combined fail check for the public key </dd></dl>
+
+<p>
+Checks that the function performs are:<ul>
+<li>pub_key is not negative</li></ul>
+<p>
+<ul>
+<li>pub_key &gt; 1 and pub_key &lt; p - 1, to avoid small subgroups attack.</li></ul>
+<p>
+<ul>
+<li>if g == 2, pub_key have more then one bit set, if bits set is 1, log_2(pub_key) is trival </li></ul>
+
+</div>
+</div><p>
+<a class="anchor" name="gf8b793df62108341ed3dc54a0ca75ca8"></a><!-- doxytag: member="dh.c::DH_compute_key" ref="gf8b793df62108341ed3dc54a0ca75ca8" args="(unsigned char *shared_key, const BIGNUM *peer_pub_key, DH *dh)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int DH_compute_key </td>
+ <td>(</td>
+ <td class="paramtype">unsigned char *&nbsp;</td>
+ <td class="paramname"> <em>shared_key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const BIGNUM *&nbsp;</td>
+ <td class="paramname"> <em>peer_pub_key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">DH *&nbsp;</td>
+ <td class="paramname"> <em>dh</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Complute the shared secret key.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>shared_key</em>&nbsp;</td><td>the resulting shared key, need to be at least <a class="el" href="group__hcrypto__dh.html#g9e1fdd62e3bfe4b671dbfc363f0e6297">DH_size()</a> large. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>peer_pub_key</em>&nbsp;</td><td>the peer's public key. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>dh</em>&nbsp;</td><td>the dh key pair.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl>
+
+<p>
+Checks that the pubkey passed in is valid using <a class="el" href="group__hcrypto__dh.html#g8995ef180ab448fdedde5da65f6ea249">DH_check_pubkey()</a>.
+</div>
+</div><p>
+<a class="anchor" name="g1f15312ca21e290ee714e86578820c35"></a><!-- doxytag: member="dh.c::DH_free" ref="g1f15312ca21e290ee714e86578820c35" args="(DH *dh)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void DH_free </td>
+ <td>(</td>
+ <td class="paramtype">DH *&nbsp;</td>
+ <td class="paramname"> <em>dh</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free a DH object and release related resources, like ENGINE, that the object was using.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>dh</em>&nbsp;</td><td>object to be freed. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb90ec6b9e64f62c05754731c0c13ea01"></a><!-- doxytag: member="dh.c::DH_generate_key" ref="gb90ec6b9e64f62c05754731c0c13ea01" args="(DH *dh)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int DH_generate_key </td>
+ <td>(</td>
+ <td class="paramtype">DH *&nbsp;</td>
+ <td class="paramname"> <em>dh</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Generate a new DH private-public key pair. The dh parameter must be allocted first with <a class="el" href="group__hcrypto__dh.html#g76c6e12bd1f0b9977d80fee83b086031">DH_new()</a>. dh-&gt;p and dp-&gt;g must be set.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>dh</em>&nbsp;</td><td>dh parameter.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g11ef051e93bc408f3e7ba77d44c5d3cb"></a><!-- doxytag: member="dh.c::DH_generate_parameters_ex" ref="g11ef051e93bc408f3e7ba77d44c5d3cb" args="(DH *dh, int prime_len, int generator, BN_GENCB *cb)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int DH_generate_parameters_ex </td>
+ <td>(</td>
+ <td class="paramtype">DH *&nbsp;</td>
+ <td class="paramname"> <em>dh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>prime_len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>generator</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">BN_GENCB *&nbsp;</td>
+ <td class="paramname"> <em>cb</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Generate DH parameters for the DH object give parameters.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>dh</em>&nbsp;</td><td>The DH object to generate parameters for. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>prime_len</em>&nbsp;</td><td>length of the prime </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>generator</em>&nbsp;</td><td>generator, g </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cb</em>&nbsp;</td><td>Callback parameters to show progress, can be NULL.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the maximum size in bytes of the out data. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge2b07654d087940e36e7583887d8b070"></a><!-- doxytag: member="dh.c::DH_get_default_method" ref="ge2b07654d087940e36e7583887d8b070" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const DH_METHOD* DH_get_default_method </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the default DH implementation.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>pointer to a DH_METHOD. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g25fff6e977829c49410f046b8cc3471d"></a><!-- doxytag: member="dh.c::DH_get_ex_data" ref="g25fff6e977829c49410f046b8cc3471d" args="(DH *dh, int idx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void* DH_get_ex_data </td>
+ <td>(</td>
+ <td class="paramtype">DH *&nbsp;</td>
+ <td class="paramname"> <em>dh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>idx</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the data for index idx in the DH object.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>dh</em>&nbsp;</td><td>DH object. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>idx</em>&nbsp;</td><td>index to get the data for.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the object store in index idx </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gbfe13af1fef654a94a9be268df6d8809"></a><!-- doxytag: member="dh-ltm.c::DH_ltm_method" ref="gbfe13af1fef654a94a9be268df6d8809" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const DH_METHOD* DH_ltm_method </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+DH implementation using libtommath.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the DH_METHOD for the DH implementation using libtommath. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g76c6e12bd1f0b9977d80fee83b086031"></a><!-- doxytag: member="dh.c::DH_new" ref="g76c6e12bd1f0b9977d80fee83b086031" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">DH* DH_new </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a new DH object using DH_new_method(NULL), see <a class="el" href="group__hcrypto__dh.html#g2e97e03aee56c6094bb7fd6322b3ce68">DH_new_method()</a>.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a newly allocated DH object. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2e97e03aee56c6094bb7fd6322b3ce68"></a><!-- doxytag: member="dh.c::DH_new_method" ref="g2e97e03aee56c6094bb7fd6322b3ce68" args="(ENGINE *engine)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">DH* DH_new_method </td>
+ <td>(</td>
+ <td class="paramtype">ENGINE *&nbsp;</td>
+ <td class="paramname"> <em>engine</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a new DH object from the given engine, if the NULL is used, the default engine is used. Free the DH object with <a class="el" href="group__hcrypto__dh.html#g1f15312ca21e290ee714e86578820c35">DH_free()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>engine</em>&nbsp;</td><td>The engine to use to allocate the DH object.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a newly allocated DH object. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1e3dc0dbc1ba678716d28654c0eded84"></a><!-- doxytag: member="dh.c::DH_null_method" ref="g1e3dc0dbc1ba678716d28654c0eded84" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const DH_METHOD* DH_null_method </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the dummy DH implementation.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>pointer to a DH_METHOD. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6c63e1e8af5957d7f798439c854d06b6"></a><!-- doxytag: member="dh.c::DH_set_default_method" ref="g6c63e1e8af5957d7f798439c854d06b6" args="(const DH_METHOD *meth)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void DH_set_default_method </td>
+ <td>(</td>
+ <td class="paramtype">const DH_METHOD *&nbsp;</td>
+ <td class="paramname"> <em>meth</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the default DH implementation.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>meth</em>&nbsp;</td><td>pointer to a DH_METHOD. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7a03e7589a8473ed34cf2a4177709c0e"></a><!-- doxytag: member="dh.c::DH_set_ex_data" ref="g7a03e7589a8473ed34cf2a4177709c0e" args="(DH *dh, int idx, void *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int DH_set_ex_data </td>
+ <td>(</td>
+ <td class="paramtype">DH *&nbsp;</td>
+ <td class="paramname"> <em>dh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>idx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the data index idx in the DH object to data.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>dh</em>&nbsp;</td><td>DH object. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>idx</em>&nbsp;</td><td>index to set the data for. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>data to store for the index idx.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge8f6c9ec1c2e4904439227a952980fdd"></a><!-- doxytag: member="dh.c::DH_set_method" ref="ge8f6c9ec1c2e4904439227a952980fdd" args="(DH *dh, const DH_METHOD *method)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int DH_set_method </td>
+ <td>(</td>
+ <td class="paramtype">DH *&nbsp;</td>
+ <td class="paramname"> <em>dh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const DH_METHOD *&nbsp;</td>
+ <td class="paramname"> <em>method</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set a new method for the DH keypair.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>dh</em>&nbsp;</td><td>dh parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>method</em>&nbsp;</td><td>the new method for the DH parameter.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9e1fdd62e3bfe4b671dbfc363f0e6297"></a><!-- doxytag: member="dh.c::DH_size" ref="g9e1fdd62e3bfe4b671dbfc363f0e6297" args="(const DH *dh)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int DH_size </td>
+ <td>(</td>
+ <td class="paramtype">const DH *&nbsp;</td>
+ <td class="paramname"> <em>dh</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The maximum output size of the <a class="el" href="group__hcrypto__dh.html#gf8b793df62108341ed3dc54a0ca75ca8">DH_compute_key()</a> function.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>dh</em>&nbsp;</td><td>The DH object to get the size from.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the maximum size in bytes of the out data. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf7c3e51cba326865c3684012c2337df1"></a><!-- doxytag: member="dh.c::DH_up_ref" ref="gf7c3e51cba326865c3684012c2337df1" args="(DH *dh)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int DH_up_ref </td>
+ <td>(</td>
+ <td class="paramtype">DH *&nbsp;</td>
+ <td class="paramname"> <em>dh</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add a reference to the DH object. The object should be free with <a class="el" href="group__hcrypto__dh.html#g1f15312ca21e290ee714e86578820c35">DH_free()</a> to drop the reference.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>dh</em>&nbsp;</td><td>the object to increase the reference count too.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the updated reference count, can't safely be used except for debug printing. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:03 2011 for Heimdal crypto library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__evp.html b/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__evp.html
new file mode 100644
index 000000000000..109fbd7c326e
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__evp.html
@@ -0,0 +1,2366 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdal crypto library: EVP generic crypto functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>EVP generic crypto functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g769121c112a501748233bda8345cb47a">EVP_wincrypt_des_ede3_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g2decf06c0d9b08e364e9c4c8f4d3a7a3">EVP_hcrypto_aes_128_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g16b21d9262c4af37121b0e85cc83b555">EVP_hcrypto_aes_192_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g49b683aa07c039ad31d7e498c87ad95f">EVP_hcrypto_aes_256_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g44eb080ab987799883eae8e64970be6c">EVP_hcrypto_aes_128_cfb8</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g532a6f5c56334ccf8615791bfaef041d">EVP_hcrypto_aes_192_cfb8</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g4f7c34086cea5e4da92f56d543ec24bf">EVP_hcrypto_aes_256_cfb8</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_MD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g12b7608ec40d059f5539fd24277baae0">EVP_hcrypto_sha256</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_MD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gc002bcb2cc8ee9bb58b5924ab0bc3533">EVP_hcrypto_sha384</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_MD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gef3c401b9d2e696f89f27335f4b261e2">EVP_hcrypto_sha512</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_MD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g5dc409fc540bad0751b96b3f74185477">EVP_hcrypto_sha1</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_MD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g3c7a8676a690817ec03d71568a7deb1b">EVP_hcrypto_md5</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_MD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g4456dfa7c2f23830fa32b99969720719">EVP_hcrypto_md4</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_MD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g89d756ccb4919c5102481da488b86aaa">EVP_hcrypto_md2</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g0cc4edf9d19ebf7198e33ac0c8138f04">EVP_hcrypto_des_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g1c0e19f28dc594d929f089721e737237">EVP_hcrypto_des_ede3_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gc238450b802f4e0c78752ef1ba1198e9">EVP_hcrypto_rc2_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g35d681a86e0ed71b505b53e5fc199ed5">EVP_hcrypto_rc2_40_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gb7534f69db09cd76e4c36703a9340212">EVP_hcrypto_rc2_64_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g68deec0ffc93c0dcd83db0478e72d5b8">EVP_hcrypto_camellia_128_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gfd6acecc697a1f9516909ca228cb54e5">EVP_hcrypto_camellia_192_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g211f7122bdeeb3551dcd02c37a7a11e6">EVP_hcrypto_camellia_256_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gbea28e9ccb98329a7a76c95e8699221c">EVP_MD_size</a> (const EVP_MD *md)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g48ccb698903828660dc1722d31311420">EVP_MD_block_size</a> (const EVP_MD *md)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">EVP_MD_CTX *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g54bfa0296db2c131ef69e3a18c445357">EVP_MD_CTX_create</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g3fd216754cf705b7d4980744b1508410">EVP_MD_CTX_init</a> (EVP_MD_CTX *ctx) HC_DEPRECATED</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#ge105ea6e5626f521fbe8cad0a85cbe46">EVP_MD_CTX_destroy</a> (EVP_MD_CTX *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g34dea52c788c741fdb4f8fb051be3308">EVP_MD_CTX_cleanup</a> (EVP_MD_CTX *ctx) HC_DEPRECATED</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_MD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#ged3480025ecf31d0afcb62174d6acc24">EVP_MD_CTX_md</a> (EVP_MD_CTX *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g25a51444f0586be1494f78e4e17e65f8">EVP_MD_CTX_size</a> (EVP_MD_CTX *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gb35a28f548e64c74dbfd7198c04dad5d">EVP_MD_CTX_block_size</a> (EVP_MD_CTX *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gb6b800ba80b850cba223723b28fc9a44">EVP_DigestInit_ex</a> (EVP_MD_CTX *ctx, const EVP_MD *md, ENGINE *engine)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g12039fea1f371ef39a489d450f564338">EVP_DigestUpdate</a> (EVP_MD_CTX *ctx, const void *data, size_t size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g5103bec19556f264e1f442c6ffc3bddc">EVP_DigestFinal_ex</a> (EVP_MD_CTX *ctx, void *hash, unsigned int *size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gb785fa9dd0a45be223a0d576af062c4b">EVP_Digest</a> (const void *data, size_t dsize, void *hash, unsigned int *hsize, const EVP_MD *md, ENGINE *engine)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_MD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gfe55e56742a9b9ecffdaef7e95a6707a">EVP_sha256</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_MD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g031405a10c84711b9a9699fadc8dbf2a">EVP_sha384</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_MD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gceda0d5da59b56159d2e3515039a46ce">EVP_sha512</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_MD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#ga090d659a494a10525e38d272efb01ae">EVP_sha1</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_MD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gee62cb107a208bd6984dd767f9feb8c0">EVP_sha</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_MD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g3ccaad2c97f5cf27adb461b1b50aeabb">EVP_md5</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_MD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gd232ca5dcef4ec58b182cb967f519999">EVP_md4</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_MD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g4b583f3de5fc66b04f675428da25efd0">EVP_md2</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_MD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g5183830cf039ea4d9a2c1bd3c539e9af">EVP_md_null</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g3123ff4b426783dd972538249b9e9d4d">EVP_CIPHER_block_size</a> (const EVP_CIPHER *c)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g4793a9e130da86ac42c497b19395b748">EVP_CIPHER_key_length</a> (const EVP_CIPHER *c)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g7edebe76d19dee11686a6698d24f19f5">EVP_CIPHER_iv_length</a> (const EVP_CIPHER *c)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g13d0ff0e87312566cb6b3591157f9754">EVP_CIPHER_CTX_init</a> (EVP_CIPHER_CTX *c)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gc16dd3987cd90c8bcdbad5290c558359">EVP_CIPHER_CTX_cleanup</a> (EVP_CIPHER_CTX *c)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gc4d29d4bc3473f2499cfa83f0201386c">EVP_CIPHER_CTX_set_key_length</a> (EVP_CIPHER_CTX *c, int length)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g4018621241b76f106903263614967aff">EVP_CIPHER_CTX_cipher</a> (EVP_CIPHER_CTX *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g9eaa8ae82fd5550771c4dfed92d82d5b">EVP_CIPHER_CTX_block_size</a> (const EVP_CIPHER_CTX *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gd9a4a54b9b5d0b6035c7522ca461a9db">EVP_CIPHER_CTX_key_length</a> (const EVP_CIPHER_CTX *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#ge160dd334fea8b844a4ef8a2ed5fbb0b">EVP_CIPHER_CTX_iv_length</a> (const EVP_CIPHER_CTX *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g6f8b7130068dbc4f03fb2cf65cee02bf">EVP_CIPHER_CTX_flags</a> (const EVP_CIPHER_CTX *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gc8013ca93e9b1ed25df3f535eb633f1a">EVP_CIPHER_CTX_mode</a> (const EVP_CIPHER_CTX *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g0f78fd8ac0fa0765245e373d42fc90e3">EVP_CIPHER_CTX_get_app_data</a> (EVP_CIPHER_CTX *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g4fa322f7c3fe5fc570b8343d4d64fc52">EVP_CIPHER_CTX_set_app_data</a> (EVP_CIPHER_CTX *ctx, void *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g98da5a5c1aa25d9cb2e4717fa11314bd">EVP_CipherInit_ex</a> (EVP_CIPHER_CTX *ctx, const EVP_CIPHER *c, ENGINE *engine, const void *key, const void *iv, int encp)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g863349e1001b36cfd6c4afedddd12862">EVP_CipherUpdate</a> (EVP_CIPHER_CTX *ctx, void *out, int *outlen, void *in, size_t inlen)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g714eef7d737fd68171d852043a4995de">EVP_CipherFinal_ex</a> (EVP_CIPHER_CTX *ctx, void *out, int *outlen)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g70a05495ee115c6eb26d958a5ac75c8b">EVP_enc_null</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gc7d0f7590921dde70bebeebadd2fec36">EVP_rc2_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g104bcd969bcc30dc3e7e77d63a38a87e">EVP_rc2_40_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g09cd194a211931839f1e7bb8e578099e">EVP_rc2_64_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g9cb683240f384ddbd0f3279960af93ba">EVP_rc4</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#ge5cbdfcb5012a07fec8df1d6b9c5d772">EVP_rc4_40</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g8ba85e78fac7521ad71cb29ef62beab9">EVP_des_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g191c1d946437661ee23de2ad9b3383e3">EVP_des_ede3_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g2747bac943db15c97167ac37fdc2af43">EVP_aes_128_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g06625e6b350dcb0d99e05bde8d813867">EVP_aes_192_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g597a638984cfe169f5b794a01076d289">EVP_aes_256_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g95457efd23f815aaa9d54a39f71bd4f6">EVP_aes_128_cfb8</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g6c566f0f7831881bd835db251372790b">EVP_aes_192_cfb8</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g4bf9f0274a43b3964f1c880900c80ded">EVP_aes_256_cfb8</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g204d1d59a0ec740ed29ec0ebcc2d9c97">EVP_camellia_128_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g40e2b8cba4baa4ec4aa467bbd1defeb7">EVP_camellia_192_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g6de35c364f330f1decfb3444c4c6fa3c">EVP_camellia_256_cbc</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const EVP_CIPHER *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#gead9b446ac5ebd90dc7be0dbe6aba2b0">EVP_get_cipherbyname</a> (const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__evp.html#g25d3fb64e10e2c494858de14fc5d79b3">EVP_BytesToKey</a> (const EVP_CIPHER *type, const EVP_MD *md, const void *salt, const void *data, size_t datalen, unsigned int count, void *keydata, void *ivdata)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+See the <a class="el" href="page_evp.html">EVP - generic crypto interface</a> for description and examples. <hr><h2>Function Documentation</h2>
+<a class="anchor" name="g2747bac943db15c97167ac37fdc2af43"></a><!-- doxytag: member="evp.c::EVP_aes_128_cbc" ref="g2747bac943db15c97167ac37fdc2af43" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_aes_128_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The AES-128 cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the AES-128 EVP_CIPHER pointer. </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="example__evp__cipher_8c-example.html#a0">example_evp_cipher.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g95457efd23f815aaa9d54a39f71bd4f6"></a><!-- doxytag: member="evp.c::EVP_aes_128_cfb8" ref="g95457efd23f815aaa9d54a39f71bd4f6" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_aes_128_cfb8 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The AES-128 cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the AES-128 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g06625e6b350dcb0d99e05bde8d813867"></a><!-- doxytag: member="evp.c::EVP_aes_192_cbc" ref="g06625e6b350dcb0d99e05bde8d813867" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_aes_192_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The AES-192 cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the AES-192 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6c566f0f7831881bd835db251372790b"></a><!-- doxytag: member="evp.c::EVP_aes_192_cfb8" ref="g6c566f0f7831881bd835db251372790b" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_aes_192_cfb8 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The AES-192 cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the AES-192 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g597a638984cfe169f5b794a01076d289"></a><!-- doxytag: member="evp.c::EVP_aes_256_cbc" ref="g597a638984cfe169f5b794a01076d289" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_aes_256_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The AES-256 cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the AES-256 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4bf9f0274a43b3964f1c880900c80ded"></a><!-- doxytag: member="evp.c::EVP_aes_256_cfb8" ref="g4bf9f0274a43b3964f1c880900c80ded" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_aes_256_cfb8 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The AES-256 cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the AES-256 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g25d3fb64e10e2c494858de14fc5d79b3"></a><!-- doxytag: member="evp.c::EVP_BytesToKey" ref="g25d3fb64e10e2c494858de14fc5d79b3" args="(const EVP_CIPHER *type, const EVP_MD *md, const void *salt, const void *data, size_t datalen, unsigned int count, void *keydata, void *ivdata)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int EVP_BytesToKey </td>
+ <td>(</td>
+ <td class="paramtype">const EVP_CIPHER *&nbsp;</td>
+ <td class="paramname"> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const EVP_MD *&nbsp;</td>
+ <td class="paramname"> <em>md</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>salt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>datalen</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&nbsp;</td>
+ <td class="paramname"> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>keydata</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>ivdata</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Provides a legancy string to key function, used in PEM files.<p>
+New protocols should use new string to key functions like NIST SP56-800A or PKCS#5 v2.0 (see <a class="el" href="group__hcrypto__misc.html#gece1627cc5535ef7b5e86e2f5a3eec04">PKCS5_PBKDF2_HMAC_SHA1()</a>).<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>type of cipher to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>md</em>&nbsp;</td><td>message digest to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>salt</em>&nbsp;</td><td>salt salt string, should be an binary 8 byte buffer. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the password/input key string. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>datalen</em>&nbsp;</td><td>length of data parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>iteration counter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>keydata</em>&nbsp;</td><td>output keydata, needs to of the size <a class="el" href="group__hcrypto__evp.html#g4793a9e130da86ac42c497b19395b748">EVP_CIPHER_key_length()</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ivdata</em>&nbsp;</td><td>output ivdata, needs to of the size <a class="el" href="group__hcrypto__evp.html#g3123ff4b426783dd972538249b9e9d4d">EVP_CIPHER_block_size()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the size of derived key. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g204d1d59a0ec740ed29ec0ebcc2d9c97"></a><!-- doxytag: member="evp.c::EVP_camellia_128_cbc" ref="g204d1d59a0ec740ed29ec0ebcc2d9c97" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_camellia_128_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The Camellia-128 cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the Camellia-128 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g40e2b8cba4baa4ec4aa467bbd1defeb7"></a><!-- doxytag: member="evp.c::EVP_camellia_192_cbc" ref="g40e2b8cba4baa4ec4aa467bbd1defeb7" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_camellia_192_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The Camellia-198 cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the Camellia-198 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6de35c364f330f1decfb3444c4c6fa3c"></a><!-- doxytag: member="evp.c::EVP_camellia_256_cbc" ref="g6de35c364f330f1decfb3444c4c6fa3c" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_camellia_256_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The Camellia-256 cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the Camellia-256 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3123ff4b426783dd972538249b9e9d4d"></a><!-- doxytag: member="evp.c::EVP_CIPHER_block_size" ref="g3123ff4b426783dd972538249b9e9d4d" args="(const EVP_CIPHER *c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t EVP_CIPHER_block_size </td>
+ <td>(</td>
+ <td class="paramtype">const EVP_CIPHER *&nbsp;</td>
+ <td class="paramname"> <em>c</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the block size of the cipher.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>cipher to get the block size from.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the block size of the cipher. </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="example__evp__cipher_8c-example.html#a3">example_evp_cipher.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g9eaa8ae82fd5550771c4dfed92d82d5b"></a><!-- doxytag: member="evp.c::EVP_CIPHER_CTX_block_size" ref="g9eaa8ae82fd5550771c4dfed92d82d5b" args="(const EVP_CIPHER_CTX *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t EVP_CIPHER_CTX_block_size </td>
+ <td>(</td>
+ <td class="paramtype">const EVP_CIPHER_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the block size of the cipher context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>cipher context to get the block size from.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the block size of the cipher context. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4018621241b76f106903263614967aff"></a><!-- doxytag: member="evp.c::EVP_CIPHER_CTX_cipher" ref="g4018621241b76f106903263614967aff" args="(EVP_CIPHER_CTX *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_CIPHER_CTX_cipher </td>
+ <td>(</td>
+ <td class="paramtype">EVP_CIPHER_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the EVP_CIPHER for a EVP_CIPHER_CTX context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>the context to get the cipher type from.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc16dd3987cd90c8bcdbad5290c558359"></a><!-- doxytag: member="evp.c::EVP_CIPHER_CTX_cleanup" ref="gc16dd3987cd90c8bcdbad5290c558359" args="(EVP_CIPHER_CTX *c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int EVP_CIPHER_CTX_cleanup </td>
+ <td>(</td>
+ <td class="paramtype">EVP_CIPHER_CTX *&nbsp;</td>
+ <td class="paramname"> <em>c</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Clean up the EVP_CIPHER_CTX context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>the cipher to clean up.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="example__evp__cipher_8c-example.html#a7">example_evp_cipher.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g6f8b7130068dbc4f03fb2cf65cee02bf"></a><!-- doxytag: member="evp.c::EVP_CIPHER_CTX_flags" ref="g6f8b7130068dbc4f03fb2cf65cee02bf" args="(const EVP_CIPHER_CTX *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned long EVP_CIPHER_CTX_flags </td>
+ <td>(</td>
+ <td class="paramtype">const EVP_CIPHER_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the flags for an EVP_CIPHER_CTX context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>the EVP_CIPHER_CTX to get the flags from</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the flags for an EVP_CIPHER_CTX. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g0f78fd8ac0fa0765245e373d42fc90e3"></a><!-- doxytag: member="evp.c::EVP_CIPHER_CTX_get_app_data" ref="g0f78fd8ac0fa0765245e373d42fc90e3" args="(EVP_CIPHER_CTX *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void* EVP_CIPHER_CTX_get_app_data </td>
+ <td>(</td>
+ <td class="paramtype">EVP_CIPHER_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the app data for an EVP_CIPHER_CTX context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>the EVP_CIPHER_CTX to get the app data from</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the app data for an EVP_CIPHER_CTX. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g13d0ff0e87312566cb6b3591157f9754"></a><!-- doxytag: member="evp.c::EVP_CIPHER_CTX_init" ref="g13d0ff0e87312566cb6b3591157f9754" args="(EVP_CIPHER_CTX *c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void EVP_CIPHER_CTX_init </td>
+ <td>(</td>
+ <td class="paramtype">EVP_CIPHER_CTX *&nbsp;</td>
+ <td class="paramname"> <em>c</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Initiate a EVP_CIPHER_CTX context. Clean up with <a class="el" href="group__hcrypto__evp.html#gc16dd3987cd90c8bcdbad5290c558359">EVP_CIPHER_CTX_cleanup()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>the cipher initiate. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="example__evp__cipher_8c-example.html#a4">example_evp_cipher.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="ge160dd334fea8b844a4ef8a2ed5fbb0b"></a><!-- doxytag: member="evp.c::EVP_CIPHER_CTX_iv_length" ref="ge160dd334fea8b844a4ef8a2ed5fbb0b" args="(const EVP_CIPHER_CTX *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t EVP_CIPHER_CTX_iv_length </td>
+ <td>(</td>
+ <td class="paramtype">const EVP_CIPHER_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the IV size of the cipher context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>cipher context to get the IV size from.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the IV size of the cipher context. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd9a4a54b9b5d0b6035c7522ca461a9db"></a><!-- doxytag: member="evp.c::EVP_CIPHER_CTX_key_length" ref="gd9a4a54b9b5d0b6035c7522ca461a9db" args="(const EVP_CIPHER_CTX *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t EVP_CIPHER_CTX_key_length </td>
+ <td>(</td>
+ <td class="paramtype">const EVP_CIPHER_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the key size of the cipher context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>cipher context to get the key size from.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the key size of the cipher context. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc8013ca93e9b1ed25df3f535eb633f1a"></a><!-- doxytag: member="evp.c::EVP_CIPHER_CTX_mode" ref="gc8013ca93e9b1ed25df3f535eb633f1a" args="(const EVP_CIPHER_CTX *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int EVP_CIPHER_CTX_mode </td>
+ <td>(</td>
+ <td class="paramtype">const EVP_CIPHER_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the mode for an EVP_CIPHER_CTX context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>the EVP_CIPHER_CTX to get the mode from</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the mode for an EVP_CIPHER_CTX. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4fa322f7c3fe5fc570b8343d4d64fc52"></a><!-- doxytag: member="evp.c::EVP_CIPHER_CTX_set_app_data" ref="g4fa322f7c3fe5fc570b8343d4d64fc52" args="(EVP_CIPHER_CTX *ctx, void *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void EVP_CIPHER_CTX_set_app_data </td>
+ <td>(</td>
+ <td class="paramtype">EVP_CIPHER_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the app data for an EVP_CIPHER_CTX context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>the EVP_CIPHER_CTX to set the app data for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the app data to set for an EVP_CIPHER_CTX. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc4d29d4bc3473f2499cfa83f0201386c"></a><!-- doxytag: member="evp.c::EVP_CIPHER_CTX_set_key_length" ref="gc4d29d4bc3473f2499cfa83f0201386c" args="(EVP_CIPHER_CTX *c, int length)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int EVP_CIPHER_CTX_set_key_length </td>
+ <td>(</td>
+ <td class="paramtype">EVP_CIPHER_CTX *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>length</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+If the cipher type supports it, change the key length<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>the cipher context to change the key length for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>new key length</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7edebe76d19dee11686a6698d24f19f5"></a><!-- doxytag: member="evp.c::EVP_CIPHER_iv_length" ref="g7edebe76d19dee11686a6698d24f19f5" args="(const EVP_CIPHER *c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t EVP_CIPHER_iv_length </td>
+ <td>(</td>
+ <td class="paramtype">const EVP_CIPHER *&nbsp;</td>
+ <td class="paramname"> <em>c</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the IV size of the cipher.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>cipher to get the IV size from.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the IV size of the cipher. </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="example__evp__cipher_8c-example.html#a2">example_evp_cipher.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g4793a9e130da86ac42c497b19395b748"></a><!-- doxytag: member="evp.c::EVP_CIPHER_key_length" ref="g4793a9e130da86ac42c497b19395b748" args="(const EVP_CIPHER *c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t EVP_CIPHER_key_length </td>
+ <td>(</td>
+ <td class="paramtype">const EVP_CIPHER *&nbsp;</td>
+ <td class="paramname"> <em>c</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the key size of the cipher.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>cipher to get the key size from.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the key size of the cipher. </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="example__evp__cipher_8c-example.html#a1">example_evp_cipher.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g714eef7d737fd68171d852043a4995de"></a><!-- doxytag: member="evp.c::EVP_CipherFinal_ex" ref="g714eef7d737fd68171d852043a4995de" args="(EVP_CIPHER_CTX *ctx, void *out, int *outlen)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int EVP_CipherFinal_ex </td>
+ <td>(</td>
+ <td class="paramtype">EVP_CIPHER_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>outlen</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Encipher/decipher final data<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>the cipher context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>output data from the operation. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>outlen</em>&nbsp;</td><td>output length</td></tr>
+ </table>
+</dl>
+The input length needs to be at least <a class="el" href="group__hcrypto__evp.html#g3123ff4b426783dd972538249b9e9d4d">EVP_CIPHER_block_size()</a> bytes long.<p>
+See <a class="el" href="page_evp.html#evp_cipher">EVP Cipher</a> for an example how to use this function.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="example__evp__cipher_8c-example.html#a8">example_evp_cipher.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g98da5a5c1aa25d9cb2e4717fa11314bd"></a><!-- doxytag: member="evp.c::EVP_CipherInit_ex" ref="g98da5a5c1aa25d9cb2e4717fa11314bd" args="(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *c, ENGINE *engine, const void *key, const void *iv, int encp)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int EVP_CipherInit_ex </td>
+ <td>(</td>
+ <td class="paramtype">EVP_CIPHER_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const EVP_CIPHER *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ENGINE *&nbsp;</td>
+ <td class="paramname"> <em>engine</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>iv</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>encp</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Initiate the EVP_CIPHER_CTX context to encrypt or decrypt data. Clean up with <a class="el" href="group__hcrypto__evp.html#gc16dd3987cd90c8bcdbad5290c558359">EVP_CIPHER_CTX_cleanup()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>context to initiate </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>cipher to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>engine</em>&nbsp;</td><td>crypto engine to use, NULL to select default. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>the crypto key to use, NULL will use the previous value. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>iv</em>&nbsp;</td><td>the IV to use, NULL will use the previous value. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>encp</em>&nbsp;</td><td>non zero will encrypt, -1 use the previous value.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="example__evp__cipher_8c-example.html#a5">example_evp_cipher.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g863349e1001b36cfd6c4afedddd12862"></a><!-- doxytag: member="evp.c::EVP_CipherUpdate" ref="g863349e1001b36cfd6c4afedddd12862" args="(EVP_CIPHER_CTX *ctx, void *out, int *outlen, void *in, size_t inlen)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int EVP_CipherUpdate </td>
+ <td>(</td>
+ <td class="paramtype">EVP_CIPHER_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>outlen</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>inlen</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Encipher/decipher partial data<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>the cipher context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>output data from the operation. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>outlen</em>&nbsp;</td><td>output length </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>input data to the operation. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>inlen</em>&nbsp;</td><td>length of data.</td></tr>
+ </table>
+</dl>
+The output buffer length should at least be <a class="el" href="group__hcrypto__evp.html#g3123ff4b426783dd972538249b9e9d4d">EVP_CIPHER_block_size()</a> byte longer then the input length.<p>
+See <a class="el" href="page_evp.html#evp_cipher">EVP Cipher</a> for an example how to use this function.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl>
+
+<p>
+If there in no spare bytes in the left from last Update and the input length is on the block boundery, the <a class="el" href="group__hcrypto__evp.html#g863349e1001b36cfd6c4afedddd12862">EVP_CipherUpdate()</a> function can take a shortcut (and preformance gain) and directly encrypt the data, otherwise we hav to fix it up and store extra it the EVP_CIPHER_CTX. <dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="example__evp__cipher_8c-example.html#a6">example_evp_cipher.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="g8ba85e78fac7521ad71cb29ef62beab9"></a><!-- doxytag: member="evp.c::EVP_des_cbc" ref="g8ba85e78fac7521ad71cb29ef62beab9" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_des_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The DES cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the DES-CBC EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g191c1d946437661ee23de2ad9b3383e3"></a><!-- doxytag: member="evp.c::EVP_des_ede3_cbc" ref="g191c1d946437661ee23de2ad9b3383e3" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_des_ede3_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The tripple DES cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the DES-EDE3-CBC EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb785fa9dd0a45be223a0d576af062c4b"></a><!-- doxytag: member="evp.c::EVP_Digest" ref="gb785fa9dd0a45be223a0d576af062c4b" args="(const void *data, size_t dsize, void *hash, unsigned int *hsize, const EVP_MD *md, ENGINE *engine)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int EVP_Digest </td>
+ <td>(</td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>dsize</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>hash</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int *&nbsp;</td>
+ <td class="paramname"> <em>hsize</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const EVP_MD *&nbsp;</td>
+ <td class="paramname"> <em>md</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ENGINE *&nbsp;</td>
+ <td class="paramname"> <em>engine</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Do the whole <a class="el" href="group__hcrypto__evp.html#g54bfa0296db2c131ef69e3a18c445357">EVP_MD_CTX_create()</a>, <a class="el" href="group__hcrypto__evp.html#gb6b800ba80b850cba223723b28fc9a44">EVP_DigestInit_ex()</a>, <a class="el" href="group__hcrypto__evp.html#g12039fea1f371ef39a489d450f564338">EVP_DigestUpdate()</a>, <a class="el" href="group__hcrypto__evp.html#g5103bec19556f264e1f442c6ffc3bddc">EVP_DigestFinal_ex()</a>, <a class="el" href="group__hcrypto__evp.html#ge105ea6e5626f521fbe8cad0a85cbe46">EVP_MD_CTX_destroy()</a> dance in one call.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the data to update the context with </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>dsize</em>&nbsp;</td><td>length of data </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>hash</em>&nbsp;</td><td>output data of at least <a class="el" href="group__hcrypto__evp.html#gbea28e9ccb98329a7a76c95e8699221c">EVP_MD_size()</a> length. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>hsize</em>&nbsp;</td><td>output length of hash. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>md</em>&nbsp;</td><td>message digest to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>engine</em>&nbsp;</td><td>engine to use, NULL for default engine.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5103bec19556f264e1f442c6ffc3bddc"></a><!-- doxytag: member="evp.c::EVP_DigestFinal_ex" ref="g5103bec19556f264e1f442c6ffc3bddc" args="(EVP_MD_CTX *ctx, void *hash, unsigned int *size)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int EVP_DigestFinal_ex </td>
+ <td>(</td>
+ <td class="paramtype">EVP_MD_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>hash</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int *&nbsp;</td>
+ <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Complete the message digest.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>the context to complete. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>hash</em>&nbsp;</td><td>the output of the message digest function. At least <a class="el" href="group__hcrypto__evp.html#gbea28e9ccb98329a7a76c95e8699221c">EVP_MD_size()</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>the output size of hash.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb6b800ba80b850cba223723b28fc9a44"></a><!-- doxytag: member="evp.c::EVP_DigestInit_ex" ref="gb6b800ba80b850cba223723b28fc9a44" args="(EVP_MD_CTX *ctx, const EVP_MD *md, ENGINE *engine)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int EVP_DigestInit_ex </td>
+ <td>(</td>
+ <td class="paramtype">EVP_MD_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const EVP_MD *&nbsp;</td>
+ <td class="paramname"> <em>md</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ENGINE *&nbsp;</td>
+ <td class="paramname"> <em>engine</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Init a EVP_MD_CTX for use a specific message digest and engine.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>the message digest context to init. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>md</em>&nbsp;</td><td>the message digest to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>engine</em>&nbsp;</td><td>the engine to use, NULL to use the default engine.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g12039fea1f371ef39a489d450f564338"></a><!-- doxytag: member="evp.c::EVP_DigestUpdate" ref="g12039fea1f371ef39a489d450f564338" args="(EVP_MD_CTX *ctx, const void *data, size_t size)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int EVP_DigestUpdate </td>
+ <td>(</td>
+ <td class="paramtype">EVP_MD_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Update the digest with some data.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>the context to update </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the data to update the context with </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>length of data</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g70a05495ee115c6eb26d958a5ac75c8b"></a><!-- doxytag: member="evp.c::EVP_enc_null" ref="g70a05495ee115c6eb26d958a5ac75c8b" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_enc_null </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The NULL cipher type, does no encryption/decryption.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the null EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gead9b446ac5ebd90dc7be0dbe6aba2b0"></a><!-- doxytag: member="evp.c::EVP_get_cipherbyname" ref="gead9b446ac5ebd90dc7be0dbe6aba2b0" args="(const char *name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_get_cipherbyname </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>name</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the cipher type using their name.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>the name of the cipher.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the selected EVP_CIPHER pointer or NULL if not found. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2decf06c0d9b08e364e9c4c8f4d3a7a3"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_aes_128_cbc" ref="g2decf06c0d9b08e364e9c4c8f4d3a7a3" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_hcrypto_aes_128_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The AES-128 cipher type (hcrypto)<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the AES-128 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g44eb080ab987799883eae8e64970be6c"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_aes_128_cfb8" ref="g44eb080ab987799883eae8e64970be6c" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_hcrypto_aes_128_cfb8 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The AES-128 CFB8 cipher type (hcrypto)<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the AES-128 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g16b21d9262c4af37121b0e85cc83b555"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_aes_192_cbc" ref="g16b21d9262c4af37121b0e85cc83b555" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_hcrypto_aes_192_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The AES-192 cipher type (hcrypto)<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the AES-192 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g532a6f5c56334ccf8615791bfaef041d"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_aes_192_cfb8" ref="g532a6f5c56334ccf8615791bfaef041d" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_hcrypto_aes_192_cfb8 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The AES-192 CFB8 cipher type (hcrypto)<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the AES-192 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g49b683aa07c039ad31d7e498c87ad95f"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_aes_256_cbc" ref="g49b683aa07c039ad31d7e498c87ad95f" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_hcrypto_aes_256_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The AES-256 cipher type (hcrypto)<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the AES-256 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4f7c34086cea5e4da92f56d543ec24bf"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_aes_256_cfb8" ref="g4f7c34086cea5e4da92f56d543ec24bf" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_hcrypto_aes_256_cfb8 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The AES-256 CFB8 cipher type (hcrypto)<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the AES-256 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g68deec0ffc93c0dcd83db0478e72d5b8"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_camellia_128_cbc" ref="g68deec0ffc93c0dcd83db0478e72d5b8" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_hcrypto_camellia_128_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The Camellia-128 cipher type - hcrypto<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the Camellia-128 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gfd6acecc697a1f9516909ca228cb54e5"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_camellia_192_cbc" ref="gfd6acecc697a1f9516909ca228cb54e5" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_hcrypto_camellia_192_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The Camellia-198 cipher type - hcrypto<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the Camellia-198 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g211f7122bdeeb3551dcd02c37a7a11e6"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_camellia_256_cbc" ref="g211f7122bdeeb3551dcd02c37a7a11e6" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_hcrypto_camellia_256_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The Camellia-256 cipher type - hcrypto<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the Camellia-256 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g0cc4edf9d19ebf7198e33ac0c8138f04"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_des_cbc" ref="g0cc4edf9d19ebf7198e33ac0c8138f04" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_hcrypto_des_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The DES cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the DES-CBC EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1c0e19f28dc594d929f089721e737237"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_des_ede3_cbc" ref="g1c0e19f28dc594d929f089721e737237" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_hcrypto_des_ede3_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The tripple DES cipher type - hcrypto<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the DES-EDE3-CBC EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g89d756ccb4919c5102481da488b86aaa"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_md2" ref="g89d756ccb4919c5102481da488b86aaa" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_MD* EVP_hcrypto_md2 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The message digest MD2 - hcrypto<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the message digest type. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4456dfa7c2f23830fa32b99969720719"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_md4" ref="g4456dfa7c2f23830fa32b99969720719" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_MD* EVP_hcrypto_md4 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The message digest MD4 - hcrypto<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the message digest type. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3c7a8676a690817ec03d71568a7deb1b"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_md5" ref="g3c7a8676a690817ec03d71568a7deb1b" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_MD* EVP_hcrypto_md5 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The message digest MD5 - hcrypto<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the message digest type. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g35d681a86e0ed71b505b53e5fc199ed5"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_rc2_40_cbc" ref="g35d681a86e0ed71b505b53e5fc199ed5" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_hcrypto_rc2_40_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The RC2-40 cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the RC2-40 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb7534f69db09cd76e4c36703a9340212"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_rc2_64_cbc" ref="gb7534f69db09cd76e4c36703a9340212" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_hcrypto_rc2_64_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The RC2-64 cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the RC2-64 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc238450b802f4e0c78752ef1ba1198e9"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_rc2_cbc" ref="gc238450b802f4e0c78752ef1ba1198e9" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_hcrypto_rc2_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The RC2 cipher type - hcrypto<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the RC2 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5dc409fc540bad0751b96b3f74185477"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_sha1" ref="g5dc409fc540bad0751b96b3f74185477" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_MD* EVP_hcrypto_sha1 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The message digest SHA1 - hcrypto<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the message digest type. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g12b7608ec40d059f5539fd24277baae0"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_sha256" ref="g12b7608ec40d059f5539fd24277baae0" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_MD* EVP_hcrypto_sha256 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The message digest SHA256 - hcrypto<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the message digest type. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc002bcb2cc8ee9bb58b5924ab0bc3533"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_sha384" ref="gc002bcb2cc8ee9bb58b5924ab0bc3533" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_MD* EVP_hcrypto_sha384 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The message digest SHA384 - hcrypto<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the message digest type. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gef3c401b9d2e696f89f27335f4b261e2"></a><!-- doxytag: member="evp-hcrypto.c::EVP_hcrypto_sha512" ref="gef3c401b9d2e696f89f27335f4b261e2" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_MD* EVP_hcrypto_sha512 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The message digest SHA512 - hcrypto<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the message digest type. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4b583f3de5fc66b04f675428da25efd0"></a><!-- doxytag: member="evp.c::EVP_md2" ref="g4b583f3de5fc66b04f675428da25efd0" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_MD* EVP_md2 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The message digest MD2<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the message digest type. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd232ca5dcef4ec58b182cb967f519999"></a><!-- doxytag: member="evp.c::EVP_md4" ref="gd232ca5dcef4ec58b182cb967f519999" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_MD* EVP_md4 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The message digest MD4<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the message digest type. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3ccaad2c97f5cf27adb461b1b50aeabb"></a><!-- doxytag: member="evp.c::EVP_md5" ref="g3ccaad2c97f5cf27adb461b1b50aeabb" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_MD* EVP_md5 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The message digest MD5<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the message digest type. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g48ccb698903828660dc1722d31311420"></a><!-- doxytag: member="evp.c::EVP_MD_block_size" ref="g48ccb698903828660dc1722d31311420" args="(const EVP_MD *md)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t EVP_MD_block_size </td>
+ <td>(</td>
+ <td class="paramtype">const EVP_MD *&nbsp;</td>
+ <td class="paramname"> <em>md</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the blocksize of the message digest function.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>md</em>&nbsp;</td><td>the evp message</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>size size of the message digest block size </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb35a28f548e64c74dbfd7198c04dad5d"></a><!-- doxytag: member="evp.c::EVP_MD_CTX_block_size" ref="gb35a28f548e64c74dbfd7198c04dad5d" args="(EVP_MD_CTX *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t EVP_MD_CTX_block_size </td>
+ <td>(</td>
+ <td class="paramtype">EVP_MD_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the blocksize of the message digest function.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>the evp message digest context</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>size size of the message digest block size </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g34dea52c788c741fdb4f8fb051be3308"></a><!-- doxytag: member="evp.c::EVP_MD_CTX_cleanup" ref="g34dea52c788c741fdb4f8fb051be3308" args="(EVP_MD_CTX *ctx) HC_DEPRECATED" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int EVP_MD_CTX_cleanup </td>
+ <td>(</td>
+ <td class="paramtype">EVP_MD_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free the resources used by the EVP_MD context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>the context to free the resources from.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g54bfa0296db2c131ef69e3a18c445357"></a><!-- doxytag: member="evp.c::EVP_MD_CTX_create" ref="g54bfa0296db2c131ef69e3a18c445357" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">EVP_MD_CTX* EVP_MD_CTX_create </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Allocate a messsage digest context object. Free with <a class="el" href="group__hcrypto__evp.html#ge105ea6e5626f521fbe8cad0a85cbe46">EVP_MD_CTX_destroy()</a>.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a newly allocated message digest context object. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge105ea6e5626f521fbe8cad0a85cbe46"></a><!-- doxytag: member="evp.c::EVP_MD_CTX_destroy" ref="ge105ea6e5626f521fbe8cad0a85cbe46" args="(EVP_MD_CTX *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void EVP_MD_CTX_destroy </td>
+ <td>(</td>
+ <td class="paramtype">EVP_MD_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free a messsage digest context object.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>context to free. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3fd216754cf705b7d4980744b1508410"></a><!-- doxytag: member="evp.c::EVP_MD_CTX_init" ref="g3fd216754cf705b7d4980744b1508410" args="(EVP_MD_CTX *ctx) HC_DEPRECATED" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void EVP_MD_CTX_init </td>
+ <td>(</td>
+ <td class="paramtype">EVP_MD_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Initiate a messsage digest context object. Deallocate with <a class="el" href="group__hcrypto__evp.html#g34dea52c788c741fdb4f8fb051be3308">EVP_MD_CTX_cleanup()</a>. Please use <a class="el" href="group__hcrypto__evp.html#g54bfa0296db2c131ef69e3a18c445357">EVP_MD_CTX_create()</a> instead.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>variable to initiate. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ged3480025ecf31d0afcb62174d6acc24"></a><!-- doxytag: member="evp.c::EVP_MD_CTX_md" ref="ged3480025ecf31d0afcb62174d6acc24" args="(EVP_MD_CTX *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_MD* EVP_MD_CTX_md </td>
+ <td>(</td>
+ <td class="paramtype">EVP_MD_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the EVP_MD use for a specified context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>the EVP_MD context to get the EVP_MD for.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the EVP_MD used for the context. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g25a51444f0586be1494f78e4e17e65f8"></a><!-- doxytag: member="evp.c::EVP_MD_CTX_size" ref="g25a51444f0586be1494f78e4e17e65f8" args="(EVP_MD_CTX *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t EVP_MD_CTX_size </td>
+ <td>(</td>
+ <td class="paramtype">EVP_MD_CTX *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the output size of the message digest function.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>the evp message digest context</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>size output size of the message digest function. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5183830cf039ea4d9a2c1bd3c539e9af"></a><!-- doxytag: member="evp.c::EVP_md_null" ref="g5183830cf039ea4d9a2c1bd3c539e9af" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_MD* EVP_md_null </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The null message digest<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the message digest type. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gbea28e9ccb98329a7a76c95e8699221c"></a><!-- doxytag: member="evp.c::EVP_MD_size" ref="gbea28e9ccb98329a7a76c95e8699221c" args="(const EVP_MD *md)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t EVP_MD_size </td>
+ <td>(</td>
+ <td class="paramtype">const EVP_MD *&nbsp;</td>
+ <td class="paramname"> <em>md</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the output size of the message digest function.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>md</em>&nbsp;</td><td>the evp message</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>size output size of the message digest function. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g104bcd969bcc30dc3e7e77d63a38a87e"></a><!-- doxytag: member="evp.c::EVP_rc2_40_cbc" ref="g104bcd969bcc30dc3e7e77d63a38a87e" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_rc2_40_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The RC2 cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the RC2 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g09cd194a211931839f1e7bb8e578099e"></a><!-- doxytag: member="evp.c::EVP_rc2_64_cbc" ref="g09cd194a211931839f1e7bb8e578099e" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_rc2_64_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The RC2 cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the RC2 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc7d0f7590921dde70bebeebadd2fec36"></a><!-- doxytag: member="evp.c::EVP_rc2_cbc" ref="gc7d0f7590921dde70bebeebadd2fec36" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_rc2_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The RC2 cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the RC2 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9cb683240f384ddbd0f3279960af93ba"></a><!-- doxytag: member="evp.c::EVP_rc4" ref="g9cb683240f384ddbd0f3279960af93ba" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_rc4 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The RC4 cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the RC4 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge5cbdfcb5012a07fec8df1d6b9c5d772"></a><!-- doxytag: member="evp.c::EVP_rc4_40" ref="ge5cbdfcb5012a07fec8df1d6b9c5d772" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_rc4_40 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The RC4-40 cipher type<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the RC4-40 EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gee62cb107a208bd6984dd767f9feb8c0"></a><!-- doxytag: member="evp.c::EVP_sha" ref="gee62cb107a208bd6984dd767f9feb8c0" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_MD* EVP_sha </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The message digest SHA1<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the message digest type. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga090d659a494a10525e38d272efb01ae"></a><!-- doxytag: member="evp.c::EVP_sha1" ref="ga090d659a494a10525e38d272efb01ae" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_MD* EVP_sha1 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The message digest SHA1<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the message digest type. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gfe55e56742a9b9ecffdaef7e95a6707a"></a><!-- doxytag: member="evp.c::EVP_sha256" ref="gfe55e56742a9b9ecffdaef7e95a6707a" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_MD* EVP_sha256 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The message digest SHA256<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the message digest type. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g031405a10c84711b9a9699fadc8dbf2a"></a><!-- doxytag: member="evp.c::EVP_sha384" ref="g031405a10c84711b9a9699fadc8dbf2a" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_MD* EVP_sha384 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The message digest SHA384<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the message digest type. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gceda0d5da59b56159d2e3515039a46ce"></a><!-- doxytag: member="evp.c::EVP_sha512" ref="gceda0d5da59b56159d2e3515039a46ce" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_MD* EVP_sha512 </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The message digest SHA512<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the message digest type. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g769121c112a501748233bda8345cb47a"></a><!-- doxytag: member="evp-crypt.c::EVP_wincrypt_des_ede3_cbc" ref="g769121c112a501748233bda8345cb47a" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const EVP_CIPHER* EVP_wincrypt_des_ede3_cbc </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The tripple DES cipher type (Micrsoft crypt provider)<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the DES-EDE3-CBC EVP_CIPHER pointer. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:05 2011 for Heimdal crypto library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__misc.html b/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__misc.html
new file mode 100644
index 000000000000..0201087ceea7
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__misc.html
@@ -0,0 +1,106 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdal crypto library: hcrypto miscellaneous functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hcrypto miscellaneous functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__misc.html#gece1627cc5535ef7b5e86e2f5a3eec04">PKCS5_PBKDF2_HMAC_SHA1</a> (const void *password, size_t password_len, const void *salt, size_t salt_len, unsigned long iter, size_t keylen, void *key)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="gece1627cc5535ef7b5e86e2f5a3eec04"></a><!-- doxytag: member="pkcs5.c::PKCS5_PBKDF2_HMAC_SHA1" ref="gece1627cc5535ef7b5e86e2f5a3eec04" args="(const void *password, size_t password_len, const void *salt, size_t salt_len, unsigned long iter, size_t keylen, void *key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int PKCS5_PBKDF2_HMAC_SHA1 </td>
+ <td>(</td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>password</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>password_len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>salt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>salt_len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned long&nbsp;</td>
+ <td class="paramname"> <em>iter</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>keylen</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+As descriped in PKCS5, convert a password, salt, and iteration counter into a crypto key.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>password</em>&nbsp;</td><td>Password. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>password_len</em>&nbsp;</td><td>Length of password. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>salt</em>&nbsp;</td><td>Salt </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>salt_len</em>&nbsp;</td><td>Length of salt. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>iter</em>&nbsp;</td><td>iteration counter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>keylen</em>&nbsp;</td><td>the output key length. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>the output key.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, non 1 on failure. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:05 2011 for Heimdal crypto library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__rand.html b/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__rand.html
new file mode 100644
index 000000000000..9ee7243c4b9d
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__rand.html
@@ -0,0 +1,425 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdal crypto library: RAND crypto functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>RAND crypto functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rand.html#g700cd34f79c820f427f95c243befe085">RAND_seed</a> (const void *indata, size_t size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rand.html#g957a044ad71e3c915ff7acc564be84a4">RAND_bytes</a> (void *outdata, size_t size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rand.html#gd797e371751dedbcce4e975c3cad1947">RAND_cleanup</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rand.html#g08927181178dc6329264982f2fb1b39b">RAND_add</a> (const void *indata, size_t size, double entropi)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rand.html#g93d10a9ba8647408a3b5306c2cd423f2">RAND_pseudo_bytes</a> (void *outdata, size_t size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rand.html#g38d21605e6e777451769a8ee7087933b">RAND_status</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rand.html#g292ae50ca725d0c529dc077467b40254">RAND_set_rand_method</a> (const RAND_METHOD *meth)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const RAND_METHOD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rand.html#g8a8cac7a3262c4527e08f57f07c4c586">RAND_get_rand_method</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rand.html#g6a4f2c2cf723ef63522d4b33c79d5f0f">RAND_set_rand_engine</a> (ENGINE *engine)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rand.html#g9ca9fe0e799e41e8e745a88e3a60ccfd">RAND_load_file</a> (const char *filename, size_t size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rand.html#gb9638d698e0a8ab94a31322693588eba">RAND_write_file</a> (const char *filename)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rand.html#g77b2d2555388b5d75a4bab3843fc8f02">RAND_file_name</a> (char *filename, size_t size)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+See the <a class="el" href="page_rand.html">RAND - random number</a> for description and examples. <hr><h2>Function Documentation</h2>
+<a class="anchor" name="g08927181178dc6329264982f2fb1b39b"></a><!-- doxytag: member="rand.c::RAND_add" ref="g08927181178dc6329264982f2fb1b39b" args="(const void *indata, size_t size, double entropi)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void RAND_add </td>
+ <td>(</td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>indata</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>size</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&nbsp;</td>
+ <td class="paramname"> <em>entropi</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Seed that random number generator. Secret material can securely be feed into the function, they will never be returned.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>indata</em>&nbsp;</td><td>the input data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>size of in data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>entropi</em>&nbsp;</td><td>entropi in data. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g957a044ad71e3c915ff7acc564be84a4"></a><!-- doxytag: member="rand.c::RAND_bytes" ref="g957a044ad71e3c915ff7acc564be84a4" args="(void *outdata, size_t size)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int RAND_bytes </td>
+ <td>(</td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>outdata</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a random block from the random generator, can be used for key material.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>outdata</em>&nbsp;</td><td>random data </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>length random data</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd797e371751dedbcce4e975c3cad1947"></a><!-- doxytag: member="rand.c::RAND_cleanup" ref="gd797e371751dedbcce4e975c3cad1947" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void RAND_cleanup </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Reset and free memory used by the random generator.
+</div>
+</div><p>
+<a class="anchor" name="g77b2d2555388b5d75a4bab3843fc8f02"></a><!-- doxytag: member="rand.c::RAND_file_name" ref="g77b2d2555388b5d75a4bab3843fc8f02" args="(char *filename, size_t size)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* RAND_file_name </td>
+ <td>(</td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>filename</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the default random state filename for a user to use for <a class="el" href="group__hcrypto__rand.html#g9ca9fe0e799e41e8e745a88e3a60ccfd">RAND_load_file()</a>, and <a class="el" href="group__hcrypto__rand.html#gb9638d698e0a8ab94a31322693588eba">RAND_write_file()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>filename</em>&nbsp;</td><td>buffer to hold file name. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>size of buffer filename.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the buffer filename or NULL on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8a8cac7a3262c4527e08f57f07c4c586"></a><!-- doxytag: member="rand.c::RAND_get_rand_method" ref="g8a8cac7a3262c4527e08f57f07c4c586" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const RAND_METHOD* RAND_get_rand_method </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the default random method.
+</div>
+</div><p>
+<a class="anchor" name="g9ca9fe0e799e41e8e745a88e3a60ccfd"></a><!-- doxytag: member="rand.c::RAND_load_file" ref="g9ca9fe0e799e41e8e745a88e3a60ccfd" args="(const char *filename, size_t size)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int RAND_load_file </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>filename</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Load a a file and feed it into <a class="el" href="group__hcrypto__rand.html#g700cd34f79c820f427f95c243befe085">RAND_seed()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>filename</em>&nbsp;</td><td>name of file to read. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>minimum size to read. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g93d10a9ba8647408a3b5306c2cd423f2"></a><!-- doxytag: member="rand.c::RAND_pseudo_bytes" ref="g93d10a9ba8647408a3b5306c2cd423f2" args="(void *outdata, size_t size)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int RAND_pseudo_bytes </td>
+ <td>(</td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>outdata</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a random block from the random generator, should NOT be used for key material.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>outdata</em>&nbsp;</td><td>random data </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>length random data</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g700cd34f79c820f427f95c243befe085"></a><!-- doxytag: member="rand.c::RAND_seed" ref="g700cd34f79c820f427f95c243befe085" args="(const void *indata, size_t size)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void RAND_seed </td>
+ <td>(</td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>indata</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Seed that random number generator. Secret material can securely be feed into the function, they will never be returned.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>indata</em>&nbsp;</td><td>seed data </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>length seed data </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6a4f2c2cf723ef63522d4b33c79d5f0f"></a><!-- doxytag: member="rand.c::RAND_set_rand_engine" ref="g6a4f2c2cf723ef63522d4b33c79d5f0f" args="(ENGINE *engine)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int RAND_set_rand_engine </td>
+ <td>(</td>
+ <td class="paramtype">ENGINE *&nbsp;</td>
+ <td class="paramname"> <em>engine</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the default random method from engine.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>engine</em>&nbsp;</td><td>use engine, if NULL is passed it, old method and engine is cleared.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g292ae50ca725d0c529dc077467b40254"></a><!-- doxytag: member="rand.c::RAND_set_rand_method" ref="g292ae50ca725d0c529dc077467b40254" args="(const RAND_METHOD *meth)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int RAND_set_rand_method </td>
+ <td>(</td>
+ <td class="paramtype">const RAND_METHOD *&nbsp;</td>
+ <td class="paramname"> <em>meth</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the default random method.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>meth</em>&nbsp;</td><td>set the new default method.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g38d21605e6e777451769a8ee7087933b"></a><!-- doxytag: member="rand.c::RAND_status" ref="g38d21605e6e777451769a8ee7087933b" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int RAND_status </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return status of the random generator<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 if the random generator can deliver random data. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb9638d698e0a8ab94a31322693588eba"></a><!-- doxytag: member="rand.c::RAND_write_file" ref="gb9638d698e0a8ab94a31322693588eba" args="(const char *filename)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int RAND_write_file </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>filename</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Write of random numbers to a file to store for later initiation with <a class="el" href="group__hcrypto__rand.html#g9ca9fe0e799e41e8e745a88e3a60ccfd">RAND_load_file()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>filename</em>&nbsp;</td><td>name of file to write.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success and non-one on failure. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:05 2011 for Heimdal crypto library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__rsa.html b/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__rsa.html
new file mode 100644
index 000000000000..271fb3843740
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__rsa.html
@@ -0,0 +1,278 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdal crypto library: RSA functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>RSA functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">RSA *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rsa.html#gc7196620864c48d1d6b8377ad8521a4e">RSA_new</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">RSA *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rsa.html#gd184201d41deee1d1d684974ecc44e5c">RSA_new_method</a> (ENGINE *engine)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rsa.html#gf0fbfb9641abf52a10e47c789bbba777">RSA_free</a> (RSA *rsa)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rsa.html#gdb710b16e5e5616f0693801cc60aa943">RSA_up_ref</a> (RSA *rsa)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const RSA_METHOD *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rsa.html#g8a0ab0eaf85ef01f1cc31329558fd37a">RSA_get_method</a> (const RSA *rsa)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rsa.html#gee6501b3b0fe2917a2e40adce6862395">RSA_set_method</a> (RSA *rsa, const RSA_METHOD *method)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rsa.html#ge2af4ebfadf6a1450b823dfc6ca50687">RSA_set_app_data</a> (RSA *rsa, void *arg)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__rsa.html#gfcdc9f15c7075cd8434f0c7e59d3db5c">RSA_get_app_data</a> (const RSA *rsa)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+See the <a class="el" href="page_rsa.html">RSA - public-key cryptography</a> for description and examples. <hr><h2>Function Documentation</h2>
+<a class="anchor" name="gf0fbfb9641abf52a10e47c789bbba777"></a><!-- doxytag: member="rsa.c::RSA_free" ref="gf0fbfb9641abf52a10e47c789bbba777" args="(RSA *rsa)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void RSA_free </td>
+ <td>(</td>
+ <td class="paramtype">RSA *&nbsp;</td>
+ <td class="paramname"> <em>rsa</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free an allocation RSA object.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>rsa</em>&nbsp;</td><td>the RSA object to free. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gfcdc9f15c7075cd8434f0c7e59d3db5c"></a><!-- doxytag: member="rsa.c::RSA_get_app_data" ref="gfcdc9f15c7075cd8434f0c7e59d3db5c" args="(const RSA *rsa)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void* RSA_get_app_data </td>
+ <td>(</td>
+ <td class="paramtype">const RSA *&nbsp;</td>
+ <td class="paramname"> <em>rsa</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the application data for the RSA object.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>rsa</em>&nbsp;</td><td>the rsa object to get the parameter for</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the data object </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8a0ab0eaf85ef01f1cc31329558fd37a"></a><!-- doxytag: member="rsa.c::RSA_get_method" ref="g8a0ab0eaf85ef01f1cc31329558fd37a" args="(const RSA *rsa)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const RSA_METHOD* RSA_get_method </td>
+ <td>(</td>
+ <td class="paramtype">const RSA *&nbsp;</td>
+ <td class="paramname"> <em>rsa</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the RSA_METHOD used for this RSA object.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>rsa</em>&nbsp;</td><td>the object to get the method from.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the method used for this RSA object. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc7196620864c48d1d6b8377ad8521a4e"></a><!-- doxytag: member="rsa.c::RSA_new" ref="gc7196620864c48d1d6b8377ad8521a4e" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RSA* RSA_new </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Same as <a class="el" href="group__hcrypto__rsa.html#gd184201d41deee1d1d684974ecc44e5c">RSA_new_method()</a> using NULL as engine.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a newly allocated RSA object. Free with <a class="el" href="group__hcrypto__rsa.html#gf0fbfb9641abf52a10e47c789bbba777">RSA_free()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd184201d41deee1d1d684974ecc44e5c"></a><!-- doxytag: member="rsa.c::RSA_new_method" ref="gd184201d41deee1d1d684974ecc44e5c" args="(ENGINE *engine)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RSA* RSA_new_method </td>
+ <td>(</td>
+ <td class="paramtype">ENGINE *&nbsp;</td>
+ <td class="paramname"> <em>engine</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Allocate a new RSA object using the engine, if NULL is specified as the engine, use the default RSA engine as returned by ENGINE_get_default_RSA().<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>engine</em>&nbsp;</td><td>Specific what ENGINE RSA provider should be used.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a newly allocated RSA object. Free with <a class="el" href="group__hcrypto__rsa.html#gf0fbfb9641abf52a10e47c789bbba777">RSA_free()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge2af4ebfadf6a1450b823dfc6ca50687"></a><!-- doxytag: member="rsa.c::RSA_set_app_data" ref="ge2af4ebfadf6a1450b823dfc6ca50687" args="(RSA *rsa, void *arg)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int RSA_set_app_data </td>
+ <td>(</td>
+ <td class="paramtype">RSA *&nbsp;</td>
+ <td class="paramname"> <em>rsa</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>arg</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the application data for the RSA object.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>rsa</em>&nbsp;</td><td>the rsa object to set the parameter for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>arg</em>&nbsp;</td><td>the data object to store</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gee6501b3b0fe2917a2e40adce6862395"></a><!-- doxytag: member="rsa.c::RSA_set_method" ref="gee6501b3b0fe2917a2e40adce6862395" args="(RSA *rsa, const RSA_METHOD *method)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int RSA_set_method </td>
+ <td>(</td>
+ <td class="paramtype">RSA *&nbsp;</td>
+ <td class="paramname"> <em>rsa</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const RSA_METHOD *&nbsp;</td>
+ <td class="paramname"> <em>method</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set a new method for the RSA keypair.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>rsa</em>&nbsp;</td><td>rsa parameter. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>method</em>&nbsp;</td><td>the new method for the RSA parameter.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gdb710b16e5e5616f0693801cc60aa943"></a><!-- doxytag: member="rsa.c::RSA_up_ref" ref="gdb710b16e5e5616f0693801cc60aa943" args="(RSA *rsa)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int RSA_up_ref </td>
+ <td>(</td>
+ <td class="paramtype">RSA *&nbsp;</td>
+ <td class="paramname"> <em>rsa</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add an extra reference to the RSA object. The object should be free with <a class="el" href="group__hcrypto__rsa.html#gf0fbfb9641abf52a10e47c789bbba777">RSA_free()</a> to drop the reference.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>rsa</em>&nbsp;</td><td>the object to add reference counting too.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the current reference count, can't safely be used except for debug printing. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:03 2011 for Heimdal crypto library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/index.html b/crypto/heimdal/doc/doxyout/hcrypto/html/index.html
new file mode 100644
index 000000000000..cb584f200a36
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/index.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdal crypto library: Heimdal crypto library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal crypto library</h1>
+<p>
+<h3 align="center">1.5.1 </h3><h2><a class="anchor" name="intro">
+Introduction</a></h2>
+Heimdal libhcrypto library is a implementation many crypto algorithms, among others: AES, SHA, DES, RSA, Camellia and many help function.<p>
+hcrypto provies a OpenSSL compatible interface libcrypto interface and is licensed under a 3 clause BSD license (GPL compatible).<p>
+The project web page: <a href="http://www.h5l.org/">http://www.h5l.org/</a><p>
+Sections of this manual:<p>
+<ul>
+<li><a class="el" href="page_evp.html">EVP - generic crypto interface</a>, <a class="el" href="group__hcrypto__evp.html">EVP generic crypto functions</a></li><li><a class="el" href="page_rand.html">RAND - random number</a>, <a class="el" href="group__hcrypto__rand.html">RAND crypto functions</a></li><li><a class="el" href="page_dh.html">DH - Diffie-Hellman key exchange</a>, <a class="el" href="group__hcrypto__dh.html">Diffie-Hellman functions</a></li><li><a class="el" href="page_rsa.html">RSA - public-key cryptography</a>, <a class="el" href="group__hcrypto__rsa.html">RSA functions</a></li><li><a class="el" href="group__hcrypto__misc.html">hcrypto miscellaneous functions</a></li></ul>
+<p>
+Older interfaces that you should not use:<p>
+<ul>
+<li><a class="el" href="page_des.html">DES - Data Encryption Standard crypto interface</a>, <a class="el" href="group__hcrypto__des.html">DES crypto functions</a></li></ul>
+<h3><a class="anchor" name="control_functions">
+Control functions</a></h3>
+Functions controlling general behavior, like adding algorithms, are documented in this module: <a class="el" href="group__hcrypto__core.html">hcrypto function controlling behavior</a> .<h3><a class="anchor" name="return_values">
+Return values</a></h3>
+Return values are diffrent in this module to be compatible with OpenSSL interface. The diffrence is that on success 1 is returned instead of the customary 0.<h3><a class="anchor" name="History">
+History</a></h3>
+Eric Young implemented DES in the library libdes, that grew into libcrypto in the ssleay package. ssleay went into recession and then got picked up by the OpenSSL (htp://www.openssl.org/) project.<p>
+libhcrypto is an independent implementation with no code decended from ssleay/openssl. Both includes some common imported code, for example the AES implementation. </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:03 2011 for Heimdal crypto library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/modules.html b/crypto/heimdal/doc/doxyout/hcrypto/html/modules.html
new file mode 100644
index 000000000000..a1e577f4d8bd
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/modules.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdal crypto library: Module Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Modules</h1>Here is a list of all modules:<ul>
+<li><a class="el" href="group__hcrypto__dh.html">Diffie-Hellman functions</a>
+<li><a class="el" href="group__hcrypto__rsa.html">RSA functions</a>
+<li><a class="el" href="group__hcrypto__evp.html">EVP generic crypto functions</a>
+<li><a class="el" href="group__hcrypto__rand.html">RAND crypto functions</a>
+<li><a class="el" href="group__hcrypto__des.html">DES crypto functions</a>
+<li><a class="el" href="group__hcrypto__core.html">hcrypto function controlling behavior</a>
+<li><a class="el" href="group__hcrypto__misc.html">hcrypto miscellaneous functions</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:05 2011 for Heimdal crypto library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/page_des.html b/crypto/heimdal/doc/doxyout/hcrypto/html/page_des.html
new file mode 100644
index 000000000000..7358055b49ba
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/page_des.html
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdal crypto library: DES - Data Encryption Standard crypto interface</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="index.html">Heimdal crypto library</a>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="page_des">DES - Data Encryption Standard crypto interface </a></h1>See the library functions here: <a class="el" href="group__hcrypto__des.html">DES crypto functions</a><p>
+DES was created by IBM, modififed by NSA and then adopted by NBS (now NIST) and published ad FIPS PUB 46 (updated by FIPS 46-1).<p>
+Since the 19th May 2005 DES was withdrawn by NIST and should no longer be used. See <a class="el" href="page_evp.html">EVP - generic crypto interface</a> for replacement encryption algorithms and interfaces.<p>
+Read more the iteresting history of DES on Wikipedia <a href="http://www.wikipedia.org/wiki/Data_Encryption_Standard">http://www.wikipedia.org/wiki/Data_Encryption_Standard</a> .<h2><a class="anchor" name="des_keygen">
+DES key generation</a></h2>
+To generate a DES key safely you have to use the code-snippet below. This is because the <a class="el" href="group__hcrypto__des.html#gd70d485549f7444589f3283e938c0258">DES_random_key()</a> can fail with an abort() in case of and failure to start the random generator.<p>
+There is a replacement function <a class="el" href="group__hcrypto__des.html#gcd3642bcd8a7e93ea977786e5b540d5f">DES_new_random_key()</a>, however that function does not exists in OpenSSL.<p>
+<div class="fragment"><pre class="fragment"> DES_cblock key;
+ <span class="keywordflow">do</span> {
+ <span class="keywordflow">if</span> (RAND_rand(&amp;key, <span class="keyword">sizeof</span>(key)) != 1)
+ <span class="keywordflow">goto</span> failure;
+ <a class="code" href="group__hcrypto__des.html#g4179bef43ceb72cc2034f39e7d2d5ae4">DES_set_odd_parity</a>(key);
+ } <span class="keywordflow">while</span> (<a class="code" href="group__hcrypto__des.html#g0d8a49cafee4be6cd3922bfb6323fd2d">DES_is_weak_key</a>(&amp;key));
+</pre></div><h2><a class="anchor" name="des_impl">
+DES implementation history</a></h2>
+There was no complete BSD licensed, fast, GPL compatible implementation of DES, so Love wrote the part that was missing, fast key schedule setup and adapted the interface to the orignal libdes.<p>
+The document that got me started for real was "Efficient Implementation of the Data Encryption Standard" by Dag Arne Osvik. I never got to the PC1 transformation was working, instead I used table-lookup was used for all key schedule setup. The document was very useful since it de-mystified other implementations for me.<p>
+The core DES function (SBOX + P transformation) is from Richard Outerbridge public domain DES implementation. My sanity is saved thanks to his work. Thank you Richard. </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:03 2011 for Heimdal crypto library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/page_dh.html b/crypto/heimdal/doc/doxyout/hcrypto/html/page_dh.html
new file mode 100644
index 000000000000..09e4bd109177
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/page_dh.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdal crypto library: DH - Diffie-Hellman key exchange</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="index.html">Heimdal crypto library</a>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="page_dh">DH - Diffie-Hellman key exchange </a></h1>Diffie-Hellman key exchange is a protocol that allows two parties to establish a shared secret key.<p>
+Include and example how to use <a class="el" href="group__hcrypto__dh.html#g76c6e12bd1f0b9977d80fee83b086031">DH_new()</a> and friends here.<p>
+See the library functions here: <a class="el" href="group__hcrypto__dh.html">Diffie-Hellman functions</a> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:03 2011 for Heimdal crypto library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/page_evp.html b/crypto/heimdal/doc/doxyout/hcrypto/html/page_evp.html
new file mode 100644
index 000000000000..1ee28d058b02
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/page_evp.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdal crypto library: EVP - generic crypto interface</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="index.html">Heimdal crypto library</a>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="page_evp">EVP - generic crypto interface </a></h1>See the library functions here: <a class="el" href="group__hcrypto__evp.html">EVP generic crypto functions</a><h2><a class="anchor" name="evp_cipher">
+EVP Cipher</a></h2>
+The use of <a class="el" href="group__hcrypto__evp.html#g98da5a5c1aa25d9cb2e4717fa11314bd">EVP_CipherInit_ex()</a> and EVP_Cipher() is pretty easy to understand forward, then <a class="el" href="group__hcrypto__evp.html#g863349e1001b36cfd6c4afedddd12862">EVP_CipherUpdate()</a> and <a class="el" href="group__hcrypto__evp.html#g714eef7d737fd68171d852043a4995de">EVP_CipherFinal_ex()</a> really needs an example to explain <a class="el" href="example__evp__cipher_8c-example.html">example_evp_cipher::c</a> . </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:03 2011 for Heimdal crypto library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/page_rand.html b/crypto/heimdal/doc/doxyout/hcrypto/html/page_rand.html
new file mode 100644
index 000000000000..a581d764fa23
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/page_rand.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdal crypto library: RAND - random number</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="index.html">Heimdal crypto library</a>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="page_rand">RAND - random number </a></h1>See the library functions here: <a class="el" href="group__hcrypto__rand.html">RAND crypto functions</a> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:03 2011 for Heimdal crypto library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/page_rsa.html b/crypto/heimdal/doc/doxyout/hcrypto/html/page_rsa.html
new file mode 100644
index 000000000000..36051397adb4
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/page_rsa.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdal crypto library: RSA - public-key cryptography</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="index.html">Heimdal crypto library</a>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="page_rsa">RSA - public-key cryptography </a></h1>RSA is named by its inventors (Ron Rivest, Adi Shamir, and Leonard Adleman) (published in 1977), patented expired in 21 September 2000.<p>
+Speed for RSA in seconds no key blinding 1000 iteration, same rsa keys (1024 and 2048) operation performed each eteration sign, verify, encrypt, decrypt on a random bit pattern<p>
+name 1024 2048 4098 ================================= gmp: 0.73 6.60 44.80 tfm: 2.45 -- -- ltm: 3.79 20.74 105.41 (default in hcrypto) openssl: 4.04 11.90 82.59 cdsa: 15.89 102.89 721.40 imath: 40.62 -- --<p>
+See the library functions here: <a class="el" href="group__hcrypto__rsa.html">RSA functions</a> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:03 2011 for Heimdal crypto library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/tab_b.gif b/crypto/heimdal/doc/doxyout/hcrypto/html/tab_b.gif
new file mode 100644
index 000000000000..0d623483ffdf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/tab_b.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/tab_l.gif b/crypto/heimdal/doc/doxyout/hcrypto/html/tab_l.gif
new file mode 100644
index 000000000000..9b1e6337c929
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/tab_l.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/tab_r.gif b/crypto/heimdal/doc/doxyout/hcrypto/html/tab_r.gif
new file mode 100644
index 000000000000..ce9dd9f533cb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/tab_r.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/html/tabs.css b/crypto/heimdal/doc/doxyout/hcrypto/html/tabs.css
new file mode 100644
index 000000000000..95f00a91da30
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/html/tabs.css
@@ -0,0 +1,102 @@
+/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
+
+DIV.tabs
+{
+ float : left;
+ width : 100%;
+ background : url("tab_b.gif") repeat-x bottom;
+ margin-bottom : 4px;
+}
+
+DIV.tabs UL
+{
+ margin : 0px;
+ padding-left : 10px;
+ list-style : none;
+}
+
+DIV.tabs LI, DIV.tabs FORM
+{
+ display : inline;
+ margin : 0px;
+ padding : 0px;
+}
+
+DIV.tabs FORM
+{
+ float : right;
+}
+
+DIV.tabs A
+{
+ float : left;
+ background : url("tab_r.gif") no-repeat right top;
+ border-bottom : 1px solid #84B0C7;
+ font-size : x-small;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+DIV.tabs A:hover
+{
+ background-position: 100% -150px;
+}
+
+DIV.tabs A:link, DIV.tabs A:visited,
+DIV.tabs A:active, DIV.tabs A:hover
+{
+ color: #1A419D;
+}
+
+DIV.tabs SPAN
+{
+ float : left;
+ display : block;
+ background : url("tab_l.gif") no-repeat left top;
+ padding : 5px 9px;
+ white-space : nowrap;
+}
+
+DIV.tabs INPUT
+{
+ float : right;
+ display : inline;
+ font-size : 1em;
+}
+
+DIV.tabs TD
+{
+ font-size : x-small;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+DIV.tabs SPAN {float : none;}
+/* End IE5-Mac hack */
+
+DIV.tabs A:hover SPAN
+{
+ background-position: 0% -150px;
+}
+
+DIV.tabs LI.current A
+{
+ background-position: 100% -150px;
+ border-width : 0px;
+}
+
+DIV.tabs LI.current SPAN
+{
+ background-position: 0% -150px;
+ padding-bottom : 6px;
+}
+
+DIV.navpath
+{
+ background : none;
+ border : none;
+ border-bottom : 1px solid #84B0C7;
+}
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_cbc_cksum.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_cbc_cksum.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_cbc_cksum.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_cbc_encrypt.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_cbc_encrypt.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_cbc_encrypt.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_cfb64_encrypt.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_cfb64_encrypt.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_cfb64_encrypt.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_check_key_parity.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_check_key_parity.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_check_key_parity.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_ecb3_encrypt.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_ecb3_encrypt.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_ecb3_encrypt.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_ecb_encrypt.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_ecb_encrypt.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_ecb_encrypt.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_ede3_cbc_encrypt.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_ede3_cbc_encrypt.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_ede3_cbc_encrypt.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_encrypt.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_encrypt.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_encrypt.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_init_random_number_generator.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_init_random_number_generator.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_init_random_number_generator.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_is_weak_key.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_is_weak_key.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_is_weak_key.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_key_sched.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_key_sched.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_key_sched.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_new_random_key.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_new_random_key.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_new_random_key.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_pcbc_encrypt.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_pcbc_encrypt.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_pcbc_encrypt.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_random_key.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_random_key.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_random_key.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_set_key.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_set_key.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_set_key.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_set_key_checked.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_set_key_checked.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_set_key_checked.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_set_key_unchecked.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_set_key_unchecked.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_set_key_unchecked.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_set_odd_parity.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_set_odd_parity.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_set_odd_parity.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_string_to_key.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_string_to_key.3
new file mode 100644
index 000000000000..427856f72d18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DES_string_to_key.3
@@ -0,0 +1 @@
+.so man3/hcrypto_des.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_check_pubkey.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_check_pubkey.3
new file mode 100644
index 000000000000..ade37d85c123
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_check_pubkey.3
@@ -0,0 +1 @@
+.so man3/hcrypto_dh.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_compute_key.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_compute_key.3
new file mode 100644
index 000000000000..ade37d85c123
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_compute_key.3
@@ -0,0 +1 @@
+.so man3/hcrypto_dh.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_free.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_free.3
new file mode 100644
index 000000000000..ade37d85c123
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_free.3
@@ -0,0 +1 @@
+.so man3/hcrypto_dh.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_generate_key.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_generate_key.3
new file mode 100644
index 000000000000..ade37d85c123
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_generate_key.3
@@ -0,0 +1 @@
+.so man3/hcrypto_dh.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_generate_parameters_ex.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_generate_parameters_ex.3
new file mode 100644
index 000000000000..ade37d85c123
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_generate_parameters_ex.3
@@ -0,0 +1 @@
+.so man3/hcrypto_dh.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_get_default_method.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_get_default_method.3
new file mode 100644
index 000000000000..ade37d85c123
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_get_default_method.3
@@ -0,0 +1 @@
+.so man3/hcrypto_dh.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_get_ex_data.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_get_ex_data.3
new file mode 100644
index 000000000000..ade37d85c123
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_get_ex_data.3
@@ -0,0 +1 @@
+.so man3/hcrypto_dh.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_ltm_method.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_ltm_method.3
new file mode 100644
index 000000000000..ade37d85c123
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_ltm_method.3
@@ -0,0 +1 @@
+.so man3/hcrypto_dh.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_new.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_new.3
new file mode 100644
index 000000000000..ade37d85c123
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_new.3
@@ -0,0 +1 @@
+.so man3/hcrypto_dh.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_new_method.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_new_method.3
new file mode 100644
index 000000000000..ade37d85c123
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_new_method.3
@@ -0,0 +1 @@
+.so man3/hcrypto_dh.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_null_method.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_null_method.3
new file mode 100644
index 000000000000..ade37d85c123
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_null_method.3
@@ -0,0 +1 @@
+.so man3/hcrypto_dh.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_set_default_method.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_set_default_method.3
new file mode 100644
index 000000000000..ade37d85c123
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_set_default_method.3
@@ -0,0 +1 @@
+.so man3/hcrypto_dh.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_set_ex_data.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_set_ex_data.3
new file mode 100644
index 000000000000..ade37d85c123
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_set_ex_data.3
@@ -0,0 +1 @@
+.so man3/hcrypto_dh.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_set_method.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_set_method.3
new file mode 100644
index 000000000000..ade37d85c123
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_set_method.3
@@ -0,0 +1 @@
+.so man3/hcrypto_dh.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_size.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_size.3
new file mode 100644
index 000000000000..ade37d85c123
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_size.3
@@ -0,0 +1 @@
+.so man3/hcrypto_dh.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_up_ref.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_up_ref.3
new file mode 100644
index 000000000000..ade37d85c123
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/DH_up_ref.3
@@ -0,0 +1 @@
+.so man3/hcrypto_dh.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_BytesToKey.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_BytesToKey.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_BytesToKey.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_block_size.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_block_size.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_block_size.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_cipher.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_cipher.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_cipher.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_cleanup.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_cleanup.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_cleanup.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_ctrl.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_ctrl.3
new file mode 100644
index 000000000000..2245f894556f
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_ctrl.3
@@ -0,0 +1 @@
+.so man3/hcrypto_core.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_flags.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_flags.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_flags.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_get_app_data.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_get_app_data.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_get_app_data.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_init.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_init.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_init.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_iv_length.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_iv_length.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_iv_length.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_key_length.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_key_length.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_key_length.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_mode.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_mode.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_mode.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_rand_key.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_rand_key.3
new file mode 100644
index 000000000000..2245f894556f
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_rand_key.3
@@ -0,0 +1 @@
+.so man3/hcrypto_core.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_set_app_data.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_set_app_data.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_set_app_data.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_set_key_length.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_set_key_length.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_CTX_set_key_length.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_block_size.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_block_size.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_block_size.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_iv_length.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_iv_length.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_iv_length.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_key_length.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_key_length.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CIPHER_key_length.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CipherFinal_ex.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CipherFinal_ex.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CipherFinal_ex.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CipherInit_ex.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CipherInit_ex.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CipherInit_ex.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CipherUpdate.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CipherUpdate.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_CipherUpdate.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_Digest.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_Digest.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_Digest.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_DigestFinal_ex.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_DigestFinal_ex.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_DigestFinal_ex.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_DigestInit_ex.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_DigestInit_ex.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_DigestInit_ex.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_DigestUpdate.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_DigestUpdate.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_DigestUpdate.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_block_size.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_block_size.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_block_size.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_cleanup.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_cleanup.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_cleanup.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_create.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_create.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_create.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_destroy.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_destroy.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_destroy.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_init.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_init.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_init.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_md.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_md.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_md.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_size.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_size.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_CTX_size.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_block_size.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_block_size.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_block_size.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_size.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_size.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_MD_size.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_128_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_128_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_128_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_128_cfb8.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_128_cfb8.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_128_cfb8.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_192_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_192_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_192_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_192_cfb8.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_192_cfb8.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_192_cfb8.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_256_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_256_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_256_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_256_cfb8.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_256_cfb8.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_aes_256_cfb8.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_camellia_128_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_camellia_128_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_camellia_128_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_camellia_192_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_camellia_192_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_camellia_192_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_camellia_256_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_camellia_256_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_camellia_256_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_des_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_des_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_des_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_des_ede3_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_des_ede3_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_des_ede3_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_enc_null.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_enc_null.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_enc_null.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_get_cipherbyname.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_get_cipherbyname.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_get_cipherbyname.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_128_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_128_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_128_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_128_cfb8.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_128_cfb8.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_128_cfb8.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_192_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_192_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_192_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_192_cfb8.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_192_cfb8.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_192_cfb8.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_256_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_256_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_256_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_256_cfb8.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_256_cfb8.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_aes_256_cfb8.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_camellia_128_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_camellia_128_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_camellia_128_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_camellia_192_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_camellia_192_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_camellia_192_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_camellia_256_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_camellia_256_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_camellia_256_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_des_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_des_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_des_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_des_ede3_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_des_ede3_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_des_ede3_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_md2.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_md2.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_md2.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_md4.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_md4.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_md4.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_md5.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_md5.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_md5.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_rc2_40_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_rc2_40_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_rc2_40_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_rc2_64_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_rc2_64_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_rc2_64_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_rc2_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_rc2_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_rc2_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_sha1.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_sha1.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_sha1.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_sha256.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_sha256.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_sha256.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_sha384.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_sha384.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_sha384.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_sha512.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_sha512.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_hcrypto_sha512.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_md2.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_md2.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_md2.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_md4.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_md4.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_md4.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_md5.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_md5.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_md5.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_md_null.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_md_null.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_md_null.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc2_40_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc2_40_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc2_40_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc2_64_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc2_64_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc2_64_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc2_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc2_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc2_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc4.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc4.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc4.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc4_40.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc4_40.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_rc4_40.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha1.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha1.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha1.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha256.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha256.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha256.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha384.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha384.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha384.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha512.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha512.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_sha512.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_wincrypt_des_ede3_cbc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_wincrypt_des_ede3_cbc.3
new file mode 100644
index 000000000000..d526f956e4fb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/EVP_wincrypt_des_ede3_cbc.3
@@ -0,0 +1 @@
+.so man3/hcrypto_evp.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/OpenSSL_add_all_algorithms.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/OpenSSL_add_all_algorithms.3
new file mode 100644
index 000000000000..2245f894556f
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/OpenSSL_add_all_algorithms.3
@@ -0,0 +1 @@
+.so man3/hcrypto_core.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/OpenSSL_add_all_algorithms_conf.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/OpenSSL_add_all_algorithms_conf.3
new file mode 100644
index 000000000000..2245f894556f
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/OpenSSL_add_all_algorithms_conf.3
@@ -0,0 +1 @@
+.so man3/hcrypto_core.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/OpenSSL_add_all_algorithms_noconf.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/OpenSSL_add_all_algorithms_noconf.3
new file mode 100644
index 000000000000..2245f894556f
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/OpenSSL_add_all_algorithms_noconf.3
@@ -0,0 +1 @@
+.so man3/hcrypto_core.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/PKCS5_PBKDF2_HMAC_SHA1.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/PKCS5_PBKDF2_HMAC_SHA1.3
new file mode 100644
index 000000000000..a6545bd8d828
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/PKCS5_PBKDF2_HMAC_SHA1.3
@@ -0,0 +1 @@
+.so man3/hcrypto_misc.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_add.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_add.3
new file mode 100644
index 000000000000..321ba4cdcba8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_add.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rand.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_bytes.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_bytes.3
new file mode 100644
index 000000000000..321ba4cdcba8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_bytes.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rand.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_cleanup.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_cleanup.3
new file mode 100644
index 000000000000..321ba4cdcba8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_cleanup.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rand.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_file_name.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_file_name.3
new file mode 100644
index 000000000000..321ba4cdcba8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_file_name.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rand.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_get_rand_method.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_get_rand_method.3
new file mode 100644
index 000000000000..321ba4cdcba8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_get_rand_method.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rand.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_load_file.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_load_file.3
new file mode 100644
index 000000000000..321ba4cdcba8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_load_file.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rand.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_pseudo_bytes.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_pseudo_bytes.3
new file mode 100644
index 000000000000..321ba4cdcba8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_pseudo_bytes.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rand.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_seed.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_seed.3
new file mode 100644
index 000000000000..321ba4cdcba8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_seed.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rand.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_set_rand_engine.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_set_rand_engine.3
new file mode 100644
index 000000000000..321ba4cdcba8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_set_rand_engine.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rand.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_set_rand_method.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_set_rand_method.3
new file mode 100644
index 000000000000..321ba4cdcba8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_set_rand_method.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rand.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_status.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_status.3
new file mode 100644
index 000000000000..321ba4cdcba8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_status.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rand.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_write_file.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_write_file.3
new file mode 100644
index 000000000000..321ba4cdcba8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RAND_write_file.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rand.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_free.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_free.3
new file mode 100644
index 000000000000..9f1f31caccf9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_free.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rsa.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_get_app_data.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_get_app_data.3
new file mode 100644
index 000000000000..9f1f31caccf9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_get_app_data.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rsa.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_get_method.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_get_method.3
new file mode 100644
index 000000000000..9f1f31caccf9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_get_method.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rsa.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_new.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_new.3
new file mode 100644
index 000000000000..9f1f31caccf9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_new.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rsa.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_new_method.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_new_method.3
new file mode 100644
index 000000000000..9f1f31caccf9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_new_method.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rsa.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_set_app_data.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_set_app_data.3
new file mode 100644
index 000000000000..9f1f31caccf9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_set_app_data.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rsa.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_set_method.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_set_method.3
new file mode 100644
index 000000000000..9f1f31caccf9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_set_method.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rsa.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_up_ref.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_up_ref.3
new file mode 100644
index 000000000000..9f1f31caccf9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/RSA_up_ref.3
@@ -0,0 +1 @@
+.so man3/hcrypto_rsa.3
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_core.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_core.3
new file mode 100644
index 000000000000..03d62c7d6e0a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_core.3
@@ -0,0 +1,76 @@
+.TH "hcrypto function controlling behavior" 3 "30 Sep 2011" "Version 1.5.1" "Heimdal crypto library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hcrypto function controlling behavior \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "int \fBEVP_CIPHER_CTX_rand_key\fP (EVP_CIPHER_CTX *ctx, void *key)"
+.br
+.ti -1c
+.RI "int \fBEVP_CIPHER_CTX_ctrl\fP (EVP_CIPHER_CTX *ctx, int type, int arg, void *data)"
+.br
+.ti -1c
+.RI "void \fBOpenSSL_add_all_algorithms\fP (void)"
+.br
+.ti -1c
+.RI "void \fBOpenSSL_add_all_algorithms_conf\fP (void)"
+.br
+.ti -1c
+.RI "void \fBOpenSSL_add_all_algorithms_noconf\fP (void)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "int EVP_CIPHER_CTX_ctrl (EVP_CIPHER_CTX * ctx, int type, int arg, void * data)"
+.PP
+Perform a operation on a ctx
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP context to perform operation on.
+.br
+\fItype\fP type of operation.
+.br
+\fIarg\fP argument to operation.
+.br
+\fIdata\fP addition data to operation.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 for success, 0 for failure.
+.RE
+.PP
+
+.SS "int EVP_CIPHER_CTX_rand_key (EVP_CIPHER_CTX * ctx, void * key)"
+.PP
+Generate a random key for the specificed EVP_CIPHER.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP EVP_CIPHER_CTX type to build the key for.
+.br
+\fIkey\fP return key, must be at least \fBEVP_CIPHER_key_length()\fP byte long.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 for success, 0 for failure.
+.RE
+.PP
+
+.SS "void OpenSSL_add_all_algorithms (void)"
+.PP
+Add all algorithms to the crypto core.
+.SS "void OpenSSL_add_all_algorithms_conf (void)"
+.PP
+Add all algorithms to the crypto core using configuration file.
+.SS "void OpenSSL_add_all_algorithms_noconf (void)"
+.PP
+Add all algorithms to the crypto core, but don't use the configuration file.
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_des.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_des.3
new file mode 100644
index 000000000000..829d3e645345
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_des.3
@@ -0,0 +1,392 @@
+.TH "DES crypto functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdal crypto library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+DES crypto functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBDES_set_odd_parity\fP (DES_cblock *key)"
+.br
+.ti -1c
+.RI "int HC_DEPRECATED \fBDES_check_key_parity\fP (DES_cblock *key)"
+.br
+.ti -1c
+.RI "int \fBDES_is_weak_key\fP (DES_cblock *key)"
+.br
+.ti -1c
+.RI "int HC_DEPRECATED \fBDES_set_key\fP (DES_cblock *key, DES_key_schedule *ks)"
+.br
+.ti -1c
+.RI "int \fBDES_set_key_unchecked\fP (DES_cblock *key, DES_key_schedule *ks)"
+.br
+.ti -1c
+.RI "int \fBDES_set_key_checked\fP (DES_cblock *key, DES_key_schedule *ks)"
+.br
+.ti -1c
+.RI "int \fBDES_key_sched\fP (DES_cblock *key, DES_key_schedule *ks)"
+.br
+.ti -1c
+.RI "void \fBDES_encrypt\fP (uint32_t u[2], DES_key_schedule *ks, int encp)"
+.br
+.ti -1c
+.RI "void \fBDES_ecb_encrypt\fP (DES_cblock *input, DES_cblock *output, DES_key_schedule *ks, int encp)"
+.br
+.ti -1c
+.RI "void \fBDES_cbc_encrypt\fP (const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int encp)"
+.br
+.ti -1c
+.RI "void \fBDES_pcbc_encrypt\fP (const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int encp)"
+.br
+.ti -1c
+.RI "void \fBDES_ecb3_encrypt\fP (DES_cblock *input, DES_cblock *output, DES_key_schedule *ks1, DES_key_schedule *ks2, DES_key_schedule *ks3, int encp)"
+.br
+.ti -1c
+.RI "void \fBDES_ede3_cbc_encrypt\fP (const void *in, void *out, long length, DES_key_schedule *ks1, DES_key_schedule *ks2, DES_key_schedule *ks3, DES_cblock *iv, int encp)"
+.br
+.ti -1c
+.RI "void \fBDES_cfb64_encrypt\fP (const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int *num, int encp)"
+.br
+.ti -1c
+.RI "uint32_t \fBDES_cbc_cksum\fP (const void *in, DES_cblock *output, long length, DES_key_schedule *ks, DES_cblock *iv)"
+.br
+.ti -1c
+.RI "void \fBDES_string_to_key\fP (const char *str, DES_cblock *key)"
+.br
+.ti -1c
+.RI "int HC_DEPRECATED \fBDES_new_random_key\fP (DES_cblock *key)"
+.br
+.ti -1c
+.RI "void HC_DEPRECATED \fBDES_init_random_number_generator\fP (DES_cblock *seed)"
+.br
+.ti -1c
+.RI "void HC_DEPRECATED \fBDES_random_key\fP (DES_cblock *key)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+See the \fBDES - Data Encryption Standard crypto interface\fP for description and examples.
+.SH "Function Documentation"
+.PP
+.SS "uint32_t DES_cbc_cksum (const void * in, DES_cblock * output, long length, DES_key_schedule * ks, DES_cblock * iv)"
+.PP
+Crete a checksum using DES in CBC encryption mode. This mode is only used for Kerberos 4, and it should stay that way.
+.PP
+The IV must always be diffrent for diffrent input data blocks.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIin\fP data to checksum
+.br
+\fIoutput\fP the checksum
+.br
+\fIlength\fP length of data
+.br
+\fIks\fP key schedule to use
+.br
+\fIiv\fP initial vector to use
+.RE
+.PP
+
+.SS "void DES_cbc_encrypt (const void * in, void * out, long length, DES_key_schedule * ks, DES_cblock * iv, int encp)"
+.PP
+Encrypt/decrypt a block using DES in Chain Block Cipher mode (cbc).
+.PP
+The IV must always be diffrent for diffrent input data blocks.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIin\fP data to encrypt
+.br
+\fIout\fP data to encrypt
+.br
+\fIlength\fP length of data
+.br
+\fIks\fP key schedule to use
+.br
+\fIiv\fP initial vector to use
+.br
+\fIencp\fP if non zero, encrypt. if zero, decrypt.
+.RE
+.PP
+
+.SS "void DES_cfb64_encrypt (const void * in, void * out, long length, DES_key_schedule * ks, DES_cblock * iv, int * num, int encp)"
+.PP
+Encrypt/decrypt using DES in cipher feedback mode with 64 bit feedback.
+.PP
+The IV must always be diffrent for diffrent input data blocks.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIin\fP data to encrypt
+.br
+\fIout\fP data to encrypt
+.br
+\fIlength\fP length of data
+.br
+\fIks\fP key schedule to use
+.br
+\fIiv\fP initial vector to use
+.br
+\fInum\fP offset into in cipher block encryption/decryption stop last time.
+.br
+\fIencp\fP if non zero, encrypt. if zero, decrypt.
+.RE
+.PP
+
+.SS "int HC_DEPRECATED DES_check_key_parity (DES_cblock * key)"
+.PP
+Check if the key have correct parity.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIkey\fP key to check the parity.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success, 0 on failure.
+.RE
+.PP
+
+.SS "void DES_ecb3_encrypt (DES_cblock * input, DES_cblock * output, DES_key_schedule * ks1, DES_key_schedule * ks2, DES_key_schedule * ks3, int encp)"
+.PP
+Encrypt/decrypt a block using triple DES using EDE mode, encrypt/decrypt/encrypt.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIinput\fP data to encrypt
+.br
+\fIoutput\fP data to encrypt
+.br
+\fIks1\fP key schedule to use
+.br
+\fIks2\fP key schedule to use
+.br
+\fIks3\fP key schedule to use
+.br
+\fIencp\fP if non zero, encrypt. if zero, decrypt.
+.RE
+.PP
+
+.SS "void DES_ecb_encrypt (DES_cblock * input, DES_cblock * output, DES_key_schedule * ks, int encp)"
+.PP
+Encrypt/decrypt a block using DES.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIinput\fP data to encrypt
+.br
+\fIoutput\fP data to encrypt
+.br
+\fIks\fP key schedule to use
+.br
+\fIencp\fP if non zero, encrypt. if zero, decrypt.
+.RE
+.PP
+
+.SS "void DES_ede3_cbc_encrypt (const void * in, void * out, long length, DES_key_schedule * ks1, DES_key_schedule * ks2, DES_key_schedule * ks3, DES_cblock * iv, int encp)"
+.PP
+Encrypt/decrypt using Triple DES in Chain Block Cipher mode (cbc).
+.PP
+The IV must always be diffrent for diffrent input data blocks.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIin\fP data to encrypt
+.br
+\fIout\fP data to encrypt
+.br
+\fIlength\fP length of data
+.br
+\fIks1\fP key schedule to use
+.br
+\fIks2\fP key schedule to use
+.br
+\fIks3\fP key schedule to use
+.br
+\fIiv\fP initial vector to use
+.br
+\fIencp\fP if non zero, encrypt. if zero, decrypt.
+.RE
+.PP
+
+.SS "void DES_encrypt (uint32_t u[2], DES_key_schedule * ks, int encp)"
+.PP
+Encrypt/decrypt a block using DES. Also called ECB mode
+.PP
+\fBParameters:\fP
+.RS 4
+\fIu\fP data to encrypt
+.br
+\fIks\fP key schedule to use
+.br
+\fIencp\fP if non zero, encrypt. if zero, decrypt.
+.RE
+.PP
+
+.SS "void HC_DEPRECATED DES_init_random_number_generator (DES_cblock * seed)"
+.PP
+Seed the random number generator. Deprecated, use \fBRAND - random number\fP
+.PP
+\fBParameters:\fP
+.RS 4
+\fIseed\fP a seed to seed that random number generate with.
+.RE
+.PP
+
+.SS "int DES_is_weak_key (DES_cblock * key)"
+.PP
+Checks if the key is any of the weaks keys that makes DES attacks trival.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIkey\fP key to check.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 if the key is weak, 0 otherwise.
+.RE
+.PP
+
+.SS "int DES_key_sched (DES_cblock * key, DES_key_schedule * ks)"
+.PP
+Compatibility function for eay libdes, works just like \fBDES_set_key_checked()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIkey\fP a key to initialize the key schedule with.
+.br
+\fIks\fP a key schedule to initialize.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, -1 on invalid parity, -2 on weak key.
+.RE
+.PP
+
+.SS "int HC_DEPRECATED DES_new_random_key (DES_cblock * key)"
+.PP
+Generate a random des key using a random block, fixup parity and skip weak keys.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIkey\fP is set to a random key.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, non zero on random number generator failure.
+.RE
+.PP
+
+.SS "void DES_pcbc_encrypt (const void * in, void * out, long length, DES_key_schedule * ks, DES_cblock * iv, int encp)"
+.PP
+Encrypt/decrypt a block using DES in Propagating Cipher Block Chaining mode. This mode is only used for Kerberos 4, and it should stay that way.
+.PP
+The IV must always be diffrent for diffrent input data blocks.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIin\fP data to encrypt
+.br
+\fIout\fP data to encrypt
+.br
+\fIlength\fP length of data
+.br
+\fIks\fP key schedule to use
+.br
+\fIiv\fP initial vector to use
+.br
+\fIencp\fP if non zero, encrypt. if zero, decrypt.
+.RE
+.PP
+
+.SS "void HC_DEPRECATED DES_random_key (DES_cblock * key)"
+.PP
+Generate a random key, deprecated since it doesn't return an error code, use \fBDES_new_random_key()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIkey\fP is set to a random key.
+.RE
+.PP
+
+.SS "int HC_DEPRECATED DES_set_key (DES_cblock * key, DES_key_schedule * ks)"
+.PP
+Setup a des key schedule from a key. Deprecated function, use \fBDES_set_key_unchecked()\fP or \fBDES_set_key_checked()\fP instead.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIkey\fP a key to initialize the key schedule with.
+.br
+\fIks\fP a key schedule to initialize.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success
+.RE
+.PP
+
+.SS "int DES_set_key_checked (DES_cblock * key, DES_key_schedule * ks)"
+.PP
+Just like \fBDES_set_key_unchecked()\fP except checking that the key is not weak for or have correct parity.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIkey\fP a key to initialize the key schedule with.
+.br
+\fIks\fP a key schedule to initialize.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, -1 on invalid parity, -2 on weak key.
+.RE
+.PP
+
+.SS "int DES_set_key_unchecked (DES_cblock * key, DES_key_schedule * ks)"
+.PP
+Setup a des key schedule from a key. The key is no longer needed after this transaction and can cleared.
+.PP
+Does NOT check that the key is weak for or have wrong parity.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIkey\fP a key to initialize the key schedule with.
+.br
+\fIks\fP a key schedule to initialize.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success
+.RE
+.PP
+
+.SS "void DES_set_odd_parity (DES_cblock * key)"
+.PP
+Set the parity of the key block, used to generate a des key from a random key. See \fBDES key generation\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIkey\fP key to fixup the parity for.
+.RE
+.PP
+
+.SS "void DES_string_to_key (const char * str, DES_cblock * key)"
+.PP
+Convert a string to a DES key. Use something like \fBPKCS5_PBKDF2_HMAC_SHA1()\fP to create key from passwords.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIstr\fP The string to convert to a key
+.br
+\fIkey\fP the resulting key
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_dh.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_dh.3
new file mode 100644
index 000000000000..3b45ee542f71
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_dh.3
@@ -0,0 +1,310 @@
+.TH "Diffie-Hellman functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdal crypto library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Diffie-Hellman functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "const DH_METHOD * \fBDH_ltm_method\fP (void)"
+.br
+.ti -1c
+.RI "DH * \fBDH_new\fP (void)"
+.br
+.ti -1c
+.RI "DH * \fBDH_new_method\fP (ENGINE *engine)"
+.br
+.ti -1c
+.RI "void \fBDH_free\fP (DH *dh)"
+.br
+.ti -1c
+.RI "int \fBDH_up_ref\fP (DH *dh)"
+.br
+.ti -1c
+.RI "int \fBDH_size\fP (const DH *dh)"
+.br
+.ti -1c
+.RI "int \fBDH_set_ex_data\fP (DH *dh, int idx, void *data)"
+.br
+.ti -1c
+.RI "void * \fBDH_get_ex_data\fP (DH *dh, int idx)"
+.br
+.ti -1c
+.RI "int \fBDH_generate_parameters_ex\fP (DH *dh, int prime_len, int generator, BN_GENCB *cb)"
+.br
+.ti -1c
+.RI "int \fBDH_check_pubkey\fP (const DH *dh, const BIGNUM *pub_key, int *codes)"
+.br
+.ti -1c
+.RI "int \fBDH_generate_key\fP (DH *dh)"
+.br
+.ti -1c
+.RI "int \fBDH_compute_key\fP (unsigned char *shared_key, const BIGNUM *peer_pub_key, DH *dh)"
+.br
+.ti -1c
+.RI "int \fBDH_set_method\fP (DH *dh, const DH_METHOD *method)"
+.br
+.ti -1c
+.RI "const DH_METHOD * \fBDH_null_method\fP (void)"
+.br
+.ti -1c
+.RI "void \fBDH_set_default_method\fP (const DH_METHOD *meth)"
+.br
+.ti -1c
+.RI "const DH_METHOD * \fBDH_get_default_method\fP (void)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+See the \fBDH - Diffie-Hellman key exchange\fP for description and examples.
+.SH "Function Documentation"
+.PP
+.SS "int DH_check_pubkey (const DH * dh, const BIGNUM * pub_key, int * codes)"
+.PP
+Check that the public key is sane.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdh\fP the local peer DH parameters.
+.br
+\fIpub_key\fP the remote peer public key parameters.
+.br
+\fIcodes\fP return that the failures of the pub_key are.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success, 0 on failure and *codes is set the the combined fail check for the public key
+.RE
+.PP
+
+.PP
+Checks that the function performs are:
+.IP "\(bu" 2
+pub_key is not negative
+.PP
+.PP
+.IP "\(bu" 2
+pub_key > 1 and pub_key < p - 1, to avoid small subgroups attack.
+.PP
+.PP
+.IP "\(bu" 2
+if g == 2, pub_key have more then one bit set, if bits set is 1, log_2(pub_key) is trival
+.PP
+
+.SS "int DH_compute_key (unsigned char * shared_key, const BIGNUM * peer_pub_key, DH * dh)"
+.PP
+Complute the shared secret key.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIshared_key\fP the resulting shared key, need to be at least \fBDH_size()\fP large.
+.br
+\fIpeer_pub_key\fP the peer's public key.
+.br
+\fIdh\fP the dh key pair.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success.
+.RE
+.PP
+
+.PP
+Checks that the pubkey passed in is valid using \fBDH_check_pubkey()\fP.
+.SS "void DH_free (DH * dh)"
+.PP
+Free a DH object and release related resources, like ENGINE, that the object was using.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdh\fP object to be freed.
+.RE
+.PP
+
+.SS "int DH_generate_key (DH * dh)"
+.PP
+Generate a new DH private-public key pair. The dh parameter must be allocted first with \fBDH_new()\fP. dh->p and dp->g must be set.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdh\fP dh parameter.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success.
+.RE
+.PP
+
+.SS "int DH_generate_parameters_ex (DH * dh, int prime_len, int generator, BN_GENCB * cb)"
+.PP
+Generate DH parameters for the DH object give parameters.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdh\fP The DH object to generate parameters for.
+.br
+\fIprime_len\fP length of the prime
+.br
+\fIgenerator\fP generator, g
+.br
+\fIcb\fP Callback parameters to show progress, can be NULL.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the maximum size in bytes of the out data.
+.RE
+.PP
+
+.SS "const DH_METHOD* DH_get_default_method (void)"
+.PP
+Return the default DH implementation.
+.PP
+\fBReturns:\fP
+.RS 4
+pointer to a DH_METHOD.
+.RE
+.PP
+
+.SS "void* DH_get_ex_data (DH * dh, int idx)"
+.PP
+Get the data for index idx in the DH object.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdh\fP DH object.
+.br
+\fIidx\fP index to get the data for.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the object store in index idx
+.RE
+.PP
+
+.SS "const DH_METHOD* DH_ltm_method (void)"
+.PP
+DH implementation using libtommath.
+.PP
+\fBReturns:\fP
+.RS 4
+the DH_METHOD for the DH implementation using libtommath.
+.RE
+.PP
+
+.SS "DH* DH_new (void)"
+.PP
+Create a new DH object using DH_new_method(NULL), see \fBDH_new_method()\fP.
+.PP
+\fBReturns:\fP
+.RS 4
+a newly allocated DH object.
+.RE
+.PP
+
+.SS "DH* DH_new_method (ENGINE * engine)"
+.PP
+Create a new DH object from the given engine, if the NULL is used, the default engine is used. Free the DH object with \fBDH_free()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIengine\fP The engine to use to allocate the DH object.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+a newly allocated DH object.
+.RE
+.PP
+
+.SS "const DH_METHOD* DH_null_method (void)"
+.PP
+Return the dummy DH implementation.
+.PP
+\fBReturns:\fP
+.RS 4
+pointer to a DH_METHOD.
+.RE
+.PP
+
+.SS "void DH_set_default_method (const DH_METHOD * meth)"
+.PP
+Set the default DH implementation.
+.PP
+\fBParameters:\fP
+.RS 4
+\fImeth\fP pointer to a DH_METHOD.
+.RE
+.PP
+
+.SS "int DH_set_ex_data (DH * dh, int idx, void * data)"
+.PP
+Set the data index idx in the DH object to data.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdh\fP DH object.
+.br
+\fIidx\fP index to set the data for.
+.br
+\fIdata\fP data to store for the index idx.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success.
+.RE
+.PP
+
+.SS "int DH_set_method (DH * dh, const DH_METHOD * method)"
+.PP
+Set a new method for the DH keypair.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdh\fP dh parameter.
+.br
+\fImethod\fP the new method for the DH parameter.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success.
+.RE
+.PP
+
+.SS "int DH_size (const DH * dh)"
+.PP
+The maximum output size of the \fBDH_compute_key()\fP function.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdh\fP The DH object to get the size from.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the maximum size in bytes of the out data.
+.RE
+.PP
+
+.SS "int DH_up_ref (DH * dh)"
+.PP
+Add a reference to the DH object. The object should be free with \fBDH_free()\fP to drop the reference.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdh\fP the object to increase the reference count too.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the updated reference count, can't safely be used except for debug printing.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.3
new file mode 100644
index 000000000000..ef1eb07fa5d6
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.3
@@ -0,0 +1,1299 @@
+.TH "EVP generic crypto functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdal crypto library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+EVP generic crypto functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_wincrypt_des_ede3_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_hcrypto_aes_128_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_hcrypto_aes_192_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_hcrypto_aes_256_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_hcrypto_aes_128_cfb8\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_hcrypto_aes_192_cfb8\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_hcrypto_aes_256_cfb8\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_MD * \fBEVP_hcrypto_sha256\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_MD * \fBEVP_hcrypto_sha384\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_MD * \fBEVP_hcrypto_sha512\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_MD * \fBEVP_hcrypto_sha1\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_MD * \fBEVP_hcrypto_md5\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_MD * \fBEVP_hcrypto_md4\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_MD * \fBEVP_hcrypto_md2\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_hcrypto_des_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_hcrypto_des_ede3_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_hcrypto_rc2_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_hcrypto_rc2_40_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_hcrypto_rc2_64_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_hcrypto_camellia_128_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_hcrypto_camellia_192_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_hcrypto_camellia_256_cbc\fP (void)"
+.br
+.ti -1c
+.RI "size_t \fBEVP_MD_size\fP (const EVP_MD *md)"
+.br
+.ti -1c
+.RI "size_t \fBEVP_MD_block_size\fP (const EVP_MD *md)"
+.br
+.ti -1c
+.RI "EVP_MD_CTX * \fBEVP_MD_CTX_create\fP (void)"
+.br
+.ti -1c
+.RI "void \fBEVP_MD_CTX_init\fP (EVP_MD_CTX *ctx) HC_DEPRECATED"
+.br
+.ti -1c
+.RI "void \fBEVP_MD_CTX_destroy\fP (EVP_MD_CTX *ctx)"
+.br
+.ti -1c
+.RI "int \fBEVP_MD_CTX_cleanup\fP (EVP_MD_CTX *ctx) HC_DEPRECATED"
+.br
+.ti -1c
+.RI "const EVP_MD * \fBEVP_MD_CTX_md\fP (EVP_MD_CTX *ctx)"
+.br
+.ti -1c
+.RI "size_t \fBEVP_MD_CTX_size\fP (EVP_MD_CTX *ctx)"
+.br
+.ti -1c
+.RI "size_t \fBEVP_MD_CTX_block_size\fP (EVP_MD_CTX *ctx)"
+.br
+.ti -1c
+.RI "int \fBEVP_DigestInit_ex\fP (EVP_MD_CTX *ctx, const EVP_MD *md, ENGINE *engine)"
+.br
+.ti -1c
+.RI "int \fBEVP_DigestUpdate\fP (EVP_MD_CTX *ctx, const void *data, size_t size)"
+.br
+.ti -1c
+.RI "int \fBEVP_DigestFinal_ex\fP (EVP_MD_CTX *ctx, void *hash, unsigned int *size)"
+.br
+.ti -1c
+.RI "int \fBEVP_Digest\fP (const void *data, size_t dsize, void *hash, unsigned int *hsize, const EVP_MD *md, ENGINE *engine)"
+.br
+.ti -1c
+.RI "const EVP_MD * \fBEVP_sha256\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_MD * \fBEVP_sha384\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_MD * \fBEVP_sha512\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_MD * \fBEVP_sha1\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_MD * \fBEVP_sha\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_MD * \fBEVP_md5\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_MD * \fBEVP_md4\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_MD * \fBEVP_md2\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_MD * \fBEVP_md_null\fP (void)"
+.br
+.ti -1c
+.RI "size_t \fBEVP_CIPHER_block_size\fP (const EVP_CIPHER *c)"
+.br
+.ti -1c
+.RI "size_t \fBEVP_CIPHER_key_length\fP (const EVP_CIPHER *c)"
+.br
+.ti -1c
+.RI "size_t \fBEVP_CIPHER_iv_length\fP (const EVP_CIPHER *c)"
+.br
+.ti -1c
+.RI "void \fBEVP_CIPHER_CTX_init\fP (EVP_CIPHER_CTX *c)"
+.br
+.ti -1c
+.RI "int \fBEVP_CIPHER_CTX_cleanup\fP (EVP_CIPHER_CTX *c)"
+.br
+.ti -1c
+.RI "int \fBEVP_CIPHER_CTX_set_key_length\fP (EVP_CIPHER_CTX *c, int length)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_CIPHER_CTX_cipher\fP (EVP_CIPHER_CTX *ctx)"
+.br
+.ti -1c
+.RI "size_t \fBEVP_CIPHER_CTX_block_size\fP (const EVP_CIPHER_CTX *ctx)"
+.br
+.ti -1c
+.RI "size_t \fBEVP_CIPHER_CTX_key_length\fP (const EVP_CIPHER_CTX *ctx)"
+.br
+.ti -1c
+.RI "size_t \fBEVP_CIPHER_CTX_iv_length\fP (const EVP_CIPHER_CTX *ctx)"
+.br
+.ti -1c
+.RI "unsigned long \fBEVP_CIPHER_CTX_flags\fP (const EVP_CIPHER_CTX *ctx)"
+.br
+.ti -1c
+.RI "int \fBEVP_CIPHER_CTX_mode\fP (const EVP_CIPHER_CTX *ctx)"
+.br
+.ti -1c
+.RI "void * \fBEVP_CIPHER_CTX_get_app_data\fP (EVP_CIPHER_CTX *ctx)"
+.br
+.ti -1c
+.RI "void \fBEVP_CIPHER_CTX_set_app_data\fP (EVP_CIPHER_CTX *ctx, void *data)"
+.br
+.ti -1c
+.RI "int \fBEVP_CipherInit_ex\fP (EVP_CIPHER_CTX *ctx, const EVP_CIPHER *c, ENGINE *engine, const void *key, const void *iv, int encp)"
+.br
+.ti -1c
+.RI "int \fBEVP_CipherUpdate\fP (EVP_CIPHER_CTX *ctx, void *out, int *outlen, void *in, size_t inlen)"
+.br
+.ti -1c
+.RI "int \fBEVP_CipherFinal_ex\fP (EVP_CIPHER_CTX *ctx, void *out, int *outlen)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_enc_null\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_rc2_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_rc2_40_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_rc2_64_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_rc4\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_rc4_40\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_des_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_des_ede3_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_aes_128_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_aes_192_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_aes_256_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_aes_128_cfb8\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_aes_192_cfb8\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_aes_256_cfb8\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_camellia_128_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_camellia_192_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_camellia_256_cbc\fP (void)"
+.br
+.ti -1c
+.RI "const EVP_CIPHER * \fBEVP_get_cipherbyname\fP (const char *name)"
+.br
+.ti -1c
+.RI "int \fBEVP_BytesToKey\fP (const EVP_CIPHER *type, const EVP_MD *md, const void *salt, const void *data, size_t datalen, unsigned int count, void *keydata, void *ivdata)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+See the \fBEVP - generic crypto interface\fP for description and examples.
+.SH "Function Documentation"
+.PP
+.SS "const EVP_CIPHER* EVP_aes_128_cbc (void)"
+.PP
+The AES-128 cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the AES-128 EVP_CIPHER pointer.
+.RE
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBexample_evp_cipher.c\fP.
+.SS "const EVP_CIPHER* EVP_aes_128_cfb8 (void)"
+.PP
+The AES-128 cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the AES-128 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_aes_192_cbc (void)"
+.PP
+The AES-192 cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the AES-192 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_aes_192_cfb8 (void)"
+.PP
+The AES-192 cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the AES-192 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_aes_256_cbc (void)"
+.PP
+The AES-256 cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the AES-256 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_aes_256_cfb8 (void)"
+.PP
+The AES-256 cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the AES-256 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "int EVP_BytesToKey (const EVP_CIPHER * type, const EVP_MD * md, const void * salt, const void * data, size_t datalen, unsigned int count, void * keydata, void * ivdata)"
+.PP
+Provides a legancy string to key function, used in PEM files.
+.PP
+New protocols should use new string to key functions like NIST SP56-800A or PKCS#5 v2.0 (see \fBPKCS5_PBKDF2_HMAC_SHA1()\fP).
+.PP
+\fBParameters:\fP
+.RS 4
+\fItype\fP type of cipher to use
+.br
+\fImd\fP message digest to use
+.br
+\fIsalt\fP salt salt string, should be an binary 8 byte buffer.
+.br
+\fIdata\fP the password/input key string.
+.br
+\fIdatalen\fP length of data parameter.
+.br
+\fIcount\fP iteration counter.
+.br
+\fIkeydata\fP output keydata, needs to of the size \fBEVP_CIPHER_key_length()\fP.
+.br
+\fIivdata\fP output ivdata, needs to of the size \fBEVP_CIPHER_block_size()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the size of derived key.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_camellia_128_cbc (void)"
+.PP
+The Camellia-128 cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the Camellia-128 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_camellia_192_cbc (void)"
+.PP
+The Camellia-198 cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the Camellia-198 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_camellia_256_cbc (void)"
+.PP
+The Camellia-256 cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the Camellia-256 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "size_t EVP_CIPHER_block_size (const EVP_CIPHER * c)"
+.PP
+Return the block size of the cipher.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIc\fP cipher to get the block size from.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the block size of the cipher.
+.RE
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBexample_evp_cipher.c\fP.
+.SS "size_t EVP_CIPHER_CTX_block_size (const EVP_CIPHER_CTX * ctx)"
+.PP
+Return the block size of the cipher context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP cipher context to get the block size from.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the block size of the cipher context.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_CIPHER_CTX_cipher (EVP_CIPHER_CTX * ctx)"
+.PP
+Return the EVP_CIPHER for a EVP_CIPHER_CTX context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP the context to get the cipher type from.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "int EVP_CIPHER_CTX_cleanup (EVP_CIPHER_CTX * c)"
+.PP
+Clean up the EVP_CIPHER_CTX context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIc\fP the cipher to clean up.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success.
+.RE
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBexample_evp_cipher.c\fP.
+.SS "unsigned long EVP_CIPHER_CTX_flags (const EVP_CIPHER_CTX * ctx)"
+.PP
+Get the flags for an EVP_CIPHER_CTX context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP the EVP_CIPHER_CTX to get the flags from
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the flags for an EVP_CIPHER_CTX.
+.RE
+.PP
+
+.SS "void* EVP_CIPHER_CTX_get_app_data (EVP_CIPHER_CTX * ctx)"
+.PP
+Get the app data for an EVP_CIPHER_CTX context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP the EVP_CIPHER_CTX to get the app data from
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the app data for an EVP_CIPHER_CTX.
+.RE
+.PP
+
+.SS "void EVP_CIPHER_CTX_init (EVP_CIPHER_CTX * c)"
+.PP
+Initiate a EVP_CIPHER_CTX context. Clean up with \fBEVP_CIPHER_CTX_cleanup()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIc\fP the cipher initiate.
+.RE
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBexample_evp_cipher.c\fP.
+.SS "size_t EVP_CIPHER_CTX_iv_length (const EVP_CIPHER_CTX * ctx)"
+.PP
+Return the IV size of the cipher context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP cipher context to get the IV size from.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the IV size of the cipher context.
+.RE
+.PP
+
+.SS "size_t EVP_CIPHER_CTX_key_length (const EVP_CIPHER_CTX * ctx)"
+.PP
+Return the key size of the cipher context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP cipher context to get the key size from.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the key size of the cipher context.
+.RE
+.PP
+
+.SS "int EVP_CIPHER_CTX_mode (const EVP_CIPHER_CTX * ctx)"
+.PP
+Get the mode for an EVP_CIPHER_CTX context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP the EVP_CIPHER_CTX to get the mode from
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the mode for an EVP_CIPHER_CTX.
+.RE
+.PP
+
+.SS "void EVP_CIPHER_CTX_set_app_data (EVP_CIPHER_CTX * ctx, void * data)"
+.PP
+Set the app data for an EVP_CIPHER_CTX context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP the EVP_CIPHER_CTX to set the app data for
+.br
+\fIdata\fP the app data to set for an EVP_CIPHER_CTX.
+.RE
+.PP
+
+.SS "int EVP_CIPHER_CTX_set_key_length (EVP_CIPHER_CTX * c, int length)"
+.PP
+If the cipher type supports it, change the key length
+.PP
+\fBParameters:\fP
+.RS 4
+\fIc\fP the cipher context to change the key length for
+.br
+\fIlength\fP new key length
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success.
+.RE
+.PP
+
+.SS "size_t EVP_CIPHER_iv_length (const EVP_CIPHER * c)"
+.PP
+Return the IV size of the cipher.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIc\fP cipher to get the IV size from.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the IV size of the cipher.
+.RE
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBexample_evp_cipher.c\fP.
+.SS "size_t EVP_CIPHER_key_length (const EVP_CIPHER * c)"
+.PP
+Return the key size of the cipher.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIc\fP cipher to get the key size from.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the key size of the cipher.
+.RE
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBexample_evp_cipher.c\fP.
+.SS "int EVP_CipherFinal_ex (EVP_CIPHER_CTX * ctx, void * out, int * outlen)"
+.PP
+Encipher/decipher final data
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP the cipher context.
+.br
+\fIout\fP output data from the operation.
+.br
+\fIoutlen\fP output length
+.RE
+.PP
+The input length needs to be at least \fBEVP_CIPHER_block_size()\fP bytes long.
+.PP
+See \fBEVP Cipher\fP for an example how to use this function.
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success.
+.RE
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBexample_evp_cipher.c\fP.
+.SS "int EVP_CipherInit_ex (EVP_CIPHER_CTX * ctx, const EVP_CIPHER * c, ENGINE * engine, const void * key, const void * iv, int encp)"
+.PP
+Initiate the EVP_CIPHER_CTX context to encrypt or decrypt data. Clean up with \fBEVP_CIPHER_CTX_cleanup()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP context to initiate
+.br
+\fIc\fP cipher to use.
+.br
+\fIengine\fP crypto engine to use, NULL to select default.
+.br
+\fIkey\fP the crypto key to use, NULL will use the previous value.
+.br
+\fIiv\fP the IV to use, NULL will use the previous value.
+.br
+\fIencp\fP non zero will encrypt, -1 use the previous value.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success.
+.RE
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBexample_evp_cipher.c\fP.
+.SS "int EVP_CipherUpdate (EVP_CIPHER_CTX * ctx, void * out, int * outlen, void * in, size_t inlen)"
+.PP
+Encipher/decipher partial data
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP the cipher context.
+.br
+\fIout\fP output data from the operation.
+.br
+\fIoutlen\fP output length
+.br
+\fIin\fP input data to the operation.
+.br
+\fIinlen\fP length of data.
+.RE
+.PP
+The output buffer length should at least be \fBEVP_CIPHER_block_size()\fP byte longer then the input length.
+.PP
+See \fBEVP Cipher\fP for an example how to use this function.
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success.
+.RE
+.PP
+
+.PP
+If there in no spare bytes in the left from last Update and the input length is on the block boundery, the \fBEVP_CipherUpdate()\fP function can take a shortcut (and preformance gain) and directly encrypt the data, otherwise we hav to fix it up and store extra it the EVP_CIPHER_CTX.
+.PP
+\fBExamples: \fP
+.in +1c
+\fBexample_evp_cipher.c\fP.
+.SS "const EVP_CIPHER* EVP_des_cbc (void)"
+.PP
+The DES cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the DES-CBC EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_des_ede3_cbc (void)"
+.PP
+The tripple DES cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the DES-EDE3-CBC EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "int EVP_Digest (const void * data, size_t dsize, void * hash, unsigned int * hsize, const EVP_MD * md, ENGINE * engine)"
+.PP
+Do the whole \fBEVP_MD_CTX_create()\fP, \fBEVP_DigestInit_ex()\fP, \fBEVP_DigestUpdate()\fP, \fBEVP_DigestFinal_ex()\fP, \fBEVP_MD_CTX_destroy()\fP dance in one call.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdata\fP the data to update the context with
+.br
+\fIdsize\fP length of data
+.br
+\fIhash\fP output data of at least \fBEVP_MD_size()\fP length.
+.br
+\fIhsize\fP output length of hash.
+.br
+\fImd\fP message digest to use
+.br
+\fIengine\fP engine to use, NULL for default engine.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success.
+.RE
+.PP
+
+.SS "int EVP_DigestFinal_ex (EVP_MD_CTX * ctx, void * hash, unsigned int * size)"
+.PP
+Complete the message digest.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP the context to complete.
+.br
+\fIhash\fP the output of the message digest function. At least \fBEVP_MD_size()\fP.
+.br
+\fIsize\fP the output size of hash.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success.
+.RE
+.PP
+
+.SS "int EVP_DigestInit_ex (EVP_MD_CTX * ctx, const EVP_MD * md, ENGINE * engine)"
+.PP
+Init a EVP_MD_CTX for use a specific message digest and engine.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP the message digest context to init.
+.br
+\fImd\fP the message digest to use.
+.br
+\fIengine\fP the engine to use, NULL to use the default engine.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success.
+.RE
+.PP
+
+.SS "int EVP_DigestUpdate (EVP_MD_CTX * ctx, const void * data, size_t size)"
+.PP
+Update the digest with some data.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP the context to update
+.br
+\fIdata\fP the data to update the context with
+.br
+\fIsize\fP length of data
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_enc_null (void)"
+.PP
+The NULL cipher type, does no encryption/decryption.
+.PP
+\fBReturns:\fP
+.RS 4
+the null EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_get_cipherbyname (const char * name)"
+.PP
+Get the cipher type using their name.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIname\fP the name of the cipher.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the selected EVP_CIPHER pointer or NULL if not found.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_hcrypto_aes_128_cbc (void)"
+.PP
+The AES-128 cipher type (hcrypto)
+.PP
+\fBReturns:\fP
+.RS 4
+the AES-128 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_hcrypto_aes_128_cfb8 (void)"
+.PP
+The AES-128 CFB8 cipher type (hcrypto)
+.PP
+\fBReturns:\fP
+.RS 4
+the AES-128 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_hcrypto_aes_192_cbc (void)"
+.PP
+The AES-192 cipher type (hcrypto)
+.PP
+\fBReturns:\fP
+.RS 4
+the AES-192 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_hcrypto_aes_192_cfb8 (void)"
+.PP
+The AES-192 CFB8 cipher type (hcrypto)
+.PP
+\fBReturns:\fP
+.RS 4
+the AES-192 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_hcrypto_aes_256_cbc (void)"
+.PP
+The AES-256 cipher type (hcrypto)
+.PP
+\fBReturns:\fP
+.RS 4
+the AES-256 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_hcrypto_aes_256_cfb8 (void)"
+.PP
+The AES-256 CFB8 cipher type (hcrypto)
+.PP
+\fBReturns:\fP
+.RS 4
+the AES-256 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_hcrypto_camellia_128_cbc (void)"
+.PP
+The Camellia-128 cipher type - hcrypto
+.PP
+\fBReturns:\fP
+.RS 4
+the Camellia-128 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_hcrypto_camellia_192_cbc (void)"
+.PP
+The Camellia-198 cipher type - hcrypto
+.PP
+\fBReturns:\fP
+.RS 4
+the Camellia-198 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_hcrypto_camellia_256_cbc (void)"
+.PP
+The Camellia-256 cipher type - hcrypto
+.PP
+\fBReturns:\fP
+.RS 4
+the Camellia-256 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_hcrypto_des_cbc (void)"
+.PP
+The DES cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the DES-CBC EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_hcrypto_des_ede3_cbc (void)"
+.PP
+The tripple DES cipher type - hcrypto
+.PP
+\fBReturns:\fP
+.RS 4
+the DES-EDE3-CBC EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_MD* EVP_hcrypto_md2 (void)"
+.PP
+The message digest MD2 - hcrypto
+.PP
+\fBReturns:\fP
+.RS 4
+the message digest type.
+.RE
+.PP
+
+.SS "const EVP_MD* EVP_hcrypto_md4 (void)"
+.PP
+The message digest MD4 - hcrypto
+.PP
+\fBReturns:\fP
+.RS 4
+the message digest type.
+.RE
+.PP
+
+.SS "const EVP_MD* EVP_hcrypto_md5 (void)"
+.PP
+The message digest MD5 - hcrypto
+.PP
+\fBReturns:\fP
+.RS 4
+the message digest type.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_hcrypto_rc2_40_cbc (void)"
+.PP
+The RC2-40 cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the RC2-40 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_hcrypto_rc2_64_cbc (void)"
+.PP
+The RC2-64 cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the RC2-64 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_hcrypto_rc2_cbc (void)"
+.PP
+The RC2 cipher type - hcrypto
+.PP
+\fBReturns:\fP
+.RS 4
+the RC2 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_MD* EVP_hcrypto_sha1 (void)"
+.PP
+The message digest SHA1 - hcrypto
+.PP
+\fBReturns:\fP
+.RS 4
+the message digest type.
+.RE
+.PP
+
+.SS "const EVP_MD* EVP_hcrypto_sha256 (void)"
+.PP
+The message digest SHA256 - hcrypto
+.PP
+\fBReturns:\fP
+.RS 4
+the message digest type.
+.RE
+.PP
+
+.SS "const EVP_MD* EVP_hcrypto_sha384 (void)"
+.PP
+The message digest SHA384 - hcrypto
+.PP
+\fBReturns:\fP
+.RS 4
+the message digest type.
+.RE
+.PP
+
+.SS "const EVP_MD* EVP_hcrypto_sha512 (void)"
+.PP
+The message digest SHA512 - hcrypto
+.PP
+\fBReturns:\fP
+.RS 4
+the message digest type.
+.RE
+.PP
+
+.SS "const EVP_MD* EVP_md2 (void)"
+.PP
+The message digest MD2
+.PP
+\fBReturns:\fP
+.RS 4
+the message digest type.
+.RE
+.PP
+
+.SS "const EVP_MD* EVP_md4 (void)"
+.PP
+The message digest MD4
+.PP
+\fBReturns:\fP
+.RS 4
+the message digest type.
+.RE
+.PP
+
+.SS "const EVP_MD* EVP_md5 (void)"
+.PP
+The message digest MD5
+.PP
+\fBReturns:\fP
+.RS 4
+the message digest type.
+.RE
+.PP
+
+.SS "size_t EVP_MD_block_size (const EVP_MD * md)"
+.PP
+Return the blocksize of the message digest function.
+.PP
+\fBParameters:\fP
+.RS 4
+\fImd\fP the evp message
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+size size of the message digest block size
+.RE
+.PP
+
+.SS "size_t EVP_MD_CTX_block_size (EVP_MD_CTX * ctx)"
+.PP
+Return the blocksize of the message digest function.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP the evp message digest context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+size size of the message digest block size
+.RE
+.PP
+
+.SS "int EVP_MD_CTX_cleanup (EVP_MD_CTX * ctx)"
+.PP
+Free the resources used by the EVP_MD context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP the context to free the resources from.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success.
+.RE
+.PP
+
+.SS "EVP_MD_CTX* EVP_MD_CTX_create (void)"
+.PP
+Allocate a messsage digest context object. Free with \fBEVP_MD_CTX_destroy()\fP.
+.PP
+\fBReturns:\fP
+.RS 4
+a newly allocated message digest context object.
+.RE
+.PP
+
+.SS "void EVP_MD_CTX_destroy (EVP_MD_CTX * ctx)"
+.PP
+Free a messsage digest context object.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP context to free.
+.RE
+.PP
+
+.SS "void EVP_MD_CTX_init (EVP_MD_CTX * ctx)"
+.PP
+Initiate a messsage digest context object. Deallocate with \fBEVP_MD_CTX_cleanup()\fP. Please use \fBEVP_MD_CTX_create()\fP instead.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP variable to initiate.
+.RE
+.PP
+
+.SS "const EVP_MD* EVP_MD_CTX_md (EVP_MD_CTX * ctx)"
+.PP
+Get the EVP_MD use for a specified context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP the EVP_MD context to get the EVP_MD for.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the EVP_MD used for the context.
+.RE
+.PP
+
+.SS "size_t EVP_MD_CTX_size (EVP_MD_CTX * ctx)"
+.PP
+Return the output size of the message digest function.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP the evp message digest context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+size output size of the message digest function.
+.RE
+.PP
+
+.SS "const EVP_MD* EVP_md_null (void)"
+.PP
+The null message digest
+.PP
+\fBReturns:\fP
+.RS 4
+the message digest type.
+.RE
+.PP
+
+.SS "size_t EVP_MD_size (const EVP_MD * md)"
+.PP
+Return the output size of the message digest function.
+.PP
+\fBParameters:\fP
+.RS 4
+\fImd\fP the evp message
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+size output size of the message digest function.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_rc2_40_cbc (void)"
+.PP
+The RC2 cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the RC2 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_rc2_64_cbc (void)"
+.PP
+The RC2 cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the RC2 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_rc2_cbc (void)"
+.PP
+The RC2 cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the RC2 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_rc4 (void)"
+.PP
+The RC4 cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the RC4 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_rc4_40 (void)"
+.PP
+The RC4-40 cipher type
+.PP
+\fBReturns:\fP
+.RS 4
+the RC4-40 EVP_CIPHER pointer.
+.RE
+.PP
+
+.SS "const EVP_MD* EVP_sha (void)"
+.PP
+The message digest SHA1
+.PP
+\fBReturns:\fP
+.RS 4
+the message digest type.
+.RE
+.PP
+
+.SS "const EVP_MD* EVP_sha1 (void)"
+.PP
+The message digest SHA1
+.PP
+\fBReturns:\fP
+.RS 4
+the message digest type.
+.RE
+.PP
+
+.SS "const EVP_MD* EVP_sha256 (void)"
+.PP
+The message digest SHA256
+.PP
+\fBReturns:\fP
+.RS 4
+the message digest type.
+.RE
+.PP
+
+.SS "const EVP_MD* EVP_sha384 (void)"
+.PP
+The message digest SHA384
+.PP
+\fBReturns:\fP
+.RS 4
+the message digest type.
+.RE
+.PP
+
+.SS "const EVP_MD* EVP_sha512 (void)"
+.PP
+The message digest SHA512
+.PP
+\fBReturns:\fP
+.RS 4
+the message digest type.
+.RE
+.PP
+
+.SS "const EVP_CIPHER* EVP_wincrypt_des_ede3_cbc (void)"
+.PP
+The tripple DES cipher type (Micrsoft crypt provider)
+.PP
+\fBReturns:\fP
+.RS 4
+the DES-EDE3-CBC EVP_CIPHER pointer.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_misc.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_misc.3
new file mode 100644
index 000000000000..c5ac3e3dbedc
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_misc.3
@@ -0,0 +1,44 @@
+.TH "hcrypto miscellaneous functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdal crypto library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hcrypto miscellaneous functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "int \fBPKCS5_PBKDF2_HMAC_SHA1\fP (const void *password, size_t password_len, const void *salt, size_t salt_len, unsigned long iter, size_t keylen, void *key)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "int PKCS5_PBKDF2_HMAC_SHA1 (const void * password, size_t password_len, const void * salt, size_t salt_len, unsigned long iter, size_t keylen, void * key)"
+.PP
+As descriped in PKCS5, convert a password, salt, and iteration counter into a crypto key.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpassword\fP Password.
+.br
+\fIpassword_len\fP Length of password.
+.br
+\fIsalt\fP Salt
+.br
+\fIsalt_len\fP Length of salt.
+.br
+\fIiter\fP iteration counter.
+.br
+\fIkeylen\fP the output key length.
+.br
+\fIkey\fP the output key.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success, non 1 on failure.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_rand.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_rand.3
new file mode 100644
index 000000000000..8f416bd8da99
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_rand.3
@@ -0,0 +1,200 @@
+.TH "RAND crypto functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdal crypto library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+RAND crypto functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBRAND_seed\fP (const void *indata, size_t size)"
+.br
+.ti -1c
+.RI "int \fBRAND_bytes\fP (void *outdata, size_t size)"
+.br
+.ti -1c
+.RI "void \fBRAND_cleanup\fP (void)"
+.br
+.ti -1c
+.RI "void \fBRAND_add\fP (const void *indata, size_t size, double entropi)"
+.br
+.ti -1c
+.RI "int \fBRAND_pseudo_bytes\fP (void *outdata, size_t size)"
+.br
+.ti -1c
+.RI "int \fBRAND_status\fP (void)"
+.br
+.ti -1c
+.RI "int \fBRAND_set_rand_method\fP (const RAND_METHOD *meth)"
+.br
+.ti -1c
+.RI "const RAND_METHOD * \fBRAND_get_rand_method\fP (void)"
+.br
+.ti -1c
+.RI "int \fBRAND_set_rand_engine\fP (ENGINE *engine)"
+.br
+.ti -1c
+.RI "int \fBRAND_load_file\fP (const char *filename, size_t size)"
+.br
+.ti -1c
+.RI "int \fBRAND_write_file\fP (const char *filename)"
+.br
+.ti -1c
+.RI "const char * \fBRAND_file_name\fP (char *filename, size_t size)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+See the \fBRAND - random number\fP for description and examples.
+.SH "Function Documentation"
+.PP
+.SS "void RAND_add (const void * indata, size_t size, double entropi)"
+.PP
+Seed that random number generator. Secret material can securely be feed into the function, they will never be returned.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIindata\fP the input data.
+.br
+\fIsize\fP size of in data.
+.br
+\fIentropi\fP entropi in data.
+.RE
+.PP
+
+.SS "int RAND_bytes (void * outdata, size_t size)"
+.PP
+Get a random block from the random generator, can be used for key material.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIoutdata\fP random data
+.br
+\fIsize\fP length random data
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success, 0 on failure.
+.RE
+.PP
+
+.SS "void RAND_cleanup (void)"
+.PP
+Reset and free memory used by the random generator.
+.SS "const char* RAND_file_name (char * filename, size_t size)"
+.PP
+Return the default random state filename for a user to use for \fBRAND_load_file()\fP, and \fBRAND_write_file()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIfilename\fP buffer to hold file name.
+.br
+\fIsize\fP size of buffer filename.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the buffer filename or NULL on failure.
+.RE
+.PP
+
+.SS "const RAND_METHOD* RAND_get_rand_method (void)"
+.PP
+Get the default random method.
+.SS "int RAND_load_file (const char * filename, size_t size)"
+.PP
+Load a a file and feed it into \fBRAND_seed()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIfilename\fP name of file to read.
+.br
+\fIsize\fP minimum size to read.
+.RE
+.PP
+
+.SS "int RAND_pseudo_bytes (void * outdata, size_t size)"
+.PP
+Get a random block from the random generator, should NOT be used for key material.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIoutdata\fP random data
+.br
+\fIsize\fP length random data
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success, 0 on failure.
+.RE
+.PP
+
+.SS "void RAND_seed (const void * indata, size_t size)"
+.PP
+Seed that random number generator. Secret material can securely be feed into the function, they will never be returned.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIindata\fP seed data
+.br
+\fIsize\fP length seed data
+.RE
+.PP
+
+.SS "int RAND_set_rand_engine (ENGINE * engine)"
+.PP
+Set the default random method from engine.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIengine\fP use engine, if NULL is passed it, old method and engine is cleared.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success, 0 on failure.
+.RE
+.PP
+
+.SS "int RAND_set_rand_method (const RAND_METHOD * meth)"
+.PP
+Set the default random method.
+.PP
+\fBParameters:\fP
+.RS 4
+\fImeth\fP set the new default method.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success.
+.RE
+.PP
+
+.SS "int RAND_status (void)"
+.PP
+Return status of the random generator
+.PP
+\fBReturns:\fP
+.RS 4
+1 if the random generator can deliver random data.
+.RE
+.PP
+
+.SS "int RAND_write_file (const char * filename)"
+.PP
+Write of random numbers to a file to store for later initiation with \fBRAND_load_file()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIfilename\fP name of file to write.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success and non-one on failure.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_rsa.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_rsa.3
new file mode 100644
index 000000000000..2f4e6bc52624
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_rsa.3
@@ -0,0 +1,152 @@
+.TH "RSA functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdal crypto library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+RSA functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "RSA * \fBRSA_new\fP (void)"
+.br
+.ti -1c
+.RI "RSA * \fBRSA_new_method\fP (ENGINE *engine)"
+.br
+.ti -1c
+.RI "void \fBRSA_free\fP (RSA *rsa)"
+.br
+.ti -1c
+.RI "int \fBRSA_up_ref\fP (RSA *rsa)"
+.br
+.ti -1c
+.RI "const RSA_METHOD * \fBRSA_get_method\fP (const RSA *rsa)"
+.br
+.ti -1c
+.RI "int \fBRSA_set_method\fP (RSA *rsa, const RSA_METHOD *method)"
+.br
+.ti -1c
+.RI "int \fBRSA_set_app_data\fP (RSA *rsa, void *arg)"
+.br
+.ti -1c
+.RI "void * \fBRSA_get_app_data\fP (const RSA *rsa)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+See the \fBRSA - public-key cryptography\fP for description and examples.
+.SH "Function Documentation"
+.PP
+.SS "void RSA_free (RSA * rsa)"
+.PP
+Free an allocation RSA object.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIrsa\fP the RSA object to free.
+.RE
+.PP
+
+.SS "void* RSA_get_app_data (const RSA * rsa)"
+.PP
+Get the application data for the RSA object.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIrsa\fP the rsa object to get the parameter for
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the data object
+.RE
+.PP
+
+.SS "const RSA_METHOD* RSA_get_method (const RSA * rsa)"
+.PP
+Return the RSA_METHOD used for this RSA object.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIrsa\fP the object to get the method from.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the method used for this RSA object.
+.RE
+.PP
+
+.SS "RSA* RSA_new (void)"
+.PP
+Same as \fBRSA_new_method()\fP using NULL as engine.
+.PP
+\fBReturns:\fP
+.RS 4
+a newly allocated RSA object. Free with \fBRSA_free()\fP.
+.RE
+.PP
+
+.SS "RSA* RSA_new_method (ENGINE * engine)"
+.PP
+Allocate a new RSA object using the engine, if NULL is specified as the engine, use the default RSA engine as returned by ENGINE_get_default_RSA().
+.PP
+\fBParameters:\fP
+.RS 4
+\fIengine\fP Specific what ENGINE RSA provider should be used.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+a newly allocated RSA object. Free with \fBRSA_free()\fP.
+.RE
+.PP
+
+.SS "int RSA_set_app_data (RSA * rsa, void * arg)"
+.PP
+Set the application data for the RSA object.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIrsa\fP the rsa object to set the parameter for
+.br
+\fIarg\fP the data object to store
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success.
+.RE
+.PP
+
+.SS "int RSA_set_method (RSA * rsa, const RSA_METHOD * method)"
+.PP
+Set a new method for the RSA keypair.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIrsa\fP rsa parameter.
+.br
+\fImethod\fP the new method for the RSA parameter.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success.
+.RE
+.PP
+
+.SS "int RSA_up_ref (RSA * rsa)"
+.PP
+Add an extra reference to the RSA object. The object should be free with \fBRSA_free()\fP to drop the reference.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIrsa\fP the object to add reference counting too.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the current reference count, can't safely be used except for debug printing.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_des.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_des.3
new file mode 100644
index 000000000000..7e2668e34550
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_des.3
@@ -0,0 +1,35 @@
+.TH "page_des" 3 "30 Sep 2011" "Version 1.5.1" "Heimdal crypto library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+page_des \- DES - Data Encryption Standard crypto interface
+See the library functions here: \fBDES crypto functions\fP
+.PP
+DES was created by IBM, modififed by NSA and then adopted by NBS (now NIST) and published ad FIPS PUB 46 (updated by FIPS 46-1).
+.PP
+Since the 19th May 2005 DES was withdrawn by NIST and should no longer be used. See \fBEVP - generic crypto interface\fP for replacement encryption algorithms and interfaces.
+.PP
+Read more the iteresting history of DES on Wikipedia http://www.wikipedia.org/wiki/Data_Encryption_Standard .
+.SH "DES key generation"
+.PP
+To generate a DES key safely you have to use the code-snippet below. This is because the \fBDES_random_key()\fP can fail with an abort() in case of and failure to start the random generator.
+.PP
+There is a replacement function \fBDES_new_random_key()\fP, however that function does not exists in OpenSSL.
+.PP
+.PP
+.nf
+ DES_cblock key;
+ do {
+ if (RAND_rand(&key, sizeof(key)) != 1)
+ goto failure;
+ DES_set_odd_parity(key);
+ } while (DES_is_weak_key(&key));
+.fi
+.PP
+.SH "DES implementation history"
+.PP
+There was no complete BSD licensed, fast, GPL compatible implementation of DES, so Love wrote the part that was missing, fast key schedule setup and adapted the interface to the orignal libdes.
+.PP
+The document that got me started for real was 'Efficient Implementation of the Data Encryption Standard' by Dag Arne Osvik. I never got to the PC1 transformation was working, instead I used table-lookup was used for all key schedule setup. The document was very useful since it de-mystified other implementations for me.
+.PP
+The core DES function (SBOX + P transformation) is from Richard Outerbridge public domain DES implementation. My sanity is saved thanks to his work. Thank you Richard.
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_dh.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_dh.3
new file mode 100644
index 000000000000..d2d5abfa257b
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_dh.3
@@ -0,0 +1,10 @@
+.TH "page_dh" 3 "30 Sep 2011" "Version 1.5.1" "Heimdal crypto library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+page_dh \- DH - Diffie-Hellman key exchange
+Diffie-Hellman key exchange is a protocol that allows two parties to establish a shared secret key.
+.PP
+Include and example how to use \fBDH_new()\fP and friends here.
+.PP
+See the library functions here: \fBDiffie-Hellman functions\fP
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_evp.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_evp.3
new file mode 100644
index 000000000000..60f8caa026e1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_evp.3
@@ -0,0 +1,9 @@
+.TH "page_evp" 3 "30 Sep 2011" "Version 1.5.1" "Heimdal crypto library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+page_evp \- EVP - generic crypto interface
+See the library functions here: \fBEVP generic crypto functions\fP
+.SH "EVP Cipher"
+.PP
+The use of \fBEVP_CipherInit_ex()\fP and EVP_Cipher() is pretty easy to understand forward, then \fBEVP_CipherUpdate()\fP and \fBEVP_CipherFinal_ex()\fP really needs an example to explain \fBexample_evp_cipher::c\fP .
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_rand.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_rand.3
new file mode 100644
index 000000000000..b0d532badbb5
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_rand.3
@@ -0,0 +1,6 @@
+.TH "page_rand" 3 "30 Sep 2011" "Version 1.5.1" "Heimdal crypto library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+page_rand \- RAND - random number
+See the library functions here: \fBRAND crypto functions\fP
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_rsa.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_rsa.3
new file mode 100644
index 000000000000..cc45260da58a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/page_rsa.3
@@ -0,0 +1,12 @@
+.TH "page_rsa" 3 "30 Sep 2011" "Version 1.5.1" "Heimdal crypto library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+page_rsa \- RSA - public-key cryptography
+RSA is named by its inventors (Ron Rivest, Adi Shamir, and Leonard Adleman) (published in 1977), patented expired in 21 September 2000.
+.PP
+Speed for RSA in seconds no key blinding 1000 iteration, same rsa keys (1024 and 2048) operation performed each eteration sign, verify, encrypt, decrypt on a random bit pattern
+.PP
+name 1024 2048 4098 ================================= gmp: 0.73 6.60 44.80 tfm: 2.45 -- -- ltm: 3.79 20.74 105.41 (default in hcrypto) openssl: 4.04 11.90 82.59 cdsa: 15.89 102.89 721.40 imath: 40.62 -- --
+.PP
+See the library functions here: \fBRSA functions\fP
diff --git a/crypto/heimdal/doc/doxyout/hcrypto/manpages b/crypto/heimdal/doc/doxyout/hcrypto/manpages
new file mode 100644
index 000000000000..fbd13d0ec2ac
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hcrypto/manpages
@@ -0,0 +1,153 @@
+hcrypto/man/man3/DES_cbc_cksum.3
+hcrypto/man/man3/DES_cbc_encrypt.3
+hcrypto/man/man3/DES_cfb64_encrypt.3
+hcrypto/man/man3/DES_check_key_parity.3
+hcrypto/man/man3/DES_ecb3_encrypt.3
+hcrypto/man/man3/DES_ecb_encrypt.3
+hcrypto/man/man3/DES_ede3_cbc_encrypt.3
+hcrypto/man/man3/DES_encrypt.3
+hcrypto/man/man3/DES_init_random_number_generator.3
+hcrypto/man/man3/DES_is_weak_key.3
+hcrypto/man/man3/DES_key_sched.3
+hcrypto/man/man3/DES_new_random_key.3
+hcrypto/man/man3/DES_pcbc_encrypt.3
+hcrypto/man/man3/DES_random_key.3
+hcrypto/man/man3/DES_set_key.3
+hcrypto/man/man3/DES_set_key_checked.3
+hcrypto/man/man3/DES_set_key_unchecked.3
+hcrypto/man/man3/DES_set_odd_parity.3
+hcrypto/man/man3/DES_string_to_key.3
+hcrypto/man/man3/DH_check_pubkey.3
+hcrypto/man/man3/DH_compute_key.3
+hcrypto/man/man3/DH_free.3
+hcrypto/man/man3/DH_generate_key.3
+hcrypto/man/man3/DH_generate_parameters_ex.3
+hcrypto/man/man3/DH_get_default_method.3
+hcrypto/man/man3/DH_get_ex_data.3
+hcrypto/man/man3/DH_ltm_method.3
+hcrypto/man/man3/DH_new.3
+hcrypto/man/man3/DH_new_method.3
+hcrypto/man/man3/DH_null_method.3
+hcrypto/man/man3/DH_set_default_method.3
+hcrypto/man/man3/DH_set_ex_data.3
+hcrypto/man/man3/DH_set_method.3
+hcrypto/man/man3/DH_size.3
+hcrypto/man/man3/DH_up_ref.3
+hcrypto/man/man3/EVP_aes_128_cbc.3
+hcrypto/man/man3/EVP_aes_128_cfb8.3
+hcrypto/man/man3/EVP_aes_192_cbc.3
+hcrypto/man/man3/EVP_aes_192_cfb8.3
+hcrypto/man/man3/EVP_aes_256_cbc.3
+hcrypto/man/man3/EVP_aes_256_cfb8.3
+hcrypto/man/man3/EVP_BytesToKey.3
+hcrypto/man/man3/EVP_camellia_128_cbc.3
+hcrypto/man/man3/EVP_camellia_192_cbc.3
+hcrypto/man/man3/EVP_camellia_256_cbc.3
+hcrypto/man/man3/EVP_CIPHER_block_size.3
+hcrypto/man/man3/EVP_CIPHER_CTX_block_size.3
+hcrypto/man/man3/EVP_CIPHER_CTX_cipher.3
+hcrypto/man/man3/EVP_CIPHER_CTX_cleanup.3
+hcrypto/man/man3/EVP_CIPHER_CTX_ctrl.3
+hcrypto/man/man3/EVP_CIPHER_CTX_flags.3
+hcrypto/man/man3/EVP_CIPHER_CTX_get_app_data.3
+hcrypto/man/man3/EVP_CIPHER_CTX_init.3
+hcrypto/man/man3/EVP_CIPHER_CTX_iv_length.3
+hcrypto/man/man3/EVP_CIPHER_CTX_key_length.3
+hcrypto/man/man3/EVP_CIPHER_CTX_mode.3
+hcrypto/man/man3/EVP_CIPHER_CTX_rand_key.3
+hcrypto/man/man3/EVP_CIPHER_CTX_set_app_data.3
+hcrypto/man/man3/EVP_CIPHER_CTX_set_key_length.3
+hcrypto/man/man3/EVP_CIPHER_iv_length.3
+hcrypto/man/man3/EVP_CIPHER_key_length.3
+hcrypto/man/man3/EVP_CipherFinal_ex.3
+hcrypto/man/man3/EVP_CipherInit_ex.3
+hcrypto/man/man3/EVP_CipherUpdate.3
+hcrypto/man/man3/EVP_des_cbc.3
+hcrypto/man/man3/EVP_des_ede3_cbc.3
+hcrypto/man/man3/EVP_Digest.3
+hcrypto/man/man3/EVP_DigestFinal_ex.3
+hcrypto/man/man3/EVP_DigestInit_ex.3
+hcrypto/man/man3/EVP_DigestUpdate.3
+hcrypto/man/man3/EVP_enc_null.3
+hcrypto/man/man3/EVP_get_cipherbyname.3
+hcrypto/man/man3/EVP_hcrypto_aes_128_cbc.3
+hcrypto/man/man3/EVP_hcrypto_aes_128_cfb8.3
+hcrypto/man/man3/EVP_hcrypto_aes_192_cbc.3
+hcrypto/man/man3/EVP_hcrypto_aes_192_cfb8.3
+hcrypto/man/man3/EVP_hcrypto_aes_256_cbc.3
+hcrypto/man/man3/EVP_hcrypto_aes_256_cfb8.3
+hcrypto/man/man3/EVP_hcrypto_camellia_128_cbc.3
+hcrypto/man/man3/EVP_hcrypto_camellia_192_cbc.3
+hcrypto/man/man3/EVP_hcrypto_camellia_256_cbc.3
+hcrypto/man/man3/EVP_hcrypto_des_cbc.3
+hcrypto/man/man3/EVP_hcrypto_des_ede3_cbc.3
+hcrypto/man/man3/EVP_hcrypto_md2.3
+hcrypto/man/man3/EVP_hcrypto_md4.3
+hcrypto/man/man3/EVP_hcrypto_md5.3
+hcrypto/man/man3/EVP_hcrypto_rc2_40_cbc.3
+hcrypto/man/man3/EVP_hcrypto_rc2_64_cbc.3
+hcrypto/man/man3/EVP_hcrypto_rc2_cbc.3
+hcrypto/man/man3/EVP_hcrypto_sha1.3
+hcrypto/man/man3/EVP_hcrypto_sha256.3
+hcrypto/man/man3/EVP_hcrypto_sha384.3
+hcrypto/man/man3/EVP_hcrypto_sha512.3
+hcrypto/man/man3/EVP_md2.3
+hcrypto/man/man3/EVP_md4.3
+hcrypto/man/man3/EVP_md5.3
+hcrypto/man/man3/EVP_MD_block_size.3
+hcrypto/man/man3/EVP_MD_CTX_block_size.3
+hcrypto/man/man3/EVP_MD_CTX_cleanup.3
+hcrypto/man/man3/EVP_MD_CTX_create.3
+hcrypto/man/man3/EVP_MD_CTX_destroy.3
+hcrypto/man/man3/EVP_MD_CTX_init.3
+hcrypto/man/man3/EVP_MD_CTX_md.3
+hcrypto/man/man3/EVP_MD_CTX_size.3
+hcrypto/man/man3/EVP_md_null.3
+hcrypto/man/man3/EVP_MD_size.3
+hcrypto/man/man3/EVP_rc2_40_cbc.3
+hcrypto/man/man3/EVP_rc2_64_cbc.3
+hcrypto/man/man3/EVP_rc2_cbc.3
+hcrypto/man/man3/EVP_rc4.3
+hcrypto/man/man3/EVP_rc4_40.3
+hcrypto/man/man3/EVP_sha.3
+hcrypto/man/man3/EVP_sha1.3
+hcrypto/man/man3/EVP_sha256.3
+hcrypto/man/man3/EVP_sha384.3
+hcrypto/man/man3/EVP_sha512.3
+hcrypto/man/man3/EVP_wincrypt_des_ede3_cbc.3
+hcrypto/man/man3/hcrypto_core.3
+hcrypto/man/man3/hcrypto_des.3
+hcrypto/man/man3/hcrypto_dh.3
+hcrypto/man/man3/hcrypto_evp.3
+hcrypto/man/man3/hcrypto_misc.3
+hcrypto/man/man3/hcrypto_rand.3
+hcrypto/man/man3/hcrypto_rsa.3
+hcrypto/man/man3/OpenSSL_add_all_algorithms.3
+hcrypto/man/man3/OpenSSL_add_all_algorithms_conf.3
+hcrypto/man/man3/OpenSSL_add_all_algorithms_noconf.3
+hcrypto/man/man3/page_des.3
+hcrypto/man/man3/page_dh.3
+hcrypto/man/man3/page_evp.3
+hcrypto/man/man3/page_rand.3
+hcrypto/man/man3/page_rsa.3
+hcrypto/man/man3/PKCS5_PBKDF2_HMAC_SHA1.3
+hcrypto/man/man3/RAND_add.3
+hcrypto/man/man3/RAND_bytes.3
+hcrypto/man/man3/RAND_cleanup.3
+hcrypto/man/man3/RAND_file_name.3
+hcrypto/man/man3/RAND_get_rand_method.3
+hcrypto/man/man3/RAND_load_file.3
+hcrypto/man/man3/RAND_pseudo_bytes.3
+hcrypto/man/man3/RAND_seed.3
+hcrypto/man/man3/RAND_set_rand_engine.3
+hcrypto/man/man3/RAND_set_rand_method.3
+hcrypto/man/man3/RAND_status.3
+hcrypto/man/man3/RAND_write_file.3
+hcrypto/man/man3/RSA_free.3
+hcrypto/man/man3/RSA_get_app_data.3
+hcrypto/man/man3/RSA_get_method.3
+hcrypto/man/man3/RSA_new.3
+hcrypto/man/man3/RSA_new_method.3
+hcrypto/man/man3/RSA_set_app_data.3
+hcrypto/man/man3/RSA_set_method.3
+hcrypto/man/man3/RSA_up_ref.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/html/annotated.html b/crypto/heimdal/doc/doxyout/hdb/html/annotated.html
new file mode 100644
index 000000000000..bc8f00919460
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/html/annotated.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalhdblibrary: Data Structures</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Data Structures</h1>Here are the data structures with brief descriptions:<table>
+ <tr><td class="indexkey"><a class="el" href="struct_h_d_b.html">HDB</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a></td><td class="indexvalue"></td></tr>
+</table>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:07 2011 for Heimdalhdblibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hdb/html/doxygen.css b/crypto/heimdal/doc/doxyout/hdb/html/doxygen.css
new file mode 100644
index 000000000000..22c484301dd1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/html/doxygen.css
@@ -0,0 +1,473 @@
+BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
+ font-family: Geneva, Arial, Helvetica, sans-serif;
+}
+BODY,TD {
+ font-size: 90%;
+}
+H1 {
+ text-align: center;
+ font-size: 160%;
+}
+H2 {
+ font-size: 120%;
+}
+H3 {
+ font-size: 100%;
+}
+CAPTION {
+ font-weight: bold
+}
+DIV.qindex {
+ width: 100%;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navpath {
+ width: 100%;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navtab {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+TD.navtab {
+ font-size: 70%;
+}
+A.qindex {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D;
+}
+A.qindex:visited {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D
+}
+A.qindex:hover {
+ text-decoration: none;
+ background-color: #ddddff;
+}
+A.qindexHL {
+ text-decoration: none;
+ font-weight: bold;
+ background-color: #6666cc;
+ color: #ffffff;
+ border: 1px double #9295C2;
+}
+A.qindexHL:hover {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff;
+}
+A.qindexHL:visited {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff
+}
+A.el {
+ text-decoration: none;
+ font-weight: bold
+}
+A.elRef {
+ font-weight: bold
+}
+A.code:link {
+ text-decoration: none;
+ font-weight: normal;
+ color: #0000FF
+}
+A.code:visited {
+ text-decoration: none;
+ font-weight: normal;
+ color: #0000FF
+}
+A.codeRef:link {
+ font-weight: normal;
+ color: #0000FF
+}
+A.codeRef:visited {
+ font-weight: normal;
+ color: #0000FF
+}
+A:hover {
+ text-decoration: none;
+ background-color: #f2f2ff
+}
+DL.el {
+ margin-left: -1cm
+}
+.fragment {
+ font-family: monospace, fixed;
+ font-size: 95%;
+}
+PRE.fragment {
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ margin-left: 2px;
+ margin-right: 8px;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+}
+DIV.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px
+}
+
+DIV.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ margin-bottom: 6px;
+ font-weight: bold;
+}
+DIV.groupText {
+ margin-left: 16px;
+ font-style: italic;
+ font-size: 90%
+}
+BODY {
+ background: white;
+ color: black;
+ margin-right: 20px;
+ margin-left: 20px;
+}
+TD.indexkey {
+ background-color: #e8eef2;
+ font-weight: bold;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TD.indexvalue {
+ background-color: #e8eef2;
+ font-style: italic;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TR.memlist {
+ background-color: #f0f0f0;
+}
+P.formulaDsp {
+ text-align: center;
+}
+IMG.formulaDsp {
+}
+IMG.formulaInl {
+ vertical-align: middle;
+}
+SPAN.keyword { color: #008000 }
+SPAN.keywordtype { color: #604020 }
+SPAN.keywordflow { color: #e08000 }
+SPAN.comment { color: #800000 }
+SPAN.preprocessor { color: #806020 }
+SPAN.stringliteral { color: #002080 }
+SPAN.charliteral { color: #008080 }
+SPAN.vhdldigit { color: #ff00ff }
+SPAN.vhdlchar { color: #000000 }
+SPAN.vhdlkeyword { color: #700070 }
+SPAN.vhdllogic { color: #ff0000 }
+
+.mdescLeft {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.mdescRight {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.memItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplParams {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ color: #606060;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+FORM.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+INPUT.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+TD.tiny {
+ font-size: 75%;
+}
+a {
+ color: #1A41A8;
+}
+a:visited {
+ color: #2A3798;
+}
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #84b0c7;
+}
+TH.dirtab {
+ background: #e8eef2;
+ font-weight: bold;
+}
+HR {
+ height: 1px;
+ border: none;
+ border-top: 1px solid black;
+}
+
+/* Style for detailed member documentation */
+.memtemplate {
+ font-size: 80%;
+ color: #606060;
+ font-weight: normal;
+ margin-left: 3px;
+}
+.memnav {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+.memitem {
+ padding: 4px;
+ background-color: #eef3f5;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #dedeee;
+ -moz-border-radius: 8px 8px 8px 8px;
+}
+.memname {
+ white-space: nowrap;
+ font-weight: bold;
+}
+.memdoc{
+ padding-left: 10px;
+}
+.memproto {
+ background-color: #d5e1e8;
+ width: 100%;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #84b0c7;
+ font-weight: bold;
+ -moz-border-radius: 8px 8px 8px 8px;
+}
+.paramkey {
+ text-align: right;
+}
+.paramtype {
+ white-space: nowrap;
+}
+.paramname {
+ color: #602020;
+ font-style: italic;
+ white-space: nowrap;
+}
+/* End Styling for detailed member documentation */
+
+/* for the tree view */
+.ftvtree {
+ font-family: sans-serif;
+ margin:0.5em;
+}
+/* these are for tree view when used as main index */
+.directory {
+ font-size: 9pt;
+ font-weight: bold;
+}
+.directory h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+
+/* The following two styles can be used to replace the root node title */
+/* with an image of your choice. Simply uncomment the next two styles, */
+/* specify the name of your image and be sure to set 'height' to the */
+/* proper pixel height of your image. */
+
+/* .directory h3.swap { */
+/* height: 61px; */
+/* background-repeat: no-repeat; */
+/* background-image: url("yourimage.gif"); */
+/* } */
+/* .directory h3.swap span { */
+/* display: none; */
+/* } */
+
+.directory > h3 {
+ margin-top: 0;
+}
+.directory p {
+ margin: 0px;
+ white-space: nowrap;
+}
+.directory div {
+ display: none;
+ margin: 0px;
+}
+.directory img {
+ vertical-align: -30%;
+}
+/* these are for tree view when not used as main index */
+.directory-alt {
+ font-size: 100%;
+ font-weight: bold;
+}
+.directory-alt h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+.directory-alt > h3 {
+ margin-top: 0;
+}
+.directory-alt p {
+ margin: 0px;
+ white-space: nowrap;
+}
+.directory-alt div {
+ display: none;
+ margin: 0px;
+}
+.directory-alt img {
+ vertical-align: -30%;
+}
+
diff --git a/crypto/heimdal/doc/doxyout/hdb/html/doxygen.png b/crypto/heimdal/doc/doxyout/hdb/html/doxygen.png
new file mode 100644
index 000000000000..f0a274bbaffd
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/html/doxygen.png
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/hdb/html/functions.html b/crypto/heimdal/doc/doxyout/hdb/html/functions.html
new file mode 100644
index 000000000000..3995651fc232
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/html/functions.html
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalhdblibrary: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+<p>
+<ul>
+<li>hdb__del
+: <a class="el" href="struct_h_d_b.html#43d6e0776bcdbfc5a21578950d2fd739">HDB</a>
+<li>hdb__get
+: <a class="el" href="struct_h_d_b.html#447dc66c22431d0ceec328f405fc107a">HDB</a>
+<li>hdb__put
+: <a class="el" href="struct_h_d_b.html#eb2874e8e0ab765a53395843cae7c7a1">HDB</a>
+<li>hdb_auth_status
+: <a class="el" href="struct_h_d_b.html#344ce9ae59b81f82ae9e4acdc02c4688">HDB</a>
+<li>hdb_check_constrained_delegation
+: <a class="el" href="struct_h_d_b.html#9d6f3a3789dfe4b181d488864e0367fc">HDB</a>
+<li>hdb_check_pkinit_ms_upn_match
+: <a class="el" href="struct_h_d_b.html#28d8f763a87d331b58720e45f574184d">HDB</a>
+<li>hdb_check_s4u2self
+: <a class="el" href="struct_h_d_b.html#15319f1bc3c038258e7003b828a68a23">HDB</a>
+<li>hdb_close
+: <a class="el" href="struct_h_d_b.html#b86313852bebd064b8ef42b98e30f1cb">HDB</a>
+<li>hdb_destroy
+: <a class="el" href="struct_h_d_b.html#09d63facb47c20e3a6edcbbc3caf0b53">HDB</a>
+<li>hdb_fetch_kvno
+: <a class="el" href="struct_h_d_b.html#73b9a2fea78f68b9fa7eaed9007775ba">HDB</a>
+<li>hdb_firstkey
+: <a class="el" href="struct_h_d_b.html#82cc2fee837e0d41f4d4cb650461bd0b">HDB</a>
+<li>hdb_free
+: <a class="el" href="struct_h_d_b.html#d0621f6de165296a1d1c644c74cb5965">HDB</a>
+<li>hdb_get_realms
+: <a class="el" href="struct_h_d_b.html#676bb1e2c8ff84d1814ac70587b45310">HDB</a>
+<li>hdb_lock
+: <a class="el" href="struct_h_d_b.html#bdd9f324fd42913dd4f04e874038e30d">HDB</a>
+<li>hdb_name
+: <a class="el" href="struct_h_d_b.html#cb4dd65f4c8add22c2150611944266e3">HDB</a>
+<li>hdb_nextkey
+: <a class="el" href="struct_h_d_b.html#d93d9f3f5d1c6142017ba5d0fe46cbd9">HDB</a>
+<li>hdb_open
+: <a class="el" href="struct_h_d_b.html#739d719f5e48e4673722479bb0bc417c">HDB</a>
+<li>hdb_password
+: <a class="el" href="struct_h_d_b.html#31384c881a1bb57801506fc8607002ea">HDB</a>
+<li>hdb_remove
+: <a class="el" href="struct_h_d_b.html#2de18a02cf3dcfd148d3112235df03a1">HDB</a>
+<li>hdb_rename
+: <a class="el" href="struct_h_d_b.html#aa3df6b688ca81ec30d9011cab651707">HDB</a>
+<li>hdb_store
+: <a class="el" href="struct_h_d_b.html#8a683627a8cc9b2fa76aa4a42d8e8724">HDB</a>
+<li>hdb_unlock
+: <a class="el" href="struct_h_d_b.html#fa43e8d87b994dfb71740d36b2b3b655">HDB</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:07 2011 for Heimdalhdblibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hdb/html/functions_vars.html b/crypto/heimdal/doc/doxyout/hdb/html/functions_vars.html
new file mode 100644
index 000000000000..a2b468580b06
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/html/functions_vars.html
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalhdblibrary: Data Fields - Variables</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<ul>
+<li>hdb__del
+: <a class="el" href="struct_h_d_b.html#43d6e0776bcdbfc5a21578950d2fd739">HDB</a>
+<li>hdb__get
+: <a class="el" href="struct_h_d_b.html#447dc66c22431d0ceec328f405fc107a">HDB</a>
+<li>hdb__put
+: <a class="el" href="struct_h_d_b.html#eb2874e8e0ab765a53395843cae7c7a1">HDB</a>
+<li>hdb_auth_status
+: <a class="el" href="struct_h_d_b.html#344ce9ae59b81f82ae9e4acdc02c4688">HDB</a>
+<li>hdb_check_constrained_delegation
+: <a class="el" href="struct_h_d_b.html#9d6f3a3789dfe4b181d488864e0367fc">HDB</a>
+<li>hdb_check_pkinit_ms_upn_match
+: <a class="el" href="struct_h_d_b.html#28d8f763a87d331b58720e45f574184d">HDB</a>
+<li>hdb_check_s4u2self
+: <a class="el" href="struct_h_d_b.html#15319f1bc3c038258e7003b828a68a23">HDB</a>
+<li>hdb_close
+: <a class="el" href="struct_h_d_b.html#b86313852bebd064b8ef42b98e30f1cb">HDB</a>
+<li>hdb_destroy
+: <a class="el" href="struct_h_d_b.html#09d63facb47c20e3a6edcbbc3caf0b53">HDB</a>
+<li>hdb_fetch_kvno
+: <a class="el" href="struct_h_d_b.html#73b9a2fea78f68b9fa7eaed9007775ba">HDB</a>
+<li>hdb_firstkey
+: <a class="el" href="struct_h_d_b.html#82cc2fee837e0d41f4d4cb650461bd0b">HDB</a>
+<li>hdb_free
+: <a class="el" href="struct_h_d_b.html#d0621f6de165296a1d1c644c74cb5965">HDB</a>
+<li>hdb_get_realms
+: <a class="el" href="struct_h_d_b.html#676bb1e2c8ff84d1814ac70587b45310">HDB</a>
+<li>hdb_lock
+: <a class="el" href="struct_h_d_b.html#bdd9f324fd42913dd4f04e874038e30d">HDB</a>
+<li>hdb_name
+: <a class="el" href="struct_h_d_b.html#cb4dd65f4c8add22c2150611944266e3">HDB</a>
+<li>hdb_nextkey
+: <a class="el" href="struct_h_d_b.html#d93d9f3f5d1c6142017ba5d0fe46cbd9">HDB</a>
+<li>hdb_open
+: <a class="el" href="struct_h_d_b.html#739d719f5e48e4673722479bb0bc417c">HDB</a>
+<li>hdb_password
+: <a class="el" href="struct_h_d_b.html#31384c881a1bb57801506fc8607002ea">HDB</a>
+<li>hdb_remove
+: <a class="el" href="struct_h_d_b.html#2de18a02cf3dcfd148d3112235df03a1">HDB</a>
+<li>hdb_rename
+: <a class="el" href="struct_h_d_b.html#aa3df6b688ca81ec30d9011cab651707">HDB</a>
+<li>hdb_store
+: <a class="el" href="struct_h_d_b.html#8a683627a8cc9b2fa76aa4a42d8e8724">HDB</a>
+<li>hdb_unlock
+: <a class="el" href="struct_h_d_b.html#fa43e8d87b994dfb71740d36b2b3b655">HDB</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:07 2011 for Heimdalhdblibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hdb/html/graph_legend.dot b/crypto/heimdal/doc/doxyout/hdb/html/graph_legend.dot
new file mode 100644
index 000000000000..4df0f1aa4864
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/html/graph_legend.dot
@@ -0,0 +1,22 @@
+digraph G
+{
+ edge [fontname="FreeSans",fontsize=10,labelfontname="FreeSans",labelfontsize=10];
+ node [fontname="FreeSans",fontsize=10,shape=record];
+ Node9 [shape="box",label="Inherited",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",fillcolor="grey75",style="filled" fontcolor="black"];
+ Node10 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node10 [shape="box",label="PublicBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPublicBase.html"];
+ Node11 -> Node10 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node11 [shape="box",label="Truncated",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="red",URL="$classTruncated.html"];
+ Node13 -> Node9 [dir=back,color="darkgreen",fontsize=10,style="solid",fontname="FreeSans"];
+ Node13 [shape="box",label="ProtectedBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classProtectedBase.html"];
+ Node14 -> Node9 [dir=back,color="firebrick4",fontsize=10,style="solid",fontname="FreeSans"];
+ Node14 [shape="box",label="PrivateBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPrivateBase.html"];
+ Node15 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node15 [shape="box",label="Undocumented",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="grey75"];
+ Node16 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node16 [shape="box",label="Templ< int >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+ Node17 -> Node16 [dir=back,color="orange",fontsize=10,style="dashed",label="< int >",fontname="FreeSans"];
+ Node17 [shape="box",label="Templ< T >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+ Node18 -> Node9 [dir=back,color="darkorchid3",fontsize=10,style="dashed",label="m_usedClass",fontname="FreeSans"];
+ Node18 [shape="box",label="Used",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classUsed.html"];
+}
diff --git a/crypto/heimdal/doc/doxyout/hdb/html/graph_legend.html b/crypto/heimdal/doc/doxyout/hdb/html/graph_legend.html
new file mode 100644
index 000000000000..77afc215cccf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/html/graph_legend.html
@@ -0,0 +1,87 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalhdblibrary: Graph Legend</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Graph Legend</h1>This page explains how to interpret the graphs that are generated by doxygen.<p>
+Consider the following example: <div class="fragment"><pre class="fragment"><span class="comment">/*! Invisible class because of truncation */</span>
+<span class="keyword">class </span>Invisible { };
+<span class="comment"></span>
+<span class="comment">/*! Truncated class, inheritance relation is hidden */</span>
+<span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };
+
+<span class="comment">/* Class not documented with doxygen comments */</span>
+<span class="keyword">class </span>Undocumented { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using public inheritance */</span>
+<span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };
+<span class="comment"></span>
+<span class="comment">/*! A template class */</span>
+<span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>Templ { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using protected inheritance */</span>
+<span class="keyword">class </span>ProtectedBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using private inheritance */</span>
+<span class="keyword">class </span>PrivateBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is used by the Inherited class */</span>
+<span class="keyword">class </span>Used { };
+<span class="comment"></span>
+<span class="comment">/*! Super class that inherits a number of other classes */</span>
+<span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,
+ <span class="keyword">protected</span> ProtectedBase,
+ <span class="keyword">private</span> PrivateBase,
+ <span class="keyword">public</span> Undocumented,
+ <span class="keyword">public</span> Templ&lt;int&gt;
+{
+ <span class="keyword">private</span>:
+ Used *m_usedClass;
+};
+</pre></div> If the <code>MAX_DOT_GRAPH_HEIGHT</code> tag in the configuration file is set to 240 this will result in the following graph:<p>
+<center><div align="center">
+<img src="graph_legend.png" alt="graph_legend.png">
+</div>
+</center> <p>
+The boxes in the above graph have the following meaning: <ul>
+<li>
+A filled gray box represents the struct or class for which the graph is generated. </li>
+<li>
+A box with a black border denotes a documented struct or class. </li>
+<li>
+A box with a grey border denotes an undocumented struct or class. </li>
+<li>
+A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
+</ul>
+The arrows have the following meaning: <ul>
+<li>
+A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
+<li>
+A dark green arrow is used for protected inheritance. </li>
+<li>
+A dark red arrow is used for private inheritance. </li>
+<li>
+A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
+<li>
+A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:07 2011 for Heimdalhdblibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hdb/html/graph_legend.png b/crypto/heimdal/doc/doxyout/hdb/html/graph_legend.png
new file mode 100644
index 000000000000..9b96937bfd5f
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/html/graph_legend.png
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/hdb/html/index.html b/crypto/heimdal/doc/doxyout/hdb/html/index.html
new file mode 100644
index 000000000000..694667a74abe
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/html/index.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalhdblibrary: Heimdal database backend library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal database backend library</h1>
+<p>
+<h3 align="center">1.5.1 </h3><h2><a class="anchor" name="intro">
+Introduction</a></h2>
+Heimdal libhdb library provides the backend support for Heimdal kdc and kadmind. Its here where plugins for diffrent database engines can be pluged in and extend support for here Heimdal get the principal and policy data from.<p>
+Example of Heimdal backend are:<ul>
+<li>Berkeley DB 1.85</li><li>Berkeley DB 3.0</li><li>Berkeley DB 4.0</li><li>New Berkeley DB</li><li>LDAP</li></ul>
+<p>
+The project web page: <a href="http://www.h5l.org/">http://www.h5l.org/</a> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:07 2011 for Heimdalhdblibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hdb/html/struct_h_d_b.html b/crypto/heimdal/doc/doxyout/hdb/html/struct_h_d_b.html
new file mode 100644
index 000000000000..3768113bb50e
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/html/struct_h_d_b.html
@@ -0,0 +1,430 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalhdblibrary: HDB Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>HDB Struct Reference</h1><!-- doxytag: class="HDB" --><code>#include &lt;hdb.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#cb4dd65f4c8add22c2150611944266e3">hdb_name</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#739d719f5e48e4673722479bb0bc417c">hdb_open</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, int, mode_t)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#b86313852bebd064b8ef42b98e30f1cb">hdb_close</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#d0621f6de165296a1d1c644c74cb5965">hdb_free</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#73b9a2fea78f68b9fa7eaed9007775ba">hdb_fetch_kvno</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, krb5_const_principal, unsigned, krb5_kvno, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#8a683627a8cc9b2fa76aa4a42d8e8724">hdb_store</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, unsigned, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#2de18a02cf3dcfd148d3112235df03a1">hdb_remove</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, krb5_const_principal)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#82cc2fee837e0d41f4d4cb650461bd0b">hdb_firstkey</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, unsigned, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#d93d9f3f5d1c6142017ba5d0fe46cbd9">hdb_nextkey</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, unsigned, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#bdd9f324fd42913dd4f04e874038e30d">hdb_lock</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, int)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#fa43e8d87b994dfb71740d36b2b3b655">hdb_unlock</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#aa3df6b688ca81ec30d9011cab651707">hdb_rename</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, const char *)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#447dc66c22431d0ceec328f405fc107a">hdb__get</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, krb5_data, krb5_data *)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#eb2874e8e0ab765a53395843cae7c7a1">hdb__put</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, int, krb5_data, krb5_data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#43d6e0776bcdbfc5a21578950d2fd739">hdb__del</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, krb5_data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#09d63facb47c20e3a6edcbbc3caf0b53">hdb_destroy</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#676bb1e2c8ff84d1814ac70587b45310">hdb_get_realms</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, krb5_realm **)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#31384c881a1bb57801506fc8607002ea">hdb_password</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *, const char *, int)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#344ce9ae59b81f82ae9e4acdc02c4688">hdb_auth_status</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *, int)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#9d6f3a3789dfe4b181d488864e0367fc">hdb_check_constrained_delegation</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *, krb5_const_principal)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#28d8f763a87d331b58720e45f574184d">hdb_check_pkinit_ms_upn_match</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *, krb5_const_principal)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">krb5_error_code(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_h_d_b.html#15319f1bc3c038258e7003b828a68a23">hdb_check_s4u2self</a> )(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *, krb5_const_principal)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<a class="el" href="struct_h_d_b.html">HDB</a> backend function pointer structure<p>
+The <a class="el" href="struct_h_d_b.html">HDB</a> structure is what the KDC and kadmind framework uses to query the backend database when talking about principals. <hr><h2>Field Documentation</h2>
+<a class="anchor" name="cb4dd65f4c8add22c2150611944266e3"></a><!-- doxytag: member="HDB::hdb_name" ref="cb4dd65f4c8add22c2150611944266e3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">char* <a class="el" href="struct_h_d_b.html#cb4dd65f4c8add22c2150611944266e3">HDB::hdb_name</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+don't use, only for DB3
+</div>
+</div><p>
+<a class="anchor" name="739d719f5e48e4673722479bb0bc417c"></a><!-- doxytag: member="HDB::hdb_open" ref="739d719f5e48e4673722479bb0bc417c" args=")(krb5_context, struct HDB *, int, mode_t)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#739d719f5e48e4673722479bb0bc417c">HDB::hdb_open</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, int, mode_t) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Open (or create) the a Kerberos database.<p>
+Open (or create) the a Kerberos database that was resolved with hdb_create(). The third and fourth flag to the function are the same as open(), thus passing O_CREAT will create the data base if it doesn't exists.<p>
+Then done the caller should call <a class="el" href="struct_h_d_b.html#b86313852bebd064b8ef42b98e30f1cb">hdb_close()</a>, and to release all resources <a class="el" href="struct_h_d_b.html#09d63facb47c20e3a6edcbbc3caf0b53">hdb_destroy()</a>.
+</div>
+</div><p>
+<a class="anchor" name="b86313852bebd064b8ef42b98e30f1cb"></a><!-- doxytag: member="HDB::hdb_close" ref="b86313852bebd064b8ef42b98e30f1cb" args=")(krb5_context, struct HDB *)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#b86313852bebd064b8ef42b98e30f1cb">HDB::hdb_close</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Close the database for transaction<p>
+Closes the database for further transactions, wont release any permanant resources. the database can be -&gt;hdb_open-ed again.
+</div>
+</div><p>
+<a class="anchor" name="d0621f6de165296a1d1c644c74cb5965"></a><!-- doxytag: member="HDB::hdb_free" ref="d0621f6de165296a1d1c644c74cb5965" args=")(krb5_context, struct HDB *, hdb_entry_ex *)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void(* <a class="el" href="struct_h_d_b.html#d0621f6de165296a1d1c644c74cb5965">HDB::hdb_free</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free an entry after use.
+</div>
+</div><p>
+<a class="anchor" name="73b9a2fea78f68b9fa7eaed9007775ba"></a><!-- doxytag: member="HDB::hdb_fetch_kvno" ref="73b9a2fea78f68b9fa7eaed9007775ba" args=")(krb5_context, struct HDB *, krb5_const_principal, unsigned, krb5_kvno, hdb_entry_ex *)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#73b9a2fea78f68b9fa7eaed9007775ba">HDB::hdb_fetch_kvno</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, krb5_const_principal, unsigned, krb5_kvno, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Fetch an entry from the backend<p>
+Fetch an entry from the backend, flags are what type of entry should be fetch: client, server, krbtgt. knvo (if specified and flags HDB_F_KVNO_SPECIFIED set) is the kvno to get
+</div>
+</div><p>
+<a class="anchor" name="8a683627a8cc9b2fa76aa4a42d8e8724"></a><!-- doxytag: member="HDB::hdb_store" ref="8a683627a8cc9b2fa76aa4a42d8e8724" args=")(krb5_context, struct HDB *, unsigned, hdb_entry_ex *)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#8a683627a8cc9b2fa76aa4a42d8e8724">HDB::hdb_store</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, unsigned, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store an entry to database
+</div>
+</div><p>
+<a class="anchor" name="2de18a02cf3dcfd148d3112235df03a1"></a><!-- doxytag: member="HDB::hdb_remove" ref="2de18a02cf3dcfd148d3112235df03a1" args=")(krb5_context, struct HDB *, krb5_const_principal)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#2de18a02cf3dcfd148d3112235df03a1">HDB::hdb_remove</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, krb5_const_principal) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Remove an entry from the database.
+</div>
+</div><p>
+<a class="anchor" name="82cc2fee837e0d41f4d4cb650461bd0b"></a><!-- doxytag: member="HDB::hdb_firstkey" ref="82cc2fee837e0d41f4d4cb650461bd0b" args=")(krb5_context, struct HDB *, unsigned, hdb_entry_ex *)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#82cc2fee837e0d41f4d4cb650461bd0b">HDB::hdb_firstkey</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, unsigned, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+As part of iteration, fetch one entry
+</div>
+</div><p>
+<a class="anchor" name="d93d9f3f5d1c6142017ba5d0fe46cbd9"></a><!-- doxytag: member="HDB::hdb_nextkey" ref="d93d9f3f5d1c6142017ba5d0fe46cbd9" args=")(krb5_context, struct HDB *, unsigned, hdb_entry_ex *)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#d93d9f3f5d1c6142017ba5d0fe46cbd9">HDB::hdb_nextkey</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, unsigned, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+As part of iteration, fetch next entry
+</div>
+</div><p>
+<a class="anchor" name="bdd9f324fd42913dd4f04e874038e30d"></a><!-- doxytag: member="HDB::hdb_lock" ref="bdd9f324fd42913dd4f04e874038e30d" args=")(krb5_context, struct HDB *, int)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#bdd9f324fd42913dd4f04e874038e30d">HDB::hdb_lock</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, int) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Lock database<p>
+A lock can only be held by one consumers. Transaction can still happen on the database while the lock is held, so the entry is only useful for syncroning creation of the database and renaming of the database.
+</div>
+</div><p>
+<a class="anchor" name="fa43e8d87b994dfb71740d36b2b3b655"></a><!-- doxytag: member="HDB::hdb_unlock" ref="fa43e8d87b994dfb71740d36b2b3b655" args=")(krb5_context, struct HDB *)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#fa43e8d87b994dfb71740d36b2b3b655">HDB::hdb_unlock</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Unlock database
+</div>
+</div><p>
+<a class="anchor" name="aa3df6b688ca81ec30d9011cab651707"></a><!-- doxytag: member="HDB::hdb_rename" ref="aa3df6b688ca81ec30d9011cab651707" args=")(krb5_context, struct HDB *, const char *)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#aa3df6b688ca81ec30d9011cab651707">HDB::hdb_rename</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, const char *) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Rename the data base.<p>
+Assume that the database is not hdb_open'ed and not locked.
+</div>
+</div><p>
+<a class="anchor" name="447dc66c22431d0ceec328f405fc107a"></a><!-- doxytag: member="HDB::hdb__get" ref="447dc66c22431d0ceec328f405fc107a" args=")(krb5_context, struct HDB *, krb5_data, krb5_data *)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#447dc66c22431d0ceec328f405fc107a">HDB::hdb__get</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, krb5_data, krb5_data *) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get an hdb_entry from a classical DB backend<p>
+If the database is a classical DB (ie BDB, NDBM, GDBM, etc) backend, this function will take a principal key (krb5_data) and return all data related to principal in the return krb5_data. The returned encoded entry is of type hdb_entry or hdb_entry_alias.
+</div>
+</div><p>
+<a class="anchor" name="eb2874e8e0ab765a53395843cae7c7a1"></a><!-- doxytag: member="HDB::hdb__put" ref="eb2874e8e0ab765a53395843cae7c7a1" args=")(krb5_context, struct HDB *, int, krb5_data, krb5_data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#eb2874e8e0ab765a53395843cae7c7a1">HDB::hdb__put</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, int, krb5_data, krb5_data) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store an hdb_entry from a classical DB backend<p>
+Same discussion as in <a class="el" href="struct_h_d_b.html#447dc66c22431d0ceec328f405fc107a">HDB::hdb__get</a>
+</div>
+</div><p>
+<a class="anchor" name="43d6e0776bcdbfc5a21578950d2fd739"></a><!-- doxytag: member="HDB::hdb__del" ref="43d6e0776bcdbfc5a21578950d2fd739" args=")(krb5_context, struct HDB *, krb5_data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#43d6e0776bcdbfc5a21578950d2fd739">HDB::hdb__del</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, krb5_data) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Delete and hdb_entry from a classical DB backend<p>
+Same discussion as in <a class="el" href="struct_h_d_b.html#447dc66c22431d0ceec328f405fc107a">HDB::hdb__get</a>
+</div>
+</div><p>
+<a class="anchor" name="09d63facb47c20e3a6edcbbc3caf0b53"></a><!-- doxytag: member="HDB::hdb_destroy" ref="09d63facb47c20e3a6edcbbc3caf0b53" args=")(krb5_context, struct HDB *)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#09d63facb47c20e3a6edcbbc3caf0b53">HDB::hdb_destroy</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Destroy the handle to the database.<p>
+Destroy the handle to the database, deallocate all memory and related resources. Does not remove any permanent data. Its the logical reverse of hdb_create() function that is the entry point for the module.
+</div>
+</div><p>
+<a class="anchor" name="676bb1e2c8ff84d1814ac70587b45310"></a><!-- doxytag: member="HDB::hdb_get_realms" ref="676bb1e2c8ff84d1814ac70587b45310" args=")(krb5_context, struct HDB *, krb5_realm **)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#676bb1e2c8ff84d1814ac70587b45310">HDB::hdb_get_realms</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, krb5_realm **) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the list of realms this backend handles. This call is optional to support. The returned realms are used for announcing the realms over bonjour. Free returned array with krb5_free_host_realm().
+</div>
+</div><p>
+<a class="anchor" name="31384c881a1bb57801506fc8607002ea"></a><!-- doxytag: member="HDB::hdb_password" ref="31384c881a1bb57801506fc8607002ea" args=")(krb5_context, struct HDB *, hdb_entry_ex *, const char *, int)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#31384c881a1bb57801506fc8607002ea">HDB::hdb_password</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *, const char *, int) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Change password.<p>
+Will update keys for the entry when given password. The new keys must be written into the entry and will then later be -&gt;<a class="el" href="struct_h_d_b.html#8a683627a8cc9b2fa76aa4a42d8e8724">hdb_store()</a> into the database. The backend will still perform all other operations, increasing the kvno, and update modification timestamp.<p>
+The backend needs to call _kadm5_set_keys() and perform password quality checks.
+</div>
+</div><p>
+<a class="anchor" name="344ce9ae59b81f82ae9e4acdc02c4688"></a><!-- doxytag: member="HDB::hdb_auth_status" ref="344ce9ae59b81f82ae9e4acdc02c4688" args=")(krb5_context, struct HDB *, hdb_entry_ex *, int)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#344ce9ae59b81f82ae9e4acdc02c4688">HDB::hdb_auth_status</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *, int) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Auth feedback<p>
+This is a feedback call that allows backends that provides lockout functionality to register failure and/or successes.<p>
+In case the entry is locked out, the backend should set the hdb_entry.flags.locked-out flag.
+</div>
+</div><p>
+<a class="anchor" name="9d6f3a3789dfe4b181d488864e0367fc"></a><!-- doxytag: member="HDB::hdb_check_constrained_delegation" ref="9d6f3a3789dfe4b181d488864e0367fc" args=")(krb5_context, struct HDB *, hdb_entry_ex *, krb5_const_principal)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#9d6f3a3789dfe4b181d488864e0367fc">HDB::hdb_check_constrained_delegation</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *, krb5_const_principal) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Check if delegation is allowed.
+</div>
+</div><p>
+<a class="anchor" name="28d8f763a87d331b58720e45f574184d"></a><!-- doxytag: member="HDB::hdb_check_pkinit_ms_upn_match" ref="28d8f763a87d331b58720e45f574184d" args=")(krb5_context, struct HDB *, hdb_entry_ex *, krb5_const_principal)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#28d8f763a87d331b58720e45f574184d">HDB::hdb_check_pkinit_ms_upn_match</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *, krb5_const_principal) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Check if this name is an alias for the supplied client for PKINIT userPrinicpalName logins
+</div>
+</div><p>
+<a class="anchor" name="15319f1bc3c038258e7003b828a68a23"></a><!-- doxytag: member="HDB::hdb_check_s4u2self" ref="15319f1bc3c038258e7003b828a68a23" args=")(krb5_context, struct HDB *, hdb_entry_ex *, krb5_const_principal)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">krb5_error_code(* <a class="el" href="struct_h_d_b.html#15319f1bc3c038258e7003b828a68a23">HDB::hdb_check_s4u2self</a>)(krb5_context, struct <a class="el" href="struct_h_d_b.html">HDB</a> *, <a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> *, krb5_const_principal) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Check if s4u2self is allowed from this client to this server
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>/Users/lha/src/heimdal/heimdal-release/heimdal-1.5.1/lib/hdb/hdb.h</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:07 2011 for Heimdalhdblibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hdb/html/structhdb__entry__ex.html b/crypto/heimdal/doc/doxyout/hdb/html/structhdb__entry__ex.html
new file mode 100644
index 000000000000..34e8b49b2cc8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/html/structhdb__entry__ex.html
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalhdblibrary: hdb_entry_ex Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hdb_entry_ex Struct Reference</h1><!-- doxytag: class="hdb_entry_ex" --><code>#include &lt;hdb.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<a class="el" href="structhdb__entry__ex.html">hdb_entry_ex</a> is a wrapper structure around the hdb_entry structure that allows backends to keep a pointer to the backing store, ie in -&gt;hdb_fetch_kvno(), so that we the kadmin/kpasswd backend gets around to -&gt;hdb_store(), the backend doesn't need to lookup the entry again. <hr>The documentation for this struct was generated from the following file:<ul>
+<li>/Users/lha/src/heimdal/heimdal-release/heimdal-1.5.1/lib/hdb/hdb.h</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:07 2011 for Heimdalhdblibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hdb/html/tab_b.gif b/crypto/heimdal/doc/doxyout/hdb/html/tab_b.gif
new file mode 100644
index 000000000000..0d623483ffdf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/html/tab_b.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/hdb/html/tab_l.gif b/crypto/heimdal/doc/doxyout/hdb/html/tab_l.gif
new file mode 100644
index 000000000000..9b1e6337c929
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/html/tab_l.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/hdb/html/tab_r.gif b/crypto/heimdal/doc/doxyout/hdb/html/tab_r.gif
new file mode 100644
index 000000000000..ce9dd9f533cb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/html/tab_r.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/hdb/html/tabs.css b/crypto/heimdal/doc/doxyout/hdb/html/tabs.css
new file mode 100644
index 000000000000..95f00a91da30
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/html/tabs.css
@@ -0,0 +1,102 @@
+/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
+
+DIV.tabs
+{
+ float : left;
+ width : 100%;
+ background : url("tab_b.gif") repeat-x bottom;
+ margin-bottom : 4px;
+}
+
+DIV.tabs UL
+{
+ margin : 0px;
+ padding-left : 10px;
+ list-style : none;
+}
+
+DIV.tabs LI, DIV.tabs FORM
+{
+ display : inline;
+ margin : 0px;
+ padding : 0px;
+}
+
+DIV.tabs FORM
+{
+ float : right;
+}
+
+DIV.tabs A
+{
+ float : left;
+ background : url("tab_r.gif") no-repeat right top;
+ border-bottom : 1px solid #84B0C7;
+ font-size : x-small;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+DIV.tabs A:hover
+{
+ background-position: 100% -150px;
+}
+
+DIV.tabs A:link, DIV.tabs A:visited,
+DIV.tabs A:active, DIV.tabs A:hover
+{
+ color: #1A419D;
+}
+
+DIV.tabs SPAN
+{
+ float : left;
+ display : block;
+ background : url("tab_l.gif") no-repeat left top;
+ padding : 5px 9px;
+ white-space : nowrap;
+}
+
+DIV.tabs INPUT
+{
+ float : right;
+ display : inline;
+ font-size : 1em;
+}
+
+DIV.tabs TD
+{
+ font-size : x-small;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+DIV.tabs SPAN {float : none;}
+/* End IE5-Mac hack */
+
+DIV.tabs A:hover SPAN
+{
+ background-position: 0% -150px;
+}
+
+DIV.tabs LI.current A
+{
+ background-position: 100% -150px;
+ border-width : 0px;
+}
+
+DIV.tabs LI.current SPAN
+{
+ background-position: 0% -150px;
+ padding-bottom : 6px;
+}
+
+DIV.navpath
+{
+ background : none;
+ border : none;
+ border-bottom : 1px solid #84B0C7;
+}
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/HDB.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/HDB.3
new file mode 100644
index 000000000000..097554e5c83d
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/HDB.3
@@ -0,0 +1,185 @@
+.TH "HDB" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalhdblibrary" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+HDB \-
+.SH SYNOPSIS
+.br
+.PP
+\fC#include <hdb.h>\fP
+.PP
+.SS "Data Fields"
+
+.in +1c
+.ti -1c
+.RI "char * \fBhdb_name\fP"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb_open\fP )(krb5_context, struct \fBHDB\fP *, int, mode_t)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb_close\fP )(krb5_context, struct \fBHDB\fP *)"
+.br
+.ti -1c
+.RI "void(* \fBhdb_free\fP )(krb5_context, struct \fBHDB\fP *, \fBhdb_entry_ex\fP *)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb_fetch_kvno\fP )(krb5_context, struct \fBHDB\fP *, krb5_const_principal, unsigned, krb5_kvno, \fBhdb_entry_ex\fP *)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb_store\fP )(krb5_context, struct \fBHDB\fP *, unsigned, \fBhdb_entry_ex\fP *)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb_remove\fP )(krb5_context, struct \fBHDB\fP *, krb5_const_principal)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb_firstkey\fP )(krb5_context, struct \fBHDB\fP *, unsigned, \fBhdb_entry_ex\fP *)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb_nextkey\fP )(krb5_context, struct \fBHDB\fP *, unsigned, \fBhdb_entry_ex\fP *)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb_lock\fP )(krb5_context, struct \fBHDB\fP *, int)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb_unlock\fP )(krb5_context, struct \fBHDB\fP *)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb_rename\fP )(krb5_context, struct \fBHDB\fP *, const char *)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb__get\fP )(krb5_context, struct \fBHDB\fP *, krb5_data, krb5_data *)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb__put\fP )(krb5_context, struct \fBHDB\fP *, int, krb5_data, krb5_data)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb__del\fP )(krb5_context, struct \fBHDB\fP *, krb5_data)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb_destroy\fP )(krb5_context, struct \fBHDB\fP *)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb_get_realms\fP )(krb5_context, struct \fBHDB\fP *, krb5_realm **)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb_password\fP )(krb5_context, struct \fBHDB\fP *, \fBhdb_entry_ex\fP *, const char *, int)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb_auth_status\fP )(krb5_context, struct \fBHDB\fP *, \fBhdb_entry_ex\fP *, int)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb_check_constrained_delegation\fP )(krb5_context, struct \fBHDB\fP *, \fBhdb_entry_ex\fP *, krb5_const_principal)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb_check_pkinit_ms_upn_match\fP )(krb5_context, struct \fBHDB\fP *, \fBhdb_entry_ex\fP *, krb5_const_principal)"
+.br
+.ti -1c
+.RI "krb5_error_code(* \fBhdb_check_s4u2self\fP )(krb5_context, struct \fBHDB\fP *, \fBhdb_entry_ex\fP *, krb5_const_principal)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+\fBHDB\fP backend function pointer structure
+.PP
+The \fBHDB\fP structure is what the KDC and kadmind framework uses to query the backend database when talking about principals.
+.SH "Field Documentation"
+.PP
+.SS "char* \fBHDB::hdb_name\fP"
+.PP
+don't use, only for DB3
+.SS "krb5_error_code(* \fBHDB::hdb_open\fP)(krb5_context, struct \fBHDB\fP *, int, mode_t)"
+.PP
+Open (or create) the a Kerberos database.
+.PP
+Open (or create) the a Kerberos database that was resolved with hdb_create(). The third and fourth flag to the function are the same as open(), thus passing O_CREAT will create the data base if it doesn't exists.
+.PP
+Then done the caller should call \fBhdb_close()\fP, and to release all resources \fBhdb_destroy()\fP.
+.SS "krb5_error_code(* \fBHDB::hdb_close\fP)(krb5_context, struct \fBHDB\fP *)"
+.PP
+Close the database for transaction
+.PP
+Closes the database for further transactions, wont release any permanant resources. the database can be ->hdb_open-ed again.
+.SS "void(* \fBHDB::hdb_free\fP)(krb5_context, struct \fBHDB\fP *, \fBhdb_entry_ex\fP *)"
+.PP
+Free an entry after use.
+.SS "krb5_error_code(* \fBHDB::hdb_fetch_kvno\fP)(krb5_context, struct \fBHDB\fP *, krb5_const_principal, unsigned, krb5_kvno, \fBhdb_entry_ex\fP *)"
+.PP
+Fetch an entry from the backend
+.PP
+Fetch an entry from the backend, flags are what type of entry should be fetch: client, server, krbtgt. knvo (if specified and flags HDB_F_KVNO_SPECIFIED set) is the kvno to get
+.SS "krb5_error_code(* \fBHDB::hdb_store\fP)(krb5_context, struct \fBHDB\fP *, unsigned, \fBhdb_entry_ex\fP *)"
+.PP
+Store an entry to database
+.SS "krb5_error_code(* \fBHDB::hdb_remove\fP)(krb5_context, struct \fBHDB\fP *, krb5_const_principal)"
+.PP
+Remove an entry from the database.
+.SS "krb5_error_code(* \fBHDB::hdb_firstkey\fP)(krb5_context, struct \fBHDB\fP *, unsigned, \fBhdb_entry_ex\fP *)"
+.PP
+As part of iteration, fetch one entry
+.SS "krb5_error_code(* \fBHDB::hdb_nextkey\fP)(krb5_context, struct \fBHDB\fP *, unsigned, \fBhdb_entry_ex\fP *)"
+.PP
+As part of iteration, fetch next entry
+.SS "krb5_error_code(* \fBHDB::hdb_lock\fP)(krb5_context, struct \fBHDB\fP *, int)"
+.PP
+Lock database
+.PP
+A lock can only be held by one consumers. Transaction can still happen on the database while the lock is held, so the entry is only useful for syncroning creation of the database and renaming of the database.
+.SS "krb5_error_code(* \fBHDB::hdb_unlock\fP)(krb5_context, struct \fBHDB\fP *)"
+.PP
+Unlock database
+.SS "krb5_error_code(* \fBHDB::hdb_rename\fP)(krb5_context, struct \fBHDB\fP *, const char *)"
+.PP
+Rename the data base.
+.PP
+Assume that the database is not hdb_open'ed and not locked.
+.SS "krb5_error_code(* \fBHDB::hdb__get\fP)(krb5_context, struct \fBHDB\fP *, krb5_data, krb5_data *)"
+.PP
+Get an hdb_entry from a classical DB backend
+.PP
+If the database is a classical DB (ie BDB, NDBM, GDBM, etc) backend, this function will take a principal key (krb5_data) and return all data related to principal in the return krb5_data. The returned encoded entry is of type hdb_entry or hdb_entry_alias.
+.SS "krb5_error_code(* \fBHDB::hdb__put\fP)(krb5_context, struct \fBHDB\fP *, int, krb5_data, krb5_data)"
+.PP
+Store an hdb_entry from a classical DB backend
+.PP
+Same discussion as in \fBHDB::hdb__get\fP
+.SS "krb5_error_code(* \fBHDB::hdb__del\fP)(krb5_context, struct \fBHDB\fP *, krb5_data)"
+.PP
+Delete and hdb_entry from a classical DB backend
+.PP
+Same discussion as in \fBHDB::hdb__get\fP
+.SS "krb5_error_code(* \fBHDB::hdb_destroy\fP)(krb5_context, struct \fBHDB\fP *)"
+.PP
+Destroy the handle to the database.
+.PP
+Destroy the handle to the database, deallocate all memory and related resources. Does not remove any permanent data. Its the logical reverse of hdb_create() function that is the entry point for the module.
+.SS "krb5_error_code(* \fBHDB::hdb_get_realms\fP)(krb5_context, struct \fBHDB\fP *, krb5_realm **)"
+.PP
+Get the list of realms this backend handles. This call is optional to support. The returned realms are used for announcing the realms over bonjour. Free returned array with krb5_free_host_realm().
+.SS "krb5_error_code(* \fBHDB::hdb_password\fP)(krb5_context, struct \fBHDB\fP *, \fBhdb_entry_ex\fP *, const char *, int)"
+.PP
+Change password.
+.PP
+Will update keys for the entry when given password. The new keys must be written into the entry and will then later be ->\fBhdb_store()\fP into the database. The backend will still perform all other operations, increasing the kvno, and update modification timestamp.
+.PP
+The backend needs to call _kadm5_set_keys() and perform password quality checks.
+.SS "krb5_error_code(* \fBHDB::hdb_auth_status\fP)(krb5_context, struct \fBHDB\fP *, \fBhdb_entry_ex\fP *, int)"
+.PP
+Auth feedback
+.PP
+This is a feedback call that allows backends that provides lockout functionality to register failure and/or successes.
+.PP
+In case the entry is locked out, the backend should set the hdb_entry.flags.locked-out flag.
+.SS "krb5_error_code(* \fBHDB::hdb_check_constrained_delegation\fP)(krb5_context, struct \fBHDB\fP *, \fBhdb_entry_ex\fP *, krb5_const_principal)"
+.PP
+Check if delegation is allowed.
+.SS "krb5_error_code(* \fBHDB::hdb_check_pkinit_ms_upn_match\fP)(krb5_context, struct \fBHDB\fP *, \fBhdb_entry_ex\fP *, krb5_const_principal)"
+.PP
+Check if this name is an alias for the supplied client for PKINIT userPrinicpalName logins
+.SS "krb5_error_code(* \fBHDB::hdb_check_s4u2self\fP)(krb5_context, struct \fBHDB\fP *, \fBhdb_entry_ex\fP *, krb5_const_principal)"
+.PP
+Check if s4u2self is allowed from this client to this server
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Heimdalhdblibrary from the source code.
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb__del.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb__del.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb__del.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb__get.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb__get.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb__get.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb__put.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb__put.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb__put.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_auth_status.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_auth_status.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_auth_status.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_check_constrained_delegation.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_check_constrained_delegation.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_check_constrained_delegation.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_check_pkinit_ms_upn_match.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_check_pkinit_ms_upn_match.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_check_pkinit_ms_upn_match.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_check_s4u2self.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_check_s4u2self.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_check_s4u2self.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_close.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_close.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_close.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_destroy.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_destroy.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_destroy.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_entry_ex.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_entry_ex.3
new file mode 100644
index 000000000000..502bdd8b2322
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_entry_ex.3
@@ -0,0 +1,17 @@
+.TH "hdb_entry_ex" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalhdblibrary" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hdb_entry_ex \-
+.SH SYNOPSIS
+.br
+.PP
+\fC#include <hdb.h>\fP
+.PP
+.SH "Detailed Description"
+.PP
+\fBhdb_entry_ex\fP is a wrapper structure around the hdb_entry structure that allows backends to keep a pointer to the backing store, ie in ->hdb_fetch_kvno(), so that we the kadmin/kpasswd backend gets around to ->hdb_store(), the backend doesn't need to lookup the entry again.
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Heimdalhdblibrary from the source code.
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_fetch_kvno.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_fetch_kvno.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_fetch_kvno.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_firstkey.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_firstkey.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_firstkey.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_free.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_free.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_free.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_get_realms.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_get_realms.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_get_realms.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_lock.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_lock.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_lock.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_name.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_name.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_name.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_nextkey.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_nextkey.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_nextkey.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_open.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_open.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_open.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_password.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_password.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_password.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_remove.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_remove.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_remove.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_rename.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_rename.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_rename.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_store.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_store.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_store.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_unlock.3 b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_unlock.3
new file mode 100644
index 000000000000..46f8e91739a1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/man/man3/hdb_unlock.3
@@ -0,0 +1 @@
+.so man3/HDB.3
diff --git a/crypto/heimdal/doc/doxyout/hdb/manpages b/crypto/heimdal/doc/doxyout/hdb/manpages
new file mode 100644
index 000000000000..c6d2fe2361fd
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hdb/manpages
@@ -0,0 +1,24 @@
+hdb/man/man3/HDB.3
+hdb/man/man3/hdb__del.3
+hdb/man/man3/hdb__get.3
+hdb/man/man3/hdb__put.3
+hdb/man/man3/hdb_auth_status.3
+hdb/man/man3/hdb_check_constrained_delegation.3
+hdb/man/man3/hdb_check_pkinit_ms_upn_match.3
+hdb/man/man3/hdb_check_s4u2self.3
+hdb/man/man3/hdb_close.3
+hdb/man/man3/hdb_destroy.3
+hdb/man/man3/hdb_entry_ex.3
+hdb/man/man3/hdb_fetch_kvno.3
+hdb/man/man3/hdb_firstkey.3
+hdb/man/man3/hdb_free.3
+hdb/man/man3/hdb_get_realms.3
+hdb/man/man3/hdb_lock.3
+hdb/man/man3/hdb_name.3
+hdb/man/man3/hdb_nextkey.3
+hdb/man/man3/hdb_open.3
+hdb/man/man3/hdb_password.3
+hdb/man/man3/hdb_remove.3
+hdb/man/man3/hdb_rename.3
+hdb/man/man3/hdb_store.3
+hdb/man/man3/hdb_unlock.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/doxygen.css b/crypto/heimdal/doc/doxyout/hx509/html/doxygen.css
new file mode 100644
index 000000000000..22c484301dd1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/doxygen.css
@@ -0,0 +1,473 @@
+BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
+ font-family: Geneva, Arial, Helvetica, sans-serif;
+}
+BODY,TD {
+ font-size: 90%;
+}
+H1 {
+ text-align: center;
+ font-size: 160%;
+}
+H2 {
+ font-size: 120%;
+}
+H3 {
+ font-size: 100%;
+}
+CAPTION {
+ font-weight: bold
+}
+DIV.qindex {
+ width: 100%;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navpath {
+ width: 100%;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navtab {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+TD.navtab {
+ font-size: 70%;
+}
+A.qindex {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D;
+}
+A.qindex:visited {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D
+}
+A.qindex:hover {
+ text-decoration: none;
+ background-color: #ddddff;
+}
+A.qindexHL {
+ text-decoration: none;
+ font-weight: bold;
+ background-color: #6666cc;
+ color: #ffffff;
+ border: 1px double #9295C2;
+}
+A.qindexHL:hover {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff;
+}
+A.qindexHL:visited {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff
+}
+A.el {
+ text-decoration: none;
+ font-weight: bold
+}
+A.elRef {
+ font-weight: bold
+}
+A.code:link {
+ text-decoration: none;
+ font-weight: normal;
+ color: #0000FF
+}
+A.code:visited {
+ text-decoration: none;
+ font-weight: normal;
+ color: #0000FF
+}
+A.codeRef:link {
+ font-weight: normal;
+ color: #0000FF
+}
+A.codeRef:visited {
+ font-weight: normal;
+ color: #0000FF
+}
+A:hover {
+ text-decoration: none;
+ background-color: #f2f2ff
+}
+DL.el {
+ margin-left: -1cm
+}
+.fragment {
+ font-family: monospace, fixed;
+ font-size: 95%;
+}
+PRE.fragment {
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ margin-left: 2px;
+ margin-right: 8px;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+}
+DIV.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px
+}
+
+DIV.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ margin-bottom: 6px;
+ font-weight: bold;
+}
+DIV.groupText {
+ margin-left: 16px;
+ font-style: italic;
+ font-size: 90%
+}
+BODY {
+ background: white;
+ color: black;
+ margin-right: 20px;
+ margin-left: 20px;
+}
+TD.indexkey {
+ background-color: #e8eef2;
+ font-weight: bold;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TD.indexvalue {
+ background-color: #e8eef2;
+ font-style: italic;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TR.memlist {
+ background-color: #f0f0f0;
+}
+P.formulaDsp {
+ text-align: center;
+}
+IMG.formulaDsp {
+}
+IMG.formulaInl {
+ vertical-align: middle;
+}
+SPAN.keyword { color: #008000 }
+SPAN.keywordtype { color: #604020 }
+SPAN.keywordflow { color: #e08000 }
+SPAN.comment { color: #800000 }
+SPAN.preprocessor { color: #806020 }
+SPAN.stringliteral { color: #002080 }
+SPAN.charliteral { color: #008080 }
+SPAN.vhdldigit { color: #ff00ff }
+SPAN.vhdlchar { color: #000000 }
+SPAN.vhdlkeyword { color: #700070 }
+SPAN.vhdllogic { color: #ff0000 }
+
+.mdescLeft {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.mdescRight {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.memItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplParams {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ color: #606060;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+FORM.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+INPUT.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+TD.tiny {
+ font-size: 75%;
+}
+a {
+ color: #1A41A8;
+}
+a:visited {
+ color: #2A3798;
+}
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #84b0c7;
+}
+TH.dirtab {
+ background: #e8eef2;
+ font-weight: bold;
+}
+HR {
+ height: 1px;
+ border: none;
+ border-top: 1px solid black;
+}
+
+/* Style for detailed member documentation */
+.memtemplate {
+ font-size: 80%;
+ color: #606060;
+ font-weight: normal;
+ margin-left: 3px;
+}
+.memnav {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+.memitem {
+ padding: 4px;
+ background-color: #eef3f5;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #dedeee;
+ -moz-border-radius: 8px 8px 8px 8px;
+}
+.memname {
+ white-space: nowrap;
+ font-weight: bold;
+}
+.memdoc{
+ padding-left: 10px;
+}
+.memproto {
+ background-color: #d5e1e8;
+ width: 100%;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #84b0c7;
+ font-weight: bold;
+ -moz-border-radius: 8px 8px 8px 8px;
+}
+.paramkey {
+ text-align: right;
+}
+.paramtype {
+ white-space: nowrap;
+}
+.paramname {
+ color: #602020;
+ font-style: italic;
+ white-space: nowrap;
+}
+/* End Styling for detailed member documentation */
+
+/* for the tree view */
+.ftvtree {
+ font-family: sans-serif;
+ margin:0.5em;
+}
+/* these are for tree view when used as main index */
+.directory {
+ font-size: 9pt;
+ font-weight: bold;
+}
+.directory h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+
+/* The following two styles can be used to replace the root node title */
+/* with an image of your choice. Simply uncomment the next two styles, */
+/* specify the name of your image and be sure to set 'height' to the */
+/* proper pixel height of your image. */
+
+/* .directory h3.swap { */
+/* height: 61px; */
+/* background-repeat: no-repeat; */
+/* background-image: url("yourimage.gif"); */
+/* } */
+/* .directory h3.swap span { */
+/* display: none; */
+/* } */
+
+.directory > h3 {
+ margin-top: 0;
+}
+.directory p {
+ margin: 0px;
+ white-space: nowrap;
+}
+.directory div {
+ display: none;
+ margin: 0px;
+}
+.directory img {
+ vertical-align: -30%;
+}
+/* these are for tree view when not used as main index */
+.directory-alt {
+ font-size: 100%;
+ font-weight: bold;
+}
+.directory-alt h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+.directory-alt > h3 {
+ margin-top: 0;
+}
+.directory-alt p {
+ margin: 0px;
+ white-space: nowrap;
+}
+.directory-alt div {
+ display: none;
+ margin: 0px;
+}
+.directory-alt img {
+ vertical-align: -30%;
+}
+
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/doxygen.png b/crypto/heimdal/doc/doxyout/hx509/html/doxygen.png
new file mode 100644
index 000000000000..f0a274bbaffd
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/doxygen.png
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/graph_legend.dot b/crypto/heimdal/doc/doxyout/hx509/html/graph_legend.dot
new file mode 100644
index 000000000000..4df0f1aa4864
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/graph_legend.dot
@@ -0,0 +1,22 @@
+digraph G
+{
+ edge [fontname="FreeSans",fontsize=10,labelfontname="FreeSans",labelfontsize=10];
+ node [fontname="FreeSans",fontsize=10,shape=record];
+ Node9 [shape="box",label="Inherited",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",fillcolor="grey75",style="filled" fontcolor="black"];
+ Node10 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node10 [shape="box",label="PublicBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPublicBase.html"];
+ Node11 -> Node10 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node11 [shape="box",label="Truncated",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="red",URL="$classTruncated.html"];
+ Node13 -> Node9 [dir=back,color="darkgreen",fontsize=10,style="solid",fontname="FreeSans"];
+ Node13 [shape="box",label="ProtectedBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classProtectedBase.html"];
+ Node14 -> Node9 [dir=back,color="firebrick4",fontsize=10,style="solid",fontname="FreeSans"];
+ Node14 [shape="box",label="PrivateBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPrivateBase.html"];
+ Node15 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node15 [shape="box",label="Undocumented",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="grey75"];
+ Node16 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node16 [shape="box",label="Templ< int >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+ Node17 -> Node16 [dir=back,color="orange",fontsize=10,style="dashed",label="< int >",fontname="FreeSans"];
+ Node17 [shape="box",label="Templ< T >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+ Node18 -> Node9 [dir=back,color="darkorchid3",fontsize=10,style="dashed",label="m_usedClass",fontname="FreeSans"];
+ Node18 [shape="box",label="Used",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classUsed.html"];
+}
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/graph_legend.html b/crypto/heimdal/doc/doxyout/hx509/html/graph_legend.html
new file mode 100644
index 000000000000..bc58e7566687
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/graph_legend.html
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: Graph Legend</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Graph Legend</h1>This page explains how to interpret the graphs that are generated by doxygen.<p>
+Consider the following example: <div class="fragment"><pre class="fragment"><span class="comment">/*! Invisible class because of truncation */</span>
+<span class="keyword">class </span>Invisible { };
+<span class="comment"></span>
+<span class="comment">/*! Truncated class, inheritance relation is hidden */</span>
+<span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };
+
+<span class="comment">/* Class not documented with doxygen comments */</span>
+<span class="keyword">class </span>Undocumented { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using public inheritance */</span>
+<span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };
+<span class="comment"></span>
+<span class="comment">/*! A template class */</span>
+<span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>Templ { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using protected inheritance */</span>
+<span class="keyword">class </span>ProtectedBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using private inheritance */</span>
+<span class="keyword">class </span>PrivateBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is used by the Inherited class */</span>
+<span class="keyword">class </span>Used { };
+<span class="comment"></span>
+<span class="comment">/*! Super class that inherits a number of other classes */</span>
+<span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,
+ <span class="keyword">protected</span> ProtectedBase,
+ <span class="keyword">private</span> PrivateBase,
+ <span class="keyword">public</span> Undocumented,
+ <span class="keyword">public</span> Templ&lt;int&gt;
+{
+ <span class="keyword">private</span>:
+ Used *m_usedClass;
+};
+</pre></div> If the <code>MAX_DOT_GRAPH_HEIGHT</code> tag in the configuration file is set to 240 this will result in the following graph:<p>
+<center><div align="center">
+<img src="graph_legend.png" alt="graph_legend.png">
+</div>
+</center> <p>
+The boxes in the above graph have the following meaning: <ul>
+<li>
+A filled gray box represents the struct or class for which the graph is generated. </li>
+<li>
+A box with a black border denotes a documented struct or class. </li>
+<li>
+A box with a grey border denotes an undocumented struct or class. </li>
+<li>
+A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
+</ul>
+The arrows have the following meaning: <ul>
+<li>
+A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
+<li>
+A dark green arrow is used for protected inheritance. </li>
+<li>
+A dark red arrow is used for private inheritance. </li>
+<li>
+A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
+<li>
+A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:14 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/graph_legend.png b/crypto/heimdal/doc/doxyout/hx509/html/graph_legend.png
new file mode 100644
index 000000000000..9b96937bfd5f
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/graph_legend.png
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/group__hx509.html b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509.html
new file mode 100644
index 000000000000..7b71eb5c8a55
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509.html
@@ -0,0 +1,89 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: hx509 library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hx509 library</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509.html#g96fe3d8ccb6f810238cb9046123c24c3">hx509_context_init</a> (hx509_context *context)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509.html#gedbcd7cf7d922d0c348d318cbdc46b2f">hx509_context_free</a> (hx509_context *context)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="gedbcd7cf7d922d0c348d318cbdc46b2f"></a><!-- doxytag: member="cert.c::hx509_context_free" ref="gedbcd7cf7d922d0c348d318cbdc46b2f" args="(hx509_context *context)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_context_free </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context *&nbsp;</td>
+ <td class="paramname"> <em>context</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free the context allocated by <a class="el" href="group__hx509.html#g96fe3d8ccb6f810238cb9046123c24c3">hx509_context_init()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>context to be freed. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g96fe3d8ccb6f810238cb9046123c24c3"></a><!-- doxytag: member="cert.c::hx509_context_init" ref="g96fe3d8ccb6f810238cb9046123c24c3" args="(hx509_context *context)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_context_init </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context *&nbsp;</td>
+ <td class="paramname"> <em>context</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Creates a hx509 context that most functions in the library uses. The context is only allowed to be used by one thread at each moment. Free the context with <a class="el" href="group__hx509.html#gedbcd7cf7d922d0c348d318cbdc46b2f">hx509_context_free()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Returns a pointer to new hx509 context.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:09 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__ca.html b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__ca.html
new file mode 100644
index 000000000000..a06314b39533
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__ca.html
@@ -0,0 +1,1179 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: hx509 CA functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hx509 CA functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#g627b48e10d0b3576aec5823d6098ea3a">hx509_ca_tbs_init</a> (hx509_context context, hx509_ca_tbs *tbs)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#g89eef97566653fbbe6ab32b59ea99299">hx509_ca_tbs_free</a> (hx509_ca_tbs *tbs)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#g6a124401ceb514cf16cf8e3721234d03">hx509_ca_tbs_set_notBefore</a> (hx509_context context, hx509_ca_tbs tbs, time_t t)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#gc64ad4daabe3c912be50c2a32af4fe05">hx509_ca_tbs_set_notAfter</a> (hx509_context context, hx509_ca_tbs tbs, time_t t)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#g587184eedd56450858eb74cae842f084">hx509_ca_tbs_set_notAfter_lifetime</a> (hx509_context context, hx509_ca_tbs tbs, time_t delta)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct units *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#g2809ea576f40642337c8bf49071723b0">hx509_ca_tbs_template_units</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#g2d7c245443a81540ff993e7cc6f51ebb">hx509_ca_tbs_set_template</a> (hx509_context context, hx509_ca_tbs tbs, int flags, hx509_cert cert)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#g3e105ce23d67234c3b5d35a0752449cf">hx509_ca_tbs_set_ca</a> (hx509_context context, hx509_ca_tbs tbs, int pathLenConstraint)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#g215241c575ae3296e137f155a0a4dd6e">hx509_ca_tbs_set_proxy</a> (hx509_context context, hx509_ca_tbs tbs, int pathLenConstraint)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#ge41a6e44a39c95e6c29376985f0b39b0">hx509_ca_tbs_set_domaincontroller</a> (hx509_context context, hx509_ca_tbs tbs)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#ge12bfa65cf1112bf3181a5499e8f7ba6">hx509_ca_tbs_set_spki</a> (hx509_context context, hx509_ca_tbs tbs, const SubjectPublicKeyInfo *spki)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#g3f611617f0001575b723a4a9c0d9b3ca">hx509_ca_tbs_set_serialnumber</a> (hx509_context context, hx509_ca_tbs tbs, const heim_integer *serialNumber)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#g4d26e70019741e516dc92158914cd414">hx509_ca_tbs_add_eku</a> (hx509_context context, hx509_ca_tbs tbs, const heim_oid *oid)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#g8c5b557c63342686630b62239396b96a">hx509_ca_tbs_add_crl_dp_uri</a> (hx509_context context, hx509_ca_tbs tbs, const char *uri, hx509_name issuername)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#g8e938c9e9b1fea29e5bf77a2824891e2">hx509_ca_tbs_add_san_otherName</a> (hx509_context context, hx509_ca_tbs tbs, const heim_oid *oid, const heim_octet_string *os)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#gede019208dbf7ad49cd077951887c4c3">hx509_ca_tbs_add_san_pkinit</a> (hx509_context context, hx509_ca_tbs tbs, const char *principal)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#gbc4f3398499094a859fbceb769ba5051">hx509_ca_tbs_add_san_ms_upn</a> (hx509_context context, hx509_ca_tbs tbs, const char *principal)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#g6286a0d6f375949301d62215184e7275">hx509_ca_tbs_add_san_jid</a> (hx509_context context, hx509_ca_tbs tbs, const char *jid)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#g3f4c23c964ef2331b45f80fb5355ede7">hx509_ca_tbs_add_san_hostname</a> (hx509_context context, hx509_ca_tbs tbs, const char *dnsname)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#gf621ee0bac71f4ee09881812f4c4d196">hx509_ca_tbs_add_san_rfc822name</a> (hx509_context context, hx509_ca_tbs tbs, const char *rfc822Name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#g9e8cf374812308654e3d7270afb59da1">hx509_ca_tbs_set_subject</a> (hx509_context context, hx509_ca_tbs tbs, hx509_name subject)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#ge22ea3d0201845dbc73f4b21502face6">hx509_ca_tbs_set_unique</a> (hx509_context context, hx509_ca_tbs tbs, const heim_bit_string *subjectUniqueID, const heim_bit_string *issuerUniqueID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#g36432d6249ee668196a692c7286d09ce">hx509_ca_tbs_subject_expand</a> (hx509_context context, hx509_ca_tbs tbs, hx509_env env)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#g3f0ff00b9c54018e346eed759b25ae16">hx509_ca_sign</a> (hx509_context context, hx509_ca_tbs tbs, hx509_cert signer, hx509_cert *certificate)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__ca.html#g310b010421b8a7c169566ef74ce319fb">hx509_ca_sign_self</a> (hx509_context context, hx509_ca_tbs tbs, hx509_private_key signer, hx509_cert *certificate)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+See the <a class="el" href="page_ca.html">Hx509 CA functions</a> for description and examples. <hr><h2>Function Documentation</h2>
+<a class="anchor" name="g3f0ff00b9c54018e346eed759b25ae16"></a><!-- doxytag: member="ca.c::hx509_ca_sign" ref="g3f0ff00b9c54018e346eed759b25ae16" args="(hx509_context context, hx509_ca_tbs tbs, hx509_cert signer, hx509_cert *certificate)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_sign </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>signer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert *&nbsp;</td>
+ <td class="paramname"> <em>certificate</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sign a to-be-signed certificate object with a issuer certificate.<p>
+The caller needs to at least have called the following functions on the to-be-signed certificate object:<ul>
+<li><a class="el" href="group__hx509__ca.html#g627b48e10d0b3576aec5823d6098ea3a">hx509_ca_tbs_init()</a></li><li><a class="el" href="group__hx509__ca.html#g9e8cf374812308654e3d7270afb59da1">hx509_ca_tbs_set_subject()</a></li><li><a class="el" href="group__hx509__ca.html#ge12bfa65cf1112bf3181a5499e8f7ba6">hx509_ca_tbs_set_spki()</a></li></ul>
+<p>
+When done the to-be-signed certificate object should be freed with <a class="el" href="group__hx509__ca.html#g89eef97566653fbbe6ab32b59ea99299">hx509_ca_tbs_free()</a>.<p>
+When creating self-signed certificate use <a class="el" href="group__hx509__ca.html#g310b010421b8a7c169566ef74ce319fb">hx509_ca_sign_self()</a> instead.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>signer</em>&nbsp;</td><td>the CA certificate object to sign with (need private key). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>return cerificate, free with <a class="el" href="group__hx509__cert.html#gd2f9bb0ddc4babb26a8ccd983db8c948">hx509_cert_free()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g310b010421b8a7c169566ef74ce319fb"></a><!-- doxytag: member="ca.c::hx509_ca_sign_self" ref="g310b010421b8a7c169566ef74ce319fb" args="(hx509_context context, hx509_ca_tbs tbs, hx509_private_key signer, hx509_cert *certificate)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_sign_self </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_private_key&nbsp;</td>
+ <td class="paramname"> <em>signer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert *&nbsp;</td>
+ <td class="paramname"> <em>certificate</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Work just like <a class="el" href="group__hx509__ca.html#g3f0ff00b9c54018e346eed759b25ae16">hx509_ca_sign()</a> but signs it-self.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>signer</em>&nbsp;</td><td>private key to sign with. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>return cerificate, free with <a class="el" href="group__hx509__cert.html#gd2f9bb0ddc4babb26a8ccd983db8c948">hx509_cert_free()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8c5b557c63342686630b62239396b96a"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_add_crl_dp_uri" ref="g8c5b557c63342686630b62239396b96a" args="(hx509_context context, hx509_ca_tbs tbs, const char *uri, hx509_name issuername)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_add_crl_dp_uri </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>uri</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_name&nbsp;</td>
+ <td class="paramname"> <em>issuername</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add CRL distribution point URI to the to-be-signed certificate object.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>uri</em>&nbsp;</td><td>uri to the CRL. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>issuername</em>&nbsp;</td><td>name of the issuer.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+<p>
+issuername not supported
+</div>
+</div><p>
+<a class="anchor" name="g4d26e70019741e516dc92158914cd414"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_add_eku" ref="g4d26e70019741e516dc92158914cd414" args="(hx509_context context, hx509_ca_tbs tbs, const heim_oid *oid)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_add_eku </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_oid *&nbsp;</td>
+ <td class="paramname"> <em>oid</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+An an extended key usage to the to-be-signed certificate object. Duplicates will detected and not added.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>oid</em>&nbsp;</td><td>extended key usage to add.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3f4c23c964ef2331b45f80fb5355ede7"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_add_san_hostname" ref="g3f4c23c964ef2331b45f80fb5355ede7" args="(hx509_context context, hx509_ca_tbs tbs, const char *dnsname)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_add_san_hostname </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>dnsname</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add a Subject Alternative Name hostname to to-be-signed certificate object. A domain match starts with ., an exact match does not.<p>
+Example of a an domain match: .domain.se matches the hostname host.domain.se.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>dnsname</em>&nbsp;</td><td>a hostame.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6286a0d6f375949301d62215184e7275"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_add_san_jid" ref="g6286a0d6f375949301d62215184e7275" args="(hx509_context context, hx509_ca_tbs tbs, const char *jid)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_add_san_jid </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>jid</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add a Jabber/XMPP jid Subject Alternative Name to the to-be-signed certificate object. The jid is an UTF8 string.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>jid</em>&nbsp;</td><td>string of an a jabber id in UTF8.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gbc4f3398499094a859fbceb769ba5051"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_add_san_ms_upn" ref="gbc4f3398499094a859fbceb769ba5051" args="(hx509_context context, hx509_ca_tbs tbs, const char *principal)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_add_san_ms_upn </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>principal</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add Microsoft UPN Subject Alternative Name to the to-be-signed certificate object. The principal string is a UTF8 string.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>Microsoft UPN string.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8e938c9e9b1fea29e5bf77a2824891e2"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_add_san_otherName" ref="g8e938c9e9b1fea29e5bf77a2824891e2" args="(hx509_context context, hx509_ca_tbs tbs, const heim_oid *oid, const heim_octet_string *os)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_add_san_otherName </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_oid *&nbsp;</td>
+ <td class="paramname"> <em>oid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_octet_string *&nbsp;</td>
+ <td class="paramname"> <em>os</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add Subject Alternative Name otherName to the to-be-signed certificate object.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>oid</em>&nbsp;</td><td>the oid of the OtherName. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>os</em>&nbsp;</td><td>data in the other name.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gede019208dbf7ad49cd077951887c4c3"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_add_san_pkinit" ref="gede019208dbf7ad49cd077951887c4c3" args="(hx509_context context, hx509_ca_tbs tbs, const char *principal)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_add_san_pkinit </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>principal</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add Kerberos Subject Alternative Name to the to-be-signed certificate object. The principal string is a UTF8 string.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>Kerberos principal to add to the certificate.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf621ee0bac71f4ee09881812f4c4d196"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_add_san_rfc822name" ref="gf621ee0bac71f4ee09881812f4c4d196" args="(hx509_context context, hx509_ca_tbs tbs, const char *rfc822Name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_add_san_rfc822name </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>rfc822Name</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add a Subject Alternative Name rfc822 (email address) to to-be-signed certificate object.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>rfc822Name</em>&nbsp;</td><td>a string to a email address.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g89eef97566653fbbe6ab32b59ea99299"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_free" ref="g89eef97566653fbbe6ab32b59ea99299" args="(hx509_ca_tbs *tbs)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_ca_tbs_free </td>
+ <td>(</td>
+ <td class="paramtype">hx509_ca_tbs *&nbsp;</td>
+ <td class="paramname"> <em>tbs</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free an To Be Signed object.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to free. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g627b48e10d0b3576aec5823d6098ea3a"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_init" ref="g627b48e10d0b3576aec5823d6098ea3a" args="(hx509_context context, hx509_ca_tbs *tbs)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_init </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs *&nbsp;</td>
+ <td class="paramname"> <em>tbs</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Allocate an to-be-signed certificate object that will be converted into an certificate.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>returned to-be-signed certicate object, free with <a class="el" href="group__hx509__ca.html#g89eef97566653fbbe6ab32b59ea99299">hx509_ca_tbs_free()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3e105ce23d67234c3b5d35a0752449cf"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_set_ca" ref="g3e105ce23d67234c3b5d35a0752449cf" args="(hx509_context context, hx509_ca_tbs tbs, int pathLenConstraint)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_set_ca </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>pathLenConstraint</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Make the to-be-signed certificate object a CA certificate. If the pathLenConstraint is negative path length constraint is used.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>pathLenConstraint</em>&nbsp;</td><td>path length constraint, negative, no constraint.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge41a6e44a39c95e6c29376985f0b39b0"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_set_domaincontroller" ref="ge41a6e44a39c95e6c29376985f0b39b0" args="(hx509_context context, hx509_ca_tbs tbs)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_set_domaincontroller </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Make the to-be-signed certificate object a windows domain controller certificate.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc64ad4daabe3c912be50c2a32af4fe05"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_set_notAfter" ref="gc64ad4daabe3c912be50c2a32af4fe05" args="(hx509_context context, hx509_ca_tbs tbs, time_t t)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_set_notAfter </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">time_t&nbsp;</td>
+ <td class="paramname"> <em>t</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the absolute time when the certificate is valid to.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>time when the certificate will expire</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g587184eedd56450858eb74cae842f084"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_set_notAfter_lifetime" ref="g587184eedd56450858eb74cae842f084" args="(hx509_context context, hx509_ca_tbs tbs, time_t delta)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_set_notAfter_lifetime </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">time_t&nbsp;</td>
+ <td class="paramname"> <em>delta</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the relative time when the certificiate is going to expire.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>delta</em>&nbsp;</td><td>seconds to the certificate is going to expire.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6a124401ceb514cf16cf8e3721234d03"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_set_notBefore" ref="g6a124401ceb514cf16cf8e3721234d03" args="(hx509_context context, hx509_ca_tbs tbs, time_t t)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_set_notBefore </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">time_t&nbsp;</td>
+ <td class="paramname"> <em>t</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the absolute time when the certificate is valid from. If not set the current time will be used.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>time the certificated will start to be valid</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g215241c575ae3296e137f155a0a4dd6e"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_set_proxy" ref="g215241c575ae3296e137f155a0a4dd6e" args="(hx509_context context, hx509_ca_tbs tbs, int pathLenConstraint)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_set_proxy </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>pathLenConstraint</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Make the to-be-signed certificate object a proxy certificate. If the pathLenConstraint is negative path length constraint is used.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>pathLenConstraint</em>&nbsp;</td><td>path length constraint, negative, no constraint.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3f611617f0001575b723a4a9c0d9b3ca"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_set_serialnumber" ref="g3f611617f0001575b723a4a9c0d9b3ca" args="(hx509_context context, hx509_ca_tbs tbs, const heim_integer *serialNumber)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_set_serialnumber </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_integer *&nbsp;</td>
+ <td class="paramname"> <em>serialNumber</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the serial number to use for to-be-signed certificate object.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>serialNumber</em>&nbsp;</td><td>serial number to use for the to-be-signed certificate object.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge12bfa65cf1112bf3181a5499e8f7ba6"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_set_spki" ref="ge12bfa65cf1112bf3181a5499e8f7ba6" args="(hx509_context context, hx509_ca_tbs tbs, const SubjectPublicKeyInfo *spki)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_set_spki </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const SubjectPublicKeyInfo *&nbsp;</td>
+ <td class="paramname"> <em>spki</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the subject public key info (SPKI) in the to-be-signed certificate object. SPKI is the public key and key related parameters in the certificate.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>spki</em>&nbsp;</td><td>subject public key info to use for the to-be-signed certificate object.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9e8cf374812308654e3d7270afb59da1"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_set_subject" ref="g9e8cf374812308654e3d7270afb59da1" args="(hx509_context context, hx509_ca_tbs tbs, hx509_name subject)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_set_subject </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_name&nbsp;</td>
+ <td class="paramname"> <em>subject</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the subject name of a to-be-signed certificate object.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>subject</em>&nbsp;</td><td>the name to set a subject.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2d7c245443a81540ff993e7cc6f51ebb"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_set_template" ref="g2d7c245443a81540ff993e7cc6f51ebb" args="(hx509_context context, hx509_ca_tbs tbs, int flags, hx509_cert cert)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_set_template </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>cert</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Initialize the to-be-signed certificate object from a template certifiate.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>bit field selecting what to copy from the template certifiate. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>template certificate.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge22ea3d0201845dbc73f4b21502face6"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_set_unique" ref="ge22ea3d0201845dbc73f4b21502face6" args="(hx509_context context, hx509_ca_tbs tbs, const heim_bit_string *subjectUniqueID, const heim_bit_string *issuerUniqueID)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_set_unique </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_bit_string *&nbsp;</td>
+ <td class="paramname"> <em>subjectUniqueID</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_bit_string *&nbsp;</td>
+ <td class="paramname"> <em>issuerUniqueID</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the issuerUniqueID and subjectUniqueID<p>
+These are only supposed to be used considered with version 2 certificates, replaced by the two extensions SubjectKeyIdentifier and IssuerKeyIdentifier. This function is to allow application using legacy protocol to issue them.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>issuerUniqueID</em>&nbsp;</td><td>to be set </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>subjectUniqueID</em>&nbsp;</td><td>to be set</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g36432d6249ee668196a692c7286d09ce"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_subject_expand" ref="g36432d6249ee668196a692c7286d09ce" args="(hx509_context context, hx509_ca_tbs tbs, hx509_env env)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ca_tbs_subject_expand </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_ca_tbs&nbsp;</td>
+ <td class="paramname"> <em>tbs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_env&nbsp;</td>
+ <td class="paramname"> <em>env</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Expand the the subject name in the to-be-signed certificate object using <a class="el" href="group__hx509__name.html#g42015083c70b6aa29c4f082998dbbece">hx509_name_expand()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tbs</em>&nbsp;</td><td>object to be signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>env</em>&nbsp;</td><td>enviroment variable to expand variables in the subject name, see hx509_env_init().</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2809ea576f40642337c8bf49071723b0"></a><!-- doxytag: member="ca.c::hx509_ca_tbs_template_units" ref="g2809ea576f40642337c8bf49071723b0" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct units* hx509_ca_tbs_template_units </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [read]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Make of template units, use to build flags argument to <a class="el" href="group__hx509__ca.html#g2d7c245443a81540ff993e7cc6f51ebb">hx509_ca_tbs_set_template()</a> with parse_units().<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>an units structure. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:13 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__cert.html b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__cert.html
new file mode 100644
index 000000000000..f2f816b5112f
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__cert.html
@@ -0,0 +1,1425 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: hx509 certificate functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hx509 certificate functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g1aa420f664ce5933f8af4cf6c37fd6f6">hx509_cert_init</a> (hx509_context context, const Certificate *c, hx509_cert *cert)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g479d8c1bf22aa8fdfa448bed1ec54d7b">hx509_cert_init_data</a> (hx509_context context, const void *ptr, size_t len, hx509_cert *cert)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gd2f9bb0ddc4babb26a8ccd983db8c948">hx509_cert_free</a> (hx509_cert cert)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">hx509_cert&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g1870b485d4e8e53f75690f35f4526fcc">hx509_cert_ref</a> (hx509_cert cert)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gfb8063ac0396ad60392b8b9554c6b896">hx509_verify_ctx_f_allow_default_trustanchors</a> (hx509_verify_ctx ctx, int boolean)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g49e7c45c70442dcb81d394093d9cbe29">hx509_cert_find_subjectAltName_otherName</a> (hx509_context context, hx509_cert cert, const heim_oid *oid, hx509_octet_string_list *list)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gb84ed704b59c7965a598ef9c7c353216">hx509_cert_cmp</a> (hx509_cert p, hx509_cert q)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g3c61a21c5a802b2f366c9610ff89fa90">hx509_cert_get_issuer</a> (hx509_cert p, hx509_name *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g9f64bb8083bb535ccba007b723c73619">hx509_cert_get_subject</a> (hx509_cert p, hx509_name *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g5e8e38603eb13753912b0075aab276cf">hx509_cert_get_base_subject</a> (hx509_context context, hx509_cert c, hx509_name *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g2960bea38768b49c8b949fe2ea5320e3">hx509_cert_get_serialnumber</a> (hx509_cert p, heim_integer *i)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">time_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g2e36444c1bce8995ee193013364ce852">hx509_cert_get_notBefore</a> (hx509_cert p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">time_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gd3e8410e9bb4d0bf61bc3e926a4049eb">hx509_cert_get_notAfter</a> (hx509_cert p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gc9e328025dd91339cf73eecdeec4ffd6">hx509_cert_get_SPKI</a> (hx509_context context, hx509_cert p, SubjectPublicKeyInfo *spki)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gc2fd6cd8b1fbe0d470a88143a359c395">hx509_cert_get_SPKI_AlgorithmIdentifier</a> (hx509_context context, hx509_cert p, AlgorithmIdentifier *alg)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gc88fb8bf53b3e105f728251f6d4d4b1f">hx509_cert_get_issuer_unique_id</a> (hx509_context context, hx509_cert p, heim_bit_string *issuer)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gc7184f4f0249842866d51b17e4b101fb">hx509_cert_get_subject_unique_id</a> (hx509_context context, hx509_cert p, heim_bit_string *subject)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g5dc160f02aeffffb0eea58b6203c856a">hx509_verify_hostname</a> (hx509_context context, const hx509_cert cert, int flags, hx509_hostname_type type, const char *hostname, const struct sockaddr *sa, int sa_size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">hx509_cert_attribute&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g2038342b93f828789a241a7fee26f4c8">hx509_cert_get_attribute</a> (hx509_cert cert, const heim_oid *oid)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g972768dbcc822fed1b74e7686b407f78">hx509_cert_set_friendly_name</a> (hx509_cert cert, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ge2a1de96837304d68216c309e698c3fd">hx509_cert_get_friendly_name</a> (hx509_cert cert)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g5833168d3181e12883b51284fd069543">hx509_query_alloc</a> (hx509_context context, hx509_query **q)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gc708daef26edff5fd36f4587e61a9914">hx509_query_match_option</a> (hx509_query *q, hx509_query_option option)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gd5d7a68cc8ca4c948ae99b7eb6f5bc2e">hx509_query_match_issuer_serial</a> (hx509_query *q, const Name *issuer, const heim_integer *serialNumber)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g5be7b5ece155f2577335b5575f141362">hx509_query_match_friendly_name</a> (hx509_query *q, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g5a7e01c75b7b8243356048a88133c2df">hx509_query_match_eku</a> (hx509_query *q, const heim_oid *eku)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ge1660c0cf5a41f17db72a8c18e79c684">hx509_query_match_cmp_func</a> (hx509_query *q, int(*func)(hx509_context, hx509_cert, void *), void *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g6aafd01e9215fef980a572b2c7289d8c">hx509_query_free</a> (hx509_context context, hx509_query *q)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g94b4aa7d907d34914e161831e74440a8">hx509_query_statistic_file</a> (hx509_context context, const char *fn)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g522fb2a85515ce8debea860cdfeb94c0">hx509_query_unparse_stats</a> (hx509_context context, int printtype, FILE *out)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g1b329c40d7c17cc1b099ec0bd24d4dc9">hx509_cert_check_eku</a> (hx509_context context, hx509_cert cert, const heim_oid *eku, int allow_any_eku)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gfa02f22b6db5ca3c19a488066fea5d7a">hx509_cert_binary</a> (hx509_context context, hx509_cert c, heim_octet_string *os)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#g32a804b17d97d71af17602fdf6b1c891">hx509_print_cert</a> (hx509_context context, hx509_cert cert, FILE *out)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+See the <a class="el" href="page_cert.html">The basic certificate</a> for description and examples. <hr><h2>Function Documentation</h2>
+<a class="anchor" name="gfa02f22b6db5ca3c19a488066fea5d7a"></a><!-- doxytag: member="cert.c::hx509_cert_binary" ref="gfa02f22b6db5ca3c19a488066fea5d7a" args="(hx509_context context, hx509_cert c, heim_octet_string *os)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cert_binary </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">heim_octet_string *&nbsp;</td>
+ <td class="paramname"> <em>os</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Encodes the hx509 certificate as a DER encode binary.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>the certificate to encode. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>os</em>&nbsp;</td><td>the encode certificate, set to NULL, 0 on case of error. Free the os-&gt;data with <a class="el" href="group__hx509__misc.html#gba6d3eb6abde539a3191269f785e3e61">hx509_xfree()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1b329c40d7c17cc1b099ec0bd24d4dc9"></a><!-- doxytag: member="cert.c::hx509_cert_check_eku" ref="g1b329c40d7c17cc1b099ec0bd24d4dc9" args="(hx509_context context, hx509_cert cert, const heim_oid *eku, int allow_any_eku)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cert_check_eku </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>cert</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_oid *&nbsp;</td>
+ <td class="paramname"> <em>eku</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>allow_any_eku</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Check the extended key usage on the hx509 certificate.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>eku</em>&nbsp;</td><td>the EKU to check for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>allow_any_eku</em>&nbsp;</td><td>if the any EKU is set, allow that to be a substitute.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb84ed704b59c7965a598ef9c7c353216"></a><!-- doxytag: member="cert.c::hx509_cert_cmp" ref="gb84ed704b59c7965a598ef9c7c353216" args="(hx509_cert p, hx509_cert q)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cert_cmp </td>
+ <td>(</td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>q</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Compare to hx509 certificate object, useful for sorting.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>a hx509 certificate object. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>q</em>&nbsp;</td><td>a hx509 certificate object.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 the objects are the same, returns &gt; 0 is p is "larger" then q, &lt; 0 if p is "smaller" then q. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g49e7c45c70442dcb81d394093d9cbe29"></a><!-- doxytag: member="cert.c::hx509_cert_find_subjectAltName_otherName" ref="g49e7c45c70442dcb81d394093d9cbe29" args="(hx509_context context, hx509_cert cert, const heim_oid *oid, hx509_octet_string_list *list)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cert_find_subjectAltName_otherName </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>cert</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_oid *&nbsp;</td>
+ <td class="paramname"> <em>oid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_octet_string_list *&nbsp;</td>
+ <td class="paramname"> <em>list</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return a list of subjectAltNames specified by oid in the certificate. On error the<p>
+The returned list of octet string should be freed with <a class="el" href="group__hx509__misc.html#ga39b9443f688a6d9152ff6dc05f3be8e">hx509_free_octet_string_list()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>a hx509 certificate object. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>oid</em>&nbsp;</td><td>an oid to for SubjectAltName. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>list of matching SubjectAltName.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd2f9bb0ddc4babb26a8ccd983db8c948"></a><!-- doxytag: member="cert.c::hx509_cert_free" ref="gd2f9bb0ddc4babb26a8ccd983db8c948" args="(hx509_cert cert)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_cert_free </td>
+ <td>(</td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>cert</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free reference to the hx509 certificate object, if the refcounter reaches 0, the object if freed. Its allowed to pass in NULL.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>the cert to free. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2038342b93f828789a241a7fee26f4c8"></a><!-- doxytag: member="cert.c::hx509_cert_get_attribute" ref="g2038342b93f828789a241a7fee26f4c8" args="(hx509_cert cert, const heim_oid *oid)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">hx509_cert_attribute hx509_cert_get_attribute </td>
+ <td>(</td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>cert</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_oid *&nbsp;</td>
+ <td class="paramname"> <em>oid</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get an external attribute for the certificate, examples are friendly name and id.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>hx509 certificate object to search </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>oid</em>&nbsp;</td><td>an oid to search for.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>an hx509_cert_attribute, only valid as long as the certificate is referenced. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5e8e38603eb13753912b0075aab276cf"></a><!-- doxytag: member="cert.c::hx509_cert_get_base_subject" ref="g5e8e38603eb13753912b0075aab276cf" args="(hx509_context context, hx509_cert c, hx509_name *name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cert_get_base_subject </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_name *&nbsp;</td>
+ <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the name of the base subject of the hx509 certificate. If the certiicate is a verified proxy certificate, the this function return the base certificate (root of the proxy chain). If the proxy certificate is not verified with the base certificate HX509_PROXY_CERTIFICATE_NOT_CANONICALIZED is returned.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a hx509 certificate object. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>a pointer to a hx509 name, should be freed by <a class="el" href="group__hx509__name.html#gaf351931efb02fc7aea736af9977155e">hx509_name_free()</a>. See also <a class="el" href="group__hx509__cert.html#g9f64bb8083bb535ccba007b723c73619">hx509_cert_get_subject()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge2a1de96837304d68216c309e698c3fd"></a><!-- doxytag: member="cert.c::hx509_cert_get_friendly_name" ref="ge2a1de96837304d68216c309e698c3fd" args="(hx509_cert cert)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* hx509_cert_get_friendly_name </td>
+ <td>(</td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>cert</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get friendly name of the certificate.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>cert to get the friendly name from.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>an friendly name or NULL if there is. The friendly name is only valid as long as the certificate is referenced. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3c61a21c5a802b2f366c9610ff89fa90"></a><!-- doxytag: member="cert.c::hx509_cert_get_issuer" ref="g3c61a21c5a802b2f366c9610ff89fa90" args="(hx509_cert p, hx509_name *name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cert_get_issuer </td>
+ <td>(</td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_name *&nbsp;</td>
+ <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the name of the issuer of the hx509 certificate.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>a hx509 certificate object. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>a pointer to a hx509 name, should be freed by <a class="el" href="group__hx509__name.html#gaf351931efb02fc7aea736af9977155e">hx509_name_free()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc88fb8bf53b3e105f728251f6d4d4b1f"></a><!-- doxytag: member="cert.c::hx509_cert_get_issuer_unique_id" ref="gc88fb8bf53b3e105f728251f6d4d4b1f" args="(hx509_context context, hx509_cert p, heim_bit_string *issuer)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cert_get_issuer_unique_id </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">heim_bit_string *&nbsp;</td>
+ <td class="paramname"> <em>issuer</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a copy of the Issuer Unique ID<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509_context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>a hx509 certificate </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>issuer</em>&nbsp;</td><td>the issuer id returned, free with der_free_bit_string()</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. The error code HX509_EXTENSION_NOT_FOUND is returned if the certificate doesn't have a issuerUniqueID </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd3e8410e9bb4d0bf61bc3e926a4049eb"></a><!-- doxytag: member="cert.c::hx509_cert_get_notAfter" ref="gd3e8410e9bb4d0bf61bc3e926a4049eb" args="(hx509_cert p)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">time_t hx509_cert_get_notAfter </td>
+ <td>(</td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>p</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get notAfter time of the certificate.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>a hx509 certificate object.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>return not after time. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2e36444c1bce8995ee193013364ce852"></a><!-- doxytag: member="cert.c::hx509_cert_get_notBefore" ref="g2e36444c1bce8995ee193013364ce852" args="(hx509_cert p)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">time_t hx509_cert_get_notBefore </td>
+ <td>(</td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>p</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get notBefore time of the certificate.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>a hx509 certificate object.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>return not before time </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2960bea38768b49c8b949fe2ea5320e3"></a><!-- doxytag: member="cert.c::hx509_cert_get_serialnumber" ref="g2960bea38768b49c8b949fe2ea5320e3" args="(hx509_cert p, heim_integer *i)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cert_get_serialnumber </td>
+ <td>(</td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">heim_integer *&nbsp;</td>
+ <td class="paramname"> <em>i</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get serial number of the certificate.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>a hx509 certificate object. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>i</em>&nbsp;</td><td>serial number, should be freed ith der_free_heim_integer().</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc9e328025dd91339cf73eecdeec4ffd6"></a><!-- doxytag: member="cert.c::hx509_cert_get_SPKI" ref="gc9e328025dd91339cf73eecdeec4ffd6" args="(hx509_context context, hx509_cert p, SubjectPublicKeyInfo *spki)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cert_get_SPKI </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">SubjectPublicKeyInfo *&nbsp;</td>
+ <td class="paramname"> <em>spki</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the SubjectPublicKeyInfo structure from the hx509 certificate.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>a hx509 certificate object. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>spki</em>&nbsp;</td><td>SubjectPublicKeyInfo, should be freed with free_SubjectPublicKeyInfo().</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc2fd6cd8b1fbe0d470a88143a359c395"></a><!-- doxytag: member="cert.c::hx509_cert_get_SPKI_AlgorithmIdentifier" ref="gc2fd6cd8b1fbe0d470a88143a359c395" args="(hx509_context context, hx509_cert p, AlgorithmIdentifier *alg)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cert_get_SPKI_AlgorithmIdentifier </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">AlgorithmIdentifier *&nbsp;</td>
+ <td class="paramname"> <em>alg</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the AlgorithmIdentifier from the hx509 certificate.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>a hx509 certificate object. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>alg</em>&nbsp;</td><td>AlgorithmIdentifier, should be freed with free_AlgorithmIdentifier(). The algorithmidentifier is typicly rsaEncryption, or id-ecPublicKey, or some other public key mechanism.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9f64bb8083bb535ccba007b723c73619"></a><!-- doxytag: member="cert.c::hx509_cert_get_subject" ref="g9f64bb8083bb535ccba007b723c73619" args="(hx509_cert p, hx509_name *name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cert_get_subject </td>
+ <td>(</td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_name *&nbsp;</td>
+ <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the name of the subject of the hx509 certificate.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>a hx509 certificate object. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>a pointer to a hx509 name, should be freed by <a class="el" href="group__hx509__name.html#gaf351931efb02fc7aea736af9977155e">hx509_name_free()</a>. See also <a class="el" href="group__hx509__cert.html#g5e8e38603eb13753912b0075aab276cf">hx509_cert_get_base_subject()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc7184f4f0249842866d51b17e4b101fb"></a><!-- doxytag: member="cert.c::hx509_cert_get_subject_unique_id" ref="gc7184f4f0249842866d51b17e4b101fb" args="(hx509_context context, hx509_cert p, heim_bit_string *subject)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cert_get_subject_unique_id </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">heim_bit_string *&nbsp;</td>
+ <td class="paramname"> <em>subject</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a copy of the Subect Unique ID<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509_context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>a hx509 certificate </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>subject</em>&nbsp;</td><td>the subject id returned, free with der_free_bit_string()</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. The error code HX509_EXTENSION_NOT_FOUND is returned if the certificate doesn't have a subjectUniqueID </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1aa420f664ce5933f8af4cf6c37fd6f6"></a><!-- doxytag: member="cert.c::hx509_cert_init" ref="g1aa420f664ce5933f8af4cf6c37fd6f6" args="(hx509_context context, const Certificate *c, hx509_cert *cert)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cert_init </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const Certificate *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert *&nbsp;</td>
+ <td class="paramname"> <em>cert</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Allocate and init an hx509 certificate object from the decoded certificate `c´.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td></td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td></td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g479d8c1bf22aa8fdfa448bed1ec54d7b"></a><!-- doxytag: member="cert.c::hx509_cert_init_data" ref="g479d8c1bf22aa8fdfa448bed1ec54d7b" args="(hx509_context context, const void *ptr, size_t len, hx509_cert *cert)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cert_init_data </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>ptr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert *&nbsp;</td>
+ <td class="paramname"> <em>cert</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Just like <a class="el" href="group__hx509__cert.html#g1aa420f664ce5933f8af4cf6c37fd6f6">hx509_cert_init()</a>, but instead of a decode certificate takes an pointer and length to a memory region that contains a DER/BER encoded certificate.<p>
+If the memory region doesn't contain just the certificate and nothing more the function will fail with HX509_EXTRA_DATA_AFTER_STRUCTURE.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ptr</em>&nbsp;</td><td>pointer to memory region containing encoded certificate. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of memory region. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>a return pointer to a hx509 certificate object, will contain NULL on error.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1870b485d4e8e53f75690f35f4526fcc"></a><!-- doxytag: member="cert.c::hx509_cert_ref" ref="g1870b485d4e8e53f75690f35f4526fcc" args="(hx509_cert cert)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">hx509_cert hx509_cert_ref </td>
+ <td>(</td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>cert</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add a reference to a hx509 certificate object.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>a pointer to an hx509 certificate object.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the same object as is passed in. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g972768dbcc822fed1b74e7686b407f78"></a><!-- doxytag: member="cert.c::hx509_cert_set_friendly_name" ref="g972768dbcc822fed1b74e7686b407f78" args="(hx509_cert cert, const char *name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cert_set_friendly_name </td>
+ <td>(</td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>cert</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the friendly name on the certificate.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>The certificate to set the friendly name on </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Friendly name.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g32a804b17d97d71af17602fdf6b1c891"></a><!-- doxytag: member="cert.c::hx509_print_cert" ref="g32a804b17d97d71af17602fdf6b1c891" args="(hx509_context context, hx509_cert cert, FILE *out)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_print_cert </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>cert</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&nbsp;</td>
+ <td class="paramname"> <em>out</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Print a simple representation of a certificate<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context, can be NULL </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>certificate to print </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>the stdio output stream, if NULL, stdout is used</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5833168d3181e12883b51284fd069543"></a><!-- doxytag: member="cert.c::hx509_query_alloc" ref="g5833168d3181e12883b51284fd069543" args="(hx509_context context, hx509_query **q)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_query_alloc </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_query **&nbsp;</td>
+ <td class="paramname"> <em>q</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Allocate an query controller. Free using <a class="el" href="group__hx509__cert.html#g6aafd01e9215fef980a572b2c7289d8c">hx509_query_free()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>q</em>&nbsp;</td><td>return pointer to a hx509_query.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6aafd01e9215fef980a572b2c7289d8c"></a><!-- doxytag: member="cert.c::hx509_query_free" ref="g6aafd01e9215fef980a572b2c7289d8c" args="(hx509_context context, hx509_query *q)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_query_free </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_query *&nbsp;</td>
+ <td class="paramname"> <em>q</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free the query controller.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>q</em>&nbsp;</td><td>a pointer to the query controller. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge1660c0cf5a41f17db72a8c18e79c684"></a><!-- doxytag: member="cert.c::hx509_query_match_cmp_func" ref="ge1660c0cf5a41f17db72a8c18e79c684" args="(hx509_query *q, int(*func)(hx509_context, hx509_cert, void *), void *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_query_match_cmp_func </td>
+ <td>(</td>
+ <td class="paramtype">hx509_query *&nbsp;</td>
+ <td class="paramname"> <em>q</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int(*)(hx509_context, hx509_cert, void *)&nbsp;</td>
+ <td class="paramname"> <em>func</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the query controller to match using a specific match function.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>q</em>&nbsp;</td><td>a hx509 query controller. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>function to use for matching, if the argument is NULL, the match function is removed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>context passed to the function.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5a7e01c75b7b8243356048a88133c2df"></a><!-- doxytag: member="cert.c::hx509_query_match_eku" ref="g5a7e01c75b7b8243356048a88133c2df" args="(hx509_query *q, const heim_oid *eku)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_query_match_eku </td>
+ <td>(</td>
+ <td class="paramtype">hx509_query *&nbsp;</td>
+ <td class="paramname"> <em>q</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_oid *&nbsp;</td>
+ <td class="paramname"> <em>eku</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the query controller to require an one specific EKU (extended key usage). Any previous EKU matching is overwitten. If NULL is passed in as the eku, the EKU requirement is reset.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>q</em>&nbsp;</td><td>a hx509 query controller. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>eku</em>&nbsp;</td><td>an EKU to match on.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5be7b5ece155f2577335b5575f141362"></a><!-- doxytag: member="cert.c::hx509_query_match_friendly_name" ref="g5be7b5ece155f2577335b5575f141362" args="(hx509_query *q, const char *name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_query_match_friendly_name </td>
+ <td>(</td>
+ <td class="paramtype">hx509_query *&nbsp;</td>
+ <td class="paramname"> <em>q</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the query controller to match on a friendly name<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>q</em>&nbsp;</td><td>a hx509 query controller. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>a friendly name to match on</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd5d7a68cc8ca4c948ae99b7eb6f5bc2e"></a><!-- doxytag: member="cert.c::hx509_query_match_issuer_serial" ref="gd5d7a68cc8ca4c948ae99b7eb6f5bc2e" args="(hx509_query *q, const Name *issuer, const heim_integer *serialNumber)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_query_match_issuer_serial </td>
+ <td>(</td>
+ <td class="paramtype">hx509_query *&nbsp;</td>
+ <td class="paramname"> <em>q</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const Name *&nbsp;</td>
+ <td class="paramname"> <em>issuer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_integer *&nbsp;</td>
+ <td class="paramname"> <em>serialNumber</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the issuer and serial number of match in the query controller. The function make copies of the isser and serial number.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>q</em>&nbsp;</td><td>a hx509 query controller </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>issuer</em>&nbsp;</td><td>issuer to search for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>serialNumber</em>&nbsp;</td><td>the serialNumber of the issuer.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc708daef26edff5fd36f4587e61a9914"></a><!-- doxytag: member="cert.c::hx509_query_match_option" ref="gc708daef26edff5fd36f4587e61a9914" args="(hx509_query *q, hx509_query_option option)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_query_match_option </td>
+ <td>(</td>
+ <td class="paramtype">hx509_query *&nbsp;</td>
+ <td class="paramname"> <em>q</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_query_option&nbsp;</td>
+ <td class="paramname"> <em>option</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set match options for the hx509 query controller.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>q</em>&nbsp;</td><td>query controller. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>option</em>&nbsp;</td><td>options to control the query controller.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g94b4aa7d907d34914e161831e74440a8"></a><!-- doxytag: member="cert.c::hx509_query_statistic_file" ref="g94b4aa7d907d34914e161831e74440a8" args="(hx509_context context, const char *fn)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_query_statistic_file </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>fn</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set a statistic file for the query statistics.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>fn</em>&nbsp;</td><td>statistics file name </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g522fb2a85515ce8debea860cdfeb94c0"></a><!-- doxytag: member="cert.c::hx509_query_unparse_stats" ref="g522fb2a85515ce8debea860cdfeb94c0" args="(hx509_context context, int printtype, FILE *out)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_query_unparse_stats </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>printtype</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&nbsp;</td>
+ <td class="paramname"> <em>out</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Unparse the statistics file and print the result on a FILE descriptor.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>printtype</em>&nbsp;</td><td>tyep to print </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>the FILE to write the data on. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gfb8063ac0396ad60392b8b9554c6b896"></a><!-- doxytag: member="cert.c::hx509_verify_ctx_f_allow_default_trustanchors" ref="gfb8063ac0396ad60392b8b9554c6b896" args="(hx509_verify_ctx ctx, int boolean)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_verify_ctx_f_allow_default_trustanchors </td>
+ <td>(</td>
+ <td class="paramtype">hx509_verify_ctx&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>boolean</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Allow using the operating system builtin trust anchors if no other trust anchors are configured.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>a verification context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>boolean</em>&nbsp;</td><td>if non zero, useing the operating systems builtin trust anchors.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5dc160f02aeffffb0eea58b6203c856a"></a><!-- doxytag: member="cert.c::hx509_verify_hostname" ref="g5dc160f02aeffffb0eea58b6203c856a" args="(hx509_context context, const hx509_cert cert, int flags, hx509_hostname_type type, const char *hostname, const struct sockaddr *sa, int sa_size)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_verify_hostname </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>cert</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_hostname_type&nbsp;</td>
+ <td class="paramname"> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>hostname</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const struct sockaddr *&nbsp;</td>
+ <td class="paramname"> <em>sa</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>sa_size</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Verify that the certificate is allowed to be used for the hostname and address.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>the certificate to match with </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>Flags to modify the behavior:<ul>
+<li>HX509_VHN_F_ALLOW_NO_MATCH no match is ok </li></ul>
+</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>type of hostname:<ul>
+<li>HX509_HN_HOSTNAME for plain hostname.</li><li>HX509_HN_DNSSRV for DNS SRV names. </li></ul>
+</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>hostname</em>&nbsp;</td><td>the hostname to check </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>sa</em>&nbsp;</td><td>address of the host </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>sa_size</em>&nbsp;</td><td>length of address</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:11 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__cms.html b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__cms.html
new file mode 100644
index 000000000000..804b6b6bc888
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__cms.html
@@ -0,0 +1,504 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: hx509 CMS/pkcs7 functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hx509 CMS/pkcs7 functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cms.html#g59a1f6dc31e384a0d378c8179f2be9c3">hx509_cms_wrap_ContentInfo</a> (const heim_oid *oid, const heim_octet_string *buf, heim_octet_string *res)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cms.html#gacbd636f3053c560782d83251f42b71a">hx509_cms_unwrap_ContentInfo</a> (const heim_octet_string *in, heim_oid *oid, heim_octet_string *out, int *have_data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cms.html#gb13d28bf986e3b66c05e7e33799be07b">hx509_cms_unenvelope</a> (hx509_context context, hx509_certs certs, int flags, const void *data, size_t length, const heim_octet_string *encryptedContent, time_t time_now, heim_oid *contentType, heim_octet_string *content)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cms.html#g618f32b35fa6f679cc5f32fb8abdbe85">hx509_cms_envelope_1</a> (hx509_context context, int flags, hx509_cert cert, const void *data, size_t length, const heim_oid *encryption_type, const heim_oid *contentType, heim_octet_string *content)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cms.html#gedaf18507474021a8d092ca6ac90a1ad">hx509_cms_verify_signed</a> (hx509_context context, hx509_verify_ctx ctx, unsigned int flags, const void *data, size_t length, const heim_octet_string *signedContent, hx509_certs pool, heim_oid *contentType, heim_octet_string *content, hx509_certs *signer_certs)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cms.html#g8dfb6d8d72f6a71caffaf11b9d847921">hx509_cms_create_signed_1</a> (hx509_context context, int flags, const heim_oid *eContentType, const void *data, size_t length, const AlgorithmIdentifier *digest_alg, hx509_cert cert, hx509_peer_info peer, hx509_certs anchors, hx509_certs pool, heim_octet_string *signed_data)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+See the <a class="el" href="page_cms.html">CMS/PKCS7 message functions.</a> for description and examples. <hr><h2>Function Documentation</h2>
+<a class="anchor" name="g8dfb6d8d72f6a71caffaf11b9d847921"></a><!-- doxytag: member="cms.c::hx509_cms_create_signed_1" ref="g8dfb6d8d72f6a71caffaf11b9d847921" args="(hx509_context context, int flags, const heim_oid *eContentType, const void *data, size_t length, const AlgorithmIdentifier *digest_alg, hx509_cert cert, hx509_peer_info peer, hx509_certs anchors, hx509_certs pool, heim_octet_string *signed_data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cms_create_signed_1 </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_oid *&nbsp;</td>
+ <td class="paramname"> <em>eContentType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>length</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const AlgorithmIdentifier *&nbsp;</td>
+ <td class="paramname"> <em>digest_alg</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>cert</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_peer_info&nbsp;</td>
+ <td class="paramname"> <em>peer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>anchors</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>pool</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">heim_octet_string *&nbsp;</td>
+ <td class="paramname"> <em>signed_data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Decode SignedData and verify that the signature is correct.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td></td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>eContentType</em>&nbsp;</td><td>the type of the data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>data to sign </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>length of the data that data point to. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>digest_alg</em>&nbsp;</td><td>digest algorithm to use, use NULL to get the default or the peer determined algorithm. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>certificate to use for sign the data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>peer</em>&nbsp;</td><td>info about the peer the message to send the message to, like what digest algorithm to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>anchors</em>&nbsp;</td><td>trust anchors that the client will use, used to polulate the certificates included in the message </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>certificates to use in try to build the path to the trust anchors. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>signed_data</em>&nbsp;</td><td>the output of the function, free with der_free_octet_string(). </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g618f32b35fa6f679cc5f32fb8abdbe85"></a><!-- doxytag: member="cms.c::hx509_cms_envelope_1" ref="g618f32b35fa6f679cc5f32fb8abdbe85" args="(hx509_context context, int flags, hx509_cert cert, const void *data, size_t length, const heim_oid *encryption_type, const heim_oid *contentType, heim_octet_string *content)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cms_envelope_1 </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>cert</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>length</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_oid *&nbsp;</td>
+ <td class="paramname"> <em>encryption_type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_oid *&nbsp;</td>
+ <td class="paramname"> <em>contentType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">heim_octet_string *&nbsp;</td>
+ <td class="paramname"> <em>content</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Encrypt end encode EnvelopedData.<p>
+Encrypt and encode EnvelopedData. The data is encrypted with a random key and the the random key is encrypted with the certificates private key. This limits what private key type can be used to RSA.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>flags to control the behavior.<ul>
+<li>HX509_CMS_EV_NO_KU_CHECK - Dont check KU on certificate</li><li>HX509_CMS_EV_ALLOW_WEAK - Allow weak crytpo</li><li>HX509_CMS_EV_ID_NAME - prefer issuer name and serial number </li></ul>
+</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>Certificate to encrypt the EnvelopedData encryption key with. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>pointer the data to encrypt. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>length of the data that data point to. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>encryption_type</em>&nbsp;</td><td>Encryption cipher to use for the bulk data, use NULL to get default. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>contentType</em>&nbsp;</td><td>type of the data that is encrypted </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>content</em>&nbsp;</td><td>the output of the function, free with der_free_octet_string(). </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb13d28bf986e3b66c05e7e33799be07b"></a><!-- doxytag: member="cms.c::hx509_cms_unenvelope" ref="gb13d28bf986e3b66c05e7e33799be07b" args="(hx509_context context, hx509_certs certs, int flags, const void *data, size_t length, const heim_octet_string *encryptedContent, time_t time_now, heim_oid *contentType, heim_octet_string *content)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cms_unenvelope </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>certs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>length</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_octet_string *&nbsp;</td>
+ <td class="paramname"> <em>encryptedContent</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">time_t&nbsp;</td>
+ <td class="paramname"> <em>time_now</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">heim_oid *&nbsp;</td>
+ <td class="paramname"> <em>contentType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">heim_octet_string *&nbsp;</td>
+ <td class="paramname"> <em>content</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Decode and unencrypt EnvelopedData.<p>
+Extract data and parameteres from from the EnvelopedData. Also supports using detached EnvelopedData.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>Certificate that can decrypt the EnvelopedData encryption key. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>HX509_CMS_UE flags to control the behavior. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>pointer the structure the contains the DER/BER encoded EnvelopedData stucture. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>length of the data that data point to. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>encryptedContent</em>&nbsp;</td><td>in case of detached signature, this contains the actual encrypted data, othersize its should be NULL. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>time_now</em>&nbsp;</td><td>set the current time, if zero the library uses now as the date. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>contentType</em>&nbsp;</td><td>output type oid, should be freed with der_free_oid(). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>content</em>&nbsp;</td><td>the data, free with der_free_octet_string(). </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gacbd636f3053c560782d83251f42b71a"></a><!-- doxytag: member="cms.c::hx509_cms_unwrap_ContentInfo" ref="gacbd636f3053c560782d83251f42b71a" args="(const heim_octet_string *in, heim_oid *oid, heim_octet_string *out, int *have_data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cms_unwrap_ContentInfo </td>
+ <td>(</td>
+ <td class="paramtype">const heim_octet_string *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">heim_oid *&nbsp;</td>
+ <td class="paramname"> <em>oid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">heim_octet_string *&nbsp;</td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>have_data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Decode an ContentInfo and unwrap data and oid it.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>the encoded buffer. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>oid</em>&nbsp;</td><td>type of the content. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>data to be wrapped. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>have_data</em>&nbsp;</td><td>since the data is optional, this flags show dthe diffrence between no data and the zero length data.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gedaf18507474021a8d092ca6ac90a1ad"></a><!-- doxytag: member="cms.c::hx509_cms_verify_signed" ref="gedaf18507474021a8d092ca6ac90a1ad" args="(hx509_context context, hx509_verify_ctx ctx, unsigned int flags, const void *data, size_t length, const heim_octet_string *signedContent, hx509_certs pool, heim_oid *contentType, heim_octet_string *content, hx509_certs *signer_certs)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cms_verify_signed </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_verify_ctx&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&nbsp;</td>
+ <td class="paramname"> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>length</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_octet_string *&nbsp;</td>
+ <td class="paramname"> <em>signedContent</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>pool</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">heim_oid *&nbsp;</td>
+ <td class="paramname"> <em>contentType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">heim_octet_string *&nbsp;</td>
+ <td class="paramname"> <em>content</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs *&nbsp;</td>
+ <td class="paramname"> <em>signer_certs</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Decode SignedData and verify that the signature is correct.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>a hx509 verify context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>to control the behaivor of the function.<ul>
+<li>HX509_CMS_VS_NO_KU_CHECK - Don't check KeyUsage</li><li>HX509_CMS_VS_ALLOW_DATA_OID_MISMATCH - allow oid mismatch</li><li>HX509_CMS_VS_ALLOW_ZERO_SIGNER - no signer, see below. </li></ul>
+</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>pointer to CMS SignedData encoded data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>length of the data that data point to. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>signedContent</em>&nbsp;</td><td>external data used for signature. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>certificate pool to build certificates paths. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>contentType</em>&nbsp;</td><td>free with der_free_oid(). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>content</em>&nbsp;</td><td>the output of the function, free with der_free_octet_string(). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>signer_certs</em>&nbsp;</td><td>list of the cerficates used to sign this request, free with <a class="el" href="group__hx509__keyset.html#ga3df96cfe4137beaea7e7b87b95dbe3f">hx509_certs_free()</a>. </td></tr>
+ </table>
+</dl>
+
+<p>
+If HX509_CMS_VS_NO_KU_CHECK is set, allow more liberal search for matching certificates by not considering KeyUsage bits on the certificates.<p>
+If HX509_CMS_VS_ALLOW_DATA_OID_MISMATCH, allow encapContentInfo mismatch with the oid in signedAttributes (or if no signedAttributes where use, pkcs7-data oid). This is only needed to work with broken CMS implementations that doesn't follow CMS signedAttributes rules.<p>
+If HX509_CMS_VS_NO_VALIDATE flags is set, do not verify the signing certificates and leave that up to the caller.<p>
+If HX509_CMS_VS_ALLOW_ZERO_SIGNER is set, allow empty SignerInfo (no signatures). If SignedData have no signatures, the function will return 0 with signer_certs set to NULL. Zero signers is allowed by the standard, but since its only useful in corner cases, it make into a flag that the caller have to turn on.
+</div>
+</div><p>
+<a class="anchor" name="g59a1f6dc31e384a0d378c8179f2be9c3"></a><!-- doxytag: member="cms.c::hx509_cms_wrap_ContentInfo" ref="g59a1f6dc31e384a0d378c8179f2be9c3" args="(const heim_oid *oid, const heim_octet_string *buf, heim_octet_string *res)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cms_wrap_ContentInfo </td>
+ <td>(</td>
+ <td class="paramtype">const heim_oid *&nbsp;</td>
+ <td class="paramname"> <em>oid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_octet_string *&nbsp;</td>
+ <td class="paramname"> <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">heim_octet_string *&nbsp;</td>
+ <td class="paramname"> <em>res</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Wrap data and oid in a ContentInfo and encode it.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>oid</em>&nbsp;</td><td>type of the content. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>data to be wrapped. If a NULL pointer is passed in, the optional content field in the ContentInfo is not going be filled in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>the encoded buffer, the result should be freed with der_free_octet_string().</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:11 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__crypto.html b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__crypto.html
new file mode 100644
index 000000000000..8e1fdc92bb7c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__crypto.html
@@ -0,0 +1,92 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: hx509 crypto functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hx509 crypto functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__crypto.html#g0580de84a86f6d373f5121855bf3a7d5">hx509_verify_signature</a> (hx509_context context, const hx509_cert signer, const AlgorithmIdentifier *alg, const heim_octet_string *data, const heim_octet_string *sig)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g0580de84a86f6d373f5121855bf3a7d5"></a><!-- doxytag: member="cert.c::hx509_verify_signature" ref="g0580de84a86f6d373f5121855bf3a7d5" args="(hx509_context context, const hx509_cert signer, const AlgorithmIdentifier *alg, const heim_octet_string *data, const heim_octet_string *sig)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_verify_signature </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>signer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const AlgorithmIdentifier *&nbsp;</td>
+ <td class="paramname"> <em>alg</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_octet_string *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const heim_octet_string *&nbsp;</td>
+ <td class="paramname"> <em>sig</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Verify a signature made using the private key of an certificate.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>signer</em>&nbsp;</td><td>the certificate that made the signature. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>alg</em>&nbsp;</td><td>algorthm that was used to sign the data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the data that was signed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>sig</em>&nbsp;</td><td>the sigature to verify.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:11 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__env.html b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__env.html
new file mode 100644
index 000000000000..35b3d66c2175
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__env.html
@@ -0,0 +1,311 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: hx509 enviroment functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hx509 enviroment functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__env.html#gd60c343e1400c16df1e2f00d2bdff9e9">hx509_env_add</a> (hx509_context context, hx509_env *env, const char *key, const char *value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__env.html#gf08b9d284b8845a7ce14ef1b21ec1adf">hx509_env_add_binding</a> (hx509_context context, hx509_env *env, const char *key, hx509_env list)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__env.html#ga4be057dabba9197ad9ada2594ad36e8">hx509_env_lfind</a> (hx509_context context, hx509_env env, const char *key, size_t len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__env.html#g7e481b337974e7474f8bc7bd9199af13">hx509_env_find</a> (hx509_context context, hx509_env env, const char *key)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">hx509_env&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__env.html#g9f2ea48c27a58b690a218c44fd4c90a6">hx509_env_find_binding</a> (hx509_context context, hx509_env env, const char *key)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__env.html#gf5587becc945154ca8c6f1795db5c8da">hx509_env_free</a> (hx509_env *env)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="gd60c343e1400c16df1e2f00d2bdff9e9"></a><!-- doxytag: member="env.c::hx509_env_add" ref="gd60c343e1400c16df1e2f00d2bdff9e9" args="(hx509_context context, hx509_env *env, const char *key, const char *value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_env_add </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_env *&nbsp;</td>
+ <td class="paramname"> <em>env</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add a new key/value pair to the hx509_env.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>env</em>&nbsp;</td><td>enviroment to add the enviroment variable too. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>key to add </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>value to add</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf08b9d284b8845a7ce14ef1b21ec1adf"></a><!-- doxytag: member="env.c::hx509_env_add_binding" ref="gf08b9d284b8845a7ce14ef1b21ec1adf" args="(hx509_context context, hx509_env *env, const char *key, hx509_env list)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_env_add_binding </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_env *&nbsp;</td>
+ <td class="paramname"> <em>env</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_env&nbsp;</td>
+ <td class="paramname"> <em>list</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add a new key/binding pair to the hx509_env.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>env</em>&nbsp;</td><td>enviroment to add the enviroment variable too. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>key to add </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>binding list to add</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7e481b337974e7474f8bc7bd9199af13"></a><!-- doxytag: member="env.c::hx509_env_find" ref="g7e481b337974e7474f8bc7bd9199af13" args="(hx509_context context, hx509_env env, const char *key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* hx509_env_find </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_env&nbsp;</td>
+ <td class="paramname"> <em>env</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Search the hx509_env for a key.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>env</em>&nbsp;</td><td>enviroment to add the enviroment variable too. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>key to search for.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the value if the key is found, NULL otherwise. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9f2ea48c27a58b690a218c44fd4c90a6"></a><!-- doxytag: member="env.c::hx509_env_find_binding" ref="g9f2ea48c27a58b690a218c44fd4c90a6" args="(hx509_context context, hx509_env env, const char *key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">hx509_env hx509_env_find_binding </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_env&nbsp;</td>
+ <td class="paramname"> <em>env</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Search the hx509_env for a binding.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>env</em>&nbsp;</td><td>enviroment to add the enviroment variable too. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>key to search for.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the binding if the key is found, NULL if not found. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf5587becc945154ca8c6f1795db5c8da"></a><!-- doxytag: member="env.c::hx509_env_free" ref="gf5587becc945154ca8c6f1795db5c8da" args="(hx509_env *env)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_env_free </td>
+ <td>(</td>
+ <td class="paramtype">hx509_env *&nbsp;</td>
+ <td class="paramname"> <em>env</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free an hx509_env enviroment context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>env</em>&nbsp;</td><td>the enviroment to free. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga4be057dabba9197ad9ada2594ad36e8"></a><!-- doxytag: member="env.c::hx509_env_lfind" ref="ga4be057dabba9197ad9ada2594ad36e8" args="(hx509_context context, hx509_env env, const char *key, size_t len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* hx509_env_lfind </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_env&nbsp;</td>
+ <td class="paramname"> <em>env</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Search the hx509_env for a length based key.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>env</em>&nbsp;</td><td>enviroment to add the enviroment variable too. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>key to search for. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of key.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the value if the key is found, NULL otherwise. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:14 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__error.html b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__error.html
new file mode 100644
index 000000000000..631fbec3b625
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__error.html
@@ -0,0 +1,308 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: hx509 error functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hx509 error functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__error.html#g99a2f278c27355d474bc12e5809ae5ff">hx509_clear_error_string</a> (hx509_context context)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__error.html#g4d3505a920021f838cab2228cd197e3d">hx509_set_error_stringv</a> (hx509_context context, int flags, int code, const char *fmt, va_list ap)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__error.html#gd9d4e6e56d2baef65f8c05ee53d6c198">hx509_set_error_string</a> (hx509_context context, int flags, int code, const char *fmt,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string</a> (hx509_context context, int error_code)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__error.html#gdd65f91b64ae79e6540708b9ab322992">hx509_free_error_string</a> (char *str)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__error.html#g992270111a54a73af9f96216eb548aa4">hx509_err</a> (hx509_context context, int exit_code, int error_code, const char *fmt,...)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+See the <a class="el" href="page_error.html">Hx509 error reporting functions</a> for description and examples. <hr><h2>Function Documentation</h2>
+<a class="anchor" name="g99a2f278c27355d474bc12e5809ae5ff"></a><!-- doxytag: member="error.c::hx509_clear_error_string" ref="g99a2f278c27355d474bc12e5809ae5ff" args="(hx509_context context)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_clear_error_string </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Resets the error strings the hx509 context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g992270111a54a73af9f96216eb548aa4"></a><!-- doxytag: member="error.c::hx509_err" ref="g992270111a54a73af9f96216eb548aa4" args="(hx509_context context, int exit_code, int error_code, const char *fmt,...)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_err </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>exit_code</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>error_code</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>fmt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&nbsp;</td>
+ <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Print error message and fatally exit from error code<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>exit_code</em>&nbsp;</td><td>exit() code from process. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>error_code</em>&nbsp;</td><td>Error code for the reason to exit. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>fmt</em>&nbsp;</td><td>format string with the exit message. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>argument to format string. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gdd65f91b64ae79e6540708b9ab322992"></a><!-- doxytag: member="error.c::hx509_free_error_string" ref="gdd65f91b64ae79e6540708b9ab322992" args="(char *str)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_free_error_string </td>
+ <td>(</td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>str</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free error string returned by <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>error string to free. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g15791abff76719acb531223fdcbcac87"></a><!-- doxytag: member="error.c::hx509_get_error_string" ref="g15791abff76719acb531223fdcbcac87" args="(hx509_context context, int error_code)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">char* hx509_get_error_string </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>error_code</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get an error string from context associated with error_code.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>error_code</em>&nbsp;</td><td>Get error message for this error code.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>error string, free with <a class="el" href="group__hx509__error.html#gdd65f91b64ae79e6540708b9ab322992">hx509_free_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd9d4e6e56d2baef65f8c05ee53d6c198"></a><!-- doxytag: member="error.c::hx509_set_error_string" ref="gd9d4e6e56d2baef65f8c05ee53d6c198" args="(hx509_context context, int flags, int code, const char *fmt,...)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_set_error_string </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>code</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>fmt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&nbsp;</td>
+ <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+See <a class="el" href="group__hx509__error.html#g4d3505a920021f838cab2228cd197e3d">hx509_set_error_stringv()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td><ul>
+<li>HX509_ERROR_APPEND appends the error string to the old messages (code is updated). </li></ul>
+</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>code</em>&nbsp;</td><td>error code related to error message </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>fmt</em>&nbsp;</td><td>error message format </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>arguments to error message format </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4d3505a920021f838cab2228cd197e3d"></a><!-- doxytag: member="error.c::hx509_set_error_stringv" ref="g4d3505a920021f838cab2228cd197e3d" args="(hx509_context context, int flags, int code, const char *fmt, va_list ap)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_set_error_stringv </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>code</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>fmt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">va_list&nbsp;</td>
+ <td class="paramname"> <em>ap</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add an error message to the hx509 context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td><ul>
+<li>HX509_ERROR_APPEND appends the error string to the old messages (code is updated). </li></ul>
+</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>code</em>&nbsp;</td><td>error code related to error message </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>fmt</em>&nbsp;</td><td>error message format </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ap</em>&nbsp;</td><td>arguments to error message format </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:09 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__keyset.html b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__keyset.html
new file mode 100644
index 000000000000..acce00411b90
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__keyset.html
@@ -0,0 +1,781 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: hx509 certificate store functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hx509 certificate store functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g38cec16ab23ae65a6113f6e323a38032">hx509_certs_init</a> (hx509_context context, const char *name, int flags, hx509_lock lock, hx509_certs *certs)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g1dbde45fbffbaf909cd99b339f8641bd">hx509_certs_store</a> (hx509_context context, hx509_certs certs, int flags, hx509_lock lock)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#ga3df96cfe4137beaea7e7b87b95dbe3f">hx509_certs_free</a> (hx509_certs *certs)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g8734f5269e166329c0b66d546187a4a9">hx509_certs_start_seq</a> (hx509_context context, hx509_certs certs, hx509_cursor *cursor)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g63c38b4729df8a074f191db831ac9db7">hx509_certs_next_cert</a> (hx509_context context, hx509_certs certs, hx509_cursor cursor, hx509_cert *cert)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g9f05c59f97dcfade924a72fe82cf9a16">hx509_certs_end_seq</a> (hx509_context context, hx509_certs certs, hx509_cursor cursor)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g4ba1d8deb9545c59b8f6bde86585014b">hx509_certs_iter_f</a> (hx509_context context, hx509_certs certs, int(*func)(hx509_context, void *, hx509_cert), void *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#gee9789b91e1b425c17ddd6a5c1f2a834">hx509_ci_print_names</a> (hx509_context context, void *ctx, hx509_cert c)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g4ebe1ee219223b590bdf3e58dc2182da">hx509_certs_add</a> (hx509_context context, hx509_certs certs, hx509_cert cert)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g5f0c737b4dddb2a8c7bbab05b04ceb7a">hx509_certs_find</a> (hx509_context context, hx509_certs certs, const hx509_query *q, hx509_cert *r)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g1a7b21b477dc3a43286fd1ff96163609">hx509_certs_filter</a> (hx509_context context, hx509_certs certs, const hx509_query *q, hx509_certs *result)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g201bbf3425e451337abb26589202d9fe">hx509_certs_merge</a> (hx509_context context, hx509_certs to, hx509_certs from)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g5aa16e2f2d1bd1349e0586fdb53b85e6">hx509_certs_append</a> (hx509_context context, hx509_certs to, hx509_lock lock, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g0457faff2ddddfbae50fa62ec1369072">hx509_get_one_cert</a> (hx509_context context, hx509_certs certs, hx509_cert *c)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g82fc84cff0a174d58e763ffe2c2a0aad">hx509_certs_info</a> (hx509_context context, hx509_certs certs, int(*func)(void *, const char *), void *ctx)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+See the <a class="el" href="page_keyset.html">Certificate store operations</a> for description and examples. <hr><h2>Function Documentation</h2>
+<a class="anchor" name="g4ebe1ee219223b590bdf3e58dc2182da"></a><!-- doxytag: member="keyset.c::hx509_certs_add" ref="g4ebe1ee219223b590bdf3e58dc2182da" args="(hx509_context context, hx509_certs certs, hx509_cert cert)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_certs_add </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>certs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>cert</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add a certificate to the certificiate store.<p>
+The receiving keyset certs will either increase reference counter of the cert or make a deep copy, either way, the caller needs to free the cert itself.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to add the certificate to. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>certificate to add.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5aa16e2f2d1bd1349e0586fdb53b85e6"></a><!-- doxytag: member="keyset.c::hx509_certs_append" ref="g5aa16e2f2d1bd1349e0586fdb53b85e6" args="(hx509_context context, hx509_certs to, hx509_lock lock, const char *name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_certs_append </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>to</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_lock&nbsp;</td>
+ <td class="paramname"> <em>lock</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Same a <a class="el" href="group__hx509__keyset.html#g201bbf3425e451337abb26589202d9fe">hx509_certs_merge()</a> but use a lock and name to describe the from source.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>to</em>&nbsp;</td><td>the store to merge into. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>lock</em>&nbsp;</td><td>a lock that unlocks the certificates store, use NULL to select no password/certifictes/prompt lock (see <a class="el" href="page_lock.html">Locking and unlocking certificates and encrypted data.</a>). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>name of the source store</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9f05c59f97dcfade924a72fe82cf9a16"></a><!-- doxytag: member="keyset.c::hx509_certs_end_seq" ref="g9f05c59f97dcfade924a72fe82cf9a16" args="(hx509_context context, hx509_certs certs, hx509_cursor cursor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_certs_end_seq </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>certs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cursor&nbsp;</td>
+ <td class="paramname"> <em>cursor</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+End the iteration over certificates.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to iterate over. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cursor</em>&nbsp;</td><td>cursor that will keep track of progress, freed.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1a7b21b477dc3a43286fd1ff96163609"></a><!-- doxytag: member="keyset.c::hx509_certs_filter" ref="g1a7b21b477dc3a43286fd1ff96163609" args="(hx509_context context, hx509_certs certs, const hx509_query *q, hx509_certs *result)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_certs_filter </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>certs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const hx509_query *&nbsp;</td>
+ <td class="paramname"> <em>q</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs *&nbsp;</td>
+ <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Filter certificate matching the query.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to search. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>q</em>&nbsp;</td><td>query allocated with <a class="el" href="group__hx509__query.html">hx509 query functions</a> functions. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>result</em>&nbsp;</td><td>the filtered certificate store, caller must free with <a class="el" href="group__hx509__keyset.html#ga3df96cfe4137beaea7e7b87b95dbe3f">hx509_certs_free()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
+
+<p>
+Return HX509_CERT_NOT_FOUND if no certificate in certs matched the query.
+</div>
+</div><p>
+<a class="anchor" name="g5f0c737b4dddb2a8c7bbab05b04ceb7a"></a><!-- doxytag: member="keyset.c::hx509_certs_find" ref="g5f0c737b4dddb2a8c7bbab05b04ceb7a" args="(hx509_context context, hx509_certs certs, const hx509_query *q, hx509_cert *r)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_certs_find </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>certs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const hx509_query *&nbsp;</td>
+ <td class="paramname"> <em>q</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert *&nbsp;</td>
+ <td class="paramname"> <em>r</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Find a certificate matching the query.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to search. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>q</em>&nbsp;</td><td>query allocated with <a class="el" href="group__hx509__query.html">hx509 query functions</a> functions. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>r</em>&nbsp;</td><td>return certificate (or NULL on error), should be freed with <a class="el" href="group__hx509__cert.html#gd2f9bb0ddc4babb26a8ccd983db8c948">hx509_cert_free()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
+
+<p>
+Return HX509_CERT_NOT_FOUND if no certificate in certs matched the query.
+</div>
+</div><p>
+<a class="anchor" name="ga3df96cfe4137beaea7e7b87b95dbe3f"></a><!-- doxytag: member="keyset.c::hx509_certs_free" ref="ga3df96cfe4137beaea7e7b87b95dbe3f" args="(hx509_certs *certs)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_certs_free </td>
+ <td>(</td>
+ <td class="paramtype">hx509_certs *&nbsp;</td>
+ <td class="paramname"> <em>certs</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free a certificate store.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to free. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g82fc84cff0a174d58e763ffe2c2a0aad"></a><!-- doxytag: member="keyset.c::hx509_certs_info" ref="g82fc84cff0a174d58e763ffe2c2a0aad" args="(hx509_context context, hx509_certs certs, int(*func)(void *, const char *), void *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_certs_info </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>certs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int(*)(void *, const char *)&nbsp;</td>
+ <td class="paramname"> <em>func</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Print some info about the certificate store.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to print information about. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>function that will get each line of the information, if NULL is used the data is printed on a FILE descriptor that should be passed in ctx, if ctx also is NULL, stdout is used. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>parameter to func.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g38cec16ab23ae65a6113f6e323a38032"></a><!-- doxytag: member="keyset.c::hx509_certs_init" ref="g38cec16ab23ae65a6113f6e323a38032" args="(hx509_context context, const char *name, int flags, hx509_lock lock, hx509_certs *certs)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_certs_init </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_lock&nbsp;</td>
+ <td class="paramname"> <em>lock</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs *&nbsp;</td>
+ <td class="paramname"> <em>certs</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Open or creates a new hx509 certificate store.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>name of the store, format is TYPE:type-specific-string, if NULL is used the MEMORY store is used. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>list of flags:<ul>
+<li>HX509_CERTS_CREATE create a new keystore of the specific TYPE.</li><li>HX509_CERTS_UNPROTECT_ALL fails if any private key failed to be extracted. </li></ul>
+</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>lock</em>&nbsp;</td><td>a lock that unlocks the certificates store, use NULL to select no password/certifictes/prompt lock (see <a class="el" href="page_lock.html">Locking and unlocking certificates and encrypted data.</a>). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>return pointer, free with <a class="el" href="group__hx509__keyset.html#ga3df96cfe4137beaea7e7b87b95dbe3f">hx509_certs_free()</a>. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4ba1d8deb9545c59b8f6bde86585014b"></a><!-- doxytag: member="keyset.c::hx509_certs_iter_f" ref="g4ba1d8deb9545c59b8f6bde86585014b" args="(hx509_context context, hx509_certs certs, int(*func)(hx509_context, void *, hx509_cert), void *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_certs_iter_f </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>certs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int(*)(hx509_context, void *, hx509_cert)&nbsp;</td>
+ <td class="paramname"> <em>func</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Iterate over all certificates in a keystore and call an function for each fo them.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to iterate over. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>function to call for each certificate. The function should return non-zero to abort the iteration, that value is passed back to the caller of <a class="el" href="group__hx509__keyset.html#g4ba1d8deb9545c59b8f6bde86585014b">hx509_certs_iter_f()</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>context variable that will passed to the function.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g201bbf3425e451337abb26589202d9fe"></a><!-- doxytag: member="keyset.c::hx509_certs_merge" ref="g201bbf3425e451337abb26589202d9fe" args="(hx509_context context, hx509_certs to, hx509_certs from)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_certs_merge </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>to</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>from</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Merge a certificate store into another. The from store is keep intact.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>to</em>&nbsp;</td><td>the store to merge into. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>from</em>&nbsp;</td><td>the store to copy the object from.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g63c38b4729df8a074f191db831ac9db7"></a><!-- doxytag: member="keyset.c::hx509_certs_next_cert" ref="g63c38b4729df8a074f191db831ac9db7" args="(hx509_context context, hx509_certs certs, hx509_cursor cursor, hx509_cert *cert)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_certs_next_cert </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>certs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cursor&nbsp;</td>
+ <td class="paramname"> <em>cursor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert *&nbsp;</td>
+ <td class="paramname"> <em>cert</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get next ceritificate from the certificate keystore pointed out by cursor.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to iterate over. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cursor</em>&nbsp;</td><td>cursor that keeps track of progress. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>return certificate next in store, NULL if the store contains no more certificates. Free with <a class="el" href="group__hx509__cert.html#gd2f9bb0ddc4babb26a8ccd983db8c948">hx509_cert_free()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8734f5269e166329c0b66d546187a4a9"></a><!-- doxytag: member="keyset.c::hx509_certs_start_seq" ref="g8734f5269e166329c0b66d546187a4a9" args="(hx509_context context, hx509_certs certs, hx509_cursor *cursor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_certs_start_seq </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>certs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cursor *&nbsp;</td>
+ <td class="paramname"> <em>cursor</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Start the integration<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to iterate over </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cursor</em>&nbsp;</td><td>cursor that will keep track of progress, free with <a class="el" href="group__hx509__keyset.html#g9f05c59f97dcfade924a72fe82cf9a16">hx509_certs_end_seq()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. HX509_UNSUPPORTED_OPERATION is returned if the certificate store doesn't support the iteration operation. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1dbde45fbffbaf909cd99b339f8641bd"></a><!-- doxytag: member="keyset.c::hx509_certs_store" ref="g1dbde45fbffbaf909cd99b339f8641bd" args="(hx509_context context, hx509_certs certs, int flags, hx509_lock lock)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_certs_store </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>certs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_lock&nbsp;</td>
+ <td class="paramname"> <em>lock</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Write the certificate store to stable storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>a certificate store to store. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>currently unused, use 0. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>lock</em>&nbsp;</td><td>a lock that unlocks the certificates store, use NULL to select no password/certifictes/prompt lock (see <a class="el" href="page_lock.html">Locking and unlocking certificates and encrypted data.</a>).</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. HX509_UNSUPPORTED_OPERATION if the certificate store doesn't support the store operation. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gee9789b91e1b425c17ddd6a5c1f2a834"></a><!-- doxytag: member="keyset.c::hx509_ci_print_names" ref="gee9789b91e1b425c17ddd6a5c1f2a834" args="(hx509_context context, void *ctx, hx509_cert c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ci_print_names </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>c</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Iterate over all certificates in a keystore and call an function for each fo them.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to iterate over. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>function to call for each certificate. The function should return non-zero to abort the iteration, that value is passed back to the caller of hx509_certs_iter().</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. Function to use to <a class="el" href="group__hx509__keyset.html#g4ba1d8deb9545c59b8f6bde86585014b">hx509_certs_iter_f()</a> as a function argument, the ctx variable to <a class="el" href="group__hx509__keyset.html#g4ba1d8deb9545c59b8f6bde86585014b">hx509_certs_iter_f()</a> should be a FILE file descriptor.</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>used by <a class="el" href="group__hx509__keyset.html#g4ba1d8deb9545c59b8f6bde86585014b">hx509_certs_iter_f()</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a certificate</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g0457faff2ddddfbae50fa62ec1369072"></a><!-- doxytag: member="keyset.c::hx509_get_one_cert" ref="g0457faff2ddddfbae50fa62ec1369072" args="(hx509_context context, hx509_certs certs, hx509_cert *c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_get_one_cert </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>certs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert *&nbsp;</td>
+ <td class="paramname"> <em>c</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get one random certificate from the certificate store.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>a certificate store to get the certificate from. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>return certificate, should be freed with <a class="el" href="group__hx509__cert.html#gd2f9bb0ddc4babb26a8ccd983db8c948">hx509_cert_free()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:11 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__lock.html b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__lock.html
new file mode 100644
index 000000000000..b10c22ab34c4
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__lock.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: hx509 lock functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hx509 lock functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+See the <a class="el" href="page_lock.html">Locking and unlocking certificates and encrypted data.</a> for description and examples. </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:13 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__misc.html b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__misc.html
new file mode 100644
index 000000000000..37dd15de4eaa
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__misc.html
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: hx509 misc functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hx509 misc functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__misc.html#ga39b9443f688a6d9152ff6dc05f3be8e">hx509_free_octet_string_list</a> (hx509_octet_string_list *list)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__misc.html#gba6d3eb6abde539a3191269f785e3e61">hx509_xfree</a> (void *ptr)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="ga39b9443f688a6d9152ff6dc05f3be8e"></a><!-- doxytag: member="cert.c::hx509_free_octet_string_list" ref="ga39b9443f688a6d9152ff6dc05f3be8e" args="(hx509_octet_string_list *list)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_free_octet_string_list </td>
+ <td>(</td>
+ <td class="paramtype">hx509_octet_string_list *&nbsp;</td>
+ <td class="paramname"> <em>list</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free a list of octet strings returned by another hx509 library function.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>list to be freed. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gba6d3eb6abde539a3191269f785e3e61"></a><!-- doxytag: member="cert.c::hx509_xfree" ref="gba6d3eb6abde539a3191269f785e3e61" args="(void *ptr)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_xfree </td>
+ <td>(</td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>ptr</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free a data element allocated in the library.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ptr</em>&nbsp;</td><td>data to be freed. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:11 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__name.html b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__name.html
new file mode 100644
index 000000000000..decfa6953400
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__name.html
@@ -0,0 +1,470 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: hx509 name functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hx509 name functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__name.html#g1bd74b34e0aa88b083678ba231d38718">hx509_name_to_string</a> (const hx509_name name, char **str)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__name.html#gbd49c49301d601bc53371b867a7eac54">hx509_name_cmp</a> (hx509_name n1, hx509_name n2)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__name.html#g0565f607a4e57d0911ee7081ad9548c5">hx509_parse_name</a> (hx509_context context, const char *str, hx509_name *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__name.html#gcf9b6bfcdd810bed71e98f7e04d918ca">hx509_name_copy</a> (hx509_context context, const hx509_name from, hx509_name *to)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__name.html#g6e65dc67aa48bb87e4fb98ecfe512fbd">hx509_name_to_Name</a> (const hx509_name from, Name *to)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__name.html#g42015083c70b6aa29c4f082998dbbece">hx509_name_expand</a> (hx509_context context, hx509_name name, hx509_env env)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__name.html#gaf351931efb02fc7aea736af9977155e">hx509_name_free</a> (hx509_name *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__name.html#gf8f73e0a75da2189b1815d8c968750df">hx509_unparse_der_name</a> (const void *data, size_t length, char **str)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__name.html#g1838777e576422c1cb17093bbf7fa018">hx509_name_binary</a> (const hx509_name name, heim_octet_string *os)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__name.html#g4f6715dcabbbcb5d48512e504eae8352">hx509_name_is_null_p</a> (const hx509_name name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__name.html#g678a0bf7676746ea1827efe951042f1e">hx509_general_name_unparse</a> (GeneralName *name, char **str)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+See the <a class="el" href="page_name.html">PKIX/X.509 Names</a> for description and examples. <hr><h2>Function Documentation</h2>
+<a class="anchor" name="g678a0bf7676746ea1827efe951042f1e"></a><!-- doxytag: member="name.c::hx509_general_name_unparse" ref="g678a0bf7676746ea1827efe951042f1e" args="(GeneralName *name, char **str)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_general_name_unparse </td>
+ <td>(</td>
+ <td class="paramtype">GeneralName *&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>str</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Unparse the hx509 name in name into a string.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>the name to print </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>an allocated string returns the name in string form</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1838777e576422c1cb17093bbf7fa018"></a><!-- doxytag: member="name.c::hx509_name_binary" ref="g1838777e576422c1cb17093bbf7fa018" args="(const hx509_name name, heim_octet_string *os)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_name_binary </td>
+ <td>(</td>
+ <td class="paramtype">const hx509_name&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">heim_octet_string *&nbsp;</td>
+ <td class="paramname"> <em>os</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Convert a hx509_name object to DER encoded name.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>name to concert </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>os</em>&nbsp;</td><td>data to a DER encoded name, free the resulting octet string with hx509_xfree(os-&gt;data).</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gbd49c49301d601bc53371b867a7eac54"></a><!-- doxytag: member="name.c::hx509_name_cmp" ref="gbd49c49301d601bc53371b867a7eac54" args="(hx509_name n1, hx509_name n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_name_cmp </td>
+ <td>(</td>
+ <td class="paramtype">hx509_name&nbsp;</td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_name&nbsp;</td>
+ <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Compare to hx509 name object, useful for sorting.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>n1</em>&nbsp;</td><td>a hx509 name object. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>n2</em>&nbsp;</td><td>a hx509 name object.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 the objects are the same, returns &gt; 0 is n2 is "larger" then n2, &lt; 0 if n1 is "smaller" then n2. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gcf9b6bfcdd810bed71e98f7e04d918ca"></a><!-- doxytag: member="name.c::hx509_name_copy" ref="gcf9b6bfcdd810bed71e98f7e04d918ca" args="(hx509_context context, const hx509_name from, hx509_name *to)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_name_copy </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const hx509_name&nbsp;</td>
+ <td class="paramname"> <em>from</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_name *&nbsp;</td>
+ <td class="paramname"> <em>to</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy a hx509 name object.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 cotext. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>from</em>&nbsp;</td><td>the name to copy from </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>to</em>&nbsp;</td><td>the name to copy to</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g42015083c70b6aa29c4f082998dbbece"></a><!-- doxytag: member="name.c::hx509_name_expand" ref="g42015083c70b6aa29c4f082998dbbece" args="(hx509_context context, hx509_name name, hx509_env env)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_name_expand </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_name&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_env&nbsp;</td>
+ <td class="paramname"> <em>env</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Expands variables in the name using env. Variables are on the form ${name}. Useful when dealing with certificate templates.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 cotext. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>the name to expand. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>env</em>&nbsp;</td><td>environment variable to expand.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+<p>
+Only UTF8String rdnSequence names are allowed
+</div>
+</div><p>
+<a class="anchor" name="gaf351931efb02fc7aea736af9977155e"></a><!-- doxytag: member="name.c::hx509_name_free" ref="gaf351931efb02fc7aea736af9977155e" args="(hx509_name *name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_name_free </td>
+ <td>(</td>
+ <td class="paramtype">hx509_name *&nbsp;</td>
+ <td class="paramname"> <em>name</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free a hx509 name object, upond return *name will be NULL.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>a hx509 name object to be freed. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4f6715dcabbbcb5d48512e504eae8352"></a><!-- doxytag: member="name.c::hx509_name_is_null_p" ref="g4f6715dcabbbcb5d48512e504eae8352" args="(const hx509_name name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_name_is_null_p </td>
+ <td>(</td>
+ <td class="paramtype">const hx509_name&nbsp;</td>
+ <td class="paramname"> <em>name</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Unparse the hx509 name in name into a string.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>the name to check if its empty/null.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>non zero if the name is empty/null. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6e65dc67aa48bb87e4fb98ecfe512fbd"></a><!-- doxytag: member="name.c::hx509_name_to_Name" ref="g6e65dc67aa48bb87e4fb98ecfe512fbd" args="(const hx509_name from, Name *to)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_name_to_Name </td>
+ <td>(</td>
+ <td class="paramtype">const hx509_name&nbsp;</td>
+ <td class="paramname"> <em>from</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Name *&nbsp;</td>
+ <td class="paramname"> <em>to</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Convert a hx509_name into a Name.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>from</em>&nbsp;</td><td>the name to copy from </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>to</em>&nbsp;</td><td>the name to copy to</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1bd74b34e0aa88b083678ba231d38718"></a><!-- doxytag: member="name.c::hx509_name_to_string" ref="g1bd74b34e0aa88b083678ba231d38718" args="(const hx509_name name, char **str)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_name_to_string </td>
+ <td>(</td>
+ <td class="paramtype">const hx509_name&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>str</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Convert the hx509 name object into a printable string. The resulting string should be freed with free().<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>name to print </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>the string to return</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g0565f607a4e57d0911ee7081ad9548c5"></a><!-- doxytag: member="name.c::hx509_parse_name" ref="g0565f607a4e57d0911ee7081ad9548c5" args="(hx509_context context, const char *str, hx509_name *name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_parse_name </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>str</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_name *&nbsp;</td>
+ <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Parse a string into a hx509 name object.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>a string to parse. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>the resulting object, NULL in case of error.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf8f73e0a75da2189b1815d8c968750df"></a><!-- doxytag: member="name.c::hx509_unparse_der_name" ref="gf8f73e0a75da2189b1815d8c968750df" args="(const void *data, size_t length, char **str)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_unparse_der_name </td>
+ <td>(</td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>length</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>str</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Convert a DER encoded name info a string.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>data to a DER/BER encoded name </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>length of data </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>the resulting string, is NULL on failure.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:12 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__peer.html b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__peer.html
new file mode 100644
index 000000000000..c750f1ceada7
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__peer.html
@@ -0,0 +1,237 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: hx509 certificate selecting functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hx509 certificate selecting functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__peer.html#gf4093f25751c1974c7fc65b882aac4d8">hx509_peer_info_alloc</a> (hx509_context context, hx509_peer_info *peer)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__peer.html#ge7b541b7b98303050e8ecc85935d2abc">hx509_peer_info_free</a> (hx509_peer_info peer)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__peer.html#g6462bcb987ee03fcb181834f127e5d3e">hx509_peer_info_set_cert</a> (hx509_peer_info peer, hx509_cert cert)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__peer.html#g5ca456f9cc2d27e4cf034f342324f0d1">hx509_peer_info_add_cms_alg</a> (hx509_context context, hx509_peer_info peer, const AlgorithmIdentifier *val)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__peer.html#g4f61c86442845518d86bc2c5b30fcdb5">hx509_peer_info_set_cms_algs</a> (hx509_context context, hx509_peer_info peer, const AlgorithmIdentifier *val, size_t len)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g5ca456f9cc2d27e4cf034f342324f0d1"></a><!-- doxytag: member="peer.c::hx509_peer_info_add_cms_alg" ref="g5ca456f9cc2d27e4cf034f342324f0d1" args="(hx509_context context, hx509_peer_info peer, const AlgorithmIdentifier *val)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_peer_info_add_cms_alg </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_peer_info&nbsp;</td>
+ <td class="paramname"> <em>peer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const AlgorithmIdentifier *&nbsp;</td>
+ <td class="paramname"> <em>val</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add an additional algorithm that the peer supports.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>peer</em>&nbsp;</td><td>the peer to set the new algorithms for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>an AlgorithmsIdentier to add</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf4093f25751c1974c7fc65b882aac4d8"></a><!-- doxytag: member="peer.c::hx509_peer_info_alloc" ref="gf4093f25751c1974c7fc65b882aac4d8" args="(hx509_context context, hx509_peer_info *peer)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_peer_info_alloc </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_peer_info *&nbsp;</td>
+ <td class="paramname"> <em>peer</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Allocate a new peer info structure an init it to default values.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>peer</em>&nbsp;</td><td>return an allocated peer, free with <a class="el" href="group__hx509__peer.html#ge7b541b7b98303050e8ecc85935d2abc">hx509_peer_info_free()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge7b541b7b98303050e8ecc85935d2abc"></a><!-- doxytag: member="peer.c::hx509_peer_info_free" ref="ge7b541b7b98303050e8ecc85935d2abc" args="(hx509_peer_info peer)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_peer_info_free </td>
+ <td>(</td>
+ <td class="paramtype">hx509_peer_info&nbsp;</td>
+ <td class="paramname"> <em>peer</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free a peer info structure.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>peer</em>&nbsp;</td><td>peer info to be freed. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6462bcb987ee03fcb181834f127e5d3e"></a><!-- doxytag: member="peer.c::hx509_peer_info_set_cert" ref="g6462bcb987ee03fcb181834f127e5d3e" args="(hx509_peer_info peer, hx509_cert cert)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_peer_info_set_cert </td>
+ <td>(</td>
+ <td class="paramtype">hx509_peer_info&nbsp;</td>
+ <td class="paramname"> <em>peer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>cert</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the certificate that remote peer is using.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>peer</em>&nbsp;</td><td>peer info to update </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>cerificate of the remote peer.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4f61c86442845518d86bc2c5b30fcdb5"></a><!-- doxytag: member="peer.c::hx509_peer_info_set_cms_algs" ref="g4f61c86442845518d86bc2c5b30fcdb5" args="(hx509_context context, hx509_peer_info peer, const AlgorithmIdentifier *val, size_t len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_peer_info_set_cms_algs </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_peer_info&nbsp;</td>
+ <td class="paramname"> <em>peer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const AlgorithmIdentifier *&nbsp;</td>
+ <td class="paramname"> <em>val</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the algorithms that the peer supports.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>peer</em>&nbsp;</td><td>the peer to set the new algorithms for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>array of supported AlgorithmsIdentiers </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of array val.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:13 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__print.html b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__print.html
new file mode 100644
index 000000000000..dba1b2546e73
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__print.html
@@ -0,0 +1,452 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: hx509 printing functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hx509 printing functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__print.html#ge27c328d203e88c87cf81b6eb1d1fe66">hx509_print_stdout</a> (void *ctx, const char *fmt, va_list va)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__print.html#gc116d19332498d183eb055452d682d81">hx509_oid_sprint</a> (const heim_oid *oid, char **str)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__print.html#g984e34629525e8c301b237c158c34d23">hx509_oid_print</a> (const heim_oid *oid, hx509_vprint_func func, void *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__print.html#g274370b840dec6de699577e3d203e6b2">hx509_bitstring_print</a> (const heim_bit_string *b, hx509_vprint_func func, void *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__print.html#gafcf2f11a60a1f9b6ccabaacef0e697f">hx509_cert_keyusage_print</a> (hx509_context context, hx509_cert c, char **s)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__print.html#g582e93c29a1becbe5c2ac1ac758e09f4">hx509_validate_ctx_init</a> (hx509_context context, hx509_validate_ctx *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__print.html#g2fab228a24716340f368fa729b5722b1">hx509_validate_ctx_set_print</a> (hx509_validate_ctx ctx, hx509_vprint_func func, void *c)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__print.html#gdfc4c934e63c8c7b10661520de70411e">hx509_validate_ctx_add_flags</a> (hx509_validate_ctx ctx, int flags)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__print.html#g72409ecab29eec94cc0215ed21ecca8e">hx509_validate_ctx_free</a> (hx509_validate_ctx ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__print.html#g5e3ded9ba5c466a2c6f80b9d233b69c3">hx509_validate_cert</a> (hx509_context context, hx509_validate_ctx ctx, hx509_cert cert)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g274370b840dec6de699577e3d203e6b2"></a><!-- doxytag: member="print.c::hx509_bitstring_print" ref="g274370b840dec6de699577e3d203e6b2" args="(const heim_bit_string *b, hx509_vprint_func func, void *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_bitstring_print </td>
+ <td>(</td>
+ <td class="paramtype">const heim_bit_string *&nbsp;</td>
+ <td class="paramname"> <em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_vprint_func&nbsp;</td>
+ <td class="paramname"> <em>func</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Print a bitstring using a hx509_vprint_func function. To print to stdout use <a class="el" href="group__hx509__print.html#ge27c328d203e88c87cf81b6eb1d1fe66">hx509_print_stdout()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>b</em>&nbsp;</td><td>bit string to print. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>hx509_vprint_func to print with. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>context variable to hx509_vprint_func function. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gafcf2f11a60a1f9b6ccabaacef0e697f"></a><!-- doxytag: member="print.c::hx509_cert_keyusage_print" ref="gafcf2f11a60a1f9b6ccabaacef0e697f" args="(hx509_context context, hx509_cert c, char **s)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_cert_keyusage_print </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>s</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Print certificate usage for a certificate to a string.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a certificate print the keyusage for. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>the return string with the keysage printed in to, free with <a class="el" href="group__hx509__misc.html#gba6d3eb6abde539a3191269f785e3e61">hx509_xfree()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g984e34629525e8c301b237c158c34d23"></a><!-- doxytag: member="print.c::hx509_oid_print" ref="g984e34629525e8c301b237c158c34d23" args="(const heim_oid *oid, hx509_vprint_func func, void *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_oid_print </td>
+ <td>(</td>
+ <td class="paramtype">const heim_oid *&nbsp;</td>
+ <td class="paramname"> <em>oid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_vprint_func&nbsp;</td>
+ <td class="paramname"> <em>func</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Print a oid using a hx509_vprint_func function. To print to stdout use <a class="el" href="group__hx509__print.html#ge27c328d203e88c87cf81b6eb1d1fe66">hx509_print_stdout()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>oid</em>&nbsp;</td><td>oid to print </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>hx509_vprint_func to print with. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>context variable to hx509_vprint_func function. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc116d19332498d183eb055452d682d81"></a><!-- doxytag: member="print.c::hx509_oid_sprint" ref="gc116d19332498d183eb055452d682d81" args="(const heim_oid *oid, char **str)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_oid_sprint </td>
+ <td>(</td>
+ <td class="paramtype">const heim_oid *&nbsp;</td>
+ <td class="paramname"> <em>oid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>str</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Print a oid to a string.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>oid</em>&nbsp;</td><td>oid to print </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>allocated string, free with <a class="el" href="group__hx509__misc.html#gba6d3eb6abde539a3191269f785e3e61">hx509_xfree()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge27c328d203e88c87cf81b6eb1d1fe66"></a><!-- doxytag: member="print.c::hx509_print_stdout" ref="ge27c328d203e88c87cf81b6eb1d1fe66" args="(void *ctx, const char *fmt, va_list va)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_print_stdout </td>
+ <td>(</td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>fmt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">va_list&nbsp;</td>
+ <td class="paramname"> <em>va</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Helper function to print on stdout for:<ul>
+<li><a class="el" href="group__hx509__print.html#g984e34629525e8c301b237c158c34d23">hx509_oid_print()</a>,</li><li><a class="el" href="group__hx509__print.html#g274370b840dec6de699577e3d203e6b2">hx509_bitstring_print()</a>,</li><li><a class="el" href="group__hx509__print.html#g2fab228a24716340f368fa729b5722b1">hx509_validate_ctx_set_print()</a>.</li></ul>
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>the context to the print function. If the ctx is NULL, stdout is used. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>fmt</em>&nbsp;</td><td>the printing format. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>va</em>&nbsp;</td><td>the argumet list. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5e3ded9ba5c466a2c6f80b9d233b69c3"></a><!-- doxytag: member="print.c::hx509_validate_cert" ref="g5e3ded9ba5c466a2c6f80b9d233b69c3" args="(hx509_context context, hx509_validate_ctx ctx, hx509_cert cert)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_validate_cert </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_validate_ctx&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>cert</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Validate/Print the status of the certificate.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>A hx509 validation context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>the cerificate to validate/print.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gdfc4c934e63c8c7b10661520de70411e"></a><!-- doxytag: member="print.c::hx509_validate_ctx_add_flags" ref="gdfc4c934e63c8c7b10661520de70411e" args="(hx509_validate_ctx ctx, int flags)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_validate_ctx_add_flags </td>
+ <td>(</td>
+ <td class="paramtype">hx509_validate_ctx&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>flags</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add flags to control the behaivor of the <a class="el" href="group__hx509__print.html#g5e3ded9ba5c466a2c6f80b9d233b69c3">hx509_validate_cert()</a> function.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>A hx509 validation context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>flags to add to the validation context.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g72409ecab29eec94cc0215ed21ecca8e"></a><!-- doxytag: member="print.c::hx509_validate_ctx_free" ref="g72409ecab29eec94cc0215ed21ecca8e" args="(hx509_validate_ctx ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_validate_ctx_free </td>
+ <td>(</td>
+ <td class="paramtype">hx509_validate_ctx&nbsp;</td>
+ <td class="paramname"> <em>ctx</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free an hx509 validate context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>the hx509 validate context to free. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g582e93c29a1becbe5c2ac1ac758e09f4"></a><!-- doxytag: member="print.c::hx509_validate_ctx_init" ref="g582e93c29a1becbe5c2ac1ac758e09f4" args="(hx509_context context, hx509_validate_ctx *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_validate_ctx_init </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_validate_ctx *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Allocate a hx509 validation/printing context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>a new allocated hx509 validation context, free with <a class="el" href="group__hx509__print.html#g72409ecab29eec94cc0215ed21ecca8e">hx509_validate_ctx_free()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2fab228a24716340f368fa729b5722b1"></a><!-- doxytag: member="print.c::hx509_validate_ctx_set_print" ref="g2fab228a24716340f368fa729b5722b1" args="(hx509_validate_ctx ctx, hx509_vprint_func func, void *c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_validate_ctx_set_print </td>
+ <td>(</td>
+ <td class="paramtype">hx509_validate_ctx&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_vprint_func&nbsp;</td>
+ <td class="paramname"> <em>func</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>c</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the printing functions for the validation context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>a hx509 valication context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>the printing function to usea. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>the context variable to the printing function.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:14 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__query.html b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__query.html
new file mode 100644
index 000000000000..4ef973c60918
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__query.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: hx509 query functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hx509 query functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:13 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__revoke.html b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__revoke.html
new file mode 100644
index 000000000000..1e375f779342
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__revoke.html
@@ -0,0 +1,378 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: hx509 revokation checking functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hx509 revokation checking functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__revoke.html#g83057d3c52d4b298b92571d48cf7099e">hx509_revoke_init</a> (hx509_context context, hx509_revoke_ctx *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__revoke.html#gc0928df8a473e5a76fd8a2785d43ea9b">hx509_revoke_free</a> (hx509_revoke_ctx *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__revoke.html#gbda08999b0473bda2077b54c96be79e9">hx509_revoke_add_ocsp</a> (hx509_context context, hx509_revoke_ctx ctx, const char *path)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__revoke.html#g90c30e6adae77012e1360bb502b57c72">hx509_revoke_add_crl</a> (hx509_context context, hx509_revoke_ctx ctx, const char *path)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__revoke.html#g3faf6194dc7429f8850e02b3ae2bbeeb">hx509_revoke_verify</a> (hx509_context context, hx509_revoke_ctx ctx, hx509_certs certs, time_t now, hx509_cert cert, hx509_cert parent_cert)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__revoke.html#gef3bddfe2f6b619ced673cf9aef07c37">hx509_ocsp_request</a> (hx509_context context, hx509_certs reqcerts, hx509_certs pool, hx509_cert signer, const AlgorithmIdentifier *digest, heim_octet_string *request, heim_octet_string *nonce)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__revoke.html#gb55b117222f61fd628744f2cd6d5a218">hx509_revoke_ocsp_print</a> (hx509_context context, const char *path, FILE *out)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+See the <a class="el" href="page_revoke.html">Revocation methods</a> for description and examples. <hr><h2>Function Documentation</h2>
+<a class="anchor" name="gef3bddfe2f6b619ced673cf9aef07c37"></a><!-- doxytag: member="revoke.c::hx509_ocsp_request" ref="gef3bddfe2f6b619ced673cf9aef07c37" args="(hx509_context context, hx509_certs reqcerts, hx509_certs pool, hx509_cert signer, const AlgorithmIdentifier *digest, heim_octet_string *request, heim_octet_string *nonce)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ocsp_request </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>reqcerts</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>pool</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>signer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const AlgorithmIdentifier *&nbsp;</td>
+ <td class="paramname"> <em>digest</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">heim_octet_string *&nbsp;</td>
+ <td class="paramname"> <em>request</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">heim_octet_string *&nbsp;</td>
+ <td class="paramname"> <em>nonce</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create an OCSP request for a set of certificates.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>reqcerts</em>&nbsp;</td><td>list of certificates to request ocsp data for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>certificate pool to use when signing </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>signer</em>&nbsp;</td><td>certificate to use to sign the request </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>digest</em>&nbsp;</td><td>the signing algorithm in the request, if NULL use the default signature algorithm, </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>request</em>&nbsp;</td><td>the encoded request, free with free_heim_octet_string(). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>nonce</em>&nbsp;</td><td>nonce in the request, free with free_heim_octet_string().</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g90c30e6adae77012e1360bb502b57c72"></a><!-- doxytag: member="revoke.c::hx509_revoke_add_crl" ref="g90c30e6adae77012e1360bb502b57c72" args="(hx509_context context, hx509_revoke_ctx ctx, const char *path)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_revoke_add_crl </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_revoke_ctx&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>path</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add a CRL file to the revokation context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>hx509 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>hx509 revokation context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>path</em>&nbsp;</td><td>path to file that is going to be added to the context.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gbda08999b0473bda2077b54c96be79e9"></a><!-- doxytag: member="revoke.c::hx509_revoke_add_ocsp" ref="gbda08999b0473bda2077b54c96be79e9" args="(hx509_context context, hx509_revoke_ctx ctx, const char *path)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_revoke_add_ocsp </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_revoke_ctx&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>path</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add a OCSP file to the revokation context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>hx509 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>hx509 revokation context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>path</em>&nbsp;</td><td>path to file that is going to be added to the context.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc0928df8a473e5a76fd8a2785d43ea9b"></a><!-- doxytag: member="revoke.c::hx509_revoke_free" ref="gc0928df8a473e5a76fd8a2785d43ea9b" args="(hx509_revoke_ctx *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_revoke_free </td>
+ <td>(</td>
+ <td class="paramtype">hx509_revoke_ctx *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free a hx509 revokation context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>context to be freed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g83057d3c52d4b298b92571d48cf7099e"></a><!-- doxytag: member="revoke.c::hx509_revoke_init" ref="g83057d3c52d4b298b92571d48cf7099e" args="(hx509_context context, hx509_revoke_ctx *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_revoke_init </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_revoke_ctx *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Allocate a revokation context. Free with <a class="el" href="group__hx509__revoke.html#gc0928df8a473e5a76fd8a2785d43ea9b">hx509_revoke_free()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>returns a newly allocated revokation context.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb55b117222f61fd628744f2cd6d5a218"></a><!-- doxytag: member="revoke.c::hx509_revoke_ocsp_print" ref="gb55b117222f61fd628744f2cd6d5a218" args="(hx509_context context, const char *path, FILE *out)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_revoke_ocsp_print </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>path</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&nbsp;</td>
+ <td class="paramname"> <em>out</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Print the OCSP reply stored in a file.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>path</em>&nbsp;</td><td>path to a file with a OCSP reply </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>the out FILE descriptor to print the reply on</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3faf6194dc7429f8850e02b3ae2bbeeb"></a><!-- doxytag: member="revoke.c::hx509_revoke_verify" ref="g3faf6194dc7429f8850e02b3ae2bbeeb" args="(hx509_context context, hx509_revoke_ctx ctx, hx509_certs certs, time_t now, hx509_cert cert, hx509_cert parent_cert)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_revoke_verify </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_revoke_ctx&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>certs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">time_t&nbsp;</td>
+ <td class="paramname"> <em>now</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>cert</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>parent_cert</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Check that a certificate is not expired according to a revokation context. Also need the parent certificte to the check OCSP parent identifier.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>hx509 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>hx509 revokation context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td></td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>now</em>&nbsp;</td><td></td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td></td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>parent_cert</em>&nbsp;</td><td></td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:12 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__verify.html b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__verify.html
new file mode 100644
index 000000000000..2296ed3650e1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/group__hx509__verify.html
@@ -0,0 +1,714 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: hx509 verification functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>hx509 verification functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__verify.html#gcf53ef0c8202b75d946b47266e4777da">hx509_context_set_missing_revoke</a> (hx509_context context, int flag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__verify.html#g53a78d7c374e238354600b754f8ef4c7">hx509_verify_init_ctx</a> (hx509_context context, hx509_verify_ctx *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__verify.html#ga90ca3387075fbdf3ae014beda0b4108">hx509_verify_destroy_ctx</a> (hx509_verify_ctx ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__verify.html#gacc284cfe15ebfd4372aa0725d24e8a0">hx509_verify_attach_anchors</a> (hx509_verify_ctx ctx, hx509_certs set)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__verify.html#gaf1e783c744e3ce3918d7c00f101f1fc">hx509_verify_attach_revoke</a> (hx509_verify_ctx ctx, hx509_revoke_ctx revoke_ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__verify.html#g1490c2944163f25cf02377bae5d0ab37">hx509_verify_set_time</a> (hx509_verify_ctx ctx, time_t t)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__verify.html#g11a6fe7afbd5cee1af2dedeffcaad33c">hx509_verify_set_max_depth</a> (hx509_verify_ctx ctx, unsigned int max_depth)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__verify.html#g50cae1e3d318471ff444770cfec4b0a8">hx509_verify_set_proxy_certificate</a> (hx509_verify_ctx ctx, int boolean)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__verify.html#g7c301cedab40be9a495dea2778202140">hx509_verify_set_strict_rfc3280_verification</a> (hx509_verify_ctx ctx, int boolean)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__verify.html#g1e84c0d08972e2dd87ba89f105183914">hx509_verify_path</a> (hx509_context context, hx509_verify_ctx ctx, hx509_cert cert, hx509_certs pool)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__verify.html#ge7e5973c6c9a66d599c44d9473ade82a">hx509_ocsp_verify</a> (hx509_context context, time_t now, hx509_cert cert, int flags, const void *data, size_t length, time_t *expiration)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__verify.html#g8b46fa446893a189808deabc2bc630d1">hx509_crl_alloc</a> (hx509_context context, hx509_crl *crl)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__verify.html#g51a77209dd8f88e8ca52ad618dc62fe6">hx509_crl_add_revoked_certs</a> (hx509_context context, hx509_crl crl, hx509_certs certs)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__verify.html#gaff0e82873a480d002cc7f1b69f430e8">hx509_crl_lifetime</a> (hx509_context context, hx509_crl crl, int delta)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__verify.html#gb59b054be16d4607aed4001ee071ecb6">hx509_crl_free</a> (hx509_context context, hx509_crl *crl)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__verify.html#g7361cfd5f3b413ea4715977fae210760">hx509_crl_sign</a> (hx509_context context, hx509_cert signer, hx509_crl crl, heim_octet_string *os)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="gcf53ef0c8202b75d946b47266e4777da"></a><!-- doxytag: member="cert.c::hx509_context_set_missing_revoke" ref="gcf53ef0c8202b75d946b47266e4777da" args="(hx509_context context, int flag)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_context_set_missing_revoke </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>flag</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Selects if the <a class="el" href="group__hx509__revoke.html#g3faf6194dc7429f8850e02b3ae2bbeeb">hx509_revoke_verify()</a> function is going to require the existans of a revokation method (OCSP, CRL) or not. Note that <a class="el" href="group__hx509__verify.html#g1e84c0d08972e2dd87ba89f105183914">hx509_verify_path()</a>, <a class="el" href="group__hx509__cms.html#gedaf18507474021a8d092ca6ac90a1ad">hx509_cms_verify_signed()</a>, and other function call <a class="el" href="group__hx509__revoke.html#g3faf6194dc7429f8850e02b3ae2bbeeb">hx509_revoke_verify()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>hx509 context to change the flag for. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flag</em>&nbsp;</td><td>zero, revokation method required, non zero missing revokation method ok </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g51a77209dd8f88e8ca52ad618dc62fe6"></a><!-- doxytag: member="revoke.c::hx509_crl_add_revoked_certs" ref="g51a77209dd8f88e8ca52ad618dc62fe6" args="(hx509_context context, hx509_crl crl, hx509_certs certs)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_crl_add_revoked_certs </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_crl&nbsp;</td>
+ <td class="paramname"> <em>crl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>certs</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add revoked certificate to an CRL context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>crl</em>&nbsp;</td><td>the CRL to add the revoked certificate to. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>keyset of certificate to revoke.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8b46fa446893a189808deabc2bc630d1"></a><!-- doxytag: member="revoke.c::hx509_crl_alloc" ref="g8b46fa446893a189808deabc2bc630d1" args="(hx509_context context, hx509_crl *crl)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_crl_alloc </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_crl *&nbsp;</td>
+ <td class="paramname"> <em>crl</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a CRL context. Use <a class="el" href="group__hx509__verify.html#gb59b054be16d4607aed4001ee071ecb6">hx509_crl_free()</a> to free the CRL context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>crl</em>&nbsp;</td><td>return pointer to a newly allocated CRL context.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb59b054be16d4607aed4001ee071ecb6"></a><!-- doxytag: member="revoke.c::hx509_crl_free" ref="gb59b054be16d4607aed4001ee071ecb6" args="(hx509_context context, hx509_crl *crl)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_crl_free </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_crl *&nbsp;</td>
+ <td class="paramname"> <em>crl</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free a CRL context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>crl</em>&nbsp;</td><td>a CRL context to free. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gaff0e82873a480d002cc7f1b69f430e8"></a><!-- doxytag: member="revoke.c::hx509_crl_lifetime" ref="gaff0e82873a480d002cc7f1b69f430e8" args="(hx509_context context, hx509_crl crl, int delta)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_crl_lifetime </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_crl&nbsp;</td>
+ <td class="paramname"> <em>crl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>delta</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the lifetime of a CRL context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>crl</em>&nbsp;</td><td>a CRL context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>delta</em>&nbsp;</td><td>delta time the certificate is valid, library adds the current time to this.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7361cfd5f3b413ea4715977fae210760"></a><!-- doxytag: member="revoke.c::hx509_crl_sign" ref="g7361cfd5f3b413ea4715977fae210760" args="(hx509_context context, hx509_cert signer, hx509_crl crl, heim_octet_string *os)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_crl_sign </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>signer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_crl&nbsp;</td>
+ <td class="paramname"> <em>crl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">heim_octet_string *&nbsp;</td>
+ <td class="paramname"> <em>os</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sign a CRL and return an encode certificate.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>signer</em>&nbsp;</td><td>certificate to sign the CRL with </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>crl</em>&nbsp;</td><td>the CRL to sign </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>os</em>&nbsp;</td><td>return the signed and encoded CRL, free with free_heim_octet_string()</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge7e5973c6c9a66d599c44d9473ade82a"></a><!-- doxytag: member="revoke.c::hx509_ocsp_verify" ref="ge7e5973c6c9a66d599c44d9473ade82a" args="(hx509_context context, time_t now, hx509_cert cert, int flags, const void *data, size_t length, time_t *expiration)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_ocsp_verify </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">time_t&nbsp;</td>
+ <td class="paramname"> <em>now</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>cert</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>length</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">time_t *&nbsp;</td>
+ <td class="paramname"> <em>expiration</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Verify that the certificate is part of the OCSP reply and it's not expired. Doesn't verify signature the OCSP reply or it's done by a authorized sender, that is assumed to be already done.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a hx509 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>now</em>&nbsp;</td><td>the time right now, if 0, use the current time. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>the certificate to verify </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>flags control the behavior </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>pointer to the encode ocsp reply </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>the length of the encode ocsp reply </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>expiration</em>&nbsp;</td><td>return the time the OCSP will expire and need to be rechecked.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gacc284cfe15ebfd4372aa0725d24e8a0"></a><!-- doxytag: member="cert.c::hx509_verify_attach_anchors" ref="gacc284cfe15ebfd4372aa0725d24e8a0" args="(hx509_verify_ctx ctx, hx509_certs set)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_verify_attach_anchors </td>
+ <td>(</td>
+ <td class="paramtype">hx509_verify_ctx&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>set</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the trust anchors in the verification context, makes an reference to the keyset, so the consumer can free the keyset independent of the destruction of the verification context (ctx). If there already is a keyset attached, it's released.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>a verification context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>set</em>&nbsp;</td><td>a keyset containing the trust anchors. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gaf1e783c744e3ce3918d7c00f101f1fc"></a><!-- doxytag: member="cert.c::hx509_verify_attach_revoke" ref="gaf1e783c744e3ce3918d7c00f101f1fc" args="(hx509_verify_ctx ctx, hx509_revoke_ctx revoke_ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_verify_attach_revoke </td>
+ <td>(</td>
+ <td class="paramtype">hx509_verify_ctx&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_revoke_ctx&nbsp;</td>
+ <td class="paramname"> <em>revoke_ctx</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Attach an revocation context to the verfication context, , makes an reference to the revoke context, so the consumer can free the revoke context independent of the destruction of the verification context. If there is no revoke context, the verification process is NOT going to check any verification status.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>a verification context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>revoke_ctx</em>&nbsp;</td><td>a revoke context. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga90ca3387075fbdf3ae014beda0b4108"></a><!-- doxytag: member="cert.c::hx509_verify_destroy_ctx" ref="ga90ca3387075fbdf3ae014beda0b4108" args="(hx509_verify_ctx ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_verify_destroy_ctx </td>
+ <td>(</td>
+ <td class="paramtype">hx509_verify_ctx&nbsp;</td>
+ <td class="paramname"> <em>ctx</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free an hx509 verification context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>the context to be freed. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g53a78d7c374e238354600b754f8ef4c7"></a><!-- doxytag: member="cert.c::hx509_verify_init_ctx" ref="g53a78d7c374e238354600b754f8ef4c7" args="(hx509_context context, hx509_verify_ctx *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_verify_init_ctx </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_verify_ctx *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Allocate an verification context that is used fo control the verification process.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>returns a pointer to a hx509_verify_ctx object.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1e84c0d08972e2dd87ba89f105183914"></a><!-- doxytag: member="cert.c::hx509_verify_path" ref="g1e84c0d08972e2dd87ba89f105183914" args="(hx509_context context, hx509_verify_ctx ctx, hx509_cert cert, hx509_certs pool)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int hx509_verify_path </td>
+ <td>(</td>
+ <td class="paramtype">hx509_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_verify_ctx&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_cert&nbsp;</td>
+ <td class="paramname"> <em>cert</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">hx509_certs&nbsp;</td>
+ <td class="paramname"> <em>pool</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Build and verify the path for the certificate to the trust anchor specified in the verify context. The path is constructed from the certificate, the pool and the trust anchors.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A hx509 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>A hx509 verification context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</td><td>the certificate to build the path from. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>A keyset of certificates to build the chain from.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#g15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g11a6fe7afbd5cee1af2dedeffcaad33c"></a><!-- doxytag: member="cert.c::hx509_verify_set_max_depth" ref="g11a6fe7afbd5cee1af2dedeffcaad33c" args="(hx509_verify_ctx ctx, unsigned int max_depth)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_verify_set_max_depth </td>
+ <td>(</td>
+ <td class="paramtype">hx509_verify_ctx&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&nbsp;</td>
+ <td class="paramname"> <em>max_depth</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the maximum depth of the certificate chain that the path builder is going to try.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>a verification context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>max_depth</em>&nbsp;</td><td>maxium depth of the certificate chain, include trust anchor. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g50cae1e3d318471ff444770cfec4b0a8"></a><!-- doxytag: member="cert.c::hx509_verify_set_proxy_certificate" ref="g50cae1e3d318471ff444770cfec4b0a8" args="(hx509_verify_ctx ctx, int boolean)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_verify_set_proxy_certificate </td>
+ <td>(</td>
+ <td class="paramtype">hx509_verify_ctx&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>boolean</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Allow or deny the use of proxy certificates<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>a verification context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>boolean</em>&nbsp;</td><td>if non zero, allow proxy certificates. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7c301cedab40be9a495dea2778202140"></a><!-- doxytag: member="cert.c::hx509_verify_set_strict_rfc3280_verification" ref="g7c301cedab40be9a495dea2778202140" args="(hx509_verify_ctx ctx, int boolean)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_verify_set_strict_rfc3280_verification </td>
+ <td>(</td>
+ <td class="paramtype">hx509_verify_ctx&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>boolean</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Select strict RFC3280 verification of certificiates. This means checking key usage on CA certificates, this will make version 1 certificiates unuseable.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>a verification context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>boolean</em>&nbsp;</td><td>if non zero, use strict verification. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1490c2944163f25cf02377bae5d0ab37"></a><!-- doxytag: member="cert.c::hx509_verify_set_time" ref="g1490c2944163f25cf02377bae5d0ab37" args="(hx509_verify_ctx ctx, time_t t)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void hx509_verify_set_time </td>
+ <td>(</td>
+ <td class="paramtype">hx509_verify_ctx&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">time_t&nbsp;</td>
+ <td class="paramname"> <em>t</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the clock time the the verification process is going to use. Used to check certificate in the past and future time. If not set the current time will be used.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>a verification context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>the time the verifiation is using. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:13 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/index.html b/crypto/heimdal/doc/doxyout/hx509/html/index.html
new file mode 100644
index 000000000000..d73d5e184e2b
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/index.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: Heimdal PKIX/X.509 library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal PKIX/X.509 library</h1>
+<p>
+<h3 align="center">1.5.1 </h3><h2><a class="anchor" name="intro">
+Introduction</a></h2>
+Heimdal libhx509 library is a implementation of the PKIX/X.509 and related protocols.<p>
+PKIX/X.509 is ...<p>
+Sections in this manual are:<ul>
+<li><a class="el" href="page_name.html">PKIX/X.509 Names</a></li><li><a class="el" href="page_cert.html">The basic certificate</a></li><li><a class="el" href="page_keyset.html">Certificate store operations</a></li><li><a class="el" href="page_error.html">Hx509 error reporting functions</a></li><li><a class="el" href="page_lock.html">Locking and unlocking certificates and encrypted data.</a></li><li><a class="el" href="page_cms.html">CMS/PKCS7 message functions.</a></li><li><a class="el" href="page_ca.html">Hx509 CA functions</a></li><li><a class="el" href="page_revoke.html">Revocation methods</a></li><li><a class="el" href="page_print.html">Hx509 printing functions</a></li><li><a class="el" href="page_env.html">Hx509 enviroment functions</a></li></ul>
+<p>
+The project web page: <a href="http://www.h5l.org/">http://www.h5l.org/</a> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:09 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/modules.html b/crypto/heimdal/doc/doxyout/hx509/html/modules.html
new file mode 100644
index 000000000000..1ac9379ff1dd
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/modules.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: Module Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li class="current"><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Modules</h1>Here is a list of all modules:<ul>
+<li><a class="el" href="group__hx509.html">hx509 library</a>
+<li><a class="el" href="group__hx509__error.html">hx509 error functions</a>
+<li><a class="el" href="group__hx509__cert.html">hx509 certificate functions</a>
+<li><a class="el" href="group__hx509__keyset.html">hx509 certificate store functions</a>
+<li><a class="el" href="group__hx509__cms.html">hx509 CMS/pkcs7 functions</a>
+<li><a class="el" href="group__hx509__crypto.html">hx509 crypto functions</a>
+<li><a class="el" href="group__hx509__misc.html">hx509 misc functions</a>
+<li><a class="el" href="group__hx509__name.html">hx509 name functions</a>
+<li><a class="el" href="group__hx509__revoke.html">hx509 revokation checking functions</a>
+<li><a class="el" href="group__hx509__verify.html">hx509 verification functions</a>
+<li><a class="el" href="group__hx509__lock.html">hx509 lock functions</a>
+<li><a class="el" href="group__hx509__query.html">hx509 query functions</a>
+<li><a class="el" href="group__hx509__ca.html">hx509 CA functions</a>
+<li><a class="el" href="group__hx509__peer.html">hx509 certificate selecting functions</a>
+<li><a class="el" href="group__hx509__print.html">hx509 printing functions</a>
+<li><a class="el" href="group__hx509__env.html">hx509 enviroment functions</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:14 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/page_ca.html b/crypto/heimdal/doc/doxyout/hx509/html/page_ca.html
new file mode 100644
index 000000000000..fa5201e4b3b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/page_ca.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: Hx509 CA functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="page_ca">Hx509 CA functions </a></h1>See the library functions here: <a class="el" href="group__hx509__ca.html">hx509 CA functions</a> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:09 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/page_cert.html b/crypto/heimdal/doc/doxyout/hx509/html/page_cert.html
new file mode 100644
index 000000000000..897c5f98de12
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/page_cert.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: The basic certificate</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="page_cert">The basic certificate </a></h1>The basic hx509 cerificate object in hx509 is hx509_cert. The hx509_cert object is representing one X509/PKIX certificate and associated attributes; like private key, friendly name, etc.<p>
+A hx509_cert object is usully found via the keyset interfaces (<a class="el" href="page_keyset.html">Certificate store operations</a>), but its also possible to create a certificate directly from a parsed object with <a class="el" href="group__hx509__cert.html#g1aa420f664ce5933f8af4cf6c37fd6f6">hx509_cert_init()</a> and <a class="el" href="group__hx509__cert.html#g479d8c1bf22aa8fdfa448bed1ec54d7b">hx509_cert_init_data()</a>.<p>
+See the library functions here: <a class="el" href="group__hx509__cert.html">hx509 certificate functions</a> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:09 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/page_cms.html b/crypto/heimdal/doc/doxyout/hx509/html/page_cms.html
new file mode 100644
index 000000000000..ad7538914623
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/page_cms.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: CMS/PKCS7 message functions.</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="page_cms">CMS/PKCS7 message functions. </a></h1>CMS is defined in RFC 3369 and is an continuation of the RSA Labs standard PKCS7. The basic messages in CMS is<p>
+<ul>
+<li>SignedData Data signed with private key (RSA, DSA, ECDSA) or secret (symmetric) key</li><li>EnvelopedData Data encrypted with private key (RSA)</li><li>EncryptedData Data encrypted with secret (symmetric) key.</li><li>ContentInfo Wrapper structure including type and data.</li></ul>
+<p>
+See the library functions here: <a class="el" href="group__hx509__cms.html">hx509 CMS/pkcs7 functions</a> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:09 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/page_env.html b/crypto/heimdal/doc/doxyout/hx509/html/page_env.html
new file mode 100644
index 000000000000..add94d6ac7d6
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/page_env.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: Hx509 enviroment functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="page_env">Hx509 enviroment functions </a></h1>See the library functions here: <a class="el" href="group__hx509__env.html">hx509 enviroment functions</a> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:09 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/page_error.html b/crypto/heimdal/doc/doxyout/hx509/html/page_error.html
new file mode 100644
index 000000000000..8055b3870f16
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/page_error.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: Hx509 error reporting functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="page_error">Hx509 error reporting functions </a></h1>See the library functions here: <a class="el" href="group__hx509__error.html">hx509 error functions</a> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:09 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/page_keyset.html b/crypto/heimdal/doc/doxyout/hx509/html/page_keyset.html
new file mode 100644
index 000000000000..4bd2894be0cf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/page_keyset.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: Certificate store operations</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="page_keyset">Certificate store operations </a></h1>Type of certificates store:<ul>
+<li>MEMORY In memory based format. Doesnt support storing.</li><li>FILE FILE supports raw DER certicates and PEM certicates. When PEM is used the file can contain may certificates and match private keys. Support storing the certificates. DER format only supports on certificate and no private key.</li><li>PEM-FILE Same as FILE, defaulting to PEM encoded certificates.</li><li>PEM-FILE Same as FILE, defaulting to DER encoded certificates.</li><li>PKCS11</li><li>PKCS12</li><li>DIR</li><li>KEYCHAIN Apple Mac OS X KeyChain backed keychain object.</li></ul>
+<p>
+See the library functions here: <a class="el" href="group__hx509__keyset.html">hx509 certificate store functions</a> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:09 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/page_lock.html b/crypto/heimdal/doc/doxyout/hx509/html/page_lock.html
new file mode 100644
index 000000000000..9758006f0425
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/page_lock.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: Locking and unlocking certificates and encrypted data.</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="page_lock">Locking and unlocking certificates and encrypted data. </a></h1>See the library functions here: <a class="el" href="group__hx509__lock.html">hx509 lock functions</a> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:09 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/page_name.html b/crypto/heimdal/doc/doxyout/hx509/html/page_name.html
new file mode 100644
index 000000000000..cc69c1c0ae9f
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/page_name.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: PKIX/X.509 Names</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="page_name">PKIX/X.509 Names </a></h1>There are several names in PKIX/X.509, GeneralName and Name.<p>
+A Name consists of an ordered list of Relative Distinguished Names (RDN). Each RDN consists of an unordered list of typed strings. The types are defined by OID and have long and short description. For example id-at-commonName (2.5.4.3) have the long name CommonName and short name CN. The string itself can be of several encoding, UTF8, UTF16, Teltex string, etc. The type limit what encoding should be used.<p>
+GeneralName is a broader nametype that can contains al kind of stuff like Name, IP addresses, partial Name, etc.<p>
+Name is mapped into a hx509_name object.<p>
+Parse and string name into a hx509_name object with <a class="el" href="group__hx509__name.html#g0565f607a4e57d0911ee7081ad9548c5">hx509_parse_name()</a>, make it back into string representation with <a class="el" href="group__hx509__name.html#g1bd74b34e0aa88b083678ba231d38718">hx509_name_to_string()</a>.<p>
+Name string are defined rfc2253, rfc1779 and X.501.<p>
+See the library functions here: <a class="el" href="group__hx509__name.html">hx509 name functions</a> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:09 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/page_peer.html b/crypto/heimdal/doc/doxyout/hx509/html/page_peer.html
new file mode 100644
index 000000000000..a51ab87db583
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/page_peer.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: Hx509 crypto selecting functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="page_peer">Hx509 crypto selecting functions </a></h1>Peer info structures are used togeter with hx509_crypto_select() to select the best avaible crypto algorithm to use.<p>
+See the library functions here: <a class="el" href="group__hx509__peer.html">hx509 certificate selecting functions</a> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:09 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/page_print.html b/crypto/heimdal/doc/doxyout/hx509/html/page_print.html
new file mode 100644
index 000000000000..aa28eedc2391
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/page_print.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: Hx509 printing functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="page_print">Hx509 printing functions </a></h1>See the library functions here: <a class="el" href="group__hx509__print.html">hx509 printing functions</a> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:09 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/page_revoke.html b/crypto/heimdal/doc/doxyout/hx509/html/page_revoke.html
new file mode 100644
index 000000000000..8115e8bbad13
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/page_revoke.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: Revocation methods</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="page_revoke">Revocation methods </a></h1>There are two revocation method for PKIX/X.509: CRL and OCSP. Revocation is needed if the private key is lost and stolen. Depending on how picky you are, you might want to make revocation for destroyed private keys too (smartcard broken), but that should not be a problem.<p>
+CRL is a list of certifiates that have expired.<p>
+OCSP is an online checking method where the requestor sends a list of certificates to the OCSP server to return a signed reply if they are valid or not. Some services sends a OCSP reply as part of the hand-shake to make the revoktion decision simpler/faster for the client. </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:09 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/pages.html b/crypto/heimdal/doc/doxyout/hx509/html/pages.html
new file mode 100644
index 000000000000..913d7b99455d
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/pages.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalx509library: Page Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Related Pages</h1>Here is a list of all related documentation pages:<ul>
+<li><a class="el" href="page_ca.html">Hx509 CA functions</a>
+
+<li><a class="el" href="page_cert.html">The basic certificate</a>
+
+<li><a class="el" href="page_cms.html">CMS/PKCS7 message functions.</a>
+
+<li><a class="el" href="page_env.html">Hx509 enviroment functions</a>
+
+<li><a class="el" href="page_error.html">Hx509 error reporting functions</a>
+
+<li><a class="el" href="page_keyset.html">Certificate store operations</a>
+
+<li><a class="el" href="page_lock.html">Locking and unlocking certificates and encrypted data.</a>
+
+<li><a class="el" href="page_name.html">PKIX/X.509 Names</a>
+
+<li><a class="el" href="page_peer.html">Hx509 crypto selecting functions</a>
+
+<li><a class="el" href="page_print.html">Hx509 printing functions</a>
+
+<li><a class="el" href="page_revoke.html">Revocation methods</a>
+
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:09 2011 for Heimdalx509library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/tab_b.gif b/crypto/heimdal/doc/doxyout/hx509/html/tab_b.gif
new file mode 100644
index 000000000000..0d623483ffdf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/tab_b.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/tab_l.gif b/crypto/heimdal/doc/doxyout/hx509/html/tab_l.gif
new file mode 100644
index 000000000000..9b1e6337c929
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/tab_l.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/tab_r.gif b/crypto/heimdal/doc/doxyout/hx509/html/tab_r.gif
new file mode 100644
index 000000000000..ce9dd9f533cb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/tab_r.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/hx509/html/tabs.css b/crypto/heimdal/doc/doxyout/hx509/html/tabs.css
new file mode 100644
index 000000000000..95f00a91da30
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/html/tabs.css
@@ -0,0 +1,102 @@
+/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
+
+DIV.tabs
+{
+ float : left;
+ width : 100%;
+ background : url("tab_b.gif") repeat-x bottom;
+ margin-bottom : 4px;
+}
+
+DIV.tabs UL
+{
+ margin : 0px;
+ padding-left : 10px;
+ list-style : none;
+}
+
+DIV.tabs LI, DIV.tabs FORM
+{
+ display : inline;
+ margin : 0px;
+ padding : 0px;
+}
+
+DIV.tabs FORM
+{
+ float : right;
+}
+
+DIV.tabs A
+{
+ float : left;
+ background : url("tab_r.gif") no-repeat right top;
+ border-bottom : 1px solid #84B0C7;
+ font-size : x-small;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+DIV.tabs A:hover
+{
+ background-position: 100% -150px;
+}
+
+DIV.tabs A:link, DIV.tabs A:visited,
+DIV.tabs A:active, DIV.tabs A:hover
+{
+ color: #1A419D;
+}
+
+DIV.tabs SPAN
+{
+ float : left;
+ display : block;
+ background : url("tab_l.gif") no-repeat left top;
+ padding : 5px 9px;
+ white-space : nowrap;
+}
+
+DIV.tabs INPUT
+{
+ float : right;
+ display : inline;
+ font-size : 1em;
+}
+
+DIV.tabs TD
+{
+ font-size : x-small;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+DIV.tabs SPAN {float : none;}
+/* End IE5-Mac hack */
+
+DIV.tabs A:hover SPAN
+{
+ background-position: 0% -150px;
+}
+
+DIV.tabs LI.current A
+{
+ background-position: 100% -150px;
+ border-width : 0px;
+}
+
+DIV.tabs LI.current SPAN
+{
+ background-position: 0% -150px;
+ padding-bottom : 6px;
+}
+
+DIV.navpath
+{
+ background : none;
+ border : none;
+ border-bottom : 1px solid #84B0C7;
+}
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509.3
new file mode 100644
index 000000000000..9c0666d18439
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509.3
@@ -0,0 +1,45 @@
+.TH "hx509 library" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hx509 library \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "int \fBhx509_context_init\fP (hx509_context *context)"
+.br
+.ti -1c
+.RI "void \fBhx509_context_free\fP (hx509_context *context)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "void hx509_context_free (hx509_context * context)"
+.PP
+Free the context allocated by \fBhx509_context_init()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP context to be freed.
+.RE
+.PP
+
+.SS "int hx509_context_init (hx509_context * context)"
+.PP
+Creates a hx509 context that most functions in the library uses. The context is only allowed to be used by one thread at each moment. Free the context with \fBhx509_context_free()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Returns a pointer to new hx509 context.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns an hx509 error code.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_bitstring_print.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_bitstring_print.3
new file mode 100644
index 000000000000..2577d70ee906
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_bitstring_print.3
@@ -0,0 +1 @@
+.so man3/hx509_print.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3
new file mode 100644
index 000000000000..17204a06eb1f
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3
@@ -0,0 +1,573 @@
+.TH "hx509 CA functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hx509 CA functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "int \fBhx509_ca_tbs_init\fP (hx509_context context, hx509_ca_tbs *tbs)"
+.br
+.ti -1c
+.RI "void \fBhx509_ca_tbs_free\fP (hx509_ca_tbs *tbs)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_set_notBefore\fP (hx509_context context, hx509_ca_tbs tbs, time_t t)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_set_notAfter\fP (hx509_context context, hx509_ca_tbs tbs, time_t t)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_set_notAfter_lifetime\fP (hx509_context context, hx509_ca_tbs tbs, time_t delta)"
+.br
+.ti -1c
+.RI "struct units * \fBhx509_ca_tbs_template_units\fP (void)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_set_template\fP (hx509_context context, hx509_ca_tbs tbs, int flags, hx509_cert cert)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_set_ca\fP (hx509_context context, hx509_ca_tbs tbs, int pathLenConstraint)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_set_proxy\fP (hx509_context context, hx509_ca_tbs tbs, int pathLenConstraint)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_set_domaincontroller\fP (hx509_context context, hx509_ca_tbs tbs)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_set_spki\fP (hx509_context context, hx509_ca_tbs tbs, const SubjectPublicKeyInfo *spki)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_set_serialnumber\fP (hx509_context context, hx509_ca_tbs tbs, const heim_integer *serialNumber)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_add_eku\fP (hx509_context context, hx509_ca_tbs tbs, const heim_oid *oid)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_add_crl_dp_uri\fP (hx509_context context, hx509_ca_tbs tbs, const char *uri, hx509_name issuername)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_add_san_otherName\fP (hx509_context context, hx509_ca_tbs tbs, const heim_oid *oid, const heim_octet_string *os)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_add_san_pkinit\fP (hx509_context context, hx509_ca_tbs tbs, const char *principal)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_add_san_ms_upn\fP (hx509_context context, hx509_ca_tbs tbs, const char *principal)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_add_san_jid\fP (hx509_context context, hx509_ca_tbs tbs, const char *jid)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_add_san_hostname\fP (hx509_context context, hx509_ca_tbs tbs, const char *dnsname)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_add_san_rfc822name\fP (hx509_context context, hx509_ca_tbs tbs, const char *rfc822Name)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_set_subject\fP (hx509_context context, hx509_ca_tbs tbs, hx509_name subject)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_set_unique\fP (hx509_context context, hx509_ca_tbs tbs, const heim_bit_string *subjectUniqueID, const heim_bit_string *issuerUniqueID)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_tbs_subject_expand\fP (hx509_context context, hx509_ca_tbs tbs, hx509_env env)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_sign\fP (hx509_context context, hx509_ca_tbs tbs, hx509_cert signer, hx509_cert *certificate)"
+.br
+.ti -1c
+.RI "int \fBhx509_ca_sign_self\fP (hx509_context context, hx509_ca_tbs tbs, hx509_private_key signer, hx509_cert *certificate)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+See the \fBHx509 CA functions\fP for description and examples.
+.SH "Function Documentation"
+.PP
+.SS "int hx509_ca_sign (hx509_context context, hx509_ca_tbs tbs, hx509_cert signer, hx509_cert * certificate)"
+.PP
+Sign a to-be-signed certificate object with a issuer certificate.
+.PP
+The caller needs to at least have called the following functions on the to-be-signed certificate object:
+.IP "\(bu" 2
+\fBhx509_ca_tbs_init()\fP
+.IP "\(bu" 2
+\fBhx509_ca_tbs_set_subject()\fP
+.IP "\(bu" 2
+\fBhx509_ca_tbs_set_spki()\fP
+.PP
+.PP
+When done the to-be-signed certificate object should be freed with \fBhx509_ca_tbs_free()\fP.
+.PP
+When creating self-signed certificate use \fBhx509_ca_sign_self()\fP instead.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIsigner\fP the CA certificate object to sign with (need private key).
+.br
+\fIcertificate\fP return cerificate, free with \fBhx509_cert_free()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_sign_self (hx509_context context, hx509_ca_tbs tbs, hx509_private_key signer, hx509_cert * certificate)"
+.PP
+Work just like \fBhx509_ca_sign()\fP but signs it-self.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIsigner\fP private key to sign with.
+.br
+\fIcertificate\fP return cerificate, free with \fBhx509_cert_free()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_add_crl_dp_uri (hx509_context context, hx509_ca_tbs tbs, const char * uri, hx509_name issuername)"
+.PP
+Add CRL distribution point URI to the to-be-signed certificate object.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIuri\fP uri to the CRL.
+.br
+\fIissuername\fP name of the issuer.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.PP
+issuername not supported
+.SS "int hx509_ca_tbs_add_eku (hx509_context context, hx509_ca_tbs tbs, const heim_oid * oid)"
+.PP
+An an extended key usage to the to-be-signed certificate object. Duplicates will detected and not added.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIoid\fP extended key usage to add.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_add_san_hostname (hx509_context context, hx509_ca_tbs tbs, const char * dnsname)"
+.PP
+Add a Subject Alternative Name hostname to to-be-signed certificate object. A domain match starts with ., an exact match does not.
+.PP
+Example of a an domain match: .domain.se matches the hostname host.domain.se.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIdnsname\fP a hostame.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_add_san_jid (hx509_context context, hx509_ca_tbs tbs, const char * jid)"
+.PP
+Add a Jabber/XMPP jid Subject Alternative Name to the to-be-signed certificate object. The jid is an UTF8 string.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIjid\fP string of an a jabber id in UTF8.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_add_san_ms_upn (hx509_context context, hx509_ca_tbs tbs, const char * principal)"
+.PP
+Add Microsoft UPN Subject Alternative Name to the to-be-signed certificate object. The principal string is a UTF8 string.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIprincipal\fP Microsoft UPN string.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_add_san_otherName (hx509_context context, hx509_ca_tbs tbs, const heim_oid * oid, const heim_octet_string * os)"
+.PP
+Add Subject Alternative Name otherName to the to-be-signed certificate object.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIoid\fP the oid of the OtherName.
+.br
+\fIos\fP data in the other name.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_add_san_pkinit (hx509_context context, hx509_ca_tbs tbs, const char * principal)"
+.PP
+Add Kerberos Subject Alternative Name to the to-be-signed certificate object. The principal string is a UTF8 string.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIprincipal\fP Kerberos principal to add to the certificate.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_add_san_rfc822name (hx509_context context, hx509_ca_tbs tbs, const char * rfc822Name)"
+.PP
+Add a Subject Alternative Name rfc822 (email address) to to-be-signed certificate object.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIrfc822Name\fP a string to a email address.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "void hx509_ca_tbs_free (hx509_ca_tbs * tbs)"
+.PP
+Free an To Be Signed object.
+.PP
+\fBParameters:\fP
+.RS 4
+\fItbs\fP object to free.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_init (hx509_context context, hx509_ca_tbs * tbs)"
+.PP
+Allocate an to-be-signed certificate object that will be converted into an certificate.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP returned to-be-signed certicate object, free with \fBhx509_ca_tbs_free()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_set_ca (hx509_context context, hx509_ca_tbs tbs, int pathLenConstraint)"
+.PP
+Make the to-be-signed certificate object a CA certificate. If the pathLenConstraint is negative path length constraint is used.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIpathLenConstraint\fP path length constraint, negative, no constraint.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_set_domaincontroller (hx509_context context, hx509_ca_tbs tbs)"
+.PP
+Make the to-be-signed certificate object a windows domain controller certificate.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_set_notAfter (hx509_context context, hx509_ca_tbs tbs, time_t t)"
+.PP
+Set the absolute time when the certificate is valid to.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIt\fP time when the certificate will expire
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_set_notAfter_lifetime (hx509_context context, hx509_ca_tbs tbs, time_t delta)"
+.PP
+Set the relative time when the certificiate is going to expire.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIdelta\fP seconds to the certificate is going to expire.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_set_notBefore (hx509_context context, hx509_ca_tbs tbs, time_t t)"
+.PP
+Set the absolute time when the certificate is valid from. If not set the current time will be used.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIt\fP time the certificated will start to be valid
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_set_proxy (hx509_context context, hx509_ca_tbs tbs, int pathLenConstraint)"
+.PP
+Make the to-be-signed certificate object a proxy certificate. If the pathLenConstraint is negative path length constraint is used.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIpathLenConstraint\fP path length constraint, negative, no constraint.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_set_serialnumber (hx509_context context, hx509_ca_tbs tbs, const heim_integer * serialNumber)"
+.PP
+Set the serial number to use for to-be-signed certificate object.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIserialNumber\fP serial number to use for the to-be-signed certificate object.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_set_spki (hx509_context context, hx509_ca_tbs tbs, const SubjectPublicKeyInfo * spki)"
+.PP
+Set the subject public key info (SPKI) in the to-be-signed certificate object. SPKI is the public key and key related parameters in the certificate.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIspki\fP subject public key info to use for the to-be-signed certificate object.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_set_subject (hx509_context context, hx509_ca_tbs tbs, hx509_name subject)"
+.PP
+Set the subject name of a to-be-signed certificate object.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIsubject\fP the name to set a subject.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_set_template (hx509_context context, hx509_ca_tbs tbs, int flags, hx509_cert cert)"
+.PP
+Initialize the to-be-signed certificate object from a template certifiate.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIflags\fP bit field selecting what to copy from the template certifiate.
+.br
+\fIcert\fP template certificate.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_set_unique (hx509_context context, hx509_ca_tbs tbs, const heim_bit_string * subjectUniqueID, const heim_bit_string * issuerUniqueID)"
+.PP
+Set the issuerUniqueID and subjectUniqueID
+.PP
+These are only supposed to be used considered with version 2 certificates, replaced by the two extensions SubjectKeyIdentifier and IssuerKeyIdentifier. This function is to allow application using legacy protocol to issue them.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIissuerUniqueID\fP to be set
+.br
+\fIsubjectUniqueID\fP to be set
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ca_tbs_subject_expand (hx509_context context, hx509_ca_tbs tbs, hx509_env env)"
+.PP
+Expand the the subject name in the to-be-signed certificate object using \fBhx509_name_expand()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fItbs\fP object to be signed.
+.br
+\fIenv\fP enviroment variable to expand variables in the subject name, see hx509_env_init().
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "struct units* hx509_ca_tbs_template_units (void)\fC [read]\fP"
+.PP
+Make of template units, use to build flags argument to \fBhx509_ca_tbs_set_template()\fP with parse_units().
+.PP
+\fBReturns:\fP
+.RS 4
+an units structure.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_sign.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_sign.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_sign.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_sign_self.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_sign_self.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_sign_self.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_crl_dp_uri.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_crl_dp_uri.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_crl_dp_uri.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_eku.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_eku.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_eku.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_hostname.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_hostname.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_hostname.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_jid.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_jid.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_jid.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_ms_upn.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_ms_upn.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_ms_upn.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_otherName.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_otherName.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_otherName.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_pkinit.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_pkinit.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_pkinit.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_rfc822name.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_rfc822name.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_add_san_rfc822name.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_free.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_free.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_free.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_init.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_init.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_init.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_ca.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_ca.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_ca.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_domaincontroller.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_domaincontroller.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_domaincontroller.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_notAfter.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_notAfter.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_notAfter.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_notAfter_lifetime.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_notAfter_lifetime.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_notAfter_lifetime.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_notBefore.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_notBefore.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_notBefore.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_proxy.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_proxy.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_proxy.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_serialnumber.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_serialnumber.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_serialnumber.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_spki.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_spki.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_spki.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_subject.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_subject.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_subject.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_template.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_template.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_template.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_unique.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_unique.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_set_unique.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_subject_expand.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_subject_expand.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_subject_expand.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_template_units.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_template_units.3
new file mode 100644
index 000000000000..8b46f5ce9b89
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca_tbs_template_units.3
@@ -0,0 +1 @@
+.so man3/hx509_ca.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert.3
new file mode 100644
index 000000000000..f57b5438f3c9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert.3
@@ -0,0 +1,700 @@
+.TH "hx509 certificate functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hx509 certificate functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "int \fBhx509_cert_init\fP (hx509_context context, const Certificate *c, hx509_cert *cert)"
+.br
+.ti -1c
+.RI "int \fBhx509_cert_init_data\fP (hx509_context context, const void *ptr, size_t len, hx509_cert *cert)"
+.br
+.ti -1c
+.RI "void \fBhx509_cert_free\fP (hx509_cert cert)"
+.br
+.ti -1c
+.RI "hx509_cert \fBhx509_cert_ref\fP (hx509_cert cert)"
+.br
+.ti -1c
+.RI "void \fBhx509_verify_ctx_f_allow_default_trustanchors\fP (hx509_verify_ctx ctx, int boolean)"
+.br
+.ti -1c
+.RI "int \fBhx509_cert_find_subjectAltName_otherName\fP (hx509_context context, hx509_cert cert, const heim_oid *oid, hx509_octet_string_list *list)"
+.br
+.ti -1c
+.RI "int \fBhx509_cert_cmp\fP (hx509_cert p, hx509_cert q)"
+.br
+.ti -1c
+.RI "int \fBhx509_cert_get_issuer\fP (hx509_cert p, hx509_name *name)"
+.br
+.ti -1c
+.RI "int \fBhx509_cert_get_subject\fP (hx509_cert p, hx509_name *name)"
+.br
+.ti -1c
+.RI "int \fBhx509_cert_get_base_subject\fP (hx509_context context, hx509_cert c, hx509_name *name)"
+.br
+.ti -1c
+.RI "int \fBhx509_cert_get_serialnumber\fP (hx509_cert p, heim_integer *i)"
+.br
+.ti -1c
+.RI "time_t \fBhx509_cert_get_notBefore\fP (hx509_cert p)"
+.br
+.ti -1c
+.RI "time_t \fBhx509_cert_get_notAfter\fP (hx509_cert p)"
+.br
+.ti -1c
+.RI "int \fBhx509_cert_get_SPKI\fP (hx509_context context, hx509_cert p, SubjectPublicKeyInfo *spki)"
+.br
+.ti -1c
+.RI "int \fBhx509_cert_get_SPKI_AlgorithmIdentifier\fP (hx509_context context, hx509_cert p, AlgorithmIdentifier *alg)"
+.br
+.ti -1c
+.RI "int \fBhx509_cert_get_issuer_unique_id\fP (hx509_context context, hx509_cert p, heim_bit_string *issuer)"
+.br
+.ti -1c
+.RI "int \fBhx509_cert_get_subject_unique_id\fP (hx509_context context, hx509_cert p, heim_bit_string *subject)"
+.br
+.ti -1c
+.RI "int \fBhx509_verify_hostname\fP (hx509_context context, const hx509_cert cert, int flags, hx509_hostname_type type, const char *hostname, const struct sockaddr *sa, int sa_size)"
+.br
+.ti -1c
+.RI "hx509_cert_attribute \fBhx509_cert_get_attribute\fP (hx509_cert cert, const heim_oid *oid)"
+.br
+.ti -1c
+.RI "int \fBhx509_cert_set_friendly_name\fP (hx509_cert cert, const char *name)"
+.br
+.ti -1c
+.RI "const char * \fBhx509_cert_get_friendly_name\fP (hx509_cert cert)"
+.br
+.ti -1c
+.RI "int \fBhx509_query_alloc\fP (hx509_context context, hx509_query **q)"
+.br
+.ti -1c
+.RI "void \fBhx509_query_match_option\fP (hx509_query *q, hx509_query_option option)"
+.br
+.ti -1c
+.RI "int \fBhx509_query_match_issuer_serial\fP (hx509_query *q, const Name *issuer, const heim_integer *serialNumber)"
+.br
+.ti -1c
+.RI "int \fBhx509_query_match_friendly_name\fP (hx509_query *q, const char *name)"
+.br
+.ti -1c
+.RI "int \fBhx509_query_match_eku\fP (hx509_query *q, const heim_oid *eku)"
+.br
+.ti -1c
+.RI "int \fBhx509_query_match_cmp_func\fP (hx509_query *q, int(*func)(hx509_context, hx509_cert, void *), void *ctx)"
+.br
+.ti -1c
+.RI "void \fBhx509_query_free\fP (hx509_context context, hx509_query *q)"
+.br
+.ti -1c
+.RI "void \fBhx509_query_statistic_file\fP (hx509_context context, const char *fn)"
+.br
+.ti -1c
+.RI "void \fBhx509_query_unparse_stats\fP (hx509_context context, int printtype, FILE *out)"
+.br
+.ti -1c
+.RI "int \fBhx509_cert_check_eku\fP (hx509_context context, hx509_cert cert, const heim_oid *eku, int allow_any_eku)"
+.br
+.ti -1c
+.RI "int \fBhx509_cert_binary\fP (hx509_context context, hx509_cert c, heim_octet_string *os)"
+.br
+.ti -1c
+.RI "int \fBhx509_print_cert\fP (hx509_context context, hx509_cert cert, FILE *out)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+See the \fBThe basic certificate\fP for description and examples.
+.SH "Function Documentation"
+.PP
+.SS "int hx509_cert_binary (hx509_context context, hx509_cert c, heim_octet_string * os)"
+.PP
+Encodes the hx509 certificate as a DER encode binary.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIc\fP the certificate to encode.
+.br
+\fIos\fP the encode certificate, set to NULL, 0 on case of error. Free the os->data with \fBhx509_xfree()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_cert_check_eku (hx509_context context, hx509_cert cert, const heim_oid * eku, int allow_any_eku)"
+.PP
+Check the extended key usage on the hx509 certificate.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIcert\fP A hx509 context.
+.br
+\fIeku\fP the EKU to check for
+.br
+\fIallow_any_eku\fP if the any EKU is set, allow that to be a substitute.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_cert_cmp (hx509_cert p, hx509_cert q)"
+.PP
+Compare to hx509 certificate object, useful for sorting.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIp\fP a hx509 certificate object.
+.br
+\fIq\fP a hx509 certificate object.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 the objects are the same, returns > 0 is p is 'larger' then q, < 0 if p is 'smaller' then q.
+.RE
+.PP
+
+.SS "int hx509_cert_find_subjectAltName_otherName (hx509_context context, hx509_cert cert, const heim_oid * oid, hx509_octet_string_list * list)"
+.PP
+Return a list of subjectAltNames specified by oid in the certificate. On error the
+.PP
+The returned list of octet string should be freed with \fBhx509_free_octet_string_list()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIcert\fP a hx509 certificate object.
+.br
+\fIoid\fP an oid to for SubjectAltName.
+.br
+\fIlist\fP list of matching SubjectAltName.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "void hx509_cert_free (hx509_cert cert)"
+.PP
+Free reference to the hx509 certificate object, if the refcounter reaches 0, the object if freed. Its allowed to pass in NULL.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcert\fP the cert to free.
+.RE
+.PP
+
+.SS "hx509_cert_attribute hx509_cert_get_attribute (hx509_cert cert, const heim_oid * oid)"
+.PP
+Get an external attribute for the certificate, examples are friendly name and id.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcert\fP hx509 certificate object to search
+.br
+\fIoid\fP an oid to search for.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+an hx509_cert_attribute, only valid as long as the certificate is referenced.
+.RE
+.PP
+
+.SS "int hx509_cert_get_base_subject (hx509_context context, hx509_cert c, hx509_name * name)"
+.PP
+Return the name of the base subject of the hx509 certificate. If the certiicate is a verified proxy certificate, the this function return the base certificate (root of the proxy chain). If the proxy certificate is not verified with the base certificate HX509_PROXY_CERTIFICATE_NOT_CANONICALIZED is returned.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIc\fP a hx509 certificate object.
+.br
+\fIname\fP a pointer to a hx509 name, should be freed by \fBhx509_name_free()\fP. See also \fBhx509_cert_get_subject()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "const char* hx509_cert_get_friendly_name (hx509_cert cert)"
+.PP
+Get friendly name of the certificate.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcert\fP cert to get the friendly name from.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+an friendly name or NULL if there is. The friendly name is only valid as long as the certificate is referenced.
+.RE
+.PP
+
+.SS "int hx509_cert_get_issuer (hx509_cert p, hx509_name * name)"
+.PP
+Return the name of the issuer of the hx509 certificate.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIp\fP a hx509 certificate object.
+.br
+\fIname\fP a pointer to a hx509 name, should be freed by \fBhx509_name_free()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_cert_get_issuer_unique_id (hx509_context context, hx509_cert p, heim_bit_string * issuer)"
+.PP
+Get a copy of the Issuer Unique ID
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509_context
+.br
+\fIp\fP a hx509 certificate
+.br
+\fIissuer\fP the issuer id returned, free with der_free_bit_string()
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP. The error code HX509_EXTENSION_NOT_FOUND is returned if the certificate doesn't have a issuerUniqueID
+.RE
+.PP
+
+.SS "time_t hx509_cert_get_notAfter (hx509_cert p)"
+.PP
+Get notAfter time of the certificate.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIp\fP a hx509 certificate object.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+return not after time.
+.RE
+.PP
+
+.SS "time_t hx509_cert_get_notBefore (hx509_cert p)"
+.PP
+Get notBefore time of the certificate.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIp\fP a hx509 certificate object.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+return not before time
+.RE
+.PP
+
+.SS "int hx509_cert_get_serialnumber (hx509_cert p, heim_integer * i)"
+.PP
+Get serial number of the certificate.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIp\fP a hx509 certificate object.
+.br
+\fIi\fP serial number, should be freed ith der_free_heim_integer().
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_cert_get_SPKI (hx509_context context, hx509_cert p, SubjectPublicKeyInfo * spki)"
+.PP
+Get the SubjectPublicKeyInfo structure from the hx509 certificate.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIp\fP a hx509 certificate object.
+.br
+\fIspki\fP SubjectPublicKeyInfo, should be freed with free_SubjectPublicKeyInfo().
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_cert_get_SPKI_AlgorithmIdentifier (hx509_context context, hx509_cert p, AlgorithmIdentifier * alg)"
+.PP
+Get the AlgorithmIdentifier from the hx509 certificate.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIp\fP a hx509 certificate object.
+.br
+\fIalg\fP AlgorithmIdentifier, should be freed with free_AlgorithmIdentifier(). The algorithmidentifier is typicly rsaEncryption, or id-ecPublicKey, or some other public key mechanism.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_cert_get_subject (hx509_cert p, hx509_name * name)"
+.PP
+Return the name of the subject of the hx509 certificate.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIp\fP a hx509 certificate object.
+.br
+\fIname\fP a pointer to a hx509 name, should be freed by \fBhx509_name_free()\fP. See also \fBhx509_cert_get_base_subject()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_cert_get_subject_unique_id (hx509_context context, hx509_cert p, heim_bit_string * subject)"
+.PP
+Get a copy of the Subect Unique ID
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509_context
+.br
+\fIp\fP a hx509 certificate
+.br
+\fIsubject\fP the subject id returned, free with der_free_bit_string()
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP. The error code HX509_EXTENSION_NOT_FOUND is returned if the certificate doesn't have a subjectUniqueID
+.RE
+.PP
+
+.SS "int hx509_cert_init (hx509_context context, const Certificate * c, hx509_cert * cert)"
+.PP
+Allocate and init an hx509 certificate object from the decoded certificate `c´.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIc\fP
+.br
+\fIcert\fP
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns an hx509 error code.
+.RE
+.PP
+
+.SS "int hx509_cert_init_data (hx509_context context, const void * ptr, size_t len, hx509_cert * cert)"
+.PP
+Just like \fBhx509_cert_init()\fP, but instead of a decode certificate takes an pointer and length to a memory region that contains a DER/BER encoded certificate.
+.PP
+If the memory region doesn't contain just the certificate and nothing more the function will fail with HX509_EXTRA_DATA_AFTER_STRUCTURE.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIptr\fP pointer to memory region containing encoded certificate.
+.br
+\fIlen\fP length of memory region.
+.br
+\fIcert\fP a return pointer to a hx509 certificate object, will contain NULL on error.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "hx509_cert hx509_cert_ref (hx509_cert cert)"
+.PP
+Add a reference to a hx509 certificate object.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcert\fP a pointer to an hx509 certificate object.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the same object as is passed in.
+.RE
+.PP
+
+.SS "int hx509_cert_set_friendly_name (hx509_cert cert, const char * name)"
+.PP
+Set the friendly name on the certificate.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcert\fP The certificate to set the friendly name on
+.br
+\fIname\fP Friendly name.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_print_cert (hx509_context context, hx509_cert cert, FILE * out)"
+.PP
+Print a simple representation of a certificate
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context, can be NULL
+.br
+\fIcert\fP certificate to print
+.br
+\fIout\fP the stdio output stream, if NULL, stdout is used
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code
+.RE
+.PP
+
+.SS "int hx509_query_alloc (hx509_context context, hx509_query ** q)"
+.PP
+Allocate an query controller. Free using \fBhx509_query_free()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIq\fP return pointer to a hx509_query.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "void hx509_query_free (hx509_context context, hx509_query * q)"
+.PP
+Free the query controller.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIq\fP a pointer to the query controller.
+.RE
+.PP
+
+.SS "int hx509_query_match_cmp_func (hx509_query * q, int(*)(hx509_context, hx509_cert, void *) func, void * ctx)"
+.PP
+Set the query controller to match using a specific match function.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIq\fP a hx509 query controller.
+.br
+\fIfunc\fP function to use for matching, if the argument is NULL, the match function is removed.
+.br
+\fIctx\fP context passed to the function.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_query_match_eku (hx509_query * q, const heim_oid * eku)"
+.PP
+Set the query controller to require an one specific EKU (extended key usage). Any previous EKU matching is overwitten. If NULL is passed in as the eku, the EKU requirement is reset.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIq\fP a hx509 query controller.
+.br
+\fIeku\fP an EKU to match on.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_query_match_friendly_name (hx509_query * q, const char * name)"
+.PP
+Set the query controller to match on a friendly name
+.PP
+\fBParameters:\fP
+.RS 4
+\fIq\fP a hx509 query controller.
+.br
+\fIname\fP a friendly name to match on
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_query_match_issuer_serial (hx509_query * q, const Name * issuer, const heim_integer * serialNumber)"
+.PP
+Set the issuer and serial number of match in the query controller. The function make copies of the isser and serial number.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIq\fP a hx509 query controller
+.br
+\fIissuer\fP issuer to search for
+.br
+\fIserialNumber\fP the serialNumber of the issuer.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "void hx509_query_match_option (hx509_query * q, hx509_query_option option)"
+.PP
+Set match options for the hx509 query controller.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIq\fP query controller.
+.br
+\fIoption\fP options to control the query controller.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "void hx509_query_statistic_file (hx509_context context, const char * fn)"
+.PP
+Set a statistic file for the query statistics.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIfn\fP statistics file name
+.RE
+.PP
+
+.SS "void hx509_query_unparse_stats (hx509_context context, int printtype, FILE * out)"
+.PP
+Unparse the statistics file and print the result on a FILE descriptor.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIprinttype\fP tyep to print
+.br
+\fIout\fP the FILE to write the data on.
+.RE
+.PP
+
+.SS "void hx509_verify_ctx_f_allow_default_trustanchors (hx509_verify_ctx ctx, int boolean)"
+.PP
+Allow using the operating system builtin trust anchors if no other trust anchors are configured.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP a verification context
+.br
+\fIboolean\fP if non zero, useing the operating systems builtin trust anchors.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_verify_hostname (hx509_context context, const hx509_cert cert, int flags, hx509_hostname_type type, const char * hostname, const struct sockaddr * sa, int sa_size)"
+.PP
+Verify that the certificate is allowed to be used for the hostname and address.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIcert\fP the certificate to match with
+.br
+\fIflags\fP Flags to modify the behavior:
+.IP "\(bu" 2
+HX509_VHN_F_ALLOW_NO_MATCH no match is ok
+.PP
+.br
+\fItype\fP type of hostname:
+.IP "\(bu" 2
+HX509_HN_HOSTNAME for plain hostname.
+.IP "\(bu" 2
+HX509_HN_DNSSRV for DNS SRV names.
+.PP
+.br
+\fIhostname\fP the hostname to check
+.br
+\fIsa\fP address of the host
+.br
+\fIsa_size\fP length of address
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_binary.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_binary.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_binary.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_check_eku.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_check_eku.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_check_eku.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_cmp.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_cmp.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_cmp.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_find_subjectAltName_otherName.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_find_subjectAltName_otherName.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_find_subjectAltName_otherName.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_free.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_free.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_free.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_SPKI.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_SPKI.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_SPKI.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_SPKI_AlgorithmIdentifier.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_SPKI_AlgorithmIdentifier.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_SPKI_AlgorithmIdentifier.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_attribute.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_attribute.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_attribute.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_base_subject.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_base_subject.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_base_subject.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_friendly_name.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_friendly_name.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_friendly_name.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_issuer.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_issuer.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_issuer.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_issuer_unique_id.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_issuer_unique_id.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_issuer_unique_id.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_notAfter.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_notAfter.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_notAfter.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_notBefore.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_notBefore.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_notBefore.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_serialnumber.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_serialnumber.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_serialnumber.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_subject.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_subject.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_subject.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_subject_unique_id.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_subject_unique_id.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_get_subject_unique_id.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_init.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_init.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_init.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_init_data.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_init_data.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_init_data.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_keyusage_print.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_keyusage_print.3
new file mode 100644
index 000000000000..2577d70ee906
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_keyusage_print.3
@@ -0,0 +1 @@
+.so man3/hx509_print.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_ref.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_ref.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_ref.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_set_friendly_name.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_set_friendly_name.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cert_set_friendly_name.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_add.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_add.3
new file mode 100644
index 000000000000..4543cfc8ff9a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_add.3
@@ -0,0 +1 @@
+.so man3/hx509_keyset.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_append.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_append.3
new file mode 100644
index 000000000000..4543cfc8ff9a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_append.3
@@ -0,0 +1 @@
+.so man3/hx509_keyset.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_end_seq.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_end_seq.3
new file mode 100644
index 000000000000..4543cfc8ff9a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_end_seq.3
@@ -0,0 +1 @@
+.so man3/hx509_keyset.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_filter.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_filter.3
new file mode 100644
index 000000000000..4543cfc8ff9a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_filter.3
@@ -0,0 +1 @@
+.so man3/hx509_keyset.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_find.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_find.3
new file mode 100644
index 000000000000..4543cfc8ff9a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_find.3
@@ -0,0 +1 @@
+.so man3/hx509_keyset.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_free.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_free.3
new file mode 100644
index 000000000000..4543cfc8ff9a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_free.3
@@ -0,0 +1 @@
+.so man3/hx509_keyset.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_info.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_info.3
new file mode 100644
index 000000000000..4543cfc8ff9a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_info.3
@@ -0,0 +1 @@
+.so man3/hx509_keyset.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_init.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_init.3
new file mode 100644
index 000000000000..4543cfc8ff9a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_init.3
@@ -0,0 +1 @@
+.so man3/hx509_keyset.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_iter_f.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_iter_f.3
new file mode 100644
index 000000000000..4543cfc8ff9a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_iter_f.3
@@ -0,0 +1 @@
+.so man3/hx509_keyset.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_merge.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_merge.3
new file mode 100644
index 000000000000..4543cfc8ff9a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_merge.3
@@ -0,0 +1 @@
+.so man3/hx509_keyset.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_next_cert.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_next_cert.3
new file mode 100644
index 000000000000..4543cfc8ff9a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_next_cert.3
@@ -0,0 +1 @@
+.so man3/hx509_keyset.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_start_seq.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_start_seq.3
new file mode 100644
index 000000000000..4543cfc8ff9a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_start_seq.3
@@ -0,0 +1 @@
+.so man3/hx509_keyset.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_store.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_store.3
new file mode 100644
index 000000000000..4543cfc8ff9a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_certs_store.3
@@ -0,0 +1 @@
+.so man3/hx509_keyset.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ci_print_names.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ci_print_names.3
new file mode 100644
index 000000000000..4543cfc8ff9a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ci_print_names.3
@@ -0,0 +1 @@
+.so man3/hx509_keyset.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_clear_error_string.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_clear_error_string.3
new file mode 100644
index 000000000000..191f0f0843f0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_clear_error_string.3
@@ -0,0 +1 @@
+.so man3/hx509_error.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms.3
new file mode 100644
index 000000000000..1661a4b03611
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms.3
@@ -0,0 +1,206 @@
+.TH "hx509 CMS/pkcs7 functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hx509 CMS/pkcs7 functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "int \fBhx509_cms_wrap_ContentInfo\fP (const heim_oid *oid, const heim_octet_string *buf, heim_octet_string *res)"
+.br
+.ti -1c
+.RI "int \fBhx509_cms_unwrap_ContentInfo\fP (const heim_octet_string *in, heim_oid *oid, heim_octet_string *out, int *have_data)"
+.br
+.ti -1c
+.RI "int \fBhx509_cms_unenvelope\fP (hx509_context context, hx509_certs certs, int flags, const void *data, size_t length, const heim_octet_string *encryptedContent, time_t time_now, heim_oid *contentType, heim_octet_string *content)"
+.br
+.ti -1c
+.RI "int \fBhx509_cms_envelope_1\fP (hx509_context context, int flags, hx509_cert cert, const void *data, size_t length, const heim_oid *encryption_type, const heim_oid *contentType, heim_octet_string *content)"
+.br
+.ti -1c
+.RI "int \fBhx509_cms_verify_signed\fP (hx509_context context, hx509_verify_ctx ctx, unsigned int flags, const void *data, size_t length, const heim_octet_string *signedContent, hx509_certs pool, heim_oid *contentType, heim_octet_string *content, hx509_certs *signer_certs)"
+.br
+.ti -1c
+.RI "int \fBhx509_cms_create_signed_1\fP (hx509_context context, int flags, const heim_oid *eContentType, const void *data, size_t length, const AlgorithmIdentifier *digest_alg, hx509_cert cert, hx509_peer_info peer, hx509_certs anchors, hx509_certs pool, heim_octet_string *signed_data)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+See the \fBCMS/PKCS7 message functions.\fP for description and examples.
+.SH "Function Documentation"
+.PP
+.SS "int hx509_cms_create_signed_1 (hx509_context context, int flags, const heim_oid * eContentType, const void * data, size_t length, const AlgorithmIdentifier * digest_alg, hx509_cert cert, hx509_peer_info peer, hx509_certs anchors, hx509_certs pool, heim_octet_string * signed_data)"
+.PP
+Decode SignedData and verify that the signature is correct.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIflags\fP
+.br
+\fIeContentType\fP the type of the data.
+.br
+\fIdata\fP data to sign
+.br
+\fIlength\fP length of the data that data point to.
+.br
+\fIdigest_alg\fP digest algorithm to use, use NULL to get the default or the peer determined algorithm.
+.br
+\fIcert\fP certificate to use for sign the data.
+.br
+\fIpeer\fP info about the peer the message to send the message to, like what digest algorithm to use.
+.br
+\fIanchors\fP trust anchors that the client will use, used to polulate the certificates included in the message
+.br
+\fIpool\fP certificates to use in try to build the path to the trust anchors.
+.br
+\fIsigned_data\fP the output of the function, free with der_free_octet_string().
+.RE
+.PP
+
+.SS "int hx509_cms_envelope_1 (hx509_context context, int flags, hx509_cert cert, const void * data, size_t length, const heim_oid * encryption_type, const heim_oid * contentType, heim_octet_string * content)"
+.PP
+Encrypt end encode EnvelopedData.
+.PP
+Encrypt and encode EnvelopedData. The data is encrypted with a random key and the the random key is encrypted with the certificates private key. This limits what private key type can be used to RSA.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIflags\fP flags to control the behavior.
+.IP "\(bu" 2
+HX509_CMS_EV_NO_KU_CHECK - Dont check KU on certificate
+.IP "\(bu" 2
+HX509_CMS_EV_ALLOW_WEAK - Allow weak crytpo
+.IP "\(bu" 2
+HX509_CMS_EV_ID_NAME - prefer issuer name and serial number
+.PP
+.br
+\fIcert\fP Certificate to encrypt the EnvelopedData encryption key with.
+.br
+\fIdata\fP pointer the data to encrypt.
+.br
+\fIlength\fP length of the data that data point to.
+.br
+\fIencryption_type\fP Encryption cipher to use for the bulk data, use NULL to get default.
+.br
+\fIcontentType\fP type of the data that is encrypted
+.br
+\fIcontent\fP the output of the function, free with der_free_octet_string().
+.RE
+.PP
+
+.SS "int hx509_cms_unenvelope (hx509_context context, hx509_certs certs, int flags, const void * data, size_t length, const heim_octet_string * encryptedContent, time_t time_now, heim_oid * contentType, heim_octet_string * content)"
+.PP
+Decode and unencrypt EnvelopedData.
+.PP
+Extract data and parameteres from from the EnvelopedData. Also supports using detached EnvelopedData.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIcerts\fP Certificate that can decrypt the EnvelopedData encryption key.
+.br
+\fIflags\fP HX509_CMS_UE flags to control the behavior.
+.br
+\fIdata\fP pointer the structure the contains the DER/BER encoded EnvelopedData stucture.
+.br
+\fIlength\fP length of the data that data point to.
+.br
+\fIencryptedContent\fP in case of detached signature, this contains the actual encrypted data, othersize its should be NULL.
+.br
+\fItime_now\fP set the current time, if zero the library uses now as the date.
+.br
+\fIcontentType\fP output type oid, should be freed with der_free_oid().
+.br
+\fIcontent\fP the data, free with der_free_octet_string().
+.RE
+.PP
+
+.SS "int hx509_cms_unwrap_ContentInfo (const heim_octet_string * in, heim_oid * oid, heim_octet_string * out, int * have_data)"
+.PP
+Decode an ContentInfo and unwrap data and oid it.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIin\fP the encoded buffer.
+.br
+\fIoid\fP type of the content.
+.br
+\fIout\fP data to be wrapped.
+.br
+\fIhave_data\fP since the data is optional, this flags show dthe diffrence between no data and the zero length data.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns an hx509 error code.
+.RE
+.PP
+
+.SS "int hx509_cms_verify_signed (hx509_context context, hx509_verify_ctx ctx, unsigned int flags, const void * data, size_t length, const heim_octet_string * signedContent, hx509_certs pool, heim_oid * contentType, heim_octet_string * content, hx509_certs * signer_certs)"
+.PP
+Decode SignedData and verify that the signature is correct.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIctx\fP a hx509 verify context.
+.br
+\fIflags\fP to control the behaivor of the function.
+.IP "\(bu" 2
+HX509_CMS_VS_NO_KU_CHECK - Don't check KeyUsage
+.IP "\(bu" 2
+HX509_CMS_VS_ALLOW_DATA_OID_MISMATCH - allow oid mismatch
+.IP "\(bu" 2
+HX509_CMS_VS_ALLOW_ZERO_SIGNER - no signer, see below.
+.PP
+.br
+\fIdata\fP pointer to CMS SignedData encoded data.
+.br
+\fIlength\fP length of the data that data point to.
+.br
+\fIsignedContent\fP external data used for signature.
+.br
+\fIpool\fP certificate pool to build certificates paths.
+.br
+\fIcontentType\fP free with der_free_oid().
+.br
+\fIcontent\fP the output of the function, free with der_free_octet_string().
+.br
+\fIsigner_certs\fP list of the cerficates used to sign this request, free with \fBhx509_certs_free()\fP.
+.RE
+.PP
+
+.PP
+If HX509_CMS_VS_NO_KU_CHECK is set, allow more liberal search for matching certificates by not considering KeyUsage bits on the certificates.
+.PP
+If HX509_CMS_VS_ALLOW_DATA_OID_MISMATCH, allow encapContentInfo mismatch with the oid in signedAttributes (or if no signedAttributes where use, pkcs7-data oid). This is only needed to work with broken CMS implementations that doesn't follow CMS signedAttributes rules.
+.PP
+If HX509_CMS_VS_NO_VALIDATE flags is set, do not verify the signing certificates and leave that up to the caller.
+.PP
+If HX509_CMS_VS_ALLOW_ZERO_SIGNER is set, allow empty SignerInfo (no signatures). If SignedData have no signatures, the function will return 0 with signer_certs set to NULL. Zero signers is allowed by the standard, but since its only useful in corner cases, it make into a flag that the caller have to turn on.
+.SS "int hx509_cms_wrap_ContentInfo (const heim_oid * oid, const heim_octet_string * buf, heim_octet_string * res)"
+.PP
+Wrap data and oid in a ContentInfo and encode it.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIoid\fP type of the content.
+.br
+\fIbuf\fP data to be wrapped. If a NULL pointer is passed in, the optional content field in the ContentInfo is not going be filled in.
+.br
+\fIres\fP the encoded buffer, the result should be freed with der_free_octet_string().
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns an hx509 error code.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_create_signed_1.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_create_signed_1.3
new file mode 100644
index 000000000000..ce2803ea99dc
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_create_signed_1.3
@@ -0,0 +1 @@
+.so man3/hx509_cms.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_envelope_1.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_envelope_1.3
new file mode 100644
index 000000000000..ce2803ea99dc
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_envelope_1.3
@@ -0,0 +1 @@
+.so man3/hx509_cms.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_unenvelope.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_unenvelope.3
new file mode 100644
index 000000000000..ce2803ea99dc
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_unenvelope.3
@@ -0,0 +1 @@
+.so man3/hx509_cms.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_unwrap_ContentInfo.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_unwrap_ContentInfo.3
new file mode 100644
index 000000000000..ce2803ea99dc
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_unwrap_ContentInfo.3
@@ -0,0 +1 @@
+.so man3/hx509_cms.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_verify_signed.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_verify_signed.3
new file mode 100644
index 000000000000..ce2803ea99dc
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_verify_signed.3
@@ -0,0 +1 @@
+.so man3/hx509_cms.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_wrap_ContentInfo.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_wrap_ContentInfo.3
new file mode 100644
index 000000000000..ce2803ea99dc
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_cms_wrap_ContentInfo.3
@@ -0,0 +1 @@
+.so man3/hx509_cms.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_context_free.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_context_free.3
new file mode 100644
index 000000000000..19c5e816ac65
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_context_free.3
@@ -0,0 +1 @@
+.so man3/hx509.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_context_init.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_context_init.3
new file mode 100644
index 000000000000..19c5e816ac65
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_context_init.3
@@ -0,0 +1 @@
+.so man3/hx509.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_context_set_missing_revoke.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_context_set_missing_revoke.3
new file mode 100644
index 000000000000..e52f771b5297
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_context_set_missing_revoke.3
@@ -0,0 +1 @@
+.so man3/hx509_verify.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_add_revoked_certs.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_add_revoked_certs.3
new file mode 100644
index 000000000000..e52f771b5297
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_add_revoked_certs.3
@@ -0,0 +1 @@
+.so man3/hx509_verify.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_alloc.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_alloc.3
new file mode 100644
index 000000000000..e52f771b5297
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_alloc.3
@@ -0,0 +1 @@
+.so man3/hx509_verify.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_free.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_free.3
new file mode 100644
index 000000000000..e52f771b5297
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_free.3
@@ -0,0 +1 @@
+.so man3/hx509_verify.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_lifetime.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_lifetime.3
new file mode 100644
index 000000000000..e52f771b5297
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_lifetime.3
@@ -0,0 +1 @@
+.so man3/hx509_verify.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_sign.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_sign.3
new file mode 100644
index 000000000000..e52f771b5297
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crl_sign.3
@@ -0,0 +1 @@
+.so man3/hx509_verify.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crypto.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crypto.3
new file mode 100644
index 000000000000..29c385e154b9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_crypto.3
@@ -0,0 +1,40 @@
+.TH "hx509 crypto functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hx509 crypto functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "int \fBhx509_verify_signature\fP (hx509_context context, const hx509_cert signer, const AlgorithmIdentifier *alg, const heim_octet_string *data, const heim_octet_string *sig)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "int hx509_verify_signature (hx509_context context, const hx509_cert signer, const AlgorithmIdentifier * alg, const heim_octet_string * data, const heim_octet_string * sig)"
+.PP
+Verify a signature made using the private key of an certificate.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIsigner\fP the certificate that made the signature.
+.br
+\fIalg\fP algorthm that was used to sign the data.
+.br
+\fIdata\fP the data that was signed.
+.br
+\fIsig\fP the sigature to verify.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3
new file mode 100644
index 000000000000..d8380596c5f9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3
@@ -0,0 +1,143 @@
+.TH "hx509 enviroment functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hx509 enviroment functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "int \fBhx509_env_add\fP (hx509_context context, hx509_env *env, const char *key, const char *value)"
+.br
+.ti -1c
+.RI "int \fBhx509_env_add_binding\fP (hx509_context context, hx509_env *env, const char *key, hx509_env list)"
+.br
+.ti -1c
+.RI "const char * \fBhx509_env_lfind\fP (hx509_context context, hx509_env env, const char *key, size_t len)"
+.br
+.ti -1c
+.RI "const char * \fBhx509_env_find\fP (hx509_context context, hx509_env env, const char *key)"
+.br
+.ti -1c
+.RI "hx509_env \fBhx509_env_find_binding\fP (hx509_context context, hx509_env env, const char *key)"
+.br
+.ti -1c
+.RI "void \fBhx509_env_free\fP (hx509_env *env)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "int hx509_env_add (hx509_context context, hx509_env * env, const char * key, const char * value)"
+.PP
+Add a new key/value pair to the hx509_env.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIenv\fP enviroment to add the enviroment variable too.
+.br
+\fIkey\fP key to add
+.br
+\fIvalue\fP value to add
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_env_add_binding (hx509_context context, hx509_env * env, const char * key, hx509_env list)"
+.PP
+Add a new key/binding pair to the hx509_env.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIenv\fP enviroment to add the enviroment variable too.
+.br
+\fIkey\fP key to add
+.br
+\fIlist\fP binding list to add
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "const char* hx509_env_find (hx509_context context, hx509_env env, const char * key)"
+.PP
+Search the hx509_env for a key.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIenv\fP enviroment to add the enviroment variable too.
+.br
+\fIkey\fP key to search for.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the value if the key is found, NULL otherwise.
+.RE
+.PP
+
+.SS "hx509_env hx509_env_find_binding (hx509_context context, hx509_env env, const char * key)"
+.PP
+Search the hx509_env for a binding.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIenv\fP enviroment to add the enviroment variable too.
+.br
+\fIkey\fP key to search for.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the binding if the key is found, NULL if not found.
+.RE
+.PP
+
+.SS "void hx509_env_free (hx509_env * env)"
+.PP
+Free an hx509_env enviroment context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIenv\fP the enviroment to free.
+.RE
+.PP
+
+.SS "const char* hx509_env_lfind (hx509_context context, hx509_env env, const char * key, size_t len)"
+.PP
+Search the hx509_env for a length based key.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIenv\fP enviroment to add the enviroment variable too.
+.br
+\fIkey\fP key to search for.
+.br
+\fIlen\fP length of key.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the value if the key is found, NULL otherwise.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_add.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_add.3
new file mode 100644
index 000000000000..cdf891871adf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_add.3
@@ -0,0 +1 @@
+.so man3/hx509_env.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_add_binding.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_add_binding.3
new file mode 100644
index 000000000000..cdf891871adf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_add_binding.3
@@ -0,0 +1 @@
+.so man3/hx509_env.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_find.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_find.3
new file mode 100644
index 000000000000..cdf891871adf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_find.3
@@ -0,0 +1 @@
+.so man3/hx509_env.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_find_binding.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_find_binding.3
new file mode 100644
index 000000000000..cdf891871adf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_find_binding.3
@@ -0,0 +1 @@
+.so man3/hx509_env.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_free.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_free.3
new file mode 100644
index 000000000000..cdf891871adf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_free.3
@@ -0,0 +1 @@
+.so man3/hx509_env.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_lfind.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_lfind.3
new file mode 100644
index 000000000000..cdf891871adf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env_lfind.3
@@ -0,0 +1 @@
+.so man3/hx509_env.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_err.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_err.3
new file mode 100644
index 000000000000..191f0f0843f0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_err.3
@@ -0,0 +1 @@
+.so man3/hx509_error.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_error.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_error.3
new file mode 100644
index 000000000000..838aaeb74c0e
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_error.3
@@ -0,0 +1,129 @@
+.TH "hx509 error functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hx509 error functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBhx509_clear_error_string\fP (hx509_context context)"
+.br
+.ti -1c
+.RI "void \fBhx509_set_error_stringv\fP (hx509_context context, int flags, int code, const char *fmt, va_list ap)"
+.br
+.ti -1c
+.RI "void \fBhx509_set_error_string\fP (hx509_context context, int flags, int code, const char *fmt,...)"
+.br
+.ti -1c
+.RI "char * \fBhx509_get_error_string\fP (hx509_context context, int error_code)"
+.br
+.ti -1c
+.RI "void \fBhx509_free_error_string\fP (char *str)"
+.br
+.ti -1c
+.RI "void \fBhx509_err\fP (hx509_context context, int exit_code, int error_code, const char *fmt,...)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+See the \fBHx509 error reporting functions\fP for description and examples.
+.SH "Function Documentation"
+.PP
+.SS "void hx509_clear_error_string (hx509_context context)"
+.PP
+Resets the error strings the hx509 context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.RE
+.PP
+
+.SS "void hx509_err (hx509_context context, int exit_code, int error_code, const char * fmt, ...)"
+.PP
+Print error message and fatally exit from error code
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIexit_code\fP exit() code from process.
+.br
+\fIerror_code\fP Error code for the reason to exit.
+.br
+\fIfmt\fP format string with the exit message.
+.br
+\fI...\fP argument to format string.
+.RE
+.PP
+
+.SS "void hx509_free_error_string (char * str)"
+.PP
+Free error string returned by \fBhx509_get_error_string()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIstr\fP error string to free.
+.RE
+.PP
+
+.SS "char* hx509_get_error_string (hx509_context context, int error_code)"
+.PP
+Get an error string from context associated with error_code.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIerror_code\fP Get error message for this error code.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+error string, free with \fBhx509_free_error_string()\fP.
+.RE
+.PP
+
+.SS "void hx509_set_error_string (hx509_context context, int flags, int code, const char * fmt, ...)"
+.PP
+See \fBhx509_set_error_stringv()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIflags\fP
+.IP "\(bu" 2
+HX509_ERROR_APPEND appends the error string to the old messages (code is updated).
+.PP
+.br
+\fIcode\fP error code related to error message
+.br
+\fIfmt\fP error message format
+.br
+\fI...\fP arguments to error message format
+.RE
+.PP
+
+.SS "void hx509_set_error_stringv (hx509_context context, int flags, int code, const char * fmt, va_list ap)"
+.PP
+Add an error message to the hx509 context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIflags\fP
+.IP "\(bu" 2
+HX509_ERROR_APPEND appends the error string to the old messages (code is updated).
+.PP
+.br
+\fIcode\fP error code related to error message
+.br
+\fIfmt\fP error message format
+.br
+\fIap\fP arguments to error message format
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_free_error_string.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_free_error_string.3
new file mode 100644
index 000000000000..191f0f0843f0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_free_error_string.3
@@ -0,0 +1 @@
+.so man3/hx509_error.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_free_octet_string_list.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_free_octet_string_list.3
new file mode 100644
index 000000000000..f58308e8cd15
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_free_octet_string_list.3
@@ -0,0 +1 @@
+.so man3/hx509_misc.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_general_name_unparse.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_general_name_unparse.3
new file mode 100644
index 000000000000..926e21e01aaf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_general_name_unparse.3
@@ -0,0 +1 @@
+.so man3/hx509_name.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_get_error_string.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_get_error_string.3
new file mode 100644
index 000000000000..191f0f0843f0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_get_error_string.3
@@ -0,0 +1 @@
+.so man3/hx509_error.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_get_one_cert.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_get_one_cert.3
new file mode 100644
index 000000000000..4543cfc8ff9a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_get_one_cert.3
@@ -0,0 +1 @@
+.so man3/hx509_keyset.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_keyset.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_keyset.3
new file mode 100644
index 000000000000..8a5509271176
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_keyset.3
@@ -0,0 +1,373 @@
+.TH "hx509 certificate store functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hx509 certificate store functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "int \fBhx509_certs_init\fP (hx509_context context, const char *name, int flags, hx509_lock lock, hx509_certs *certs)"
+.br
+.ti -1c
+.RI "int \fBhx509_certs_store\fP (hx509_context context, hx509_certs certs, int flags, hx509_lock lock)"
+.br
+.ti -1c
+.RI "void \fBhx509_certs_free\fP (hx509_certs *certs)"
+.br
+.ti -1c
+.RI "int \fBhx509_certs_start_seq\fP (hx509_context context, hx509_certs certs, hx509_cursor *cursor)"
+.br
+.ti -1c
+.RI "int \fBhx509_certs_next_cert\fP (hx509_context context, hx509_certs certs, hx509_cursor cursor, hx509_cert *cert)"
+.br
+.ti -1c
+.RI "int \fBhx509_certs_end_seq\fP (hx509_context context, hx509_certs certs, hx509_cursor cursor)"
+.br
+.ti -1c
+.RI "int \fBhx509_certs_iter_f\fP (hx509_context context, hx509_certs certs, int(*func)(hx509_context, void *, hx509_cert), void *ctx)"
+.br
+.ti -1c
+.RI "int \fBhx509_ci_print_names\fP (hx509_context context, void *ctx, hx509_cert c)"
+.br
+.ti -1c
+.RI "int \fBhx509_certs_add\fP (hx509_context context, hx509_certs certs, hx509_cert cert)"
+.br
+.ti -1c
+.RI "int \fBhx509_certs_find\fP (hx509_context context, hx509_certs certs, const hx509_query *q, hx509_cert *r)"
+.br
+.ti -1c
+.RI "int \fBhx509_certs_filter\fP (hx509_context context, hx509_certs certs, const hx509_query *q, hx509_certs *result)"
+.br
+.ti -1c
+.RI "int \fBhx509_certs_merge\fP (hx509_context context, hx509_certs to, hx509_certs from)"
+.br
+.ti -1c
+.RI "int \fBhx509_certs_append\fP (hx509_context context, hx509_certs to, hx509_lock lock, const char *name)"
+.br
+.ti -1c
+.RI "int \fBhx509_get_one_cert\fP (hx509_context context, hx509_certs certs, hx509_cert *c)"
+.br
+.ti -1c
+.RI "int \fBhx509_certs_info\fP (hx509_context context, hx509_certs certs, int(*func)(void *, const char *), void *ctx)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+See the \fBCertificate store operations\fP for description and examples.
+.SH "Function Documentation"
+.PP
+.SS "int hx509_certs_add (hx509_context context, hx509_certs certs, hx509_cert cert)"
+.PP
+Add a certificate to the certificiate store.
+.PP
+The receiving keyset certs will either increase reference counter of the cert or make a deep copy, either way, the caller needs to free the cert itself.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIcerts\fP certificate store to add the certificate to.
+.br
+\fIcert\fP certificate to add.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns an hx509 error code.
+.RE
+.PP
+
+.SS "int hx509_certs_append (hx509_context context, hx509_certs to, hx509_lock lock, const char * name)"
+.PP
+Same a \fBhx509_certs_merge()\fP but use a lock and name to describe the from source.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIto\fP the store to merge into.
+.br
+\fIlock\fP a lock that unlocks the certificates store, use NULL to select no password/certifictes/prompt lock (see \fBLocking and unlocking certificates and encrypted data.\fP).
+.br
+\fIname\fP name of the source store
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns an hx509 error code.
+.RE
+.PP
+
+.SS "int hx509_certs_end_seq (hx509_context context, hx509_certs certs, hx509_cursor cursor)"
+.PP
+End the iteration over certificates.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIcerts\fP certificate store to iterate over.
+.br
+\fIcursor\fP cursor that will keep track of progress, freed.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns an hx509 error code.
+.RE
+.PP
+
+.SS "int hx509_certs_filter (hx509_context context, hx509_certs certs, const hx509_query * q, hx509_certs * result)"
+.PP
+Filter certificate matching the query.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIcerts\fP certificate store to search.
+.br
+\fIq\fP query allocated with \fBhx509 query functions\fP functions.
+.br
+\fIresult\fP the filtered certificate store, caller must free with \fBhx509_certs_free()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns an hx509 error code.
+.RE
+.PP
+
+.PP
+Return HX509_CERT_NOT_FOUND if no certificate in certs matched the query.
+.SS "int hx509_certs_find (hx509_context context, hx509_certs certs, const hx509_query * q, hx509_cert * r)"
+.PP
+Find a certificate matching the query.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIcerts\fP certificate store to search.
+.br
+\fIq\fP query allocated with \fBhx509 query functions\fP functions.
+.br
+\fIr\fP return certificate (or NULL on error), should be freed with \fBhx509_cert_free()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns an hx509 error code.
+.RE
+.PP
+
+.PP
+Return HX509_CERT_NOT_FOUND if no certificate in certs matched the query.
+.SS "void hx509_certs_free (hx509_certs * certs)"
+.PP
+Free a certificate store.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcerts\fP certificate store to free.
+.RE
+.PP
+
+.SS "int hx509_certs_info (hx509_context context, hx509_certs certs, int(*)(void *, const char *) func, void * ctx)"
+.PP
+Print some info about the certificate store.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIcerts\fP certificate store to print information about.
+.br
+\fIfunc\fP function that will get each line of the information, if NULL is used the data is printed on a FILE descriptor that should be passed in ctx, if ctx also is NULL, stdout is used.
+.br
+\fIctx\fP parameter to func.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns an hx509 error code.
+.RE
+.PP
+
+.SS "int hx509_certs_init (hx509_context context, const char * name, int flags, hx509_lock lock, hx509_certs * certs)"
+.PP
+Open or creates a new hx509 certificate store.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context
+.br
+\fIname\fP name of the store, format is TYPE:type-specific-string, if NULL is used the MEMORY store is used.
+.br
+\fIflags\fP list of flags:
+.IP "\(bu" 2
+HX509_CERTS_CREATE create a new keystore of the specific TYPE.
+.IP "\(bu" 2
+HX509_CERTS_UNPROTECT_ALL fails if any private key failed to be extracted.
+.PP
+.br
+\fIlock\fP a lock that unlocks the certificates store, use NULL to select no password/certifictes/prompt lock (see \fBLocking and unlocking certificates and encrypted data.\fP).
+.br
+\fIcerts\fP return pointer, free with \fBhx509_certs_free()\fP.
+.RE
+.PP
+
+.SS "int hx509_certs_iter_f (hx509_context context, hx509_certs certs, int(*)(hx509_context, void *, hx509_cert) func, void * ctx)"
+.PP
+Iterate over all certificates in a keystore and call an function for each fo them.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIcerts\fP certificate store to iterate over.
+.br
+\fIfunc\fP function to call for each certificate. The function should return non-zero to abort the iteration, that value is passed back to the caller of \fBhx509_certs_iter_f()\fP.
+.br
+\fIctx\fP context variable that will passed to the function.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns an hx509 error code.
+.RE
+.PP
+
+.SS "int hx509_certs_merge (hx509_context context, hx509_certs to, hx509_certs from)"
+.PP
+Merge a certificate store into another. The from store is keep intact.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIto\fP the store to merge into.
+.br
+\fIfrom\fP the store to copy the object from.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns an hx509 error code.
+.RE
+.PP
+
+.SS "int hx509_certs_next_cert (hx509_context context, hx509_certs certs, hx509_cursor cursor, hx509_cert * cert)"
+.PP
+Get next ceritificate from the certificate keystore pointed out by cursor.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIcerts\fP certificate store to iterate over.
+.br
+\fIcursor\fP cursor that keeps track of progress.
+.br
+\fIcert\fP return certificate next in store, NULL if the store contains no more certificates. Free with \fBhx509_cert_free()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns an hx509 error code.
+.RE
+.PP
+
+.SS "int hx509_certs_start_seq (hx509_context context, hx509_certs certs, hx509_cursor * cursor)"
+.PP
+Start the integration
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIcerts\fP certificate store to iterate over
+.br
+\fIcursor\fP cursor that will keep track of progress, free with \fBhx509_certs_end_seq()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns an hx509 error code. HX509_UNSUPPORTED_OPERATION is returned if the certificate store doesn't support the iteration operation.
+.RE
+.PP
+
+.SS "int hx509_certs_store (hx509_context context, hx509_certs certs, int flags, hx509_lock lock)"
+.PP
+Write the certificate store to stable storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIcerts\fP a certificate store to store.
+.br
+\fIflags\fP currently unused, use 0.
+.br
+\fIlock\fP a lock that unlocks the certificates store, use NULL to select no password/certifictes/prompt lock (see \fBLocking and unlocking certificates and encrypted data.\fP).
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns an hx509 error code. HX509_UNSUPPORTED_OPERATION if the certificate store doesn't support the store operation.
+.RE
+.PP
+
+.SS "int hx509_ci_print_names (hx509_context context, void * ctx, hx509_cert c)"
+.PP
+Iterate over all certificates in a keystore and call an function for each fo them.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIcerts\fP certificate store to iterate over.
+.br
+\fIfunc\fP function to call for each certificate. The function should return non-zero to abort the iteration, that value is passed back to the caller of hx509_certs_iter().
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns an hx509 error code. Function to use to \fBhx509_certs_iter_f()\fP as a function argument, the ctx variable to \fBhx509_certs_iter_f()\fP should be a FILE file descriptor.
+.RE
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIctx\fP used by \fBhx509_certs_iter_f()\fP.
+.br
+\fIc\fP a certificate
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns an hx509 error code.
+.RE
+.PP
+
+.SS "int hx509_get_one_cert (hx509_context context, hx509_certs certs, hx509_cert * c)"
+.PP
+Get one random certificate from the certificate store.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIcerts\fP a certificate store to get the certificate from.
+.br
+\fIc\fP return certificate, should be freed with \fBhx509_cert_free()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns an hx509 error code.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_lock.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_lock.3
new file mode 100644
index 000000000000..66233bc98e4a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_lock.3
@@ -0,0 +1,5 @@
+.TH "hx509 lock functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hx509 lock functions \- See the \fBLocking and unlocking certificates and encrypted data.\fP for description and examples.
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_misc.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_misc.3
new file mode 100644
index 000000000000..3e00ce143446
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_misc.3
@@ -0,0 +1,40 @@
+.TH "hx509 misc functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hx509 misc functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBhx509_free_octet_string_list\fP (hx509_octet_string_list *list)"
+.br
+.ti -1c
+.RI "void \fBhx509_xfree\fP (void *ptr)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "void hx509_free_octet_string_list (hx509_octet_string_list * list)"
+.PP
+Free a list of octet strings returned by another hx509 library function.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIlist\fP list to be freed.
+.RE
+.PP
+
+.SS "void hx509_xfree (void * ptr)"
+.PP
+Free a data element allocated in the library.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIptr\fP data to be freed.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name.3
new file mode 100644
index 000000000000..2e3f3eb1c12c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name.3
@@ -0,0 +1,235 @@
+.TH "hx509 name functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hx509 name functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "int \fBhx509_name_to_string\fP (const hx509_name name, char **str)"
+.br
+.ti -1c
+.RI "int \fBhx509_name_cmp\fP (hx509_name n1, hx509_name n2)"
+.br
+.ti -1c
+.RI "int \fBhx509_parse_name\fP (hx509_context context, const char *str, hx509_name *name)"
+.br
+.ti -1c
+.RI "int \fBhx509_name_copy\fP (hx509_context context, const hx509_name from, hx509_name *to)"
+.br
+.ti -1c
+.RI "int \fBhx509_name_to_Name\fP (const hx509_name from, Name *to)"
+.br
+.ti -1c
+.RI "int \fBhx509_name_expand\fP (hx509_context context, hx509_name name, hx509_env env)"
+.br
+.ti -1c
+.RI "void \fBhx509_name_free\fP (hx509_name *name)"
+.br
+.ti -1c
+.RI "int \fBhx509_unparse_der_name\fP (const void *data, size_t length, char **str)"
+.br
+.ti -1c
+.RI "int \fBhx509_name_binary\fP (const hx509_name name, heim_octet_string *os)"
+.br
+.ti -1c
+.RI "int \fBhx509_name_is_null_p\fP (const hx509_name name)"
+.br
+.ti -1c
+.RI "int \fBhx509_general_name_unparse\fP (GeneralName *name, char **str)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+See the \fBPKIX/X.509 Names\fP for description and examples.
+.SH "Function Documentation"
+.PP
+.SS "int hx509_general_name_unparse (GeneralName * name, char ** str)"
+.PP
+Unparse the hx509 name in name into a string.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIname\fP the name to print
+.br
+\fIstr\fP an allocated string returns the name in string form
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_name_binary (const hx509_name name, heim_octet_string * os)"
+.PP
+Convert a hx509_name object to DER encoded name.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIname\fP name to concert
+.br
+\fIos\fP data to a DER encoded name, free the resulting octet string with hx509_xfree(os->data).
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_name_cmp (hx509_name n1, hx509_name n2)"
+.PP
+Compare to hx509 name object, useful for sorting.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIn1\fP a hx509 name object.
+.br
+\fIn2\fP a hx509 name object.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 the objects are the same, returns > 0 is n2 is 'larger' then n2, < 0 if n1 is 'smaller' then n2.
+.RE
+.PP
+
+.SS "int hx509_name_copy (hx509_context context, const hx509_name from, hx509_name * to)"
+.PP
+Copy a hx509 name object.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 cotext.
+.br
+\fIfrom\fP the name to copy from
+.br
+\fIto\fP the name to copy to
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_name_expand (hx509_context context, hx509_name name, hx509_env env)"
+.PP
+Expands variables in the name using env. Variables are on the form ${name}. Useful when dealing with certificate templates.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 cotext.
+.br
+\fIname\fP the name to expand.
+.br
+\fIenv\fP environment variable to expand.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.PP
+Only UTF8String rdnSequence names are allowed
+.SS "void hx509_name_free (hx509_name * name)"
+.PP
+Free a hx509 name object, upond return *name will be NULL.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIname\fP a hx509 name object to be freed.
+.RE
+.PP
+
+.SS "int hx509_name_is_null_p (const hx509_name name)"
+.PP
+Unparse the hx509 name in name into a string.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIname\fP the name to check if its empty/null.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+non zero if the name is empty/null.
+.RE
+.PP
+
+.SS "int hx509_name_to_Name (const hx509_name from, Name * to)"
+.PP
+Convert a hx509_name into a Name.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIfrom\fP the name to copy from
+.br
+\fIto\fP the name to copy to
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_name_to_string (const hx509_name name, char ** str)"
+.PP
+Convert the hx509 name object into a printable string. The resulting string should be freed with free().
+.PP
+\fBParameters:\fP
+.RS 4
+\fIname\fP name to print
+.br
+\fIstr\fP the string to return
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_parse_name (hx509_context context, const char * str, hx509_name * name)"
+.PP
+Parse a string into a hx509 name object.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIstr\fP a string to parse.
+.br
+\fIname\fP the resulting object, NULL in case of error.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_unparse_der_name (const void * data, size_t length, char ** str)"
+.PP
+Convert a DER encoded name info a string.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdata\fP data to a DER/BER encoded name
+.br
+\fIlength\fP length of data
+.br
+\fIstr\fP the resulting string, is NULL on failure.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_binary.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_binary.3
new file mode 100644
index 000000000000..926e21e01aaf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_binary.3
@@ -0,0 +1 @@
+.so man3/hx509_name.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_cmp.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_cmp.3
new file mode 100644
index 000000000000..926e21e01aaf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_cmp.3
@@ -0,0 +1 @@
+.so man3/hx509_name.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_copy.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_copy.3
new file mode 100644
index 000000000000..926e21e01aaf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_copy.3
@@ -0,0 +1 @@
+.so man3/hx509_name.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_expand.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_expand.3
new file mode 100644
index 000000000000..926e21e01aaf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_expand.3
@@ -0,0 +1 @@
+.so man3/hx509_name.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_free.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_free.3
new file mode 100644
index 000000000000..926e21e01aaf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_free.3
@@ -0,0 +1 @@
+.so man3/hx509_name.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_is_null_p.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_is_null_p.3
new file mode 100644
index 000000000000..926e21e01aaf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_is_null_p.3
@@ -0,0 +1 @@
+.so man3/hx509_name.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_to_Name.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_to_Name.3
new file mode 100644
index 000000000000..926e21e01aaf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_to_Name.3
@@ -0,0 +1 @@
+.so man3/hx509_name.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_to_string.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_to_string.3
new file mode 100644
index 000000000000..926e21e01aaf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_name_to_string.3
@@ -0,0 +1 @@
+.so man3/hx509_name.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ocsp_request.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ocsp_request.3
new file mode 100644
index 000000000000..d7d6ccf0d939
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ocsp_request.3
@@ -0,0 +1 @@
+.so man3/hx509_revoke.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ocsp_verify.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ocsp_verify.3
new file mode 100644
index 000000000000..e52f771b5297
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ocsp_verify.3
@@ -0,0 +1 @@
+.so man3/hx509_verify.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_oid_print.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_oid_print.3
new file mode 100644
index 000000000000..2577d70ee906
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_oid_print.3
@@ -0,0 +1 @@
+.so man3/hx509_print.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_oid_sprint.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_oid_sprint.3
new file mode 100644
index 000000000000..2577d70ee906
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_oid_sprint.3
@@ -0,0 +1 @@
+.so man3/hx509_print.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_parse_name.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_parse_name.3
new file mode 100644
index 000000000000..926e21e01aaf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_parse_name.3
@@ -0,0 +1 @@
+.so man3/hx509_name.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer.3
new file mode 100644
index 000000000000..68382f242da8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer.3
@@ -0,0 +1,113 @@
+.TH "hx509 certificate selecting functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hx509 certificate selecting functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "int \fBhx509_peer_info_alloc\fP (hx509_context context, hx509_peer_info *peer)"
+.br
+.ti -1c
+.RI "void \fBhx509_peer_info_free\fP (hx509_peer_info peer)"
+.br
+.ti -1c
+.RI "int \fBhx509_peer_info_set_cert\fP (hx509_peer_info peer, hx509_cert cert)"
+.br
+.ti -1c
+.RI "int \fBhx509_peer_info_add_cms_alg\fP (hx509_context context, hx509_peer_info peer, const AlgorithmIdentifier *val)"
+.br
+.ti -1c
+.RI "int \fBhx509_peer_info_set_cms_algs\fP (hx509_context context, hx509_peer_info peer, const AlgorithmIdentifier *val, size_t len)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "int hx509_peer_info_add_cms_alg (hx509_context context, hx509_peer_info peer, const AlgorithmIdentifier * val)"
+.PP
+Add an additional algorithm that the peer supports.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIpeer\fP the peer to set the new algorithms for
+.br
+\fIval\fP an AlgorithmsIdentier to add
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_peer_info_alloc (hx509_context context, hx509_peer_info * peer)"
+.PP
+Allocate a new peer info structure an init it to default values.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIpeer\fP return an allocated peer, free with \fBhx509_peer_info_free()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "void hx509_peer_info_free (hx509_peer_info peer)"
+.PP
+Free a peer info structure.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpeer\fP peer info to be freed.
+.RE
+.PP
+
+.SS "int hx509_peer_info_set_cert (hx509_peer_info peer, hx509_cert cert)"
+.PP
+Set the certificate that remote peer is using.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpeer\fP peer info to update
+.br
+\fIcert\fP cerificate of the remote peer.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_peer_info_set_cms_algs (hx509_context context, hx509_peer_info peer, const AlgorithmIdentifier * val, size_t len)"
+.PP
+Set the algorithms that the peer supports.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIpeer\fP the peer to set the new algorithms for
+.br
+\fIval\fP array of supported AlgorithmsIdentiers
+.br
+\fIlen\fP length of array val.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_add_cms_alg.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_add_cms_alg.3
new file mode 100644
index 000000000000..b6a9f0fae0b9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_add_cms_alg.3
@@ -0,0 +1 @@
+.so man3/hx509_peer.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_alloc.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_alloc.3
new file mode 100644
index 000000000000..b6a9f0fae0b9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_alloc.3
@@ -0,0 +1 @@
+.so man3/hx509_peer.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_free.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_free.3
new file mode 100644
index 000000000000..b6a9f0fae0b9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_free.3
@@ -0,0 +1 @@
+.so man3/hx509_peer.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_set_cert.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_set_cert.3
new file mode 100644
index 000000000000..b6a9f0fae0b9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_set_cert.3
@@ -0,0 +1 @@
+.so man3/hx509_peer.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_set_cms_algs.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_set_cms_algs.3
new file mode 100644
index 000000000000..b6a9f0fae0b9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_peer_info_set_cms_algs.3
@@ -0,0 +1 @@
+.so man3/hx509_peer.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_print.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_print.3
new file mode 100644
index 000000000000..6523dc651c81
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_print.3
@@ -0,0 +1,211 @@
+.TH "hx509 printing functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hx509 printing functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBhx509_print_stdout\fP (void *ctx, const char *fmt, va_list va)"
+.br
+.ti -1c
+.RI "int \fBhx509_oid_sprint\fP (const heim_oid *oid, char **str)"
+.br
+.ti -1c
+.RI "void \fBhx509_oid_print\fP (const heim_oid *oid, hx509_vprint_func func, void *ctx)"
+.br
+.ti -1c
+.RI "void \fBhx509_bitstring_print\fP (const heim_bit_string *b, hx509_vprint_func func, void *ctx)"
+.br
+.ti -1c
+.RI "int \fBhx509_cert_keyusage_print\fP (hx509_context context, hx509_cert c, char **s)"
+.br
+.ti -1c
+.RI "int \fBhx509_validate_ctx_init\fP (hx509_context context, hx509_validate_ctx *ctx)"
+.br
+.ti -1c
+.RI "void \fBhx509_validate_ctx_set_print\fP (hx509_validate_ctx ctx, hx509_vprint_func func, void *c)"
+.br
+.ti -1c
+.RI "void \fBhx509_validate_ctx_add_flags\fP (hx509_validate_ctx ctx, int flags)"
+.br
+.ti -1c
+.RI "void \fBhx509_validate_ctx_free\fP (hx509_validate_ctx ctx)"
+.br
+.ti -1c
+.RI "int \fBhx509_validate_cert\fP (hx509_context context, hx509_validate_ctx ctx, hx509_cert cert)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "void hx509_bitstring_print (const heim_bit_string * b, hx509_vprint_func func, void * ctx)"
+.PP
+Print a bitstring using a hx509_vprint_func function. To print to stdout use \fBhx509_print_stdout()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIb\fP bit string to print.
+.br
+\fIfunc\fP hx509_vprint_func to print with.
+.br
+\fIctx\fP context variable to hx509_vprint_func function.
+.RE
+.PP
+
+.SS "int hx509_cert_keyusage_print (hx509_context context, hx509_cert c, char ** s)"
+.PP
+Print certificate usage for a certificate to a string.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIc\fP a certificate print the keyusage for.
+.br
+\fIs\fP the return string with the keysage printed in to, free with \fBhx509_xfree()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "void hx509_oid_print (const heim_oid * oid, hx509_vprint_func func, void * ctx)"
+.PP
+Print a oid using a hx509_vprint_func function. To print to stdout use \fBhx509_print_stdout()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIoid\fP oid to print
+.br
+\fIfunc\fP hx509_vprint_func to print with.
+.br
+\fIctx\fP context variable to hx509_vprint_func function.
+.RE
+.PP
+
+.SS "int hx509_oid_sprint (const heim_oid * oid, char ** str)"
+.PP
+Print a oid to a string.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIoid\fP oid to print
+.br
+\fIstr\fP allocated string, free with \fBhx509_xfree()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "void hx509_print_stdout (void * ctx, const char * fmt, va_list va)"
+.PP
+Helper function to print on stdout for:
+.IP "\(bu" 2
+\fBhx509_oid_print()\fP,
+.IP "\(bu" 2
+\fBhx509_bitstring_print()\fP,
+.IP "\(bu" 2
+\fBhx509_validate_ctx_set_print()\fP.
+.PP
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP the context to the print function. If the ctx is NULL, stdout is used.
+.br
+\fIfmt\fP the printing format.
+.br
+\fIva\fP the argumet list.
+.RE
+.PP
+
+.SS "int hx509_validate_cert (hx509_context context, hx509_validate_ctx ctx, hx509_cert cert)"
+.PP
+Validate/Print the status of the certificate.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIctx\fP A hx509 validation context.
+.br
+\fIcert\fP the cerificate to validate/print.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "void hx509_validate_ctx_add_flags (hx509_validate_ctx ctx, int flags)"
+.PP
+Add flags to control the behaivor of the \fBhx509_validate_cert()\fP function.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP A hx509 validation context.
+.br
+\fIflags\fP flags to add to the validation context.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "void hx509_validate_ctx_free (hx509_validate_ctx ctx)"
+.PP
+Free an hx509 validate context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP the hx509 validate context to free.
+.RE
+.PP
+
+.SS "int hx509_validate_ctx_init (hx509_context context, hx509_validate_ctx * ctx)"
+.PP
+Allocate a hx509 validation/printing context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIctx\fP a new allocated hx509 validation context, free with \fBhx509_validate_ctx_free()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "void hx509_validate_ctx_set_print (hx509_validate_ctx ctx, hx509_vprint_func func, void * c)"
+.PP
+Set the printing functions for the validation context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP a hx509 valication context.
+.br
+\fIfunc\fP the printing function to usea.
+.br
+\fIc\fP the context variable to the printing function.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_print_cert.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_print_cert.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_print_cert.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_print_stdout.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_print_stdout.3
new file mode 100644
index 000000000000..2577d70ee906
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_print_stdout.3
@@ -0,0 +1 @@
+.so man3/hx509_print.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query.3
new file mode 100644
index 000000000000..3bf02a1ff11b
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query.3
@@ -0,0 +1,5 @@
+.TH "hx509 query functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hx509 query functions \-
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_alloc.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_alloc.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_alloc.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_free.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_free.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_free.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_cmp_func.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_cmp_func.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_cmp_func.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_eku.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_eku.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_eku.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_friendly_name.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_friendly_name.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_friendly_name.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_issuer_serial.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_issuer_serial.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_issuer_serial.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_option.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_option.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_match_option.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_statistic_file.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_statistic_file.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_statistic_file.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_unparse_stats.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_unparse_stats.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_query_unparse_stats.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke.3
new file mode 100644
index 000000000000..d040cc5ad881
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke.3
@@ -0,0 +1,171 @@
+.TH "hx509 revokation checking functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hx509 revokation checking functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "int \fBhx509_revoke_init\fP (hx509_context context, hx509_revoke_ctx *ctx)"
+.br
+.ti -1c
+.RI "void \fBhx509_revoke_free\fP (hx509_revoke_ctx *ctx)"
+.br
+.ti -1c
+.RI "int \fBhx509_revoke_add_ocsp\fP (hx509_context context, hx509_revoke_ctx ctx, const char *path)"
+.br
+.ti -1c
+.RI "int \fBhx509_revoke_add_crl\fP (hx509_context context, hx509_revoke_ctx ctx, const char *path)"
+.br
+.ti -1c
+.RI "int \fBhx509_revoke_verify\fP (hx509_context context, hx509_revoke_ctx ctx, hx509_certs certs, time_t now, hx509_cert cert, hx509_cert parent_cert)"
+.br
+.ti -1c
+.RI "int \fBhx509_ocsp_request\fP (hx509_context context, hx509_certs reqcerts, hx509_certs pool, hx509_cert signer, const AlgorithmIdentifier *digest, heim_octet_string *request, heim_octet_string *nonce)"
+.br
+.ti -1c
+.RI "int \fBhx509_revoke_ocsp_print\fP (hx509_context context, const char *path, FILE *out)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+See the \fBRevocation methods\fP for description and examples.
+.SH "Function Documentation"
+.PP
+.SS "int hx509_ocsp_request (hx509_context context, hx509_certs reqcerts, hx509_certs pool, hx509_cert signer, const AlgorithmIdentifier * digest, heim_octet_string * request, heim_octet_string * nonce)"
+.PP
+Create an OCSP request for a set of certificates.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context
+.br
+\fIreqcerts\fP list of certificates to request ocsp data for
+.br
+\fIpool\fP certificate pool to use when signing
+.br
+\fIsigner\fP certificate to use to sign the request
+.br
+\fIdigest\fP the signing algorithm in the request, if NULL use the default signature algorithm,
+.br
+\fIrequest\fP the encoded request, free with free_heim_octet_string().
+.br
+\fInonce\fP nonce in the request, free with free_heim_octet_string().
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_revoke_add_crl (hx509_context context, hx509_revoke_ctx ctx, const char * path)"
+.PP
+Add a CRL file to the revokation context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP hx509 context
+.br
+\fIctx\fP hx509 revokation context
+.br
+\fIpath\fP path to file that is going to be added to the context.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_revoke_add_ocsp (hx509_context context, hx509_revoke_ctx ctx, const char * path)"
+.PP
+Add a OCSP file to the revokation context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP hx509 context
+.br
+\fIctx\fP hx509 revokation context
+.br
+\fIpath\fP path to file that is going to be added to the context.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "void hx509_revoke_free (hx509_revoke_ctx * ctx)"
+.PP
+Free a hx509 revokation context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP context to be freed
+.RE
+.PP
+
+.SS "int hx509_revoke_init (hx509_context context, hx509_revoke_ctx * ctx)"
+.PP
+Allocate a revokation context. Free with \fBhx509_revoke_free()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIctx\fP returns a newly allocated revokation context.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_revoke_ocsp_print (hx509_context context, const char * path, FILE * out)"
+.PP
+Print the OCSP reply stored in a file.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context
+.br
+\fIpath\fP path to a file with a OCSP reply
+.br
+\fIout\fP the out FILE descriptor to print the reply on
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_revoke_verify (hx509_context context, hx509_revoke_ctx ctx, hx509_certs certs, time_t now, hx509_cert cert, hx509_cert parent_cert)"
+.PP
+Check that a certificate is not expired according to a revokation context. Also need the parent certificte to the check OCSP parent identifier.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP hx509 context
+.br
+\fIctx\fP hx509 revokation context
+.br
+\fIcerts\fP
+.br
+\fInow\fP
+.br
+\fIcert\fP
+.br
+\fIparent_cert\fP
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_add_crl.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_add_crl.3
new file mode 100644
index 000000000000..d7d6ccf0d939
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_add_crl.3
@@ -0,0 +1 @@
+.so man3/hx509_revoke.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_add_ocsp.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_add_ocsp.3
new file mode 100644
index 000000000000..d7d6ccf0d939
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_add_ocsp.3
@@ -0,0 +1 @@
+.so man3/hx509_revoke.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_free.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_free.3
new file mode 100644
index 000000000000..d7d6ccf0d939
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_free.3
@@ -0,0 +1 @@
+.so man3/hx509_revoke.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_init.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_init.3
new file mode 100644
index 000000000000..d7d6ccf0d939
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_init.3
@@ -0,0 +1 @@
+.so man3/hx509_revoke.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_ocsp_print.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_ocsp_print.3
new file mode 100644
index 000000000000..d7d6ccf0d939
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_ocsp_print.3
@@ -0,0 +1 @@
+.so man3/hx509_revoke.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_verify.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_verify.3
new file mode 100644
index 000000000000..d7d6ccf0d939
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_revoke_verify.3
@@ -0,0 +1 @@
+.so man3/hx509_revoke.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_set_error_string.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_set_error_string.3
new file mode 100644
index 000000000000..191f0f0843f0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_set_error_string.3
@@ -0,0 +1 @@
+.so man3/hx509_error.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_set_error_stringv.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_set_error_stringv.3
new file mode 100644
index 000000000000..191f0f0843f0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_set_error_stringv.3
@@ -0,0 +1 @@
+.so man3/hx509_error.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_unparse_der_name.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_unparse_der_name.3
new file mode 100644
index 000000000000..926e21e01aaf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_unparse_der_name.3
@@ -0,0 +1 @@
+.so man3/hx509_name.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_cert.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_cert.3
new file mode 100644
index 000000000000..2577d70ee906
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_cert.3
@@ -0,0 +1 @@
+.so man3/hx509_print.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_ctx_add_flags.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_ctx_add_flags.3
new file mode 100644
index 000000000000..2577d70ee906
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_ctx_add_flags.3
@@ -0,0 +1 @@
+.so man3/hx509_print.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_ctx_free.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_ctx_free.3
new file mode 100644
index 000000000000..2577d70ee906
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_ctx_free.3
@@ -0,0 +1 @@
+.so man3/hx509_print.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_ctx_init.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_ctx_init.3
new file mode 100644
index 000000000000..2577d70ee906
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_ctx_init.3
@@ -0,0 +1 @@
+.so man3/hx509_print.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_ctx_set_print.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_ctx_set_print.3
new file mode 100644
index 000000000000..2577d70ee906
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_validate_ctx_set_print.3
@@ -0,0 +1 @@
+.so man3/hx509_print.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3
new file mode 100644
index 000000000000..2b7764593a7d
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3
@@ -0,0 +1,309 @@
+.TH "hx509 verification functions" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+hx509 verification functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBhx509_context_set_missing_revoke\fP (hx509_context context, int flag)"
+.br
+.ti -1c
+.RI "int \fBhx509_verify_init_ctx\fP (hx509_context context, hx509_verify_ctx *ctx)"
+.br
+.ti -1c
+.RI "void \fBhx509_verify_destroy_ctx\fP (hx509_verify_ctx ctx)"
+.br
+.ti -1c
+.RI "void \fBhx509_verify_attach_anchors\fP (hx509_verify_ctx ctx, hx509_certs set)"
+.br
+.ti -1c
+.RI "void \fBhx509_verify_attach_revoke\fP (hx509_verify_ctx ctx, hx509_revoke_ctx revoke_ctx)"
+.br
+.ti -1c
+.RI "void \fBhx509_verify_set_time\fP (hx509_verify_ctx ctx, time_t t)"
+.br
+.ti -1c
+.RI "void \fBhx509_verify_set_max_depth\fP (hx509_verify_ctx ctx, unsigned int max_depth)"
+.br
+.ti -1c
+.RI "void \fBhx509_verify_set_proxy_certificate\fP (hx509_verify_ctx ctx, int boolean)"
+.br
+.ti -1c
+.RI "void \fBhx509_verify_set_strict_rfc3280_verification\fP (hx509_verify_ctx ctx, int boolean)"
+.br
+.ti -1c
+.RI "int \fBhx509_verify_path\fP (hx509_context context, hx509_verify_ctx ctx, hx509_cert cert, hx509_certs pool)"
+.br
+.ti -1c
+.RI "int \fBhx509_ocsp_verify\fP (hx509_context context, time_t now, hx509_cert cert, int flags, const void *data, size_t length, time_t *expiration)"
+.br
+.ti -1c
+.RI "int \fBhx509_crl_alloc\fP (hx509_context context, hx509_crl *crl)"
+.br
+.ti -1c
+.RI "int \fBhx509_crl_add_revoked_certs\fP (hx509_context context, hx509_crl crl, hx509_certs certs)"
+.br
+.ti -1c
+.RI "int \fBhx509_crl_lifetime\fP (hx509_context context, hx509_crl crl, int delta)"
+.br
+.ti -1c
+.RI "void \fBhx509_crl_free\fP (hx509_context context, hx509_crl *crl)"
+.br
+.ti -1c
+.RI "int \fBhx509_crl_sign\fP (hx509_context context, hx509_cert signer, hx509_crl crl, heim_octet_string *os)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "void hx509_context_set_missing_revoke (hx509_context context, int flag)"
+.PP
+Selects if the \fBhx509_revoke_verify()\fP function is going to require the existans of a revokation method (OCSP, CRL) or not. Note that \fBhx509_verify_path()\fP, \fBhx509_cms_verify_signed()\fP, and other function call \fBhx509_revoke_verify()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP hx509 context to change the flag for.
+.br
+\fIflag\fP zero, revokation method required, non zero missing revokation method ok
+.RE
+.PP
+
+.SS "int hx509_crl_add_revoked_certs (hx509_context context, hx509_crl crl, hx509_certs certs)"
+.PP
+Add revoked certificate to an CRL context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIcrl\fP the CRL to add the revoked certificate to.
+.br
+\fIcerts\fP keyset of certificate to revoke.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_crl_alloc (hx509_context context, hx509_crl * crl)"
+.PP
+Create a CRL context. Use \fBhx509_crl_free()\fP to free the CRL context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIcrl\fP return pointer to a newly allocated CRL context.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "void hx509_crl_free (hx509_context context, hx509_crl * crl)"
+.PP
+Free a CRL context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIcrl\fP a CRL context to free.
+.RE
+.PP
+
+.SS "int hx509_crl_lifetime (hx509_context context, hx509_crl crl, int delta)"
+.PP
+Set the lifetime of a CRL context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIcrl\fP a CRL context
+.br
+\fIdelta\fP delta time the certificate is valid, library adds the current time to this.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_crl_sign (hx509_context context, hx509_cert signer, hx509_crl crl, heim_octet_string * os)"
+.PP
+Sign a CRL and return an encode certificate.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context.
+.br
+\fIsigner\fP certificate to sign the CRL with
+.br
+\fIcrl\fP the CRL to sign
+.br
+\fIos\fP return the signed and encoded CRL, free with free_heim_octet_string()
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_ocsp_verify (hx509_context context, time_t now, hx509_cert cert, int flags, const void * data, size_t length, time_t * expiration)"
+.PP
+Verify that the certificate is part of the OCSP reply and it's not expired. Doesn't verify signature the OCSP reply or it's done by a authorized sender, that is assumed to be already done.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a hx509 context
+.br
+\fInow\fP the time right now, if 0, use the current time.
+.br
+\fIcert\fP the certificate to verify
+.br
+\fIflags\fP flags control the behavior
+.br
+\fIdata\fP pointer to the encode ocsp reply
+.br
+\fIlength\fP the length of the encode ocsp reply
+.br
+\fIexpiration\fP return the time the OCSP will expire and need to be rechecked.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "void hx509_verify_attach_anchors (hx509_verify_ctx ctx, hx509_certs set)"
+.PP
+Set the trust anchors in the verification context, makes an reference to the keyset, so the consumer can free the keyset independent of the destruction of the verification context (ctx). If there already is a keyset attached, it's released.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP a verification context
+.br
+\fIset\fP a keyset containing the trust anchors.
+.RE
+.PP
+
+.SS "void hx509_verify_attach_revoke (hx509_verify_ctx ctx, hx509_revoke_ctx revoke_ctx)"
+.PP
+Attach an revocation context to the verfication context, , makes an reference to the revoke context, so the consumer can free the revoke context independent of the destruction of the verification context. If there is no revoke context, the verification process is NOT going to check any verification status.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP a verification context.
+.br
+\fIrevoke_ctx\fP a revoke context.
+.RE
+.PP
+
+.SS "void hx509_verify_destroy_ctx (hx509_verify_ctx ctx)"
+.PP
+Free an hx509 verification context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP the context to be freed.
+.RE
+.PP
+
+.SS "int hx509_verify_init_ctx (hx509_context context, hx509_verify_ctx * ctx)"
+.PP
+Allocate an verification context that is used fo control the verification process.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIctx\fP returns a pointer to a hx509_verify_ctx object.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "int hx509_verify_path (hx509_context context, hx509_verify_ctx ctx, hx509_cert cert, hx509_certs pool)"
+.PP
+Build and verify the path for the certificate to the trust anchor specified in the verify context. The path is constructed from the certificate, the pool and the trust anchors.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A hx509 context.
+.br
+\fIctx\fP A hx509 verification context.
+.br
+\fIcert\fP the certificate to build the path from.
+.br
+\fIpool\fP A keyset of certificates to build the chain from.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An hx509 error code, see \fBhx509_get_error_string()\fP.
+.RE
+.PP
+
+.SS "void hx509_verify_set_max_depth (hx509_verify_ctx ctx, unsigned int max_depth)"
+.PP
+Set the maximum depth of the certificate chain that the path builder is going to try.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP a verification context
+.br
+\fImax_depth\fP maxium depth of the certificate chain, include trust anchor.
+.RE
+.PP
+
+.SS "void hx509_verify_set_proxy_certificate (hx509_verify_ctx ctx, int boolean)"
+.PP
+Allow or deny the use of proxy certificates
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP a verification context
+.br
+\fIboolean\fP if non zero, allow proxy certificates.
+.RE
+.PP
+
+.SS "void hx509_verify_set_strict_rfc3280_verification (hx509_verify_ctx ctx, int boolean)"
+.PP
+Select strict RFC3280 verification of certificiates. This means checking key usage on CA certificates, this will make version 1 certificiates unuseable.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP a verification context
+.br
+\fIboolean\fP if non zero, use strict verification.
+.RE
+.PP
+
+.SS "void hx509_verify_set_time (hx509_verify_ctx ctx, time_t t)"
+.PP
+Set the clock time the the verification process is going to use. Used to check certificate in the past and future time. If not set the current time will be used.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIctx\fP a verification context.
+.br
+\fIt\fP the time the verifiation is using.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_attach_anchors.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_attach_anchors.3
new file mode 100644
index 000000000000..e52f771b5297
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_attach_anchors.3
@@ -0,0 +1 @@
+.so man3/hx509_verify.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_attach_revoke.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_attach_revoke.3
new file mode 100644
index 000000000000..e52f771b5297
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_attach_revoke.3
@@ -0,0 +1 @@
+.so man3/hx509_verify.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_ctx_f_allow_default_trustanchors.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_ctx_f_allow_default_trustanchors.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_ctx_f_allow_default_trustanchors.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_destroy_ctx.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_destroy_ctx.3
new file mode 100644
index 000000000000..e52f771b5297
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_destroy_ctx.3
@@ -0,0 +1 @@
+.so man3/hx509_verify.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_hostname.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_hostname.3
new file mode 100644
index 000000000000..d65a4b6b4f63
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_hostname.3
@@ -0,0 +1 @@
+.so man3/hx509_cert.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_init_ctx.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_init_ctx.3
new file mode 100644
index 000000000000..e52f771b5297
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_init_ctx.3
@@ -0,0 +1 @@
+.so man3/hx509_verify.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_path.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_path.3
new file mode 100644
index 000000000000..e52f771b5297
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_path.3
@@ -0,0 +1 @@
+.so man3/hx509_verify.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_set_max_depth.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_set_max_depth.3
new file mode 100644
index 000000000000..e52f771b5297
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_set_max_depth.3
@@ -0,0 +1 @@
+.so man3/hx509_verify.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_set_proxy_certificate.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_set_proxy_certificate.3
new file mode 100644
index 000000000000..e52f771b5297
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_set_proxy_certificate.3
@@ -0,0 +1 @@
+.so man3/hx509_verify.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_set_strict_rfc3280_verification.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_set_strict_rfc3280_verification.3
new file mode 100644
index 000000000000..e52f771b5297
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_set_strict_rfc3280_verification.3
@@ -0,0 +1 @@
+.so man3/hx509_verify.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_set_time.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_set_time.3
new file mode 100644
index 000000000000..e52f771b5297
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_set_time.3
@@ -0,0 +1 @@
+.so man3/hx509_verify.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_signature.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_signature.3
new file mode 100644
index 000000000000..67b1f7fa6ea6
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify_signature.3
@@ -0,0 +1 @@
+.so man3/hx509_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_xfree.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_xfree.3
new file mode 100644
index 000000000000..f58308e8cd15
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_xfree.3
@@ -0,0 +1 @@
+.so man3/hx509_misc.3
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/page_ca.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_ca.3
new file mode 100644
index 000000000000..7caf10edbd81
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_ca.3
@@ -0,0 +1,6 @@
+.TH "page_ca" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+page_ca \- Hx509 CA functions
+See the library functions here: \fBhx509 CA functions\fP
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/page_cert.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_cert.3
new file mode 100644
index 000000000000..d445250c0f1a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_cert.3
@@ -0,0 +1,10 @@
+.TH "page_cert" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+page_cert \- The basic certificate
+The basic hx509 cerificate object in hx509 is hx509_cert. The hx509_cert object is representing one X509/PKIX certificate and associated attributes; like private key, friendly name, etc.
+.PP
+A hx509_cert object is usully found via the keyset interfaces (\fBCertificate store operations\fP), but its also possible to create a certificate directly from a parsed object with \fBhx509_cert_init()\fP and \fBhx509_cert_init_data()\fP.
+.PP
+See the library functions here: \fBhx509 certificate functions\fP
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/page_cms.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_cms.3
new file mode 100644
index 000000000000..a8be947f5316
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_cms.3
@@ -0,0 +1,18 @@
+.TH "page_cms" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+page_cms \- CMS/PKCS7 message functions.
+CMS is defined in RFC 3369 and is an continuation of the RSA Labs standard PKCS7. The basic messages in CMS is
+.PP
+.IP "\(bu" 2
+SignedData Data signed with private key (RSA, DSA, ECDSA) or secret (symmetric) key
+.IP "\(bu" 2
+EnvelopedData Data encrypted with private key (RSA)
+.IP "\(bu" 2
+EncryptedData Data encrypted with secret (symmetric) key.
+.IP "\(bu" 2
+ContentInfo Wrapper structure including type and data.
+.PP
+.PP
+See the library functions here: \fBhx509 CMS/pkcs7 functions\fP
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.3
new file mode 100644
index 000000000000..d0012741ffbf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.3
@@ -0,0 +1,6 @@
+.TH "page_env" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+page_env \- Hx509 enviroment functions
+See the library functions here: \fBhx509 enviroment functions\fP
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/page_error.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_error.3
new file mode 100644
index 000000000000..ed93a0406b7e
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_error.3
@@ -0,0 +1,6 @@
+.TH "page_error" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+page_error \- Hx509 error reporting functions
+See the library functions here: \fBhx509 error functions\fP
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/page_keyset.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_keyset.3
new file mode 100644
index 000000000000..c2a7519f8e49
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_keyset.3
@@ -0,0 +1,25 @@
+.TH "page_keyset" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+page_keyset \- Certificate store operations
+Type of certificates store:
+.IP "\(bu" 2
+MEMORY In memory based format. Doesnt support storing.
+.IP "\(bu" 2
+FILE FILE supports raw DER certicates and PEM certicates. When PEM is used the file can contain may certificates and match private keys. Support storing the certificates. DER format only supports on certificate and no private key.
+.IP "\(bu" 2
+PEM-FILE Same as FILE, defaulting to PEM encoded certificates.
+.IP "\(bu" 2
+PEM-FILE Same as FILE, defaulting to DER encoded certificates.
+.IP "\(bu" 2
+PKCS11
+.IP "\(bu" 2
+PKCS12
+.IP "\(bu" 2
+DIR
+.IP "\(bu" 2
+KEYCHAIN Apple Mac OS X KeyChain backed keychain object.
+.PP
+.PP
+See the library functions here: \fBhx509 certificate store functions\fP
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/page_lock.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_lock.3
new file mode 100644
index 000000000000..56fdd8656bce
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_lock.3
@@ -0,0 +1,6 @@
+.TH "page_lock" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+page_lock \- Locking and unlocking certificates and encrypted data.
+See the library functions here: \fBhx509 lock functions\fP
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/page_name.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_name.3
new file mode 100644
index 000000000000..8e8a9dfdea59
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_name.3
@@ -0,0 +1,18 @@
+.TH "page_name" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+page_name \- PKIX/X.509 Names
+There are several names in PKIX/X.509, GeneralName and Name.
+.PP
+A Name consists of an ordered list of Relative Distinguished Names (RDN). Each RDN consists of an unordered list of typed strings. The types are defined by OID and have long and short description. For example id-at-commonName (2.5.4.3) have the long name CommonName and short name CN. The string itself can be of several encoding, UTF8, UTF16, Teltex string, etc. The type limit what encoding should be used.
+.PP
+GeneralName is a broader nametype that can contains al kind of stuff like Name, IP addresses, partial Name, etc.
+.PP
+Name is mapped into a hx509_name object.
+.PP
+Parse and string name into a hx509_name object with \fBhx509_parse_name()\fP, make it back into string representation with \fBhx509_name_to_string()\fP.
+.PP
+Name string are defined rfc2253, rfc1779 and X.501.
+.PP
+See the library functions here: \fBhx509 name functions\fP
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/page_peer.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_peer.3
new file mode 100644
index 000000000000..7e8b67e6d11b
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_peer.3
@@ -0,0 +1,8 @@
+.TH "page_peer" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+page_peer \- Hx509 crypto selecting functions
+Peer info structures are used togeter with hx509_crypto_select() to select the best avaible crypto algorithm to use.
+.PP
+See the library functions here: \fBhx509 certificate selecting functions\fP
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/page_print.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_print.3
new file mode 100644
index 000000000000..3837994ba764
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_print.3
@@ -0,0 +1,6 @@
+.TH "page_print" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+page_print \- Hx509 printing functions
+See the library functions here: \fBhx509 printing functions\fP
diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/page_revoke.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_revoke.3
new file mode 100644
index 000000000000..1d4a33a44589
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_revoke.3
@@ -0,0 +1,10 @@
+.TH "page_revoke" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalx509library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+page_revoke \- Revocation methods
+There are two revocation method for PKIX/X.509: CRL and OCSP. Revocation is needed if the private key is lost and stolen. Depending on how picky you are, you might want to make revocation for destroyed private keys too (smartcard broken), but that should not be a problem.
+.PP
+CRL is a list of certifiates that have expired.
+.PP
+OCSP is an online checking method where the requestor sends a list of certificates to the OCSP server to return a signed reply if they are valid or not. Some services sends a OCSP reply as part of the hand-shake to make the revoktion decision simpler/faster for the client.
diff --git a/crypto/heimdal/doc/doxyout/hx509/manpages b/crypto/heimdal/doc/doxyout/hx509/manpages
new file mode 100644
index 000000000000..6c621d2482a2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/hx509/manpages
@@ -0,0 +1,172 @@
+hx509/man/man3/hx509.3
+hx509/man/man3/hx509_bitstring_print.3
+hx509/man/man3/hx509_ca.3
+hx509/man/man3/hx509_ca_sign.3
+hx509/man/man3/hx509_ca_sign_self.3
+hx509/man/man3/hx509_ca_tbs_add_crl_dp_uri.3
+hx509/man/man3/hx509_ca_tbs_add_eku.3
+hx509/man/man3/hx509_ca_tbs_add_san_hostname.3
+hx509/man/man3/hx509_ca_tbs_add_san_jid.3
+hx509/man/man3/hx509_ca_tbs_add_san_ms_upn.3
+hx509/man/man3/hx509_ca_tbs_add_san_otherName.3
+hx509/man/man3/hx509_ca_tbs_add_san_pkinit.3
+hx509/man/man3/hx509_ca_tbs_add_san_rfc822name.3
+hx509/man/man3/hx509_ca_tbs_free.3
+hx509/man/man3/hx509_ca_tbs_init.3
+hx509/man/man3/hx509_ca_tbs_set_ca.3
+hx509/man/man3/hx509_ca_tbs_set_domaincontroller.3
+hx509/man/man3/hx509_ca_tbs_set_notAfter.3
+hx509/man/man3/hx509_ca_tbs_set_notAfter_lifetime.3
+hx509/man/man3/hx509_ca_tbs_set_notBefore.3
+hx509/man/man3/hx509_ca_tbs_set_proxy.3
+hx509/man/man3/hx509_ca_tbs_set_serialnumber.3
+hx509/man/man3/hx509_ca_tbs_set_spki.3
+hx509/man/man3/hx509_ca_tbs_set_subject.3
+hx509/man/man3/hx509_ca_tbs_set_template.3
+hx509/man/man3/hx509_ca_tbs_set_unique.3
+hx509/man/man3/hx509_ca_tbs_subject_expand.3
+hx509/man/man3/hx509_ca_tbs_template_units.3
+hx509/man/man3/hx509_cert.3
+hx509/man/man3/hx509_cert_binary.3
+hx509/man/man3/hx509_cert_check_eku.3
+hx509/man/man3/hx509_cert_cmp.3
+hx509/man/man3/hx509_cert_find_subjectAltName_otherName.3
+hx509/man/man3/hx509_cert_free.3
+hx509/man/man3/hx509_cert_get_attribute.3
+hx509/man/man3/hx509_cert_get_base_subject.3
+hx509/man/man3/hx509_cert_get_friendly_name.3
+hx509/man/man3/hx509_cert_get_issuer.3
+hx509/man/man3/hx509_cert_get_issuer_unique_id.3
+hx509/man/man3/hx509_cert_get_notAfter.3
+hx509/man/man3/hx509_cert_get_notBefore.3
+hx509/man/man3/hx509_cert_get_serialnumber.3
+hx509/man/man3/hx509_cert_get_SPKI.3
+hx509/man/man3/hx509_cert_get_SPKI_AlgorithmIdentifier.3
+hx509/man/man3/hx509_cert_get_subject.3
+hx509/man/man3/hx509_cert_get_subject_unique_id.3
+hx509/man/man3/hx509_cert_init.3
+hx509/man/man3/hx509_cert_init_data.3
+hx509/man/man3/hx509_cert_keyusage_print.3
+hx509/man/man3/hx509_cert_ref.3
+hx509/man/man3/hx509_cert_set_friendly_name.3
+hx509/man/man3/hx509_certs_add.3
+hx509/man/man3/hx509_certs_append.3
+hx509/man/man3/hx509_certs_end_seq.3
+hx509/man/man3/hx509_certs_filter.3
+hx509/man/man3/hx509_certs_find.3
+hx509/man/man3/hx509_certs_free.3
+hx509/man/man3/hx509_certs_info.3
+hx509/man/man3/hx509_certs_init.3
+hx509/man/man3/hx509_certs_iter_f.3
+hx509/man/man3/hx509_certs_merge.3
+hx509/man/man3/hx509_certs_next_cert.3
+hx509/man/man3/hx509_certs_start_seq.3
+hx509/man/man3/hx509_certs_store.3
+hx509/man/man3/hx509_ci_print_names.3
+hx509/man/man3/hx509_clear_error_string.3
+hx509/man/man3/hx509_cms.3
+hx509/man/man3/hx509_cms_create_signed_1.3
+hx509/man/man3/hx509_cms_envelope_1.3
+hx509/man/man3/hx509_cms_unenvelope.3
+hx509/man/man3/hx509_cms_unwrap_ContentInfo.3
+hx509/man/man3/hx509_cms_verify_signed.3
+hx509/man/man3/hx509_cms_wrap_ContentInfo.3
+hx509/man/man3/hx509_context_free.3
+hx509/man/man3/hx509_context_init.3
+hx509/man/man3/hx509_context_set_missing_revoke.3
+hx509/man/man3/hx509_crl_add_revoked_certs.3
+hx509/man/man3/hx509_crl_alloc.3
+hx509/man/man3/hx509_crl_free.3
+hx509/man/man3/hx509_crl_lifetime.3
+hx509/man/man3/hx509_crl_sign.3
+hx509/man/man3/hx509_crypto.3
+hx509/man/man3/hx509_env.3
+hx509/man/man3/hx509_env_add.3
+hx509/man/man3/hx509_env_add_binding.3
+hx509/man/man3/hx509_env_find.3
+hx509/man/man3/hx509_env_find_binding.3
+hx509/man/man3/hx509_env_free.3
+hx509/man/man3/hx509_env_lfind.3
+hx509/man/man3/hx509_err.3
+hx509/man/man3/hx509_error.3
+hx509/man/man3/hx509_free_error_string.3
+hx509/man/man3/hx509_free_octet_string_list.3
+hx509/man/man3/hx509_general_name_unparse.3
+hx509/man/man3/hx509_get_error_string.3
+hx509/man/man3/hx509_get_one_cert.3
+hx509/man/man3/hx509_keyset.3
+hx509/man/man3/hx509_lock.3
+hx509/man/man3/hx509_misc.3
+hx509/man/man3/hx509_name.3
+hx509/man/man3/hx509_name_binary.3
+hx509/man/man3/hx509_name_cmp.3
+hx509/man/man3/hx509_name_copy.3
+hx509/man/man3/hx509_name_expand.3
+hx509/man/man3/hx509_name_free.3
+hx509/man/man3/hx509_name_is_null_p.3
+hx509/man/man3/hx509_name_to_Name.3
+hx509/man/man3/hx509_name_to_string.3
+hx509/man/man3/hx509_ocsp_request.3
+hx509/man/man3/hx509_ocsp_verify.3
+hx509/man/man3/hx509_oid_print.3
+hx509/man/man3/hx509_oid_sprint.3
+hx509/man/man3/hx509_parse_name.3
+hx509/man/man3/hx509_peer.3
+hx509/man/man3/hx509_peer_info_add_cms_alg.3
+hx509/man/man3/hx509_peer_info_alloc.3
+hx509/man/man3/hx509_peer_info_free.3
+hx509/man/man3/hx509_peer_info_set_cert.3
+hx509/man/man3/hx509_peer_info_set_cms_algs.3
+hx509/man/man3/hx509_print.3
+hx509/man/man3/hx509_print_cert.3
+hx509/man/man3/hx509_print_stdout.3
+hx509/man/man3/hx509_query.3
+hx509/man/man3/hx509_query_alloc.3
+hx509/man/man3/hx509_query_free.3
+hx509/man/man3/hx509_query_match_cmp_func.3
+hx509/man/man3/hx509_query_match_eku.3
+hx509/man/man3/hx509_query_match_friendly_name.3
+hx509/man/man3/hx509_query_match_issuer_serial.3
+hx509/man/man3/hx509_query_match_option.3
+hx509/man/man3/hx509_query_statistic_file.3
+hx509/man/man3/hx509_query_unparse_stats.3
+hx509/man/man3/hx509_revoke.3
+hx509/man/man3/hx509_revoke_add_crl.3
+hx509/man/man3/hx509_revoke_add_ocsp.3
+hx509/man/man3/hx509_revoke_free.3
+hx509/man/man3/hx509_revoke_init.3
+hx509/man/man3/hx509_revoke_ocsp_print.3
+hx509/man/man3/hx509_revoke_verify.3
+hx509/man/man3/hx509_set_error_string.3
+hx509/man/man3/hx509_set_error_stringv.3
+hx509/man/man3/hx509_unparse_der_name.3
+hx509/man/man3/hx509_validate_cert.3
+hx509/man/man3/hx509_validate_ctx_add_flags.3
+hx509/man/man3/hx509_validate_ctx_free.3
+hx509/man/man3/hx509_validate_ctx_init.3
+hx509/man/man3/hx509_validate_ctx_set_print.3
+hx509/man/man3/hx509_verify.3
+hx509/man/man3/hx509_verify_attach_anchors.3
+hx509/man/man3/hx509_verify_attach_revoke.3
+hx509/man/man3/hx509_verify_ctx_f_allow_default_trustanchors.3
+hx509/man/man3/hx509_verify_destroy_ctx.3
+hx509/man/man3/hx509_verify_hostname.3
+hx509/man/man3/hx509_verify_init_ctx.3
+hx509/man/man3/hx509_verify_path.3
+hx509/man/man3/hx509_verify_set_max_depth.3
+hx509/man/man3/hx509_verify_set_proxy_certificate.3
+hx509/man/man3/hx509_verify_set_strict_rfc3280_verification.3
+hx509/man/man3/hx509_verify_set_time.3
+hx509/man/man3/hx509_verify_signature.3
+hx509/man/man3/hx509_xfree.3
+hx509/man/man3/page_ca.3
+hx509/man/man3/page_cert.3
+hx509/man/man3/page_cms.3
+hx509/man/man3/page_env.3
+hx509/man/man3/page_error.3
+hx509/man/man3/page_keyset.3
+hx509/man/man3/page_lock.3
+hx509/man/man3/page_name.3
+hx509/man/man3/page_peer.3
+hx509/man/man3/page_print.3
+hx509/man/man3/page_revoke.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/annotated.html b/crypto/heimdal/doc/doxyout/krb5/html/annotated.html
new file mode 100644
index 000000000000..a1b26bf40a4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/annotated.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Data Structures</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Data Structures</h1>Here are the data structures with brief descriptions:<table>
+ <tr><td class="indexkey"><a class="el" href="structkrb5__crypto__iov.html">krb5_crypto_iov</a></td><td class="indexvalue"></td></tr>
+</table>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/doxygen.css b/crypto/heimdal/doc/doxyout/krb5/html/doxygen.css
new file mode 100644
index 000000000000..22c484301dd1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/doxygen.css
@@ -0,0 +1,473 @@
+BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
+ font-family: Geneva, Arial, Helvetica, sans-serif;
+}
+BODY,TD {
+ font-size: 90%;
+}
+H1 {
+ text-align: center;
+ font-size: 160%;
+}
+H2 {
+ font-size: 120%;
+}
+H3 {
+ font-size: 100%;
+}
+CAPTION {
+ font-weight: bold
+}
+DIV.qindex {
+ width: 100%;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navpath {
+ width: 100%;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navtab {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+TD.navtab {
+ font-size: 70%;
+}
+A.qindex {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D;
+}
+A.qindex:visited {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D
+}
+A.qindex:hover {
+ text-decoration: none;
+ background-color: #ddddff;
+}
+A.qindexHL {
+ text-decoration: none;
+ font-weight: bold;
+ background-color: #6666cc;
+ color: #ffffff;
+ border: 1px double #9295C2;
+}
+A.qindexHL:hover {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff;
+}
+A.qindexHL:visited {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff
+}
+A.el {
+ text-decoration: none;
+ font-weight: bold
+}
+A.elRef {
+ font-weight: bold
+}
+A.code:link {
+ text-decoration: none;
+ font-weight: normal;
+ color: #0000FF
+}
+A.code:visited {
+ text-decoration: none;
+ font-weight: normal;
+ color: #0000FF
+}
+A.codeRef:link {
+ font-weight: normal;
+ color: #0000FF
+}
+A.codeRef:visited {
+ font-weight: normal;
+ color: #0000FF
+}
+A:hover {
+ text-decoration: none;
+ background-color: #f2f2ff
+}
+DL.el {
+ margin-left: -1cm
+}
+.fragment {
+ font-family: monospace, fixed;
+ font-size: 95%;
+}
+PRE.fragment {
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ margin-left: 2px;
+ margin-right: 8px;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+}
+DIV.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px
+}
+
+DIV.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ margin-bottom: 6px;
+ font-weight: bold;
+}
+DIV.groupText {
+ margin-left: 16px;
+ font-style: italic;
+ font-size: 90%
+}
+BODY {
+ background: white;
+ color: black;
+ margin-right: 20px;
+ margin-left: 20px;
+}
+TD.indexkey {
+ background-color: #e8eef2;
+ font-weight: bold;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TD.indexvalue {
+ background-color: #e8eef2;
+ font-style: italic;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TR.memlist {
+ background-color: #f0f0f0;
+}
+P.formulaDsp {
+ text-align: center;
+}
+IMG.formulaDsp {
+}
+IMG.formulaInl {
+ vertical-align: middle;
+}
+SPAN.keyword { color: #008000 }
+SPAN.keywordtype { color: #604020 }
+SPAN.keywordflow { color: #e08000 }
+SPAN.comment { color: #800000 }
+SPAN.preprocessor { color: #806020 }
+SPAN.stringliteral { color: #002080 }
+SPAN.charliteral { color: #008080 }
+SPAN.vhdldigit { color: #ff00ff }
+SPAN.vhdlchar { color: #000000 }
+SPAN.vhdlkeyword { color: #700070 }
+SPAN.vhdllogic { color: #ff0000 }
+
+.mdescLeft {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.mdescRight {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.memItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplParams {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ color: #606060;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+FORM.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+INPUT.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+TD.tiny {
+ font-size: 75%;
+}
+a {
+ color: #1A41A8;
+}
+a:visited {
+ color: #2A3798;
+}
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #84b0c7;
+}
+TH.dirtab {
+ background: #e8eef2;
+ font-weight: bold;
+}
+HR {
+ height: 1px;
+ border: none;
+ border-top: 1px solid black;
+}
+
+/* Style for detailed member documentation */
+.memtemplate {
+ font-size: 80%;
+ color: #606060;
+ font-weight: normal;
+ margin-left: 3px;
+}
+.memnav {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+.memitem {
+ padding: 4px;
+ background-color: #eef3f5;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #dedeee;
+ -moz-border-radius: 8px 8px 8px 8px;
+}
+.memname {
+ white-space: nowrap;
+ font-weight: bold;
+}
+.memdoc{
+ padding-left: 10px;
+}
+.memproto {
+ background-color: #d5e1e8;
+ width: 100%;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #84b0c7;
+ font-weight: bold;
+ -moz-border-radius: 8px 8px 8px 8px;
+}
+.paramkey {
+ text-align: right;
+}
+.paramtype {
+ white-space: nowrap;
+}
+.paramname {
+ color: #602020;
+ font-style: italic;
+ white-space: nowrap;
+}
+/* End Styling for detailed member documentation */
+
+/* for the tree view */
+.ftvtree {
+ font-family: sans-serif;
+ margin:0.5em;
+}
+/* these are for tree view when used as main index */
+.directory {
+ font-size: 9pt;
+ font-weight: bold;
+}
+.directory h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+
+/* The following two styles can be used to replace the root node title */
+/* with an image of your choice. Simply uncomment the next two styles, */
+/* specify the name of your image and be sure to set 'height' to the */
+/* proper pixel height of your image. */
+
+/* .directory h3.swap { */
+/* height: 61px; */
+/* background-repeat: no-repeat; */
+/* background-image: url("yourimage.gif"); */
+/* } */
+/* .directory h3.swap span { */
+/* display: none; */
+/* } */
+
+.directory > h3 {
+ margin-top: 0;
+}
+.directory p {
+ margin: 0px;
+ white-space: nowrap;
+}
+.directory div {
+ display: none;
+ margin: 0px;
+}
+.directory img {
+ vertical-align: -30%;
+}
+/* these are for tree view when not used as main index */
+.directory-alt {
+ font-size: 100%;
+ font-weight: bold;
+}
+.directory-alt h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+.directory-alt > h3 {
+ margin-top: 0;
+}
+.directory-alt p {
+ margin: 0px;
+ white-space: nowrap;
+}
+.directory-alt div {
+ display: none;
+ margin: 0px;
+}
+.directory-alt img {
+ vertical-align: -30%;
+}
+
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/doxygen.png b/crypto/heimdal/doc/doxyout/krb5/html/doxygen.png
new file mode 100644
index 000000000000..f0a274bbaffd
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/doxygen.png
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/graph_legend.dot b/crypto/heimdal/doc/doxyout/krb5/html/graph_legend.dot
new file mode 100644
index 000000000000..4df0f1aa4864
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/graph_legend.dot
@@ -0,0 +1,22 @@
+digraph G
+{
+ edge [fontname="FreeSans",fontsize=10,labelfontname="FreeSans",labelfontsize=10];
+ node [fontname="FreeSans",fontsize=10,shape=record];
+ Node9 [shape="box",label="Inherited",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",fillcolor="grey75",style="filled" fontcolor="black"];
+ Node10 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node10 [shape="box",label="PublicBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPublicBase.html"];
+ Node11 -> Node10 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node11 [shape="box",label="Truncated",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="red",URL="$classTruncated.html"];
+ Node13 -> Node9 [dir=back,color="darkgreen",fontsize=10,style="solid",fontname="FreeSans"];
+ Node13 [shape="box",label="ProtectedBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classProtectedBase.html"];
+ Node14 -> Node9 [dir=back,color="firebrick4",fontsize=10,style="solid",fontname="FreeSans"];
+ Node14 [shape="box",label="PrivateBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPrivateBase.html"];
+ Node15 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node15 [shape="box",label="Undocumented",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="grey75"];
+ Node16 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node16 [shape="box",label="Templ< int >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+ Node17 -> Node16 [dir=back,color="orange",fontsize=10,style="dashed",label="< int >",fontname="FreeSans"];
+ Node17 [shape="box",label="Templ< T >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+ Node18 -> Node9 [dir=back,color="darkorchid3",fontsize=10,style="dashed",label="m_usedClass",fontname="FreeSans"];
+ Node18 [shape="box",label="Used",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classUsed.html"];
+}
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/graph_legend.html b/crypto/heimdal/doc/doxyout/krb5/html/graph_legend.html
new file mode 100644
index 000000000000..0446e821733a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/graph_legend.html
@@ -0,0 +1,89 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Graph Legend</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Graph Legend</h1>This page explains how to interpret the graphs that are generated by doxygen.<p>
+Consider the following example: <div class="fragment"><pre class="fragment"><span class="comment">/*! Invisible class because of truncation */</span>
+<span class="keyword">class </span>Invisible { };
+<span class="comment"></span>
+<span class="comment">/*! Truncated class, inheritance relation is hidden */</span>
+<span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };
+
+<span class="comment">/* Class not documented with doxygen comments */</span>
+<span class="keyword">class </span>Undocumented { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using public inheritance */</span>
+<span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };
+<span class="comment"></span>
+<span class="comment">/*! A template class */</span>
+<span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>Templ { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using protected inheritance */</span>
+<span class="keyword">class </span>ProtectedBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using private inheritance */</span>
+<span class="keyword">class </span>PrivateBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is used by the Inherited class */</span>
+<span class="keyword">class </span>Used { };
+<span class="comment"></span>
+<span class="comment">/*! Super class that inherits a number of other classes */</span>
+<span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,
+ <span class="keyword">protected</span> ProtectedBase,
+ <span class="keyword">private</span> PrivateBase,
+ <span class="keyword">public</span> Undocumented,
+ <span class="keyword">public</span> Templ&lt;int&gt;
+{
+ <span class="keyword">private</span>:
+ Used *m_usedClass;
+};
+</pre></div> If the <code>MAX_DOT_GRAPH_HEIGHT</code> tag in the configuration file is set to 240 this will result in the following graph:<p>
+<center><div align="center">
+<img src="graph_legend.png" alt="graph_legend.png">
+</div>
+</center> <p>
+The boxes in the above graph have the following meaning: <ul>
+<li>
+A filled gray box represents the struct or class for which the graph is generated. </li>
+<li>
+A box with a black border denotes a documented struct or class. </li>
+<li>
+A box with a grey border denotes an undocumented struct or class. </li>
+<li>
+A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
+</ul>
+The arrows have the following meaning: <ul>
+<li>
+A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
+<li>
+A dark green arrow is used for protected inheritance. </li>
+<li>
+A dark red arrow is used for private inheritance. </li>
+<li>
+A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
+<li>
+A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/graph_legend.png b/crypto/heimdal/doc/doxyout/krb5/html/graph_legend.png
new file mode 100644
index 000000000000..9b96937bfd5f
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/graph_legend.png
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/group__krb5.html b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5.html
new file mode 100644
index 000000000000..2c2163b42308
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5.html
@@ -0,0 +1,2237 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Heimdal Kerberos 5 library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal Kerberos 5 library</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gc03fc138d472dd7743a0ab7ecb3061c1">krb5_add_et_list</a> (krb5_context context, void(*func)(struct et_list **))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g02611e3966053f79eda248d76dccc282">krb5_set_password</a> (krb5_context context, krb5_creds *creds, const char *newpw, krb5_principal targprinc, int *result_code, krb5_data *result_code_string, krb5_data *result_string)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gbd94206e186c58a093975424a4a567a8">krb5_init_context</a> (krb5_context *context)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gd30312a0ba95a71478de1b5fba34db3f">krb5_copy_context</a> (krb5_context context, krb5_context *out)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#ge51d83f5d5f589883f1cd10887892777">krb5_free_context</a> (krb5_context context)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gd4453861fbfc0372e3c44b59325f62aa">krb5_set_config_files</a> (krb5_context context, char **filenames)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gad9a3fd7b838f053a71424d95bf73d40">krb5_prepend_config_files_default</a> (const char *filelist, char ***pfilenames)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g4276c71bee1ba0c9f2bbd659cd351cb3">krb5_get_default_config_files</a> (char ***pfilenames)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gce1b568d05875e7c4fbc6e5af5a8bdbf">krb5_free_config_files</a> (char **filenames)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION const <br>
+krb5_enctype *KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g92110f6472a4fb0a5e0a35da81af4fa2">krb5_kerberos_enctypes</a> (krb5_context context)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g5e028d8b3b0444c98b251f46eb48235a">krb5_set_default_in_tkt_etypes</a> (krb5_context context, const krb5_enctype *etypes)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#ga2bba3d683f1280ddfe8430d834bd5e8">krb5_get_default_in_tkt_etypes</a> (krb5_context context, krb5_pdu pdu_type, krb5_enctype **etypes)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g0f4f2bf6056a5fd472d9dd3d393f133e">krb5_init_ets</a> (krb5_context context)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g3e1564b6d147482eba7bfb5e40a4ff6f">krb5_set_use_admin_kdc</a> (krb5_context context, krb5_boolean flag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gc68122daa411ea028bd521e6e9d2ca6b">krb5_get_use_admin_kdc</a> (krb5_context context)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#ga3776874e66baaaad19316d65aeeb4b5">krb5_add_extra_addresses</a> (krb5_context context, krb5_addresses *addresses)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g3c326674110a2d1c7d3523a0c308dddd">krb5_set_extra_addresses</a> (krb5_context context, const krb5_addresses *addresses)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g0c24a484850684f9252c0f494da2e4c5">krb5_get_extra_addresses</a> (krb5_context context, krb5_addresses *addresses)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g666a78a6b321bdc7d174343329d0eae9">krb5_add_ignore_addresses</a> (krb5_context context, krb5_addresses *addresses)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g4d9823757dea2b9884c136fb959383bc">krb5_set_ignore_addresses</a> (krb5_context context, const krb5_addresses *addresses)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g6f089725948937875bc2594d9b8cbaf7">krb5_get_ignore_addresses</a> (krb5_context context, krb5_addresses *addresses)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g2f77d43f11ad41cd9b5676cc73f052bc">krb5_set_fcache_version</a> (krb5_context context, int version)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g913ff7c6bd16cd3d3cb07529345b65ba">krb5_get_fcache_version</a> (krb5_context context, int *version)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gc5664b887b62be61c00c70fa9e290611">krb5_is_thread_safe</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g798fb21edcec6c7b251709f1e447b21b">krb5_set_dns_canonicalize_hostname</a> (krb5_context context, krb5_boolean flag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gef9f47692fc31c50afc14b581b7aa2fa">krb5_get_dns_canonicalize_hostname</a> (krb5_context context)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gfacf61debb011b06e22e78251104efa0">krb5_get_kdc_sec_offset</a> (krb5_context context, int32_t *sec, int32_t *usec)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gfd16890e03f6dff6f6d013d97e0ee185">krb5_set_kdc_sec_offset</a> (krb5_context context, int32_t sec, int32_t usec)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION time_t <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gbefb8ef32ceedc5ffe6c9440c093a533">krb5_get_max_time_skew</a> (krb5_context context)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g2257aeff745924c48f12d1893d7523ba">krb5_set_max_time_skew</a> (krb5_context context, time_t t)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g3a8e40d622ff1460b2f554d83a9059ea">krb5_set_home_dir_access</a> (krb5_context context, krb5_boolean allow)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#ge730027c647c418850393bce518f9d66">krb5_copy_host_realm</a> (krb5_context context, const krb5_realm *from, krb5_realm **to)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gd89c4c7b633646c39e4a34a7230c94e1">krb5_free_cred_contents</a> (krb5_context context, krb5_creds *c)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gc4fbae1d00b395ec9d69edabd93f432c">krb5_copy_creds_contents</a> (krb5_context context, const krb5_creds *incred, krb5_creds *c)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gcb70cd95ac6806c3265ee6cec400b60d">krb5_copy_creds</a> (krb5_context context, const krb5_creds *incred, krb5_creds **outcred)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g5224797a3ca4c450466ef5102164ee85">krb5_free_creds</a> (krb5_context context, krb5_creds *c)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g45afc77b07b201272eeeaad9890b63cf">krb5_compare_creds</a> (krb5_context context, krb5_flags whichfields, const krb5_creds *mcreds, const krb5_creds *creds)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION unsigned <br>
+long KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g3e6ea2e16872304ac5cc3bed2a0abb88">krb5_creds_get_ticket_flags</a> (krb5_creds *creds)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#ga059e96dde4e0b8c082eb6f3d570b7bc">krb5_data_zero</a> (krb5_data *p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gb4b80ac7a8bbab89fe947ae1c7828ea8">krb5_data_free</a> (krb5_data *p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g9494f7751d3751c45a5ed4a89a5323b4">krb5_free_data</a> (krb5_context context, krb5_data *p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gf5b03734f6027c752381986ac0975ea9">krb5_data_alloc</a> (krb5_data *p, int len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g0602c7a4b056d9004db090df9886811c">krb5_data_realloc</a> (krb5_data *p, int len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gfb664221cde2d10fb5d1b3dfb5c55e04">krb5_data_copy</a> (krb5_data *p, const void *data, size_t len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g963388a0eea15e4e43dbe9c983e3e212">krb5_copy_data</a> (krb5_context context, const krb5_data *indata, krb5_data **outdata)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION int KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gfad0906fca85d7dea0f6b762822d0ff4">krb5_data_cmp</a> (const krb5_data *data1, const krb5_data *data2)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION int KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gcbeb984ec39d6f8ccb582816c14318ab">krb5_data_ct_cmp</a> (const krb5_data *data1, const krb5_data *data2)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g8dcc8bb7370f2bd91bea895df7e1b1a2">krb5_krbhst_get_addrinfo</a> (krb5_context context, krb5_krbhst_info *host, struct addrinfo **ai)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g3d994aef26269ee2b15e4d34acb28fed">krb5_free_ticket</a> (krb5_context context, krb5_ticket *ticket)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gc2c0c5fe2dc17714287a20785623be45">krb5_copy_ticket</a> (krb5_context context, const krb5_ticket *from, krb5_ticket **to)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g6cf23f11044d79441ea1456a01ebe7d7">krb5_ticket_get_client</a> (krb5_context context, const krb5_ticket *ticket, krb5_principal *client)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#gd1f40ffc29f379b7dec60144eefdb553">krb5_ticket_get_server</a> (krb5_context context, const krb5_ticket *ticket, krb5_principal *server)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION time_t <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g118b98784ccadd98cdaaa1ee5076c9fb">krb5_ticket_get_endtime</a> (krb5_context context, const krb5_ticket *ticket)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#ga7387c09a85bf3aabe5bae8a2ec4af73">krb5_ticket_get_authorization_data_type</a> (krb5_context context, krb5_ticket *ticket, int type, krb5_data *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5.html#g1bb5d4ab0e2ebd85414903617b1ac36b">krb5_set_real_time</a> (krb5_context context, krb5_timestamp sec, int32_t usec)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="gc03fc138d472dd7743a0ab7ecb3061c1"></a><!-- doxytag: member="add_et_list.c::krb5_add_et_list" ref="gc03fc138d472dd7743a0ab7ecb3061c1" args="(krb5_context context, void(*func)(struct et_list **))" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_add_et_list </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void(*)(struct et_list **)&nbsp;</td>
+ <td class="paramname"> <em>func</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add a specified list of error messages to the et list in context. Call func (probably a comerr-generated function) with a pointer to the current et_list.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A kerberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>The generated com_err et function.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga3776874e66baaaad19316d65aeeb4b5"></a><!-- doxytag: member="context.c::krb5_add_extra_addresses" ref="ga3776874e66baaaad19316d65aeeb4b5" args="(krb5_context context, krb5_addresses *addresses)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_add_extra_addresses </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_addresses *&nbsp;</td>
+ <td class="paramname"> <em>addresses</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add extra address to the address list that the library will add to the client's address list when communicating with the KDC.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addresses</em>&nbsp;</td><td>addreses to add</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g666a78a6b321bdc7d174343329d0eae9"></a><!-- doxytag: member="context.c::krb5_add_ignore_addresses" ref="g666a78a6b321bdc7d174343329d0eae9" args="(krb5_context context, krb5_addresses *addresses)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_add_ignore_addresses </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_addresses *&nbsp;</td>
+ <td class="paramname"> <em>addresses</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add extra addresses to ignore when fetching addresses from the underlaying operating system.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addresses</em>&nbsp;</td><td>addreses to ignore</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g45afc77b07b201272eeeaad9890b63cf"></a><!-- doxytag: member="creds.c::krb5_compare_creds" ref="g45afc77b07b201272eeeaad9890b63cf" args="(krb5_context context, krb5_flags whichfields, const krb5_creds *mcreds, const krb5_creds *creds)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_compare_creds </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_flags&nbsp;</td>
+ <td class="paramname"> <em>whichfields</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>mcreds</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>creds</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return TRUE if `mcreds' and `creds' are equal (`whichfields' determines what equal means).<p>
+The following flags, set in whichfields affects the comparison:<ul>
+<li>KRB5_TC_MATCH_SRV_NAMEONLY Consider all realms equal when comparing the service principal.</li><li>KRB5_TC_MATCH_KEYTYPE Compare enctypes.</li><li>KRB5_TC_MATCH_FLAGS_EXACT Make sure that the ticket flags are identical.</li><li>KRB5_TC_MATCH_FLAGS Make sure that all ticket flags set in mcreds are also present in creds .</li><li>KRB5_TC_MATCH_TIMES_EXACT Compares the ticket times exactly.</li><li>KRB5_TC_MATCH_TIMES Compares only the expiration times of the creds.</li><li>KRB5_TC_MATCH_AUTHDATA Compares the authdata fields.</li><li>KRB5_TC_MATCH_2ND_TKT Compares the second tickets (used by user-to-user authentication).</li><li>KRB5_TC_MATCH_IS_SKEY Compares the existance of the second ticket.</li></ul>
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>whichfields</em>&nbsp;</td><td>which fields to compare. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>mcreds</em>&nbsp;</td><td>cred to compare with. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>creds</em>&nbsp;</td><td>cred to compare with.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>return TRUE if mcred and creds are equal, FALSE if not. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd30312a0ba95a71478de1b5fba34db3f"></a><!-- doxytag: member="context.c::krb5_copy_context" ref="gd30312a0ba95a71478de1b5fba34db3f" args="(krb5_context context, krb5_context *out)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_context </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_context *&nbsp;</td>
+ <td class="paramname"> <em>out</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Make a copy for the Kerberos 5 context, the new krb5_context shoud be freed with <a class="el" href="group__krb5.html#ge51d83f5d5f589883f1cd10887892777">krb5_free_context()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>the Kerberos context to copy </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>the copy of the Kerberos, set to NULL error.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gcb70cd95ac6806c3265ee6cec400b60d"></a><!-- doxytag: member="creds.c::krb5_copy_creds" ref="gcb70cd95ac6806c3265ee6cec400b60d" args="(krb5_context context, const krb5_creds *incred, krb5_creds **outcred)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_creds </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>incred</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds **&nbsp;</td>
+ <td class="paramname"> <em>outcred</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy krb5_creds.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>incred</em>&nbsp;</td><td>source credential </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>outcred</em>&nbsp;</td><td>destination credential, free with <a class="el" href="group__krb5.html#g5224797a3ca4c450466ef5102164ee85">krb5_free_creds()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc4fbae1d00b395ec9d69edabd93f432c"></a><!-- doxytag: member="creds.c::krb5_copy_creds_contents" ref="gc4fbae1d00b395ec9d69edabd93f432c" args="(krb5_context context, const krb5_creds *incred, krb5_creds *c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_creds_contents </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>incred</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>c</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy content of krb5_creds.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>incred</em>&nbsp;</td><td>source credential </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>destination credential, free with <a class="el" href="group__krb5.html#gd89c4c7b633646c39e4a34a7230c94e1">krb5_free_cred_contents()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g963388a0eea15e4e43dbe9c983e3e212"></a><!-- doxytag: member="data.c::krb5_copy_data" ref="g963388a0eea15e4e43dbe9c983e3e212" args="(krb5_context context, const krb5_data *indata, krb5_data **outdata)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_data </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>indata</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data **&nbsp;</td>
+ <td class="paramname"> <em>outdata</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy the data into a newly allocated krb5_data.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>indata</em>&nbsp;</td><td>the krb5_data data to copy </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>outdata</em>&nbsp;</td><td>new krb5_date to copy too. Free with <a class="el" href="group__krb5.html#g9494f7751d3751c45a5ed4a89a5323b4">krb5_free_data()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge730027c647c418850393bce518f9d66"></a><!-- doxytag: member="copy_host_realm.c::krb5_copy_host_realm" ref="ge730027c647c418850393bce518f9d66" args="(krb5_context context, const krb5_realm *from, krb5_realm **to)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_host_realm </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_realm *&nbsp;</td>
+ <td class="paramname"> <em>from</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_realm **&nbsp;</td>
+ <td class="paramname"> <em>to</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy the list of realms from `from' to `to'.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>from</em>&nbsp;</td><td>list of realms to copy from. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>to</em>&nbsp;</td><td>list of realms to copy to, free list of <a class="el" href="group__krb5__support.html#gca0ab80d3affb5986aa5061f3782401b">krb5_free_host_realm()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc2c0c5fe2dc17714287a20785623be45"></a><!-- doxytag: member="ticket.c::krb5_copy_ticket" ref="gc2c0c5fe2dc17714287a20785623be45" args="(krb5_context context, const krb5_ticket *from, krb5_ticket **to)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_ticket </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_ticket *&nbsp;</td>
+ <td class="paramname"> <em>from</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ticket **&nbsp;</td>
+ <td class="paramname"> <em>to</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy ticket and content<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>from</em>&nbsp;</td><td>ticket to copy </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>to</em>&nbsp;</td><td>new copy of ticket, free with <a class="el" href="group__krb5.html#g3d994aef26269ee2b15e4d34acb28fed">krb5_free_ticket()</a></td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3e6ea2e16872304ac5cc3bed2a0abb88"></a><!-- doxytag: member="creds.c::krb5_creds_get_ticket_flags" ref="g3e6ea2e16872304ac5cc3bed2a0abb88" args="(krb5_creds *creds)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION unsigned long KRB5_LIB_CALL krb5_creds_get_ticket_flags </td>
+ <td>(</td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>creds</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Returns the ticket flags for the credentials in creds. See also <a class="el" href="group__krb5__ticket.html#gb6a75ab695ff8478394084138af9eb16">krb5_ticket_get_flags()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>creds</em>&nbsp;</td><td>credential to get ticket flags from</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>ticket flags </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf5b03734f6027c752381986ac0975ea9"></a><!-- doxytag: member="data.c::krb5_data_alloc" ref="gf5b03734f6027c752381986ac0975ea9" args="(krb5_data *p, int len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_data_alloc </td>
+ <td>(</td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Allocate data of and krb5_data.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>krb5_data to allocate. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>size to allocate.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gfad0906fca85d7dea0f6b762822d0ff4"></a><!-- doxytag: member="data.c::krb5_data_cmp" ref="gfad0906fca85d7dea0f6b762822d0ff4" args="(const krb5_data *data1, const krb5_data *data2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_data_cmp </td>
+ <td>(</td>
+ <td class="paramtype">const krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>data1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>data2</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Compare to data.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>data1</em>&nbsp;</td><td>krb5_data to compare </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data2</em>&nbsp;</td><td>krb5_data to compare</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>return the same way as memcmp(), useful when sorting. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gfb664221cde2d10fb5d1b3dfb5c55e04"></a><!-- doxytag: member="data.c::krb5_data_copy" ref="gfb664221cde2d10fb5d1b3dfb5c55e04" args="(krb5_data *p, const void *data, size_t len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_data_copy </td>
+ <td>(</td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy the data of len into the krb5_data.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>krb5_data to copy into. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>data to copy.. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>new size.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gcbeb984ec39d6f8ccb582816c14318ab"></a><!-- doxytag: member="data.c::krb5_data_ct_cmp" ref="gcbeb984ec39d6f8ccb582816c14318ab" args="(const krb5_data *data1, const krb5_data *data2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_data_ct_cmp </td>
+ <td>(</td>
+ <td class="paramtype">const krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>data1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>data2</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Compare to data not exposing timing information from the checksum data<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>data1</em>&nbsp;</td><td>krb5_data to compare </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data2</em>&nbsp;</td><td>krb5_data to compare</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns zero for same data, otherwise non zero. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb4b80ac7a8bbab89fe947ae1c7828ea8"></a><!-- doxytag: member="data.c::krb5_data_free" ref="gb4b80ac7a8bbab89fe947ae1c7828ea8" args="(krb5_data *p)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_data_free </td>
+ <td>(</td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>p</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free the content of krb5_data structure, its ok to free a zeroed structure (with memset() or <a class="el" href="group__krb5.html#ga059e96dde4e0b8c082eb6f3d570b7bc">krb5_data_zero()</a>). When done, the structure will be zeroed. The same function is called <a class="el" href="group__krb5__deprecated.html#g220b8b17e81dc71dd3ecd1b079160db9">krb5_free_data_contents()</a> in MIT Kerberos.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>krb5_data to free. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g0602c7a4b056d9004db090df9886811c"></a><!-- doxytag: member="data.c::krb5_data_realloc" ref="g0602c7a4b056d9004db090df9886811c" args="(krb5_data *p, int len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_data_realloc </td>
+ <td>(</td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Grow (or shrink) the content of krb5_data to a new size.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>krb5_data to free. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>new size.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga059e96dde4e0b8c082eb6f3d570b7bc"></a><!-- doxytag: member="data.c::krb5_data_zero" ref="ga059e96dde4e0b8c082eb6f3d570b7bc" args="(krb5_data *p)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_data_zero </td>
+ <td>(</td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>p</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Reset the (potentially uninitalized) krb5_data structure.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>krb5_data to reset. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gce1b568d05875e7c4fbc6e5af5a8bdbf"></a><!-- doxytag: member="context.c::krb5_free_config_files" ref="gce1b568d05875e7c4fbc6e5af5a8bdbf" args="(char **filenames)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_config_files </td>
+ <td>(</td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>filenames</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free a list of configuration files.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>filenames</em>&nbsp;</td><td>list, terminated with a NULL pointer, to be freed. NULL is an valid argument.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge51d83f5d5f589883f1cd10887892777"></a><!-- doxytag: member="context.c::krb5_free_context" ref="ge51d83f5d5f589883f1cd10887892777" args="(krb5_context context)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_context </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Frees the krb5_context allocated by <a class="el" href="group__krb5.html#gbd94206e186c58a093975424a4a567a8">krb5_init_context()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>context to be freed. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd89c4c7b633646c39e4a34a7230c94e1"></a><!-- doxytag: member="creds.c::krb5_free_cred_contents" ref="gd89c4c7b633646c39e4a34a7230c94e1" args="(krb5_context context, krb5_creds *c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_free_cred_contents </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>c</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free content of krb5_creds.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>krb5_creds to free.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5224797a3ca4c450466ef5102164ee85"></a><!-- doxytag: member="creds.c::krb5_free_creds" ref="g5224797a3ca4c450466ef5102164ee85" args="(krb5_context context, krb5_creds *c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_free_creds </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>c</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free krb5_creds.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>krb5_creds to free.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9494f7751d3751c45a5ed4a89a5323b4"></a><!-- doxytag: member="data.c::krb5_free_data" ref="g9494f7751d3751c45a5ed4a89a5323b4" args="(krb5_context context, krb5_data *p)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_data </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>p</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free krb5_data (and its content).<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>krb5_data to free. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3d994aef26269ee2b15e4d34acb28fed"></a><!-- doxytag: member="ticket.c::krb5_free_ticket" ref="g3d994aef26269ee2b15e4d34acb28fed" args="(krb5_context context, krb5_ticket *ticket)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_free_ticket </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ticket *&nbsp;</td>
+ <td class="paramname"> <em>ticket</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free ticket and content<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ticket</em>&nbsp;</td><td>ticket to free</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4276c71bee1ba0c9f2bbd659cd351cb3"></a><!-- doxytag: member="context.c::krb5_get_default_config_files" ref="g4276c71bee1ba0c9f2bbd659cd351cb3" args="(char ***pfilenames)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_default_config_files </td>
+ <td>(</td>
+ <td class="paramtype">char ***&nbsp;</td>
+ <td class="paramname"> <em>pfilenames</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the global configuration list.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>pfilenames</em>&nbsp;</td><td>return array of filenames, should be freed with <a class="el" href="group__krb5.html#gce1b568d05875e7c4fbc6e5af5a8bdbf">krb5_free_config_files()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga2bba3d683f1280ddfe8430d834bd5e8"></a><!-- doxytag: member="context.c::krb5_get_default_in_tkt_etypes" ref="ga2bba3d683f1280ddfe8430d834bd5e8" args="(krb5_context context, krb5_pdu pdu_type, krb5_enctype **etypes)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_default_in_tkt_etypes </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_pdu&nbsp;</td>
+ <td class="paramname"> <em>pdu_type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype **&nbsp;</td>
+ <td class="paramname"> <em>etypes</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the default encryption types that will be use in communcation with the KDC, clients and servers.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>etypes</em>&nbsp;</td><td>Encryption types, array terminated with ETYPE_NULL(0), caller should free array with krb5_xfree():</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gef9f47692fc31c50afc14b581b7aa2fa"></a><!-- doxytag: member="context.c::krb5_get_dns_canonicalize_hostname" ref="gef9f47692fc31c50afc14b581b7aa2fa" args="(krb5_context context)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_get_dns_canonicalize_hostname </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get if the library uses DNS to canonicalize hostnames.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>return non zero if the library uses DNS to canonicalize hostnames. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g0c24a484850684f9252c0f494da2e4c5"></a><!-- doxytag: member="context.c::krb5_get_extra_addresses" ref="g0c24a484850684f9252c0f494da2e4c5" args="(krb5_context context, krb5_addresses *addresses)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_extra_addresses </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_addresses *&nbsp;</td>
+ <td class="paramname"> <em>addresses</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get extra address to the address list that the library will add to the client's address list when communicating with the KDC.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addresses</em>&nbsp;</td><td>addreses to set</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g913ff7c6bd16cd3d3cb07529345b65ba"></a><!-- doxytag: member="context.c::krb5_get_fcache_version" ref="g913ff7c6bd16cd3d3cb07529345b65ba" args="(krb5_context context, int *version)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_fcache_version </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>version</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get version of fcache that the library should use.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>version</em>&nbsp;</td><td>version number.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6f089725948937875bc2594d9b8cbaf7"></a><!-- doxytag: member="context.c::krb5_get_ignore_addresses" ref="g6f089725948937875bc2594d9b8cbaf7" args="(krb5_context context, krb5_addresses *addresses)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_ignore_addresses </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_addresses *&nbsp;</td>
+ <td class="paramname"> <em>addresses</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get extra addresses to ignore when fetching addresses from the underlaying operating system.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addresses</em>&nbsp;</td><td>list addreses ignored</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gfacf61debb011b06e22e78251104efa0"></a><!-- doxytag: member="context.c::krb5_get_kdc_sec_offset" ref="gfacf61debb011b06e22e78251104efa0" args="(krb5_context context, int32_t *sec, int32_t *usec)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_kdc_sec_offset </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int32_t *&nbsp;</td>
+ <td class="paramname"> <em>sec</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int32_t *&nbsp;</td>
+ <td class="paramname"> <em>usec</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get current offset in time to the KDC.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>sec</em>&nbsp;</td><td>seconds part of offset. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>usec</em>&nbsp;</td><td>micro seconds part of offset.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns zero </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gbefb8ef32ceedc5ffe6c9440c093a533"></a><!-- doxytag: member="context.c::krb5_get_max_time_skew" ref="gbefb8ef32ceedc5ffe6c9440c093a533" args="(krb5_context context)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION time_t KRB5_LIB_CALL krb5_get_max_time_skew </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get max time skew allowed.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>timeskew in seconds. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc68122daa411ea028bd521e6e9d2ca6b"></a><!-- doxytag: member="context.c::krb5_get_use_admin_kdc" ref="gc68122daa411ea028bd521e6e9d2ca6b" args="(krb5_context context)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_get_use_admin_kdc </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Make the kerberos library default to the admin KDC.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>boolean flag to telling the context will use admin KDC as the default KDC. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gbd94206e186c58a093975424a4a567a8"></a><!-- doxytag: member="context.c::krb5_init_context" ref="gbd94206e186c58a093975424a4a567a8" args="(krb5_context *context)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_init_context </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context *&nbsp;</td>
+ <td class="paramname"> <em>context</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Initializes the context structure and reads the configuration file /etc/krb5.conf. The structure should be freed by calling <a class="el" href="group__krb5.html#ge51d83f5d5f589883f1cd10887892777">krb5_free_context()</a> when it is no longer being used.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>pointer to returned context</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an errno code is returned. Failure means either that something bad happened during initialization (typically ENOMEM) or that Kerberos should not be used ENXIO. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g0f4f2bf6056a5fd472d9dd3d393f133e"></a><!-- doxytag: member="context.c::krb5_init_ets" ref="g0f4f2bf6056a5fd472d9dd3d393f133e" args="(krb5_context context)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_init_ets </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Init the built-in ets in the Kerberos library.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>kerberos context to add the ets too </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc5664b887b62be61c00c70fa9e290611"></a><!-- doxytag: member="context.c::krb5_is_thread_safe" ref="gc5664b887b62be61c00c70fa9e290611" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_is_thread_safe </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Runtime check if the Kerberos library was complied with thread support.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>TRUE if the library was compiled with thread support, FALSE if not. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g92110f6472a4fb0a5e0a35da81af4fa2"></a><!-- doxytag: member="context.c::krb5_kerberos_enctypes" ref="g92110f6472a4fb0a5e0a35da81af4fa2" args="(krb5_context context)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION const krb5_enctype* KRB5_LIB_CALL krb5_kerberos_enctypes </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Returns the list of Kerberos encryption types sorted in order of most preferred to least preferred encryption type. Note that some encryption types might be disabled, so you need to check with <a class="el" href="group__krb5__crypto.html#gd5f2b15d5fde369cf923e8fae4b00bec">krb5_enctype_valid()</a> before using the encryption type.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>list of enctypes, terminated with ETYPE_NULL. Its a static array completed into the Kerberos library so the content doesn't need to be freed. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8dcc8bb7370f2bd91bea895df7e1b1a2"></a><!-- doxytag: member="krbhst.c::krb5_krbhst_get_addrinfo" ref="g8dcc8bb7370f2bd91bea895df7e1b1a2" args="(krb5_context context, krb5_krbhst_info *host, struct addrinfo **ai)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_krbhst_get_addrinfo </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_krbhst_info *&nbsp;</td>
+ <td class="paramname"> <em>host</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct addrinfo **&nbsp;</td>
+ <td class="paramname"> <em>ai</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return an `struct addrinfo *' for a KDC host.<p>
+Returns an the struct addrinfo in in that corresponds to the information in `host'. free:ing is handled by krb5_krbhst_free, so the returned ai must not be released.
+<p>
+First try this as an IP address, this allows us to add a dot at the end to stop using the search domains.<p>
+If the hostname contains a dot, assumes it's a FQDN and don't use search domains since that might be painfully slow when machine is disconnected from that network.
+</div>
+</div><p>
+<a class="anchor" name="gad9a3fd7b838f053a71424d95bf73d40"></a><!-- doxytag: member="context.c::krb5_prepend_config_files_default" ref="gad9a3fd7b838f053a71424d95bf73d40" args="(const char *filelist, char ***pfilenames)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_prepend_config_files_default </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>filelist</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char ***&nbsp;</td>
+ <td class="paramname"> <em>pfilenames</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Prepend the filename to the global configuration list.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>filelist</em>&nbsp;</td><td>a filename to add to the default list of filename </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>pfilenames</em>&nbsp;</td><td>return array of filenames, should be freed with <a class="el" href="group__krb5.html#gce1b568d05875e7c4fbc6e5af5a8bdbf">krb5_free_config_files()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd4453861fbfc0372e3c44b59325f62aa"></a><!-- doxytag: member="context.c::krb5_set_config_files" ref="gd4453861fbfc0372e3c44b59325f62aa" args="(krb5_context context, char **filenames)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_config_files </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>filenames</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Reinit the context from a new set of filenames.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>context to add configuration too. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>filenames</em>&nbsp;</td><td>array of filenames, end of list is indicated with a NULL filename.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5e028d8b3b0444c98b251f46eb48235a"></a><!-- doxytag: member="context.c::krb5_set_default_in_tkt_etypes" ref="g5e028d8b3b0444c98b251f46eb48235a" args="(krb5_context context, const krb5_enctype *etypes)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_default_in_tkt_etypes </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_enctype *&nbsp;</td>
+ <td class="paramname"> <em>etypes</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the default encryption types that will be use in communcation with the KDC, clients and servers.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>etypes</em>&nbsp;</td><td>Encryption types, array terminated with ETYPE_NULL (0).</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g798fb21edcec6c7b251709f1e447b21b"></a><!-- doxytag: member="context.c::krb5_set_dns_canonicalize_hostname" ref="g798fb21edcec6c7b251709f1e447b21b" args="(krb5_context context, krb5_boolean flag)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_set_dns_canonicalize_hostname </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_boolean&nbsp;</td>
+ <td class="paramname"> <em>flag</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set if the library should use DNS to canonicalize hostnames.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flag</em>&nbsp;</td><td>if its dns canonicalizion is used or not. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3c326674110a2d1c7d3523a0c308dddd"></a><!-- doxytag: member="context.c::krb5_set_extra_addresses" ref="g3c326674110a2d1c7d3523a0c308dddd" args="(krb5_context context, const krb5_addresses *addresses)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_extra_addresses </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_addresses *&nbsp;</td>
+ <td class="paramname"> <em>addresses</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set extra address to the address list that the library will add to the client's address list when communicating with the KDC.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addresses</em>&nbsp;</td><td>addreses to set</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2f77d43f11ad41cd9b5676cc73f052bc"></a><!-- doxytag: member="context.c::krb5_set_fcache_version" ref="g2f77d43f11ad41cd9b5676cc73f052bc" args="(krb5_context context, int version)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_fcache_version </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>version</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set version of fcache that the library should use.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>version</em>&nbsp;</td><td>version number.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3a8e40d622ff1460b2f554d83a9059ea"></a><!-- doxytag: member="context.c::krb5_set_home_dir_access" ref="g3a8e40d622ff1460b2f554d83a9059ea" args="(krb5_context context, krb5_boolean allow)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_set_home_dir_access </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_boolean&nbsp;</td>
+ <td class="paramname"> <em>allow</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Enable and disable home directory access on either the global state or the krb5_context state. By calling <a class="el" href="group__krb5.html#g3a8e40d622ff1460b2f554d83a9059ea">krb5_set_home_dir_access()</a> with context set to NULL, the global state is configured otherwise the state for the krb5_context is modified.<p>
+For home directory access to be allowed, both the global state and the krb5_context state have to be allowed.<p>
+Administrator (root user), never uses the home directory.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Kerberos 5 context or NULL </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>allow</em>&nbsp;</td><td>allow if TRUE home directory </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the old value </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4d9823757dea2b9884c136fb959383bc"></a><!-- doxytag: member="context.c::krb5_set_ignore_addresses" ref="g4d9823757dea2b9884c136fb959383bc" args="(krb5_context context, const krb5_addresses *addresses)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_ignore_addresses </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_addresses *&nbsp;</td>
+ <td class="paramname"> <em>addresses</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set extra addresses to ignore when fetching addresses from the underlaying operating system.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addresses</em>&nbsp;</td><td>addreses to ignore</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gfd16890e03f6dff6f6d013d97e0ee185"></a><!-- doxytag: member="context.c::krb5_set_kdc_sec_offset" ref="gfd16890e03f6dff6f6d013d97e0ee185" args="(krb5_context context, int32_t sec, int32_t usec)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_kdc_sec_offset </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int32_t&nbsp;</td>
+ <td class="paramname"> <em>sec</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int32_t&nbsp;</td>
+ <td class="paramname"> <em>usec</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set current offset in time to the KDC.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>sec</em>&nbsp;</td><td>seconds part of offset. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>usec</em>&nbsp;</td><td>micro seconds part of offset.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns zero </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2257aeff745924c48f12d1893d7523ba"></a><!-- doxytag: member="context.c::krb5_set_max_time_skew" ref="g2257aeff745924c48f12d1893d7523ba" args="(krb5_context context, time_t t)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_set_max_time_skew </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">time_t&nbsp;</td>
+ <td class="paramname"> <em>t</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set max time skew allowed.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>timeskew in seconds. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g02611e3966053f79eda248d76dccc282"></a><!-- doxytag: member="changepw.c::krb5_set_password" ref="g02611e3966053f79eda248d76dccc282" args="(krb5_context context, krb5_creds *creds, const char *newpw, krb5_principal targprinc, int *result_code, krb5_data *result_code_string, krb5_data *result_string)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_password </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>creds</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>newpw</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal&nbsp;</td>
+ <td class="paramname"> <em>targprinc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>result_code</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>result_code_string</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>result_string</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Change password using creds.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>creds</em>&nbsp;</td><td>The initial kadmin/passwd for the principal or an admin principal </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>newpw</em>&nbsp;</td><td>The new password to set </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>targprinc</em>&nbsp;</td><td>if unset, the default principal is used. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>result_code</em>&nbsp;</td><td>Result code, KRB5_KPASSWD_SUCCESS is when password is changed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>result_code_string</em>&nbsp;</td><td>binary message from the server, contains at least the result_code. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>result_string</em>&nbsp;</td><td>A message from the kpasswd service or the library in human printable form. The string is NUL terminated.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On sucess and *result_code is KRB5_KPASSWD_SUCCESS, the password is changed.</dd></dl>
+@
+</div>
+</div><p>
+<a class="anchor" name="g1bb5d4ab0e2ebd85414903617b1ac36b"></a><!-- doxytag: member="time.c::krb5_set_real_time" ref="g1bb5d4ab0e2ebd85414903617b1ac36b" args="(krb5_context context, krb5_timestamp sec, int32_t usec)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_real_time </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_timestamp&nbsp;</td>
+ <td class="paramname"> <em>sec</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int32_t&nbsp;</td>
+ <td class="paramname"> <em>usec</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the absolute time that the caller knows the kdc has so the kerberos library can calculate the relative diffrence beteen the KDC time and local system time.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Keberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>sec</em>&nbsp;</td><td>The applications new of "now" in seconds </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>usec</em>&nbsp;</td><td>The applications new of "now" in micro seconds</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Kerberos 5 error code, see krb5_get_error_message(). </dd></dl>
+
+<p>
+If the caller passes in a negative usec, its assumed to be unknown and the function will use the current time usec.
+</div>
+</div><p>
+<a class="anchor" name="g3e1564b6d147482eba7bfb5e40a4ff6f"></a><!-- doxytag: member="context.c::krb5_set_use_admin_kdc" ref="g3e1564b6d147482eba7bfb5e40a4ff6f" args="(krb5_context context, krb5_boolean flag)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_set_use_admin_kdc </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_boolean&nbsp;</td>
+ <td class="paramname"> <em>flag</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Make the kerberos library default to the admin KDC.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flag</em>&nbsp;</td><td>boolean flag to select if the use the admin KDC or not. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga7387c09a85bf3aabe5bae8a2ec4af73"></a><!-- doxytag: member="ticket.c::krb5_ticket_get_authorization_data_type" ref="ga7387c09a85bf3aabe5bae8a2ec4af73" args="(krb5_context context, krb5_ticket *ticket, int type, krb5_data *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ticket_get_authorization_data_type </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ticket *&nbsp;</td>
+ <td class="paramname"> <em>ticket</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Extract the authorization data type of type from the ticket. Store the field in data. This function is to use for kerberos applications.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ticket</em>&nbsp;</td><td>Kerberos ticket </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>type to fetch </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>returned data, free with <a class="el" href="group__krb5.html#gb4b80ac7a8bbab89fe947ae1c7828ea8">krb5_data_free()</a> </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6cf23f11044d79441ea1456a01ebe7d7"></a><!-- doxytag: member="ticket.c::krb5_ticket_get_client" ref="g6cf23f11044d79441ea1456a01ebe7d7" args="(krb5_context context, const krb5_ticket *ticket, krb5_principal *client)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ticket_get_client </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_ticket *&nbsp;</td>
+ <td class="paramname"> <em>ticket</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal *&nbsp;</td>
+ <td class="paramname"> <em>client</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return client principal in ticket<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ticket</em>&nbsp;</td><td>ticket to copy </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>client principal, free with <a class="el" href="group__krb5__principal.html#g5bd3f620ebe8cd4fe44b5c858ba17d22">krb5_free_principal()</a></td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g118b98784ccadd98cdaaa1ee5076c9fb"></a><!-- doxytag: member="ticket.c::krb5_ticket_get_endtime" ref="g118b98784ccadd98cdaaa1ee5076c9fb" args="(krb5_context context, const krb5_ticket *ticket)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION time_t KRB5_LIB_CALL krb5_ticket_get_endtime </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_ticket *&nbsp;</td>
+ <td class="paramname"> <em>ticket</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return end time of ticket<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ticket</em>&nbsp;</td><td>ticket to copy</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>end time of ticket </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd1f40ffc29f379b7dec60144eefdb553"></a><!-- doxytag: member="ticket.c::krb5_ticket_get_server" ref="gd1f40ffc29f379b7dec60144eefdb553" args="(krb5_context context, const krb5_ticket *ticket, krb5_principal *server)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ticket_get_server </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_ticket *&nbsp;</td>
+ <td class="paramname"> <em>ticket</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal *&nbsp;</td>
+ <td class="paramname"> <em>server</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return server principal in ticket<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ticket</em>&nbsp;</td><td>ticket to copy </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>server</em>&nbsp;</td><td>server principal, free with <a class="el" href="group__krb5__principal.html#g5bd3f620ebe8cd4fe44b5c858ba17d22">krb5_free_principal()</a></td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__address.html b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__address.html
new file mode 100644
index 000000000000..395e32360eac
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__address.html
@@ -0,0 +1,1003 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Heimdal Kerberos 5 address functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal Kerberos 5 address functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#gec34704845bdaee3c08ebba2fa87d61e">krb5_sockaddr2address</a> (krb5_context context, const struct sockaddr *sa, krb5_address *addr)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#g76125115a2c040a3f70a4f66eada77aa">krb5_sockaddr2port</a> (krb5_context context, const struct sockaddr *sa, int16_t *port)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#g88b9c3052f35dc5a44fdfe9747c36cc5">krb5_addr2sockaddr</a> (krb5_context context, const krb5_address *addr, struct sockaddr *sa, krb5_socklen_t *sa_size, int port)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION size_t <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#g55bd20d9a185cf7963e2117c1c804c85">krb5_max_sockaddr_size</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#gc4c55c7ef3d078993b0177649593088c">krb5_sockaddr_uninteresting</a> (const struct sockaddr *sa)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#g51cd06ac365188aa989256b99b706f80">krb5_h_addr2sockaddr</a> (krb5_context context, int af, const char *addr, struct sockaddr *sa, krb5_socklen_t *sa_size, int port)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#gb8901409302e9e7bb95187e4d5e6a179">krb5_h_addr2addr</a> (krb5_context context, int af, const char *haddr, krb5_address *addr)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#g9cfbb00b2bed85766f86b63541cc7752">krb5_anyaddr</a> (krb5_context context, int af, struct sockaddr *sa, krb5_socklen_t *sa_size, int port)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#g6e9adff4c8738f92fa2637698c06ccb9">krb5_print_address</a> (const krb5_address *addr, char *str, size_t len, size_t *ret_len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#gd7bc7e348e6d36c4cf09dcd2ee5a92a3">krb5_parse_address</a> (krb5_context context, const char *string, krb5_addresses *addresses)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION int KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#gc743b9d3c7e4a1f71659ffd28b1fd9fb">krb5_address_order</a> (krb5_context context, const krb5_address *addr1, const krb5_address *addr2)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#g7771724e9a25914395dabac15b705e33">krb5_address_compare</a> (krb5_context context, const krb5_address *addr1, const krb5_address *addr2)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#ge2720bd07b737e73c8b6924403e5b7e1">krb5_address_search</a> (krb5_context context, const krb5_address *addr, const krb5_addresses *addrlist)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#g705d91f9f2a2311b656371e553af66a3">krb5_free_address</a> (krb5_context context, krb5_address *address)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#g3b5f1c170a4af0de561bc30486983cc5">krb5_free_addresses</a> (krb5_context context, krb5_addresses *addresses)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#gf965da6155d3b086a6ca2e47b391f5df">krb5_copy_address</a> (krb5_context context, const krb5_address *inaddr, krb5_address *outaddr)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#g8b73a9ee0e1259a7f10809b329483b85">krb5_copy_addresses</a> (krb5_context context, const krb5_addresses *inaddr, krb5_addresses *outaddr)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#gf56d02edcc81b3edd3c5a1e2e16e99e3">krb5_append_addresses</a> (krb5_context context, krb5_addresses *dest, const krb5_addresses *source)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#gc50ffb71832862424c35c1ace9bbe14d">krb5_make_addrport</a> (krb5_context context, krb5_address **res, const krb5_address *addr, int16_t port)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__address.html#g3164f6fcff3b1029b93d316e14b017cf">krb5_address_prefixlen_boundary</a> (krb5_context context, const krb5_address *inaddr, unsigned long prefixlen, krb5_address *low, krb5_address *high)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g88b9c3052f35dc5a44fdfe9747c36cc5"></a><!-- doxytag: member="addr_families.c::krb5_addr2sockaddr" ref="g88b9c3052f35dc5a44fdfe9747c36cc5" args="(krb5_context context, const krb5_address *addr, struct sockaddr *sa, krb5_socklen_t *sa_size, int port)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_addr2sockaddr </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_address *&nbsp;</td>
+ <td class="paramname"> <em>addr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct sockaddr *&nbsp;</td>
+ <td class="paramname"> <em>sa</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_socklen_t *&nbsp;</td>
+ <td class="paramname"> <em>sa_size</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>port</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_addr2sockaddr sets the "struct sockaddr sockaddr" from addr and port. The argument sa_size should initially contain the size of the sa and after the call, it will contain the actual length of the address. In case of the sa is too small to fit the whole address, the up to *sa_size will be stored, and then *sa_size will be set to the required length.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>the address to copy the from </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>sa</em>&nbsp;</td><td>the struct sockaddr that will be filled in </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>sa_size</em>&nbsp;</td><td>pointer to length of sa, and after the call, it will contain the actual length of the address. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>set port in sa.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. Will return KRB5_PROG_ATYPE_NOSUPP in case address type is not supported. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7771724e9a25914395dabac15b705e33"></a><!-- doxytag: member="addr_families.c::krb5_address_compare" ref="g7771724e9a25914395dabac15b705e33" args="(krb5_context context, const krb5_address *addr1, const krb5_address *addr2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_address_compare </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_address *&nbsp;</td>
+ <td class="paramname"> <em>addr1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_address *&nbsp;</td>
+ <td class="paramname"> <em>addr2</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_address_compare compares the addresses addr1 and addr2. Returns TRUE if the two addresses are the same.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addr1</em>&nbsp;</td><td>address to compare </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addr2</em>&nbsp;</td><td>address to compare</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an TRUE is the address are the same FALSE if not </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc743b9d3c7e4a1f71659ffd28b1fd9fb"></a><!-- doxytag: member="addr_families.c::krb5_address_order" ref="gc743b9d3c7e4a1f71659ffd28b1fd9fb" args="(krb5_context context, const krb5_address *addr1, const krb5_address *addr2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_address_order </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_address *&nbsp;</td>
+ <td class="paramname"> <em>addr1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_address *&nbsp;</td>
+ <td class="paramname"> <em>addr2</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_address_order compares the addresses addr1 and addr2 so that it can be used for sorting addresses. If the addresses are the same address krb5_address_order will return 0. Behavies like memcmp(2).<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addr1</em>&nbsp;</td><td>krb5_address to compare </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addr2</em>&nbsp;</td><td>krb5_address to compare</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>&lt; 0 if address addr1 in "less" then addr2. 0 if addr1 and addr2 is the same address, &gt; 0 if addr2 is "less" then addr1. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3164f6fcff3b1029b93d316e14b017cf"></a><!-- doxytag: member="addr_families.c::krb5_address_prefixlen_boundary" ref="g3164f6fcff3b1029b93d316e14b017cf" args="(krb5_context context, const krb5_address *inaddr, unsigned long prefixlen, krb5_address *low, krb5_address *high)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_address_prefixlen_boundary </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_address *&nbsp;</td>
+ <td class="paramname"> <em>inaddr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned long&nbsp;</td>
+ <td class="paramname"> <em>prefixlen</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_address *&nbsp;</td>
+ <td class="paramname"> <em>low</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_address *&nbsp;</td>
+ <td class="paramname"> <em>high</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Calculate the boundary addresses of `inaddr'/`prefixlen' and store them in `low' and `high'.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>inaddr</em>&nbsp;</td><td>address in prefixlen that the bondery searched </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>prefixlen</em>&nbsp;</td><td>width of boundery </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>low</em>&nbsp;</td><td>lowest address </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>high</em>&nbsp;</td><td>highest address</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge2720bd07b737e73c8b6924403e5b7e1"></a><!-- doxytag: member="addr_families.c::krb5_address_search" ref="ge2720bd07b737e73c8b6924403e5b7e1" args="(krb5_context context, const krb5_address *addr, const krb5_addresses *addrlist)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_address_search </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_address *&nbsp;</td>
+ <td class="paramname"> <em>addr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_addresses *&nbsp;</td>
+ <td class="paramname"> <em>addrlist</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_address_search checks if the address addr is a member of the address set list addrlist .<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>address to search for. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addrlist</em>&nbsp;</td><td>list of addresses to look in for addr.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9cfbb00b2bed85766f86b63541cc7752"></a><!-- doxytag: member="addr_families.c::krb5_anyaddr" ref="g9cfbb00b2bed85766f86b63541cc7752" args="(krb5_context context, int af, struct sockaddr *sa, krb5_socklen_t *sa_size, int port)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_anyaddr </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>af</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct sockaddr *&nbsp;</td>
+ <td class="paramname"> <em>sa</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_socklen_t *&nbsp;</td>
+ <td class="paramname"> <em>sa_size</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>port</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_anyaddr fills in a "struct sockaddr sa" that can be used to bind(2) to. The argument sa_size should initially contain the size of the sa, and after the call, it will contain the actual length of the address.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>af</em>&nbsp;</td><td>address family </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>sa</em>&nbsp;</td><td>sockaddr </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>sa_size</em>&nbsp;</td><td>lenght of sa. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>for to fill into sa.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf56d02edcc81b3edd3c5a1e2e16e99e3"></a><!-- doxytag: member="addr_families.c::krb5_append_addresses" ref="gf56d02edcc81b3edd3c5a1e2e16e99e3" args="(krb5_context context, krb5_addresses *dest, const krb5_addresses *source)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_append_addresses </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_addresses *&nbsp;</td>
+ <td class="paramname"> <em>dest</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_addresses *&nbsp;</td>
+ <td class="paramname"> <em>source</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_append_addresses adds the set of addresses in source to dest. While copying the addresses, duplicates are also sorted out.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>destination of copy operation </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>adresses that are going to be added to dest</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf965da6155d3b086a6ca2e47b391f5df"></a><!-- doxytag: member="addr_families.c::krb5_copy_address" ref="gf965da6155d3b086a6ca2e47b391f5df" args="(krb5_context context, const krb5_address *inaddr, krb5_address *outaddr)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_address </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_address *&nbsp;</td>
+ <td class="paramname"> <em>inaddr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_address *&nbsp;</td>
+ <td class="paramname"> <em>outaddr</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_copy_address copies the content of address inaddr to outaddr.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>inaddr</em>&nbsp;</td><td>pointer to source address </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>outaddr</em>&nbsp;</td><td>pointer to destination address</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8b73a9ee0e1259a7f10809b329483b85"></a><!-- doxytag: member="addr_families.c::krb5_copy_addresses" ref="g8b73a9ee0e1259a7f10809b329483b85" args="(krb5_context context, const krb5_addresses *inaddr, krb5_addresses *outaddr)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_addresses </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_addresses *&nbsp;</td>
+ <td class="paramname"> <em>inaddr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_addresses *&nbsp;</td>
+ <td class="paramname"> <em>outaddr</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_copy_addresses copies the content of addresses inaddr to outaddr.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>inaddr</em>&nbsp;</td><td>pointer to source addresses </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>outaddr</em>&nbsp;</td><td>pointer to destination addresses</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g705d91f9f2a2311b656371e553af66a3"></a><!-- doxytag: member="addr_families.c::krb5_free_address" ref="g705d91f9f2a2311b656371e553af66a3" args="(krb5_context context, krb5_address *address)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_free_address </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_address *&nbsp;</td>
+ <td class="paramname"> <em>address</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_free_address frees the data stored in the address that is alloced with any of the krb5_address functions.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>addresss to be freed.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3b5f1c170a4af0de561bc30486983cc5"></a><!-- doxytag: member="addr_families.c::krb5_free_addresses" ref="g3b5f1c170a4af0de561bc30486983cc5" args="(krb5_context context, krb5_addresses *addresses)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_free_addresses </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_addresses *&nbsp;</td>
+ <td class="paramname"> <em>addresses</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_free_addresses frees the data stored in the address that is alloced with any of the krb5_address functions.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addresses</em>&nbsp;</td><td>addressses to be freed.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb8901409302e9e7bb95187e4d5e6a179"></a><!-- doxytag: member="addr_families.c::krb5_h_addr2addr" ref="gb8901409302e9e7bb95187e4d5e6a179" args="(krb5_context context, int af, const char *haddr, krb5_address *addr)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_h_addr2addr </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>af</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>haddr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_address *&nbsp;</td>
+ <td class="paramname"> <em>addr</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_h_addr2addr works like krb5_h_addr2sockaddr with the exception that it operates on a krb5_address instead of a struct sockaddr.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>af</em>&nbsp;</td><td>address family </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>haddr</em>&nbsp;</td><td>host address from struct hostent. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>returned krb5_address.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g51cd06ac365188aa989256b99b706f80"></a><!-- doxytag: member="addr_families.c::krb5_h_addr2sockaddr" ref="g51cd06ac365188aa989256b99b706f80" args="(krb5_context context, int af, const char *addr, struct sockaddr *sa, krb5_socklen_t *sa_size, int port)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_h_addr2sockaddr </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>af</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>addr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct sockaddr *&nbsp;</td>
+ <td class="paramname"> <em>sa</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_socklen_t *&nbsp;</td>
+ <td class="paramname"> <em>sa_size</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>port</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_h_addr2sockaddr initializes a "struct sockaddr sa" from af and the "struct hostent" (see gethostbyname(3) ) h_addr_list component. The argument sa_size should initially contain the size of the sa, and after the call, it will contain the actual length of the address.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>af</em>&nbsp;</td><td>addresses </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>address </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>sa</em>&nbsp;</td><td>returned struct sockaddr </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>sa_size</em>&nbsp;</td><td>size of sa </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>port to set in sa.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc50ffb71832862424c35c1ace9bbe14d"></a><!-- doxytag: member="addr_families.c::krb5_make_addrport" ref="gc50ffb71832862424c35c1ace9bbe14d" args="(krb5_context context, krb5_address **res, const krb5_address *addr, int16_t port)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_make_addrport </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_address **&nbsp;</td>
+ <td class="paramname"> <em>res</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_address *&nbsp;</td>
+ <td class="paramname"> <em>addr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int16_t&nbsp;</td>
+ <td class="paramname"> <em>port</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create an address of type KRB5_ADDRESS_ADDRPORT from (addr, port)<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>built address from addr/port </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>address to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>port to use</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g55bd20d9a185cf7963e2117c1c804c85"></a><!-- doxytag: member="addr_families.c::krb5_max_sockaddr_size" ref="g55bd20d9a185cf7963e2117c1c804c85" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION size_t KRB5_LIB_CALL krb5_max_sockaddr_size </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_max_sockaddr_size returns the max size of the .Li struct sockaddr that the Kerberos library will return.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an size_t of the maximum struct sockaddr. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd7bc7e348e6d36c4cf09dcd2ee5a92a3"></a><!-- doxytag: member="addr_families.c::krb5_parse_address" ref="gd7bc7e348e6d36c4cf09dcd2ee5a92a3" args="(krb5_context context, const char *string, krb5_addresses *addresses)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_parse_address </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>string</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_addresses *&nbsp;</td>
+ <td class="paramname"> <em>addresses</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_parse_address returns the resolved hostname in string to the krb5_addresses addresses .<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>string</em>&nbsp;</td><td></td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addresses</em>&nbsp;</td><td></td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6e9adff4c8738f92fa2637698c06ccb9"></a><!-- doxytag: member="addr_families.c::krb5_print_address" ref="g6e9adff4c8738f92fa2637698c06ccb9" args="(const krb5_address *addr, char *str, size_t len, size_t *ret_len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_print_address </td>
+ <td>(</td>
+ <td class="paramtype">const krb5_address *&nbsp;</td>
+ <td class="paramname"> <em>addr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>str</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t *&nbsp;</td>
+ <td class="paramname"> <em>ret_len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_print_address prints the address in addr to the string string that have the length len. If ret_len is not NULL, it will be filled with the length of the string if size were unlimited (not including the final NUL) .<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>address to be printed </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>pointer string to print the address into </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length that will fit into area pointed to by "str". </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ret_len</em>&nbsp;</td><td>return length the str.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gec34704845bdaee3c08ebba2fa87d61e"></a><!-- doxytag: member="addr_families.c::krb5_sockaddr2address" ref="gec34704845bdaee3c08ebba2fa87d61e" args="(krb5_context context, const struct sockaddr *sa, krb5_address *addr)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_sockaddr2address </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const struct sockaddr *&nbsp;</td>
+ <td class="paramname"> <em>sa</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_address *&nbsp;</td>
+ <td class="paramname"> <em>addr</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_sockaddr2address stores a address a "struct sockaddr" sa in the krb5_address addr.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>sa</em>&nbsp;</td><td>a struct sockaddr to extract the address from </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>addr</em>&nbsp;</td><td>an Kerberos 5 address to store the address in.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g76125115a2c040a3f70a4f66eada77aa"></a><!-- doxytag: member="addr_families.c::krb5_sockaddr2port" ref="g76125115a2c040a3f70a4f66eada77aa" args="(krb5_context context, const struct sockaddr *sa, int16_t *port)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_sockaddr2port </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const struct sockaddr *&nbsp;</td>
+ <td class="paramname"> <em>sa</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int16_t *&nbsp;</td>
+ <td class="paramname"> <em>port</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_sockaddr2port extracts a port (if possible) from a "struct sockaddr.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>sa</em>&nbsp;</td><td>a struct sockaddr to extract the port from </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>a pointer to an int16_t store the port in.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. Will return KRB5_PROG_ATYPE_NOSUPP in case address type is not supported. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc4c55c7ef3d078993b0177649593088c"></a><!-- doxytag: member="addr_families.c::krb5_sockaddr_uninteresting" ref="gc4c55c7ef3d078993b0177649593088c" args="(const struct sockaddr *sa)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_sockaddr_uninteresting </td>
+ <td>(</td>
+ <td class="paramtype">const struct sockaddr *&nbsp;</td>
+ <td class="paramname"> <em>sa</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_sockaddr_uninteresting returns TRUE for all .Fa sa that the kerberos library thinks are uninteresting. One example are link local addresses.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sa</em>&nbsp;</td><td>pointer to struct sockaddr that might be interesting.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return a non zero for uninteresting addresses. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__auth.html b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__auth.html
new file mode 100644
index 000000000000..26fcd3ab55aa
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__auth.html
@@ -0,0 +1,320 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Heimdal Kerberos 5 authentication functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal Kerberos 5 authentication functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__auth.html#g92b082fa699694b353fa51675f2c2259">krb5_rd_req_in_ctx_alloc</a> (krb5_context context, krb5_rd_req_in_ctx *ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__auth.html#g124150b9eea8b56a9b432cf5e7a8db07">krb5_rd_req_in_set_keytab</a> (krb5_context context, krb5_rd_req_in_ctx in, krb5_keytab keytab)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__auth.html#gdd6913bc77982a536168d9dd52df2363">krb5_rd_req_in_set_pac_check</a> (krb5_context context, krb5_rd_req_in_ctx in, krb5_boolean flag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__auth.html#gc1ffffee7558466d31c23b110c95aa7b">krb5_rd_req_out_get_server</a> (krb5_context context, krb5_rd_req_out_ctx out, krb5_principal *principal)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__auth.html#gd8a5460c599500c0d64e632341c8f74a">krb5_rd_req_out_ctx_free</a> (krb5_context context, krb5_rd_req_out_ctx ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__auth.html#g589cab7251a70a5addbf1af56313401e">krb5_rd_req_ctx</a> (krb5_context context, krb5_auth_context *auth_context, const krb5_data *inbuf, krb5_const_principal server, krb5_rd_req_in_ctx inctx, krb5_rd_req_out_ctx *outctx)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g589cab7251a70a5addbf1af56313401e"></a><!-- doxytag: member="rd_req.c::krb5_rd_req_ctx" ref="g589cab7251a70a5addbf1af56313401e" args="(krb5_context context, krb5_auth_context *auth_context, const krb5_data *inbuf, krb5_const_principal server, krb5_rd_req_in_ctx inctx, krb5_rd_req_out_ctx *outctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_rd_req_ctx </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_auth_context *&nbsp;</td>
+ <td class="paramname"> <em>auth_context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>inbuf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>server</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_rd_req_in_ctx&nbsp;</td>
+ <td class="paramname"> <em>inctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_rd_req_out_ctx *&nbsp;</td>
+ <td class="paramname"> <em>outctx</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The core server function that verify application authentication requests from clients.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Keberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>auth_context</em>&nbsp;</td><td>the authentication context, can be NULL, then default values for the authentication context will used. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>inbuf</em>&nbsp;</td><td>the (AP-REQ) authentication buffer</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>server</em>&nbsp;</td><td>the server with authenticate as, if NULL the function will try to find any available credential in the keytab that will verify the reply. The function will prefer the server the server client specified in the AP-REQ, but if there is no mach, it will try all keytab entries for a match. This have serious performance issues for larger keytabs.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>inctx</em>&nbsp;</td><td>control the behavior of the function, if NULL, the default behavior is used. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>outctx</em>&nbsp;</td><td>the return outctx, free with <a class="el" href="group__krb5__auth.html#gd8a5460c599500c0d64e632341c8f74a">krb5_rd_req_out_ctx_free()</a>. </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Kerberos 5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g92b082fa699694b353fa51675f2c2259"></a><!-- doxytag: member="rd_req.c::krb5_rd_req_in_ctx_alloc" ref="g92b082fa699694b353fa51675f2c2259" args="(krb5_context context, krb5_rd_req_in_ctx *ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_rd_req_in_ctx_alloc </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_rd_req_in_ctx *&nbsp;</td>
+ <td class="paramname"> <em>ctx</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Allocate a krb5_rd_req_in_ctx as an input parameter to <a class="el" href="group__krb5__auth.html#g589cab7251a70a5addbf1af56313401e">krb5_rd_req_ctx()</a>. The caller should free the context with krb5_rd_req_in_ctx_free() when done with the context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Keberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>in ctx to <a class="el" href="group__krb5__auth.html#g589cab7251a70a5addbf1af56313401e">krb5_rd_req_ctx()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Kerberos 5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g124150b9eea8b56a9b432cf5e7a8db07"></a><!-- doxytag: member="rd_req.c::krb5_rd_req_in_set_keytab" ref="g124150b9eea8b56a9b432cf5e7a8db07" args="(krb5_context context, krb5_rd_req_in_ctx in, krb5_keytab keytab)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_rd_req_in_set_keytab </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_rd_req_in_ctx&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab&nbsp;</td>
+ <td class="paramname"> <em>keytab</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the keytab that <a class="el" href="group__krb5__auth.html#g589cab7251a70a5addbf1af56313401e">krb5_rd_req_ctx()</a> will use.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Keberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>in ctx to <a class="el" href="group__krb5__auth.html#g589cab7251a70a5addbf1af56313401e">krb5_rd_req_ctx()</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>keytab</em>&nbsp;</td><td>keytab that <a class="el" href="group__krb5__auth.html#g589cab7251a70a5addbf1af56313401e">krb5_rd_req_ctx()</a> will use, only copy the pointer, so the caller must free they keytab after krb5_rd_req_in_ctx_free() is called.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Kerberos 5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gdd6913bc77982a536168d9dd52df2363"></a><!-- doxytag: member="rd_req.c::krb5_rd_req_in_set_pac_check" ref="gdd6913bc77982a536168d9dd52df2363" args="(krb5_context context, krb5_rd_req_in_ctx in, krb5_boolean flag)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_rd_req_in_set_pac_check </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_rd_req_in_ctx&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_boolean&nbsp;</td>
+ <td class="paramname"> <em>flag</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set if krb5_rq_red() is going to check the Windows PAC or not<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Keberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>krb5_rd_req_in_ctx to check the option on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flag</em>&nbsp;</td><td>flag to select if to check the pac (TRUE) or not (FALSE).</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Kerberos 5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd8a5460c599500c0d64e632341c8f74a"></a><!-- doxytag: member="rd_req.c::krb5_rd_req_out_ctx_free" ref="gd8a5460c599500c0d64e632341c8f74a" args="(krb5_context context, krb5_rd_req_out_ctx ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_rd_req_out_ctx_free </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_rd_req_out_ctx&nbsp;</td>
+ <td class="paramname"> <em>ctx</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free the krb5_rd_req_out_ctx.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Keberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>krb5_rd_req_out_ctx context to free. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc1ffffee7558466d31c23b110c95aa7b"></a><!-- doxytag: member="rd_req.c::krb5_rd_req_out_get_server" ref="gc1ffffee7558466d31c23b110c95aa7b" args="(krb5_context context, krb5_rd_req_out_ctx out, krb5_principal *principal)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_rd_req_out_get_server </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_rd_req_out_ctx&nbsp;</td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal *&nbsp;</td>
+ <td class="paramname"> <em>principal</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the principal that was used in the request from the client. Might not match whats in the ticket if <a class="el" href="group__krb5__auth.html#g589cab7251a70a5addbf1af56313401e">krb5_rd_req_ctx()</a> searched in the keytab for a matching key.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>a krb5_rd_req_out_ctx from <a class="el" href="group__krb5__auth.html#g589cab7251a70a5addbf1af56313401e">krb5_rd_req_ctx()</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>return principal, free with <a class="el" href="group__krb5__principal.html#g5bd3f620ebe8cd4fe44b5c858ba17d22">krb5_free_principal()</a>. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__ccache.html b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__ccache.html
new file mode 100644
index 000000000000..7f2c77f84eaa
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__ccache.html
@@ -0,0 +1,2264 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Heimdal Kerberos 5 credential cache functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal Kerberos 5 credential cache functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#gc3a45bff840e57a9675d51c1fee6c2e8">krb5_cc_register</a> (krb5_context context, const krb5_cc_ops *ops, krb5_boolean override)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#ge8ab9d6f4af5710dab860f2806a7d13b">krb5_cc_resolve</a> (krb5_context context, const char *name, krb5_ccache *id)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g86c0f70d0c2b5de2d876edf4b693b5b9">krb5_cc_new_unique</a> (krb5_context context, const char *type, const char *hint, krb5_ccache *id)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION const char <br>
+*KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g99e06555ebd9e2f02ce250918f5ee846">krb5_cc_get_name</a> (krb5_context context, krb5_ccache id)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION const char <br>
+*KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g08ab758e7d47c00d266beaff319f2736">krb5_cc_get_type</a> (krb5_context context, krb5_ccache id)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g8cd3ff7e8d884abfab2805b50c9fc5bf">krb5_cc_get_full_name</a> (krb5_context context, krb5_ccache id, char **str)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION const <br>
+krb5_cc_ops *KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#gd7ee5a815a02d132862f77a7749edf4a">krb5_cc_get_ops</a> (krb5_context context, krb5_ccache id)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#gc2b41cdf638a1ec3d0fd4e72d7b71f3a">krb5_cc_switch</a> (krb5_context context, krb5_ccache id)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g52344bb9dee620b5e386a9dd3c996e0f">krb5_cc_support_switch</a> (krb5_context context, const char *type)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g86c6699db4cbdcf18f42add005040941">krb5_cc_set_default_name</a> (krb5_context context, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION const char <br>
+*KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#gbba6e24537d53808ee90eed7551fc0c1">krb5_cc_default_name</a> (krb5_context context)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#gd7d54822ef022f3e27f7f0f457d9c751">krb5_cc_default</a> (krb5_context context, krb5_ccache *id)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#gb66e7ef829afdad1cd37c1ead2262843">krb5_cc_initialize</a> (krb5_context context, krb5_ccache id, krb5_principal primary_principal)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g3115bcccd71594374831caa9a07b1290">krb5_cc_destroy</a> (krb5_context context, krb5_ccache id)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#gebc0dd2a77529c05fb49e27235da7017">krb5_cc_close</a> (krb5_context context, krb5_ccache id)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g7092b498b9acfab73491d9b15c1bc821">krb5_cc_store_cred</a> (krb5_context context, krb5_ccache id, krb5_creds *creds)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g7ae6118dc052a0b5fbae2e73596b9cf7">krb5_cc_retrieve_cred</a> (krb5_context context, krb5_ccache id, krb5_flags whichfields, const krb5_creds *mcreds, krb5_creds *creds)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g0d0b8a8698b3bfb079d235a1232160fd">krb5_cc_get_principal</a> (krb5_context context, krb5_ccache id, krb5_principal *principal)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#gcbf766cea6b49dd64b76628c7708b979">krb5_cc_start_seq_get</a> (krb5_context context, const krb5_ccache id, krb5_cc_cursor *cursor)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#gd9cd0ebcc7bdf3ca2b0ed166ea2f8df6">krb5_cc_next_cred</a> (krb5_context context, const krb5_ccache id, krb5_cc_cursor *cursor, krb5_creds *creds)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g024ce036ebf277f918354d4681bd0550">krb5_cc_end_seq_get</a> (krb5_context context, const krb5_ccache id, krb5_cc_cursor *cursor)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g46126e8ea4420b494fd7f5c8dc7a5fda">krb5_cc_remove_cred</a> (krb5_context context, krb5_ccache id, krb5_flags which, krb5_creds *cred)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g289cc14cd4b24c5f30031f9bd17db857">krb5_cc_set_flags</a> (krb5_context context, krb5_ccache id, krb5_flags flags)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g5ce8d7a3dafd8d750c4e98429205f737">krb5_cc_get_flags</a> (krb5_context context, krb5_ccache id, krb5_flags *flags)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g432b6b4e84262d1f3f84ff36cf9da57e">krb5_cc_copy_match_f</a> (krb5_context context, const krb5_ccache from, krb5_ccache to, krb5_boolean(*match)(krb5_context, void *, const krb5_creds *), void *matchctx, unsigned int *matched)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#gc68afe0efd13b8ef5489ddde21e49525">krb5_cc_copy_cache</a> (krb5_context context, const krb5_ccache from, krb5_ccache to)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g83845338ad0292cff8b9e34955c32ace">krb5_cc_get_version</a> (krb5_context context, const krb5_ccache id)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g704afc89612843c7844e0eca7a9c26f3">krb5_cc_clear_mcred</a> (krb5_creds *mcred)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION const <br>
+krb5_cc_ops *KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g2a9faa8374678785261160e2966343db">krb5_cc_get_prefix_ops</a> (krb5_context context, const char *prefix)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#gac7e0690f9b79ca82d4037467f587741">krb5_cc_cache_get_first</a> (krb5_context context, const char *type, krb5_cc_cache_cursor *cursor)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g7c61cdcba0ac4a2584ac080d3e6210bd">krb5_cc_cache_next</a> (krb5_context context, krb5_cc_cache_cursor cursor, krb5_ccache *id)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g79777e9758a9ff1beb2fd84a90cbd52c">krb5_cc_cache_end_seq_get</a> (krb5_context context, krb5_cc_cache_cursor cursor)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g6ff680ba8ad9e4e81131d421d751c22a">krb5_cc_cache_match</a> (krb5_context context, krb5_principal client, krb5_ccache *id)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#gbf9f97e04dd6fceb4f0a73afb819c16c">krb5_cc_move</a> (krb5_context context, krb5_ccache from, krb5_ccache to)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g7aae400e0b7a263ed7de884ed0a433be">krb5_is_config_principal</a> (krb5_context context, krb5_const_principal principal)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g562a222918f31fb27ba2060af2ae315b">krb5_cc_set_config</a> (krb5_context context, krb5_ccache id, krb5_const_principal principal, const char *name, krb5_data *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#gd4161eacf89b11edbe222b74c9e6fbef">krb5_cc_get_config</a> (krb5_context context, krb5_ccache id, krb5_const_principal principal, const char *name, krb5_data *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g06b59cb27291f73994294ac9567c5d9b">krb5_cccol_cursor_new</a> (krb5_context context, krb5_cccol_cursor *cursor)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g3f1e7d611a7e16c9d7f1d2f171b72542">krb5_cccol_cursor_next</a> (krb5_context context, krb5_cccol_cursor cursor, krb5_ccache *cache)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g45efd722e955444f3d6083966446fd54">krb5_cccol_cursor_free</a> (krb5_context context, krb5_cccol_cursor *cursor)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g90e97172b4cc6bd3f64290cf93236c52">krb5_cc_last_change_time</a> (krb5_context context, krb5_ccache id, krb5_timestamp *mtime)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g058a08546f002063625d22a3ebc94897">krb5_cccol_last_change_time</a> (krb5_context context, const char *type, krb5_timestamp *mtime)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g085a03429338d58cae4599e0a028e995">krb5_cc_get_friendly_name</a> (krb5_context context, krb5_ccache id, char **name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#gc0765d91e9cc8936dc8fcbd0abddcb78">krb5_cc_set_friendly_name</a> (krb5_context context, krb5_ccache id, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g353afddbcbe2f4acc00971888962567f">krb5_cc_get_lifetime</a> (krb5_context context, krb5_ccache id, time_t *t)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g51ceb3c48f1c1abc73beadb5d6f34621">krb5_cc_set_kdc_offset</a> (krb5_context context, krb5_ccache id, krb5_deltat offset)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g670e4b093c4f858687e0646641b0024c">krb5_cc_get_kdc_offset</a> (krb5_context context, krb5_ccache id, krb5_deltat *offset)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g4291d5acf30523b93f84fe9473aed4e4">krb5_cc_gen_new</a> (krb5_context context, const krb5_cc_ops *ops, krb5_ccache *id) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g6eb819810e7d74f09ae902f1ea784066">krb5_cc_copy_creds</a> (krb5_context context, const krb5_ccache from, krb5_ccache to)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g00aae24e7570d1aea954c173287900bc">krb5_get_validated_creds</a> (krb5_context context, krb5_creds *creds, krb5_principal client, krb5_ccache ccache, char *service)</td></tr>
+
+<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_VARIABLE const krb5_cc_ops&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g6e72d7bbecc876f7265e4b20f087e04f">krb5_acc_ops</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_VARIABLE const krb5_cc_ops&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#gff6f544b45b0b7662443e70609527702">krb5_fcc_ops</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_VARIABLE const krb5_cc_ops&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ccache.html#g4b23b96d2f610d79c642d516eb4d067c">krb5_mcc_ops</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g79777e9758a9ff1beb2fd84a90cbd52c"></a><!-- doxytag: member="cache.c::krb5_cc_cache_end_seq_get" ref="g79777e9758a9ff1beb2fd84a90cbd52c" args="(krb5_context context, krb5_cc_cache_cursor cursor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_cache_end_seq_get </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_cc_cache_cursor&nbsp;</td>
+ <td class="paramname"> <em>cursor</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Destroy the cursor `cursor'.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gac7e0690f9b79ca82d4037467f587741"></a><!-- doxytag: member="cache.c::krb5_cc_cache_get_first" ref="gac7e0690f9b79ca82d4037467f587741" args="(krb5_context context, const char *type, krb5_cc_cache_cursor *cursor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_cache_get_first </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_cc_cache_cursor *&nbsp;</td>
+ <td class="paramname"> <em>cursor</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Start iterating over all caches of specified type. See also <a class="el" href="group__krb5__ccache.html#g06b59cb27291f73994294ac9567c5d9b">krb5_cccol_cursor_new()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>optional type to iterate over, if NULL, the default cache is used. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cursor</em>&nbsp;</td><td>cursor should be freed with <a class="el" href="group__krb5__ccache.html#g79777e9758a9ff1beb2fd84a90cbd52c">krb5_cc_cache_end_seq_get()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6ff680ba8ad9e4e81131d421d751c22a"></a><!-- doxytag: member="cache.c::krb5_cc_cache_match" ref="g6ff680ba8ad9e4e81131d421d751c22a" args="(krb5_context context, krb5_principal client, krb5_ccache *id)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_cache_match </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal&nbsp;</td>
+ <td class="paramname"> <em>client</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache *&nbsp;</td>
+ <td class="paramname"> <em>id</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Search for a matching credential cache that have the `principal' as the default principal. On success, `id' needs to be freed with <a class="el" href="group__krb5__ccache.html#gebc0dd2a77529c05fb49e27235da7017">krb5_cc_close()</a> or <a class="el" href="group__krb5__ccache.html#g3115bcccd71594374831caa9a07b1290">krb5_cc_destroy()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>The principal to search for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>the returned credential cache</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On failure, error code is returned and `id' is set to NULL. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7c61cdcba0ac4a2584ac080d3e6210bd"></a><!-- doxytag: member="cache.c::krb5_cc_cache_next" ref="g7c61cdcba0ac4a2584ac080d3e6210bd" args="(krb5_context context, krb5_cc_cache_cursor cursor, krb5_ccache *id)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_cache_next </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_cc_cache_cursor&nbsp;</td>
+ <td class="paramname"> <em>cursor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache *&nbsp;</td>
+ <td class="paramname"> <em>id</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Retrieve the next cache pointed to by (`cursor') in `id' and advance `cursor'.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cursor</em>&nbsp;</td><td>the iterator cursor, returned by <a class="el" href="group__krb5__ccache.html#gac7e0690f9b79ca82d4037467f587741">krb5_cc_cache_get_first()</a> </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>next ccache</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return 0 or an error code. Returns KRB5_CC_END when the end of caches is reached, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g704afc89612843c7844e0eca7a9c26f3"></a><!-- doxytag: member="cache.c::krb5_cc_clear_mcred" ref="g704afc89612843c7844e0eca7a9c26f3" args="(krb5_creds *mcred)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_cc_clear_mcred </td>
+ <td>(</td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>mcred</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Clear `mcreds' so it can be used with krb5_cc_retrieve_cred
+</div>
+</div><p>
+<a class="anchor" name="gebc0dd2a77529c05fb49e27235da7017"></a><!-- doxytag: member="cache.c::krb5_cc_close" ref="gebc0dd2a77529c05fb49e27235da7017" args="(krb5_context context, krb5_ccache id)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_close </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Stop using the ccache `id' and free the related resources.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc68afe0efd13b8ef5489ddde21e49525"></a><!-- doxytag: member="cache.c::krb5_cc_copy_cache" ref="gc68afe0efd13b8ef5489ddde21e49525" args="(krb5_context context, const krb5_ccache from, krb5_ccache to)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_copy_cache </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>from</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>to</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Just like <a class="el" href="group__krb5__ccache.html#g432b6b4e84262d1f3f84ff36cf9da57e">krb5_cc_copy_match_f()</a>, but copy everything.<p>
+@
+</div>
+</div><p>
+<a class="anchor" name="g6eb819810e7d74f09ae902f1ea784066"></a><!-- doxytag: member="mit_glue.c::krb5_cc_copy_creds" ref="g6eb819810e7d74f09ae902f1ea784066" args="(krb5_context context, const krb5_ccache from, krb5_ccache to)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_copy_creds </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>from</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>to</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+MIT compat glue
+</div>
+</div><p>
+<a class="anchor" name="g432b6b4e84262d1f3f84ff36cf9da57e"></a><!-- doxytag: member="cache.c::krb5_cc_copy_match_f" ref="g432b6b4e84262d1f3f84ff36cf9da57e" args="(krb5_context context, const krb5_ccache from, krb5_ccache to, krb5_boolean(*match)(krb5_context, void *, const krb5_creds *), void *matchctx, unsigned int *matched)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_copy_match_f </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>from</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>to</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_boolean(*)(krb5_context, void *, const krb5_creds *)&nbsp;</td>
+ <td class="paramname"> <em>match</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>matchctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int *&nbsp;</td>
+ <td class="paramname"> <em>matched</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy the contents of `from' to `to' if the given match function return true.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>from</em>&nbsp;</td><td>the cache to copy data from. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>to</em>&nbsp;</td><td>the cache to copy data to. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>match</em>&nbsp;</td><td>a match function that should return TRUE if cred argument should be copied, if NULL, all credentials are copied. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>matchctx</em>&nbsp;</td><td>context passed to match function. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>matched</em>&nbsp;</td><td>set to true if there was a credential that matched, may be NULL.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd7d54822ef022f3e27f7f0f457d9c751"></a><!-- doxytag: member="cache.c::krb5_cc_default" ref="gd7d54822ef022f3e27f7f0f457d9c751" args="(krb5_context context, krb5_ccache *id)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_default </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache *&nbsp;</td>
+ <td class="paramname"> <em>id</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Open the default ccache in `id'.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gbba6e24537d53808ee90eed7551fc0c1"></a><!-- doxytag: member="cache.c::krb5_cc_default_name" ref="gbba6e24537d53808ee90eed7551fc0c1" args="(krb5_context context)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL krb5_cc_default_name </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return a pointer to a context static string containing the default ccache name.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>String to the default credential cache name. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3115bcccd71594374831caa9a07b1290"></a><!-- doxytag: member="cache.c::krb5_cc_destroy" ref="g3115bcccd71594374831caa9a07b1290" args="(krb5_context context, krb5_ccache id)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_destroy </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Remove the ccache `id'.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g024ce036ebf277f918354d4681bd0550"></a><!-- doxytag: member="cache.c::krb5_cc_end_seq_get" ref="g024ce036ebf277f918354d4681bd0550" args="(krb5_context context, const krb5_ccache id, krb5_cc_cursor *cursor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_end_seq_get </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_cc_cursor *&nbsp;</td>
+ <td class="paramname"> <em>cursor</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Destroy the cursor `cursor'.
+</div>
+</div><p>
+<a class="anchor" name="g4291d5acf30523b93f84fe9473aed4e4"></a><!-- doxytag: member="deprecated.c::krb5_cc_gen_new" ref="g4291d5acf30523b93f84fe9473aed4e4" args="(krb5_context context, const krb5_cc_ops *ops, krb5_ccache *id) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_gen_new </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_cc_ops *&nbsp;</td>
+ <td class="paramname"> <em>ops</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache *&nbsp;</td>
+ <td class="paramname"> <em>id</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Generate a new ccache of type `ops' in `id'.<p>
+Deprecated: use <a class="el" href="group__krb5__ccache.html#g86c0f70d0c2b5de2d876edf4b693b5b9">krb5_cc_new_unique()</a> instead.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd4161eacf89b11edbe222b74c9e6fbef"></a><!-- doxytag: member="cache.c::krb5_cc_get_config" ref="gd4161eacf89b11edbe222b74c9e6fbef" args="(krb5_context context, krb5_ccache id, krb5_const_principal principal, const char *name, krb5_data *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_config </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get some configuration for the credential cache in the cache.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>the credential cache to store the data for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>configuration for a specific principal, if NULL, global for the whole cache. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>name under which the configuraion is stored. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>data to fetched, free with <a class="el" href="group__krb5.html#gb4b80ac7a8bbab89fe947ae1c7828ea8">krb5_data_free()</a> </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5ce8d7a3dafd8d750c4e98429205f737"></a><!-- doxytag: member="cache.c::krb5_cc_get_flags" ref="g5ce8d7a3dafd8d750c4e98429205f737" args="(krb5_context context, krb5_ccache id, krb5_flags *flags)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_flags </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_flags *&nbsp;</td>
+ <td class="paramname"> <em>flags</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the flags of `id', store them in `flags'.
+</div>
+</div><p>
+<a class="anchor" name="g085a03429338d58cae4599e0a028e995"></a><!-- doxytag: member="cache.c::krb5_cc_get_friendly_name" ref="g085a03429338d58cae4599e0a028e995" args="(krb5_context context, krb5_ccache id, char **name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_friendly_name </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return a friendly name on credential cache. Free the result with krb5_xfree().<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8cd3ff7e8d884abfab2805b50c9fc5bf"></a><!-- doxytag: member="cache.c::krb5_cc_get_full_name" ref="g8cd3ff7e8d884abfab2805b50c9fc5bf" args="(krb5_context context, krb5_ccache id, char **str)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_full_name </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>str</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the complete resolvable name the cache<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>return pointer to a found credential cache </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>the returned name of a credential cache, free with krb5_xfree()</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 or an error (and then *str is set to NULL). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g670e4b093c4f858687e0646641b0024c"></a><!-- doxytag: member="cache.c::krb5_cc_get_kdc_offset" ref="g670e4b093c4f858687e0646641b0024c" args="(krb5_context context, krb5_ccache id, krb5_deltat *offset)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_kdc_offset </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_deltat *&nbsp;</td>
+ <td class="paramname"> <em>offset</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the time offset betwen the client and the KDC<p>
+If the backend doesn't support KDC offset, use the context global setting.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>a credential cache </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>the offset in seconds</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g353afddbcbe2f4acc00971888962567f"></a><!-- doxytag: member="cache.c::krb5_cc_get_lifetime" ref="g353afddbcbe2f4acc00971888962567f" args="(krb5_context context, krb5_ccache id, time_t *t)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_lifetime </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">time_t *&nbsp;</td>
+ <td class="paramname"> <em>t</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the lifetime of the initial ticket in the cache<p>
+Get the lifetime of the initial ticket in the cache, if the initial ticket was not found, the error code KRB5_CC_END is returned.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>a credential cache </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>the relative lifetime of the initial ticket</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g99e06555ebd9e2f02ce250918f5ee846"></a><!-- doxytag: member="cache.c::krb5_cc_get_name" ref="g99e06555ebd9e2f02ce250918f5ee846" args="(krb5_context context, krb5_ccache id)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL krb5_cc_get_name </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the name of the ccache `id'
+</div>
+</div><p>
+<a class="anchor" name="gd7ee5a815a02d132862f77a7749edf4a"></a><!-- doxytag: member="cache.c::krb5_cc_get_ops" ref="gd7ee5a815a02d132862f77a7749edf4a" args="(krb5_context context, krb5_ccache id)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION const krb5_cc_ops* KRB5_LIB_CALL krb5_cc_get_ops </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return krb5_cc_ops of a the ccache `id'.
+</div>
+</div><p>
+<a class="anchor" name="g2a9faa8374678785261160e2966343db"></a><!-- doxytag: member="cache.c::krb5_cc_get_prefix_ops" ref="g2a9faa8374678785261160e2966343db" args="(krb5_context context, const char *prefix)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION const krb5_cc_ops* KRB5_LIB_CALL krb5_cc_get_prefix_ops </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>prefix</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the cc ops that is registered in `context' to handle the prefix. prefix can be a complete credential cache name or a prefix, the function will only use part up to the first colon (:) if there is one. If prefix the argument is NULL, the default ccache implemtation is returned.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns NULL if ops not found. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g0d0b8a8698b3bfb079d235a1232160fd"></a><!-- doxytag: member="cache.c::krb5_cc_get_principal" ref="g0d0b8a8698b3bfb079d235a1232160fd" args="(krb5_context context, krb5_ccache id, krb5_principal *principal)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_principal </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal *&nbsp;</td>
+ <td class="paramname"> <em>principal</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the principal of `id' in `principal'.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g08ab758e7d47c00d266beaff319f2736"></a><!-- doxytag: member="cache.c::krb5_cc_get_type" ref="g08ab758e7d47c00d266beaff319f2736" args="(krb5_context context, krb5_ccache id)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL krb5_cc_get_type </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the type of the ccache `id'.
+</div>
+</div><p>
+<a class="anchor" name="g83845338ad0292cff8b9e34955c32ace"></a><!-- doxytag: member="cache.c::krb5_cc_get_version" ref="g83845338ad0292cff8b9e34955c32ace" args="(krb5_context context, const krb5_ccache id)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_version </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the version of `id'.
+</div>
+</div><p>
+<a class="anchor" name="gb66e7ef829afdad1cd37c1ead2262843"></a><!-- doxytag: member="cache.c::krb5_cc_initialize" ref="gb66e7ef829afdad1cd37c1ead2262843" args="(krb5_context context, krb5_ccache id, krb5_principal primary_principal)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_initialize </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal&nbsp;</td>
+ <td class="paramname"> <em>primary_principal</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a new ccache in `id' for `primary_principal'.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g90e97172b4cc6bd3f64290cf93236c52"></a><!-- doxytag: member="cache.c::krb5_cc_last_change_time" ref="g90e97172b4cc6bd3f64290cf93236c52" args="(krb5_context context, krb5_ccache id, krb5_timestamp *mtime)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_last_change_time </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_timestamp *&nbsp;</td>
+ <td class="paramname"> <em>mtime</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the last time the credential cache was modified.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>The credential cache to probe </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>mtime</em>&nbsp;</td><td>the last modification time, set to 0 on error.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return 0 or and error. See krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gbf9f97e04dd6fceb4f0a73afb819c16c"></a><!-- doxytag: member="cache.c::krb5_cc_move" ref="gbf9f97e04dd6fceb4f0a73afb819c16c" args="(krb5_context context, krb5_ccache from, krb5_ccache to)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_move </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>from</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>to</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Move the content from one credential cache to another. The operation is an atomic switch.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>from</em>&nbsp;</td><td>the credential cache to move the content from </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>to</em>&nbsp;</td><td>the credential cache to move the content to</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On sucess, from is freed. On failure, error code is returned and from and to are both still allocated, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g86c0f70d0c2b5de2d876edf4b693b5b9"></a><!-- doxytag: member="cache.c::krb5_cc_new_unique" ref="g86c0f70d0c2b5de2d876edf4b693b5b9" args="(krb5_context context, const char *type, const char *hint, krb5_ccache *id)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_new_unique </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>hint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache *&nbsp;</td>
+ <td class="paramname"> <em>id</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Generates a new unique ccache of `type` in `id'. If `type' is NULL, the library chooses the default credential cache type. The supplied `hint' (that can be NULL) is a string that the credential cache type can use to base the name of the credential on, this is to make it easier for the user to differentiate the credentials.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd9cd0ebcc7bdf3ca2b0ed166ea2f8df6"></a><!-- doxytag: member="cache.c::krb5_cc_next_cred" ref="gd9cd0ebcc7bdf3ca2b0ed166ea2f8df6" args="(krb5_context context, const krb5_ccache id, krb5_cc_cursor *cursor, krb5_creds *creds)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_next_cred </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_cc_cursor *&nbsp;</td>
+ <td class="paramname"> <em>cursor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>creds</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Retrieve the next cred pointed to by (`id', `cursor') in `creds' and advance `cursor'.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc3a45bff840e57a9675d51c1fee6c2e8"></a><!-- doxytag: member="cache.c::krb5_cc_register" ref="gc3a45bff840e57a9675d51c1fee6c2e8" args="(krb5_context context, const krb5_cc_ops *ops, krb5_boolean override)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_register </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_cc_ops *&nbsp;</td>
+ <td class="paramname"> <em>ops</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_boolean&nbsp;</td>
+ <td class="paramname"> <em>override</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add a new ccache type with operations `ops', overwriting any existing one if `override'.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ops</em>&nbsp;</td><td>type of plugin symbol </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>override</em>&nbsp;</td><td>flag to select if the registration is to overide an existing ops with the same name.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g46126e8ea4420b494fd7f5c8dc7a5fda"></a><!-- doxytag: member="cache.c::krb5_cc_remove_cred" ref="g46126e8ea4420b494fd7f5c8dc7a5fda" args="(krb5_context context, krb5_ccache id, krb5_flags which, krb5_creds *cred)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_remove_cred </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_flags&nbsp;</td>
+ <td class="paramname"> <em>which</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>cred</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Remove the credential identified by `cred', `which' from `id'.
+</div>
+</div><p>
+<a class="anchor" name="ge8ab9d6f4af5710dab860f2806a7d13b"></a><!-- doxytag: member="cache.c::krb5_cc_resolve" ref="ge8ab9d6f4af5710dab860f2806a7d13b" args="(krb5_context context, const char *name, krb5_ccache *id)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_resolve </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache *&nbsp;</td>
+ <td class="paramname"> <em>id</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Find and allocate a ccache in `id' from the specification in `residual'. If the ccache name doesn't contain any colon, interpret it as a file name.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>string name of a credential cache. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>return pointer to a found credential cache.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return 0 or an error code. In case of an error, id is set to NULL, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7ae6118dc052a0b5fbae2e73596b9cf7"></a><!-- doxytag: member="cache.c::krb5_cc_retrieve_cred" ref="g7ae6118dc052a0b5fbae2e73596b9cf7" args="(krb5_context context, krb5_ccache id, krb5_flags whichfields, const krb5_creds *mcreds, krb5_creds *creds)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_retrieve_cred </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_flags&nbsp;</td>
+ <td class="paramname"> <em>whichfields</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>mcreds</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>creds</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Retrieve the credential identified by `mcreds' (and `whichfields') from `id' in `creds'. 'creds' must be free by the caller using krb5_free_cred_contents.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>a Kerberos 5 credential cache </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>whichfields</em>&nbsp;</td><td>what fields to use for matching credentials, same flags as whichfields in <a class="el" href="group__krb5.html#g45afc77b07b201272eeeaad9890b63cf">krb5_compare_creds()</a> </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>mcreds</em>&nbsp;</td><td>template credential to use for comparing </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>creds</em>&nbsp;</td><td>returned credential, free with <a class="el" href="group__krb5.html#gd89c4c7b633646c39e4a34a7230c94e1">krb5_free_cred_contents()</a></td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g562a222918f31fb27ba2060af2ae315b"></a><!-- doxytag: member="cache.c::krb5_cc_set_config" ref="g562a222918f31fb27ba2060af2ae315b" args="(krb5_context context, krb5_ccache id, krb5_const_principal principal, const char *name, krb5_data *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_set_config </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store some configuration for the credential cache in the cache. Existing configuration under the same name is over-written.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>the credential cache to store the data for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>configuration for a specific principal, if NULL, global for the whole cache. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>name under which the configuraion is stored. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>data to store, if NULL, configure is removed. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g86c6699db4cbdcf18f42add005040941"></a><!-- doxytag: member="cache.c::krb5_cc_set_default_name" ref="g86c6699db4cbdcf18f42add005040941" args="(krb5_context context, const char *name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_set_default_name </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the default cc name for `context' to `name'.
+</div>
+</div><p>
+<a class="anchor" name="g289cc14cd4b24c5f30031f9bd17db857"></a><!-- doxytag: member="cache.c::krb5_cc_set_flags" ref="g289cc14cd4b24c5f30031f9bd17db857" args="(krb5_context context, krb5_ccache id, krb5_flags flags)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_set_flags </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_flags&nbsp;</td>
+ <td class="paramname"> <em>flags</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the flags of `id' to `flags'.
+</div>
+</div><p>
+<a class="anchor" name="gc0765d91e9cc8936dc8fcbd0abddcb78"></a><!-- doxytag: member="cache.c::krb5_cc_set_friendly_name" ref="gc0765d91e9cc8936dc8fcbd0abddcb78" args="(krb5_context context, krb5_ccache id, const char *name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_set_friendly_name </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the friendly name on credential cache.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g51ceb3c48f1c1abc73beadb5d6f34621"></a><!-- doxytag: member="cache.c::krb5_cc_set_kdc_offset" ref="g51ceb3c48f1c1abc73beadb5d6f34621" args="(krb5_context context, krb5_ccache id, krb5_deltat offset)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_set_kdc_offset </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_deltat&nbsp;</td>
+ <td class="paramname"> <em>offset</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the time offset betwen the client and the KDC<p>
+If the backend doesn't support KDC offset, use the context global setting.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>a credential cache </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>the offset in seconds</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gcbf766cea6b49dd64b76628c7708b979"></a><!-- doxytag: member="cache.c::krb5_cc_start_seq_get" ref="gcbf766cea6b49dd64b76628c7708b979" args="(krb5_context context, const krb5_ccache id, krb5_cc_cursor *cursor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_start_seq_get </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_cc_cursor *&nbsp;</td>
+ <td class="paramname"> <em>cursor</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Start iterating over `id', `cursor' is initialized to the beginning. Caller must free the cursor with <a class="el" href="group__krb5__ccache.html#g024ce036ebf277f918354d4681bd0550">krb5_cc_end_seq_get()</a>.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7092b498b9acfab73491d9b15c1bc821"></a><!-- doxytag: member="cache.c::krb5_cc_store_cred" ref="g7092b498b9acfab73491d9b15c1bc821" args="(krb5_context context, krb5_ccache id, krb5_creds *creds)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_store_cred </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>creds</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store `creds' in the ccache `id'.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g52344bb9dee620b5e386a9dd3c996e0f"></a><!-- doxytag: member="cache.c::krb5_cc_support_switch" ref="g52344bb9dee620b5e386a9dd3c996e0f" args="(krb5_context context, const char *type)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_cc_support_switch </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>type</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return true if the default credential cache support switch
+</div>
+</div><p>
+<a class="anchor" name="gc2b41cdf638a1ec3d0fd4e72d7b71f3a"></a><!-- doxytag: member="cache.c::krb5_cc_switch" ref="gc2b41cdf638a1ec3d0fd4e72d7b71f3a" args="(krb5_context context, krb5_ccache id)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_switch </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>id</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Switch the default default credential cache for a specific credcache type (and name for some implementations).<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g45efd722e955444f3d6083966446fd54"></a><!-- doxytag: member="cache.c::krb5_cccol_cursor_free" ref="g45efd722e955444f3d6083966446fd54" args="(krb5_context context, krb5_cccol_cursor *cursor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cccol_cursor_free </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_cccol_cursor *&nbsp;</td>
+ <td class="paramname"> <em>cursor</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+End an iteration and free all resources, can be done before end is reached.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cursor</em>&nbsp;</td><td>the iteration cursor to be freed.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return 0 or and error, KRB5_CC_END is returned at the end of iteration. See krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g06b59cb27291f73994294ac9567c5d9b"></a><!-- doxytag: member="cache.c::krb5_cccol_cursor_new" ref="g06b59cb27291f73994294ac9567c5d9b" args="(krb5_context context, krb5_cccol_cursor *cursor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cccol_cursor_new </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_cccol_cursor *&nbsp;</td>
+ <td class="paramname"> <em>cursor</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a new cache interation cursor that will interate over all credentials caches independent of type.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cursor</em>&nbsp;</td><td>passed into <a class="el" href="group__krb5__ccache.html#g3f1e7d611a7e16c9d7f1d2f171b72542">krb5_cccol_cursor_next()</a> and free with <a class="el" href="group__krb5__ccache.html#g45efd722e955444f3d6083966446fd54">krb5_cccol_cursor_free()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 or and error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3f1e7d611a7e16c9d7f1d2f171b72542"></a><!-- doxytag: member="cache.c::krb5_cccol_cursor_next" ref="g3f1e7d611a7e16c9d7f1d2f171b72542" args="(krb5_context context, krb5_cccol_cursor cursor, krb5_ccache *cache)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cccol_cursor_next </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_cccol_cursor&nbsp;</td>
+ <td class="paramname"> <em>cursor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache *&nbsp;</td>
+ <td class="paramname"> <em>cache</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get next credential cache from the iteration.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cursor</em>&nbsp;</td><td>the iteration cursor </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cache</em>&nbsp;</td><td>the returned cursor, pointer is set to NULL on failure and a cache on success. The returned cache needs to be freed with <a class="el" href="group__krb5__ccache.html#gebc0dd2a77529c05fb49e27235da7017">krb5_cc_close()</a> or destroyed with <a class="el" href="group__krb5__ccache.html#g3115bcccd71594374831caa9a07b1290">krb5_cc_destroy()</a>. MIT Kerberos behavies slightly diffrent and sets cache to NULL when all caches are iterated over and return 0.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return 0 or and error, KRB5_CC_END is returned at the end of iteration. See krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g058a08546f002063625d22a3ebc94897"></a><!-- doxytag: member="cache.c::krb5_cccol_last_change_time" ref="g058a08546f002063625d22a3ebc94897" args="(krb5_context context, const char *type, krb5_timestamp *mtime)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cccol_last_change_time </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_timestamp *&nbsp;</td>
+ <td class="paramname"> <em>mtime</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the last modfication time for a cache collection. The query can be limited to a specific cache type. If the function return 0 and mtime is 0, there was no credentials in the caches.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>The credential cache to probe, if NULL, all type are traversed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>mtime</em>&nbsp;</td><td>the last modification time, set to 0 on error.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return 0 or and error. See krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g00aae24e7570d1aea954c173287900bc"></a><!-- doxytag: member="verify_init.c::krb5_get_validated_creds" ref="g00aae24e7570d1aea954c173287900bc" args="(krb5_context context, krb5_creds *creds, krb5_principal client, krb5_ccache ccache, char *service)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_validated_creds </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>creds</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal&nbsp;</td>
+ <td class="paramname"> <em>client</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>ccache</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>service</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Validate the newly fetch credential, see also krb5_verify_init_creds().<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>creds</em>&nbsp;</td><td>the credentials to verify </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>the client name to match up </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ccache</em>&nbsp;</td><td>the credential cache to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>service</em>&nbsp;</td><td>a service name to use, used with <a class="el" href="group__krb5__principal.html#g8be0f5000da6ee0d4bd5dcaf3cb01d08">krb5_sname_to_principal()</a> to build a hostname to use to verify. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7aae400e0b7a263ed7de884ed0a433be"></a><!-- doxytag: member="cache.c::krb5_is_config_principal" ref="g7aae400e0b7a263ed7de884ed0a433be" args="(krb5_context context, krb5_const_principal principal)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_is_config_principal </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return TRUE (non zero) if the principal is a configuration principal (generated part of <a class="el" href="group__krb5__ccache.html#g562a222918f31fb27ba2060af2ae315b">krb5_cc_set_config()</a>). Returns FALSE (zero) if not a configuration principal.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>principal to check if it a configuration principal </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr><h2>Variable Documentation</h2>
+<a class="anchor" name="g6e72d7bbecc876f7265e4b20f087e04f"></a><!-- doxytag: member="acache.c::krb5_acc_ops" ref="g6e72d7bbecc876f7265e4b20f087e04f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_VARIABLE const krb5_cc_ops <a class="el" href="group__krb5__ccache.html#g6e72d7bbecc876f7265e4b20f087e04f">krb5_acc_ops</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<b>Initial value:</b><div class="fragment"><pre class="fragment"> {
+ KRB5_CC_OPS_VERSION,
+ <span class="stringliteral">"API"</span>,
+ acc_get_name,
+ acc_resolve,
+ acc_gen_new,
+ acc_initialize,
+ acc_destroy,
+ acc_close,
+ acc_store_cred,
+ NULL,
+ acc_get_principal,
+ acc_get_first,
+ acc_get_next,
+ acc_end_get,
+ acc_remove_cred,
+ acc_set_flags,
+ acc_get_version,
+ acc_get_cache_first,
+ acc_get_cache_next,
+ acc_end_cache_get,
+ acc_move,
+ acc_get_default_name,
+ acc_set_default,
+ acc_lastchange,
+ NULL,
+ NULL,
+}
+</pre></div>Variable containing the API based credential cache implemention.
+</div>
+</div><p>
+<a class="anchor" name="gff6f544b45b0b7662443e70609527702"></a><!-- doxytag: member="fcache.c::krb5_fcc_ops" ref="gff6f544b45b0b7662443e70609527702" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_VARIABLE const krb5_cc_ops <a class="el" href="group__krb5__ccache.html#gff6f544b45b0b7662443e70609527702">krb5_fcc_ops</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<b>Initial value:</b><div class="fragment"><pre class="fragment"> {
+ KRB5_CC_OPS_VERSION,
+ <span class="stringliteral">"FILE"</span>,
+ fcc_get_name,
+ fcc_resolve,
+ fcc_gen_new,
+ fcc_initialize,
+ fcc_destroy,
+ fcc_close,
+ fcc_store_cred,
+ NULL,
+ fcc_get_principal,
+ fcc_get_first,
+ fcc_get_next,
+ fcc_end_get,
+ fcc_remove_cred,
+ fcc_set_flags,
+ fcc_get_version,
+ fcc_get_cache_first,
+ fcc_get_cache_next,
+ fcc_end_cache_get,
+ fcc_move,
+ fcc_get_default_name,
+ NULL,
+ fcc_lastchange,
+ fcc_set_kdc_offset,
+ fcc_get_kdc_offset
+}
+</pre></div>Variable containing the FILE based credential cache implemention.
+</div>
+</div><p>
+<a class="anchor" name="g4b23b96d2f610d79c642d516eb4d067c"></a><!-- doxytag: member="mcache.c::krb5_mcc_ops" ref="g4b23b96d2f610d79c642d516eb4d067c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_VARIABLE const krb5_cc_ops <a class="el" href="group__krb5__ccache.html#g4b23b96d2f610d79c642d516eb4d067c">krb5_mcc_ops</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<b>Initial value:</b><div class="fragment"><pre class="fragment"> {
+ KRB5_CC_OPS_VERSION,
+ <span class="stringliteral">"MEMORY"</span>,
+ mcc_get_name,
+ mcc_resolve,
+ mcc_gen_new,
+ mcc_initialize,
+ mcc_destroy,
+ mcc_close,
+ mcc_store_cred,
+ NULL,
+ mcc_get_principal,
+ mcc_get_first,
+ mcc_get_next,
+ mcc_end_get,
+ mcc_remove_cred,
+ mcc_set_flags,
+ NULL,
+ mcc_get_cache_first,
+ mcc_get_cache_next,
+ mcc_end_cache_get,
+ mcc_move,
+ mcc_default_name,
+ NULL,
+ mcc_lastchange,
+ mcc_set_kdc_offset,
+ mcc_get_kdc_offset
+}
+</pre></div>Variable containing the MEMORY based credential cache implemention.
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__credential.html b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__credential.html
new file mode 100644
index 000000000000..c43802a30236
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__credential.html
@@ -0,0 +1,858 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Heimdal Kerberos 5 credential handing functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal Kerberos 5 credential handing functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__credential.html#g7335efb74572151bb521c367c39b7a4a">krb5_fwd_tgt_creds</a> (krb5_context context, krb5_auth_context auth_context, const char *hostname, krb5_principal client, krb5_principal server, krb5_ccache ccache, int forwardable, krb5_data *out_data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__credential.html#g6429a273ae5ed0d9333a22f5b5f1f42a">krb5_get_forwarded_creds</a> (krb5_context context, krb5_auth_context auth_context, krb5_ccache ccache, krb5_flags flags, const char *hostname, krb5_creds *in_creds, krb5_data *out_data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__credential.html#gbc0922393cb5c5eecec2d83f1851c21b">krb5_get_init_creds_opt_alloc</a> (krb5_context context, krb5_get_init_creds_opt **opt)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__credential.html#g2be2f013c88153be9535c17a2b16f336">krb5_get_init_creds_opt_free</a> (krb5_context context, krb5_get_init_creds_opt *opt)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__credential.html#g1a610bb2706e4048e8220225da110033">krb5_init_creds_init</a> (krb5_context context, krb5_principal client, krb5_prompter_fct prompter, void *prompter_data, krb5_deltat start_time, krb5_get_init_creds_opt *options, krb5_init_creds_context *rctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__credential.html#g71f386b20c42540d4e733eeb7c0cb18e">krb5_init_creds_set_service</a> (krb5_context context, krb5_init_creds_context ctx, const char *service)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__credential.html#g0a1d093a3c43b57b5e84206e73441d68">krb5_init_creds_set_password</a> (krb5_context context, krb5_init_creds_context ctx, const char *password)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__credential.html#gb80179f38c8cc87627752d5db22c8203">krb5_init_creds_set_keytab</a> (krb5_context context, krb5_init_creds_context ctx, krb5_keytab keytab)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__credential.html#g9b1f54a05b9e7b60bef0c7d5f40b351b">krb5_init_creds_step</a> (krb5_context context, krb5_init_creds_context ctx, krb5_data *in, krb5_data *out, krb5_krbhst_info *hostinfo, unsigned int *flags)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__credential.html#gb5b9ab4698f5af99c06dbcc015c39e27">krb5_init_creds_get_error</a> (krb5_context context, krb5_init_creds_context ctx, KRB_ERROR *error)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__credential.html#gf878f5715a3048995f175c09e95a3a71">krb5_init_creds_free</a> (krb5_context context, krb5_init_creds_context ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__credential.html#gb1716df7cb25ebea9bbf652094970bce">krb5_init_creds_get</a> (krb5_context context, krb5_init_creds_context ctx)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__credential.html#ge7e4852f19e7f83bd743952491d1f4b1">krb5_get_init_creds_password</a> (krb5_context context, krb5_creds *creds, krb5_principal client, const char *password, krb5_prompter_fct prompter, void *data, krb5_deltat start_time, const char *in_tkt_service, krb5_get_init_creds_opt *options)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__credential.html#g32573c317cca5198b04550d753b369a1">krb5_get_init_creds_keyblock</a> (krb5_context context, krb5_creds *creds, krb5_principal client, krb5_keyblock *keyblock, krb5_deltat start_time, const char *in_tkt_service, krb5_get_init_creds_opt *options)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__credential.html#g83e4a8a74b08522bd778c2d59ef1f2b6">krb5_get_init_creds_keytab</a> (krb5_context context, krb5_creds *creds, krb5_principal client, krb5_keytab keytab, krb5_deltat start_time, const char *in_tkt_service, krb5_get_init_creds_opt *options)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g7335efb74572151bb521c367c39b7a4a"></a><!-- doxytag: member="get_for_creds.c::krb5_fwd_tgt_creds" ref="g7335efb74572151bb521c367c39b7a4a" args="(krb5_context context, krb5_auth_context auth_context, const char *hostname, krb5_principal client, krb5_principal server, krb5_ccache ccache, int forwardable, krb5_data *out_data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_fwd_tgt_creds </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_auth_context&nbsp;</td>
+ <td class="paramname"> <em>auth_context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>hostname</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal&nbsp;</td>
+ <td class="paramname"> <em>client</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal&nbsp;</td>
+ <td class="paramname"> <em>server</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>ccache</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>forwardable</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>out_data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Forward credentials for client to host hostname , making them forwardable if forwardable, and returning the blob of data to sent in out_data. If hostname == NULL, pick it from server.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>auth_context</em>&nbsp;</td><td>the auth context with the key to encrypt the out_data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>hostname</em>&nbsp;</td><td>the host to forward the tickets too. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>the client to delegate from. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>server</em>&nbsp;</td><td>the server to delegate the credential too. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ccache</em>&nbsp;</td><td>credential cache to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>forwardable</em>&nbsp;</td><td>make the forwarded ticket forwabledable. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out_data</em>&nbsp;</td><td>the resulting credential.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6429a273ae5ed0d9333a22f5b5f1f42a"></a><!-- doxytag: member="get_for_creds.c::krb5_get_forwarded_creds" ref="g6429a273ae5ed0d9333a22f5b5f1f42a" args="(krb5_context context, krb5_auth_context auth_context, krb5_ccache ccache, krb5_flags flags, const char *hostname, krb5_creds *in_creds, krb5_data *out_data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_forwarded_creds </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_auth_context&nbsp;</td>
+ <td class="paramname"> <em>auth_context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>ccache</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_flags&nbsp;</td>
+ <td class="paramname"> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>hostname</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>in_creds</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>out_data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Gets tickets forwarded to hostname. If the tickets that are forwarded are address-less, the forwarded tickets will also be address-less.<p>
+If the ticket have any address, hostname will be used for figure out the address to forward the ticket too. This since this might use DNS, its insecure and also doesn't represent configured all addresses of the host. For example, the host might have two adresses, one IPv4 and one IPv6 address where the later is not published in DNS. This IPv6 address might be used communications and thus the resulting ticket useless.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>auth_context</em>&nbsp;</td><td>the auth context with the key to encrypt the out_data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ccache</em>&nbsp;</td><td>credential cache to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>the flags to control the resulting ticket flags </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>hostname</em>&nbsp;</td><td>the host to forward the tickets too. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>in_creds</em>&nbsp;</td><td>the in client and server ticket names. The client and server components forwarded to the remote host. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out_data</em>&nbsp;</td><td>the resulting credential.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+<p>
+Some older of the MIT gssapi library used clear-text tickets (warped inside AP-REQ encryption), use the krb5_auth_context flag KRB5_AUTH_CONTEXT_CLEAR_FORWARDED_CRED to support those tickets. The session key is used otherwise to encrypt the forwarded ticket.
+</div>
+</div><p>
+<a class="anchor" name="g32573c317cca5198b04550d753b369a1"></a><!-- doxytag: member="init_creds_pw.c::krb5_get_init_creds_keyblock" ref="g32573c317cca5198b04550d753b369a1" args="(krb5_context context, krb5_creds *creds, krb5_principal client, krb5_keyblock *keyblock, krb5_deltat start_time, const char *in_tkt_service, krb5_get_init_creds_opt *options)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_init_creds_keyblock </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>creds</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal&nbsp;</td>
+ <td class="paramname"> <em>client</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keyblock *&nbsp;</td>
+ <td class="paramname"> <em>keyblock</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_deltat&nbsp;</td>
+ <td class="paramname"> <em>start_time</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>in_tkt_service</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_get_init_creds_opt *&nbsp;</td>
+ <td class="paramname"> <em>options</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get new credentials using keyblock.
+</div>
+</div><p>
+<a class="anchor" name="g83e4a8a74b08522bd778c2d59ef1f2b6"></a><!-- doxytag: member="init_creds_pw.c::krb5_get_init_creds_keytab" ref="g83e4a8a74b08522bd778c2d59ef1f2b6" args="(krb5_context context, krb5_creds *creds, krb5_principal client, krb5_keytab keytab, krb5_deltat start_time, const char *in_tkt_service, krb5_get_init_creds_opt *options)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_init_creds_keytab </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>creds</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal&nbsp;</td>
+ <td class="paramname"> <em>client</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab&nbsp;</td>
+ <td class="paramname"> <em>keytab</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_deltat&nbsp;</td>
+ <td class="paramname"> <em>start_time</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>in_tkt_service</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_get_init_creds_opt *&nbsp;</td>
+ <td class="paramname"> <em>options</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get new credentials using keytab.
+</div>
+</div><p>
+<a class="anchor" name="gbc0922393cb5c5eecec2d83f1851c21b"></a><!-- doxytag: member="init_creds.c::krb5_get_init_creds_opt_alloc" ref="gbc0922393cb5c5eecec2d83f1851c21b" args="(krb5_context context, krb5_get_init_creds_opt **opt)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_init_creds_opt_alloc </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_get_init_creds_opt **&nbsp;</td>
+ <td class="paramname"> <em>opt</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Allocate a new krb5_get_init_creds_opt structure, free with <a class="el" href="group__krb5__credential.html#g2be2f013c88153be9535c17a2b16f336">krb5_get_init_creds_opt_free()</a>.
+</div>
+</div><p>
+<a class="anchor" name="g2be2f013c88153be9535c17a2b16f336"></a><!-- doxytag: member="init_creds.c::krb5_get_init_creds_opt_free" ref="g2be2f013c88153be9535c17a2b16f336" args="(krb5_context context, krb5_get_init_creds_opt *opt)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_get_init_creds_opt_free </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_get_init_creds_opt *&nbsp;</td>
+ <td class="paramname"> <em>opt</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free krb5_get_init_creds_opt structure.
+</div>
+</div><p>
+<a class="anchor" name="ge7e4852f19e7f83bd743952491d1f4b1"></a><!-- doxytag: member="init_creds_pw.c::krb5_get_init_creds_password" ref="ge7e4852f19e7f83bd743952491d1f4b1" args="(krb5_context context, krb5_creds *creds, krb5_principal client, const char *password, krb5_prompter_fct prompter, void *data, krb5_deltat start_time, const char *in_tkt_service, krb5_get_init_creds_opt *options)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_init_creds_password </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>creds</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal&nbsp;</td>
+ <td class="paramname"> <em>client</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>password</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_prompter_fct&nbsp;</td>
+ <td class="paramname"> <em>prompter</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_deltat&nbsp;</td>
+ <td class="paramname"> <em>start_time</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>in_tkt_service</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_get_init_creds_opt *&nbsp;</td>
+ <td class="paramname"> <em>options</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get new credentials using password.
+</div>
+</div><p>
+<a class="anchor" name="gf878f5715a3048995f175c09e95a3a71"></a><!-- doxytag: member="init_creds_pw.c::krb5_init_creds_free" ref="gf878f5715a3048995f175c09e95a3a71" args="(krb5_context context, krb5_init_creds_context ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_init_creds_free </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_init_creds_context&nbsp;</td>
+ <td class="paramname"> <em>ctx</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free the krb5_init_creds_context allocated by <a class="el" href="group__krb5__credential.html#g1a610bb2706e4048e8220225da110033">krb5_init_creds_init()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>The krb5_init_creds_context to free. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb1716df7cb25ebea9bbf652094970bce"></a><!-- doxytag: member="init_creds_pw.c::krb5_init_creds_get" ref="gb1716df7cb25ebea9bbf652094970bce" args="(krb5_context context, krb5_init_creds_context ctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_init_creds_get </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_init_creds_context&nbsp;</td>
+ <td class="paramname"> <em>ctx</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get new credentials as setup by the krb5_init_creds_context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>The krb5_init_creds_context to process. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb5b9ab4698f5af99c06dbcc015c39e27"></a><!-- doxytag: member="init_creds_pw.c::krb5_init_creds_get_error" ref="gb5b9ab4698f5af99c06dbcc015c39e27" args="(krb5_context context, krb5_init_creds_context ctx, KRB_ERROR *error)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_init_creds_get_error </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_init_creds_context&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">KRB_ERROR *&nbsp;</td>
+ <td class="paramname"> <em>error</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the last error from the transaction.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 or an error code </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1a610bb2706e4048e8220225da110033"></a><!-- doxytag: member="init_creds_pw.c::krb5_init_creds_init" ref="g1a610bb2706e4048e8220225da110033" args="(krb5_context context, krb5_principal client, krb5_prompter_fct prompter, void *prompter_data, krb5_deltat start_time, krb5_get_init_creds_opt *options, krb5_init_creds_context *rctx)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_init_creds_init </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal&nbsp;</td>
+ <td class="paramname"> <em>client</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_prompter_fct&nbsp;</td>
+ <td class="paramname"> <em>prompter</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>prompter_data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_deltat&nbsp;</td>
+ <td class="paramname"> <em>start_time</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_get_init_creds_opt *&nbsp;</td>
+ <td class="paramname"> <em>options</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_init_creds_context *&nbsp;</td>
+ <td class="paramname"> <em>rctx</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Start a new context to get a new initial credential.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>The Kerberos principal to get the credential for, if NULL is given, the default principal is used as determined by krb5_get_default_principal(). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>prompter</em>&nbsp;</td><td></td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>prompter_data</em>&nbsp;</td><td></td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>start_time</em>&nbsp;</td><td>the time the ticket should start to be valid or 0 for now. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>options</em>&nbsp;</td><td>a options structure, can be NULL for default options. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>rctx</em>&nbsp;</td><td>A new allocated free with <a class="el" href="group__krb5__credential.html#gf878f5715a3048995f175c09e95a3a71">krb5_init_creds_free()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or an Kerberos 5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb80179f38c8cc87627752d5db22c8203"></a><!-- doxytag: member="init_creds_pw.c::krb5_init_creds_set_keytab" ref="gb80179f38c8cc87627752d5db22c8203" args="(krb5_context context, krb5_init_creds_context ctx, krb5_keytab keytab)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_init_creds_set_keytab </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_init_creds_context&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab&nbsp;</td>
+ <td class="paramname"> <em>keytab</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the keytab to use for authentication.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>ctx krb5_init_creds_context context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>keytab</em>&nbsp;</td><td>the keytab to read the key from.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, or an Kerberos 5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g0a1d093a3c43b57b5e84206e73441d68"></a><!-- doxytag: member="init_creds_pw.c::krb5_init_creds_set_password" ref="g0a1d093a3c43b57b5e84206e73441d68" args="(krb5_context context, krb5_init_creds_context ctx, const char *password)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_init_creds_set_password </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_init_creds_context&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>password</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets the password that will use for the request.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>ctx krb5_init_creds_context context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>password</em>&nbsp;</td><td>the password to use.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, or an Kerberos 5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g71f386b20c42540d4e733eeb7c0cb18e"></a><!-- doxytag: member="init_creds_pw.c::krb5_init_creds_set_service" ref="g71f386b20c42540d4e733eeb7c0cb18e" args="(krb5_context context, krb5_init_creds_context ctx, const char *service)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_init_creds_set_service </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_init_creds_context&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>service</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Sets the service that the is requested. This call is only neede for special initial tickets, by default the a krbtgt is fetched in the default realm.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>a krb5_init_creds_context context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>service</em>&nbsp;</td><td>the service given as a string, for example "kadmind/admin". If NULL, the default krbtgt in the clients realm is set.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, or an Kerberos 5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9b1f54a05b9e7b60bef0c7d5f40b351b"></a><!-- doxytag: member="init_creds_pw.c::krb5_init_creds_step" ref="g9b1f54a05b9e7b60bef0c7d5f40b351b" args="(krb5_context context, krb5_init_creds_context ctx, krb5_data *in, krb5_data *out, krb5_krbhst_info *hostinfo, unsigned int *flags)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_init_creds_step </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_init_creds_context&nbsp;</td>
+ <td class="paramname"> <em>ctx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_krbhst_info *&nbsp;</td>
+ <td class="paramname"> <em>hostinfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int *&nbsp;</td>
+ <td class="paramname"> <em>flags</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The core loop if krb5_get_init_creds() function family. Create the packets and have the caller send them off to the KDC.<p>
+If the caller want all work been done for them, use <a class="el" href="group__krb5__credential.html#gb1716df7cb25ebea9bbf652094970bce">krb5_init_creds_get()</a> instead.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>ctx krb5_init_creds_context context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>input data from KDC, first round it should be reset by krb5_data_zer(). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>reply to KDC. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>hostinfo</em>&nbsp;</td><td>KDC address info, first round it can be NULL. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>status of the round, if KRB5_INIT_CREDS_STEP_FLAG_CONTINUE is set, continue one more round.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, or an Kerberos 5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__crypto.html b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__crypto.html
new file mode 100644
index 000000000000..d3e6dc3c8ca6
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__crypto.html
@@ -0,0 +1,1262 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Heimdal Kerberos 5 cryptography functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal Kerberos 5 cryptography functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#gd5f2b15d5fde369cf923e8fae4b00bec">krb5_enctype_valid</a> (krb5_context context, krb5_enctype etype)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#g49d7081ff071eacd28e3ffa90400580c">krb5_cksumtype_to_enctype</a> (krb5_context context, krb5_cksumtype ctype, krb5_enctype *etype)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#g674423844043d6beebb959bb8b7ab082">krb5_encrypt_iov_ivec</a> (krb5_context context, krb5_crypto crypto, unsigned usage, <a class="el" href="structkrb5__crypto__iov.html">krb5_crypto_iov</a> *data, int num_data, void *ivec)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#g64cad191491a5d3309553e7d28d8ad46">krb5_decrypt_iov_ivec</a> (krb5_context context, krb5_crypto crypto, unsigned usage, <a class="el" href="structkrb5__crypto__iov.html">krb5_crypto_iov</a> *data, unsigned int num_data, void *ivec)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#gb70888d1122aeed1e5381116a5a9612e">krb5_create_checksum_iov</a> (krb5_context context, krb5_crypto crypto, unsigned usage, <a class="el" href="structkrb5__crypto__iov.html">krb5_crypto_iov</a> *data, unsigned int num_data, krb5_cksumtype *type)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#g1789d8188287750394c3b8366a90bd13">krb5_verify_checksum_iov</a> (krb5_context context, krb5_crypto crypto, unsigned usage, <a class="el" href="structkrb5__crypto__iov.html">krb5_crypto_iov</a> *data, unsigned int num_data, krb5_cksumtype *type)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#gd7003a8a81cef633cc0a2cc07c93dd32">krb5_crypto_init</a> (krb5_context context, const krb5_keyblock *key, krb5_enctype etype, krb5_crypto *crypto)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#g57eaed735baab9eb3c3740be8e4d2137">krb5_crypto_destroy</a> (krb5_context context, krb5_crypto crypto)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#ga4271d4adba2dff699dfdfe07b075b95">krb5_crypto_getblocksize</a> (krb5_context context, krb5_crypto crypto, size_t *blocksize)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#g6bc15d1940ecdd4558f18eeb3dda233c">krb5_crypto_getenctype</a> (krb5_context context, krb5_crypto crypto, krb5_enctype *enctype)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#gfbed35e76f7d971b90cfe0806f43d279">krb5_crypto_getpadsize</a> (krb5_context context, krb5_crypto crypto, size_t *padsize)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#g38d88d8bf7be6913cfc7cf155a1ade8e">krb5_crypto_getconfoundersize</a> (krb5_context context, krb5_crypto crypto, size_t *confoundersize)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#g77acfc640aa003095ea5890de2ea1cb7">krb5_enctype_disable</a> (krb5_context context, krb5_enctype enctype)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#g8dfebc785c059e38c22c6ca34ed5f68a">krb5_enctype_enable</a> (krb5_context context, krb5_enctype enctype)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#g2790b9799fbe21ac4875c401eafb7444">krb5_allow_weak_crypto</a> (krb5_context context, krb5_boolean enable)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#ga5f3001696f59f7d47539efe82b1c4cd">krb5_random_to_key</a> (krb5_context context, krb5_enctype type, const void *data, size_t size, krb5_keyblock *key)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#g6deab998fe1c056fff541cdf0c119c44">krb5_crypto_fx_cf2</a> (krb5_context context, const krb5_crypto crypto1, const krb5_crypto crypto2, krb5_data *pepper1, krb5_data *pepper2, krb5_enctype enctype, krb5_keyblock *res)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#g147a581626c11fafee04bfda036781ea">krb5_generate_subkey_extended</a> (krb5_context context, const krb5_keyblock *key, krb5_enctype etype, krb5_keyblock **subkey)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#g33e1cb14ccab45ce46d51064caf07c10">krb5_keyblock_zero</a> (krb5_keyblock *keyblock)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#g66d5d8067358373fdab46987503f2398">krb5_free_keyblock_contents</a> (krb5_context context, krb5_keyblock *keyblock)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#g2e434abf56e7d7852358e11cdab0bb33">krb5_free_keyblock</a> (krb5_context context, krb5_keyblock *keyblock)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#g61fbae0666b6889f539c98a45c1564ae">krb5_copy_keyblock_contents</a> (krb5_context context, const krb5_keyblock *inblock, krb5_keyblock *to)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#gb68e1eb316fba45acafd300ac6d93101">krb5_copy_keyblock</a> (krb5_context context, const krb5_keyblock *inblock, krb5_keyblock **to)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_enctype <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#ga2caa584d5a6f0bbba3e1bae7255be5c">krb5_keyblock_get_enctype</a> (const krb5_keyblock *block)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__crypto.html#g690c42630f2f6b9f7ce96cc75441803d">krb5_keyblock_init</a> (krb5_context context, krb5_enctype type, const void *data, size_t size, krb5_keyblock *key)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g2790b9799fbe21ac4875c401eafb7444"></a><!-- doxytag: member="crypto.c::krb5_allow_weak_crypto" ref="g2790b9799fbe21ac4875c401eafb7444" args="(krb5_context context, krb5_boolean enable)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_allow_weak_crypto </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_boolean&nbsp;</td>
+ <td class="paramname"> <em>enable</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Enable or disable all weak encryption types<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>enable</em>&nbsp;</td><td>true to enable, false to disable</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g49d7081ff071eacd28e3ffa90400580c"></a><!-- doxytag: member="crypto.c::krb5_cksumtype_to_enctype" ref="g49d7081ff071eacd28e3ffa90400580c" args="(krb5_context context, krb5_cksumtype ctype, krb5_enctype *etype)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cksumtype_to_enctype </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_cksumtype&nbsp;</td>
+ <td class="paramname"> <em>ctype</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype *&nbsp;</td>
+ <td class="paramname"> <em>etype</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the coresponding encryption type for a checksum type.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ctype</em>&nbsp;</td><td>The checksum type to get the result enctype for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>etype</em>&nbsp;</td><td>The returned encryption, when the matching etype is not found, etype is set to ETYPE_NULL.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code for an failure or 0 on success. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb68e1eb316fba45acafd300ac6d93101"></a><!-- doxytag: member="keyblock.c::krb5_copy_keyblock" ref="gb68e1eb316fba45acafd300ac6d93101" args="(krb5_context context, const krb5_keyblock *inblock, krb5_keyblock **to)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_keyblock </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_keyblock *&nbsp;</td>
+ <td class="paramname"> <em>inblock</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keyblock **&nbsp;</td>
+ <td class="paramname"> <em>to</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy a keyblock, free the output keyblock with <a class="el" href="group__krb5__crypto.html#g2e434abf56e7d7852358e11cdab0bb33">krb5_free_keyblock()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>inblock</em>&nbsp;</td><td>the key to copy </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>to</em>&nbsp;</td><td>the output key.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success or a Kerberos 5 error code </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g61fbae0666b6889f539c98a45c1564ae"></a><!-- doxytag: member="keyblock.c::krb5_copy_keyblock_contents" ref="g61fbae0666b6889f539c98a45c1564ae" args="(krb5_context context, const krb5_keyblock *inblock, krb5_keyblock *to)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_keyblock_contents </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_keyblock *&nbsp;</td>
+ <td class="paramname"> <em>inblock</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keyblock *&nbsp;</td>
+ <td class="paramname"> <em>to</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy a keyblock, free the output keyblock with <a class="el" href="group__krb5__crypto.html#g66d5d8067358373fdab46987503f2398">krb5_free_keyblock_contents()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>inblock</em>&nbsp;</td><td>the key to copy </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>to</em>&nbsp;</td><td>the output key.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success or a Kerberos 5 error code </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb70888d1122aeed1e5381116a5a9612e"></a><!-- doxytag: member="crypto.c::krb5_create_checksum_iov" ref="gb70888d1122aeed1e5381116a5a9612e" args="(krb5_context context, krb5_crypto crypto, unsigned usage, krb5_crypto_iov *data, unsigned int num_data, krb5_cksumtype *type)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_create_checksum_iov </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_crypto&nbsp;</td>
+ <td class="paramname"> <em>crypto</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned&nbsp;</td>
+ <td class="paramname"> <em>usage</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structkrb5__crypto__iov.html">krb5_crypto_iov</a> *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&nbsp;</td>
+ <td class="paramname"> <em>num_data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_cksumtype *&nbsp;</td>
+ <td class="paramname"> <em>type</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a Kerberos message checksum.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>crypto</em>&nbsp;</td><td>Kerberos crypto context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>usage</em>&nbsp;</td><td>Key usage for this buffer </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>array of buffers to process </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>num_data</em>&nbsp;</td><td>length of array </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>output data</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g57eaed735baab9eb3c3740be8e4d2137"></a><!-- doxytag: member="crypto.c::krb5_crypto_destroy" ref="g57eaed735baab9eb3c3740be8e4d2137" args="(krb5_context context, krb5_crypto crypto)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_destroy </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_crypto&nbsp;</td>
+ <td class="paramname"> <em>crypto</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free a crypto context created by <a class="el" href="group__krb5__crypto.html#gd7003a8a81cef633cc0a2cc07c93dd32">krb5_crypto_init()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>crypto</em>&nbsp;</td><td>crypto context to free</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6deab998fe1c056fff541cdf0c119c44"></a><!-- doxytag: member="crypto.c::krb5_crypto_fx_cf2" ref="g6deab998fe1c056fff541cdf0c119c44" args="(krb5_context context, const krb5_crypto crypto1, const krb5_crypto crypto2, krb5_data *pepper1, krb5_data *pepper2, krb5_enctype enctype, krb5_keyblock *res)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_fx_cf2 </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_crypto&nbsp;</td>
+ <td class="paramname"> <em>crypto1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_crypto&nbsp;</td>
+ <td class="paramname"> <em>crypto2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>pepper1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>pepper2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype&nbsp;</td>
+ <td class="paramname"> <em>enctype</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keyblock *&nbsp;</td>
+ <td class="paramname"> <em>res</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The FX-CF2 key derivation function, used in FAST and preauth framework.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>crypto1</em>&nbsp;</td><td>first key to combine </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>crypto2</em>&nbsp;</td><td>second key to combine </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>pepper1</em>&nbsp;</td><td>factor to combine with first key to garante uniqueness </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>pepper2</em>&nbsp;</td><td>factor to combine with second key to garante uniqueness </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>enctype</em>&nbsp;</td><td>the encryption type of the resulting key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>allocated key, free with <a class="el" href="group__krb5__crypto.html#g66d5d8067358373fdab46987503f2398">krb5_free_keyblock_contents()</a></td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga4271d4adba2dff699dfdfe07b075b95"></a><!-- doxytag: member="crypto.c::krb5_crypto_getblocksize" ref="ga4271d4adba2dff699dfdfe07b075b95" args="(krb5_context context, krb5_crypto crypto, size_t *blocksize)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_getblocksize </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_crypto&nbsp;</td>
+ <td class="paramname"> <em>crypto</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t *&nbsp;</td>
+ <td class="paramname"> <em>blocksize</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the blocksize used algorithm referenced by the crypto context<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>crypto</em>&nbsp;</td><td>crypto context to query </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>blocksize</em>&nbsp;</td><td>the resulting blocksize</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g38d88d8bf7be6913cfc7cf155a1ade8e"></a><!-- doxytag: member="crypto.c::krb5_crypto_getconfoundersize" ref="g38d88d8bf7be6913cfc7cf155a1ade8e" args="(krb5_context context, krb5_crypto crypto, size_t *confoundersize)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_getconfoundersize </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_crypto&nbsp;</td>
+ <td class="paramname"> <em>crypto</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t *&nbsp;</td>
+ <td class="paramname"> <em>confoundersize</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the confounder size used by the crypto context<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>crypto</em>&nbsp;</td><td>crypto context to query </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>confoundersize</em>&nbsp;</td><td>the returned confounder size</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6bc15d1940ecdd4558f18eeb3dda233c"></a><!-- doxytag: member="crypto.c::krb5_crypto_getenctype" ref="g6bc15d1940ecdd4558f18eeb3dda233c" args="(krb5_context context, krb5_crypto crypto, krb5_enctype *enctype)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_getenctype </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_crypto&nbsp;</td>
+ <td class="paramname"> <em>crypto</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype *&nbsp;</td>
+ <td class="paramname"> <em>enctype</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the encryption type used by the crypto context<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>crypto</em>&nbsp;</td><td>crypto context to query </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>enctype</em>&nbsp;</td><td>the resulting encryption type</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gfbed35e76f7d971b90cfe0806f43d279"></a><!-- doxytag: member="crypto.c::krb5_crypto_getpadsize" ref="gfbed35e76f7d971b90cfe0806f43d279" args="(krb5_context context, krb5_crypto crypto, size_t *padsize)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_getpadsize </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_crypto&nbsp;</td>
+ <td class="paramname"> <em>crypto</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t *&nbsp;</td>
+ <td class="paramname"> <em>padsize</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the padding size used by the crypto context<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>crypto</em>&nbsp;</td><td>crypto context to query </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>padsize</em>&nbsp;</td><td>the return padding size</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd7003a8a81cef633cc0a2cc07c93dd32"></a><!-- doxytag: member="crypto.c::krb5_crypto_init" ref="gd7003a8a81cef633cc0a2cc07c93dd32" args="(krb5_context context, const krb5_keyblock *key, krb5_enctype etype, krb5_crypto *crypto)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_init </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_keyblock *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype&nbsp;</td>
+ <td class="paramname"> <em>etype</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_crypto *&nbsp;</td>
+ <td class="paramname"> <em>crypto</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a crypto context used for all encryption and signature operation. The encryption type to use is taken from the key, but can be overridden with the enctype parameter. This can be useful for encryptions types which is compatiable (DES for example).<p>
+To free the crypto context, use <a class="el" href="group__krb5__crypto.html#g57eaed735baab9eb3c3740be8e4d2137">krb5_crypto_destroy()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>the key block information with all key data </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>etype</em>&nbsp;</td><td>the encryption type </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>crypto</em>&nbsp;</td><td>the resulting crypto context</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g64cad191491a5d3309553e7d28d8ad46"></a><!-- doxytag: member="crypto.c::krb5_decrypt_iov_ivec" ref="g64cad191491a5d3309553e7d28d8ad46" args="(krb5_context context, krb5_crypto crypto, unsigned usage, krb5_crypto_iov *data, unsigned int num_data, void *ivec)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_decrypt_iov_ivec </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_crypto&nbsp;</td>
+ <td class="paramname"> <em>crypto</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned&nbsp;</td>
+ <td class="paramname"> <em>usage</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structkrb5__crypto__iov.html">krb5_crypto_iov</a> *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&nbsp;</td>
+ <td class="paramname"> <em>num_data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>ivec</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Inline decrypt a Kerberos message.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>crypto</em>&nbsp;</td><td>Kerberos crypto context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>usage</em>&nbsp;</td><td>Key usage for this buffer </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>array of buffers to process </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>num_data</em>&nbsp;</td><td>length of array </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ivec</em>&nbsp;</td><td>initial cbc/cts vector</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0.</dd></dl>
+1. KRB5_CRYPTO_TYPE_HEADER 2. one KRB5_CRYPTO_TYPE_DATA and array [0,...] of KRB5_CRYPTO_TYPE_SIGN_ONLY in any order, however the receiver have to aware of the order. KRB5_CRYPTO_TYPE_SIGN_ONLY is commonly used unencrypoted protocol headers and trailers. The output data will be of same size as the input data or shorter.
+</div>
+</div><p>
+<a class="anchor" name="g674423844043d6beebb959bb8b7ab082"></a><!-- doxytag: member="crypto.c::krb5_encrypt_iov_ivec" ref="g674423844043d6beebb959bb8b7ab082" args="(krb5_context context, krb5_crypto crypto, unsigned usage, krb5_crypto_iov *data, int num_data, void *ivec)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_encrypt_iov_ivec </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_crypto&nbsp;</td>
+ <td class="paramname"> <em>crypto</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned&nbsp;</td>
+ <td class="paramname"> <em>usage</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structkrb5__crypto__iov.html">krb5_crypto_iov</a> *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>num_data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>ivec</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Inline encrypt a kerberos message<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>crypto</em>&nbsp;</td><td>Kerberos crypto context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>usage</em>&nbsp;</td><td>Key usage for this buffer </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>array of buffers to process </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>num_data</em>&nbsp;</td><td>length of array </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ivec</em>&nbsp;</td><td>initial cbc/cts vector</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0.</dd></dl>
+Kerberos encrypted data look like this:<p>
+1. KRB5_CRYPTO_TYPE_HEADER 2. array [1,...] KRB5_CRYPTO_TYPE_DATA and array [0,...] KRB5_CRYPTO_TYPE_SIGN_ONLY in any order, however the receiver have to aware of the order. KRB5_CRYPTO_TYPE_SIGN_ONLY is commonly used headers and trailers. 3. KRB5_CRYPTO_TYPE_PADDING, at least on padsize long if padsize &gt; 1 4. KRB5_CRYPTO_TYPE_TRAILER
+</div>
+</div><p>
+<a class="anchor" name="g77acfc640aa003095ea5890de2ea1cb7"></a><!-- doxytag: member="crypto.c::krb5_enctype_disable" ref="g77acfc640aa003095ea5890de2ea1cb7" args="(krb5_context context, krb5_enctype enctype)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_enctype_disable </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype&nbsp;</td>
+ <td class="paramname"> <em>enctype</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Disable encryption type<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>enctype</em>&nbsp;</td><td>encryption type to disable</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8dfebc785c059e38c22c6ca34ed5f68a"></a><!-- doxytag: member="crypto.c::krb5_enctype_enable" ref="g8dfebc785c059e38c22c6ca34ed5f68a" args="(krb5_context context, krb5_enctype enctype)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_enctype_enable </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype&nbsp;</td>
+ <td class="paramname"> <em>enctype</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Enable encryption type<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>enctype</em>&nbsp;</td><td>encryption type to enable</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd5f2b15d5fde369cf923e8fae4b00bec"></a><!-- doxytag: member="crypto.c::krb5_enctype_valid" ref="gd5f2b15d5fde369cf923e8fae4b00bec" args="(krb5_context context, krb5_enctype etype)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_enctype_valid </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype&nbsp;</td>
+ <td class="paramname"> <em>etype</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Check if a enctype is valid, return 0 if it is.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>etype</em>&nbsp;</td><td>enctype to check if its valid or not</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code for an failure or 0 on success (enctype valid). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2e434abf56e7d7852358e11cdab0bb33"></a><!-- doxytag: member="keyblock.c::krb5_free_keyblock" ref="g2e434abf56e7d7852358e11cdab0bb33" args="(krb5_context context, krb5_keyblock *keyblock)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_keyblock </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keyblock *&nbsp;</td>
+ <td class="paramname"> <em>keyblock</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free a keyblock, also zero out the content of the keyblock, uses <a class="el" href="group__krb5__crypto.html#g66d5d8067358373fdab46987503f2398">krb5_free_keyblock_contents()</a> to free the content.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>keyblock</em>&nbsp;</td><td>keyblock to free, NULL is valid argument </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g66d5d8067358373fdab46987503f2398"></a><!-- doxytag: member="keyblock.c::krb5_free_keyblock_contents" ref="g66d5d8067358373fdab46987503f2398" args="(krb5_context context, krb5_keyblock *keyblock)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_keyblock_contents </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keyblock *&nbsp;</td>
+ <td class="paramname"> <em>keyblock</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free a keyblock's content, also zero out the content of the keyblock.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>keyblock</em>&nbsp;</td><td>keyblock content to free, NULL is valid argument </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g147a581626c11fafee04bfda036781ea"></a><!-- doxytag: member="generate_subkey.c::krb5_generate_subkey_extended" ref="g147a581626c11fafee04bfda036781ea" args="(krb5_context context, const krb5_keyblock *key, krb5_enctype etype, krb5_keyblock **subkey)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_generate_subkey_extended </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_keyblock *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype&nbsp;</td>
+ <td class="paramname"> <em>etype</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keyblock **&nbsp;</td>
+ <td class="paramname"> <em>subkey</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Generate subkey, from keyblock<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>kerberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>session key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>etype</em>&nbsp;</td><td>encryption type of subkey, if ETYPE_NULL, use key's enctype </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>subkey</em>&nbsp;</td><td>returned new, free with <a class="el" href="group__krb5__crypto.html#g2e434abf56e7d7852358e11cdab0bb33">krb5_free_keyblock()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success or a Kerberos 5 error code </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga2caa584d5a6f0bbba3e1bae7255be5c"></a><!-- doxytag: member="keyblock.c::krb5_keyblock_get_enctype" ref="ga2caa584d5a6f0bbba3e1bae7255be5c" args="(const krb5_keyblock *block)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_enctype KRB5_LIB_CALL krb5_keyblock_get_enctype </td>
+ <td>(</td>
+ <td class="paramtype">const krb5_keyblock *&nbsp;</td>
+ <td class="paramname"> <em>block</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get encryption type of a keyblock.
+</div>
+</div><p>
+<a class="anchor" name="g690c42630f2f6b9f7ce96cc75441803d"></a><!-- doxytag: member="keyblock.c::krb5_keyblock_init" ref="g690c42630f2f6b9f7ce96cc75441803d" args="(krb5_context context, krb5_enctype type, const void *data, size_t size, krb5_keyblock *key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_keyblock_init </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype&nbsp;</td>
+ <td class="paramname"> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>size</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keyblock *&nbsp;</td>
+ <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Fill in `key' with key data of type `enctype' from `data' of length `size'. Key should be freed using <a class="el" href="group__krb5__crypto.html#g66d5d8067358373fdab46987503f2398">krb5_free_keyblock_contents()</a>.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success or a Kerberos 5 error code </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g33e1cb14ccab45ce46d51064caf07c10"></a><!-- doxytag: member="keyblock.c::krb5_keyblock_zero" ref="g33e1cb14ccab45ce46d51064caf07c10" args="(krb5_keyblock *keyblock)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_keyblock_zero </td>
+ <td>(</td>
+ <td class="paramtype">krb5_keyblock *&nbsp;</td>
+ <td class="paramname"> <em>keyblock</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Zero out a keyblock<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>keyblock</em>&nbsp;</td><td>keyblock to zero out </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga5f3001696f59f7d47539efe82b1c4cd"></a><!-- doxytag: member="crypto.c::krb5_random_to_key" ref="ga5f3001696f59f7d47539efe82b1c4cd" args="(krb5_context context, krb5_enctype type, const void *data, size_t size, krb5_keyblock *key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_random_to_key </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype&nbsp;</td>
+ <td class="paramname"> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>size</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keyblock *&nbsp;</td>
+ <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Converts the random bytestring to a protocol key according to Kerberos crypto frame work. It may be assumed that all the bits of the input string are equally random, even though the entropy present in the random source may be limited.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>the enctype resulting key will be of </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>input random data to convert to a key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>size of input random data, at least krb5_enctype_keysize() long </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>key, output key, free with <a class="el" href="group__krb5__crypto.html#g66d5d8067358373fdab46987503f2398">krb5_free_keyblock_contents()</a></td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1789d8188287750394c3b8366a90bd13"></a><!-- doxytag: member="crypto.c::krb5_verify_checksum_iov" ref="g1789d8188287750394c3b8366a90bd13" args="(krb5_context context, krb5_crypto crypto, unsigned usage, krb5_crypto_iov *data, unsigned int num_data, krb5_cksumtype *type)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_verify_checksum_iov </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_crypto&nbsp;</td>
+ <td class="paramname"> <em>crypto</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned&nbsp;</td>
+ <td class="paramname"> <em>usage</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structkrb5__crypto__iov.html">krb5_crypto_iov</a> *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&nbsp;</td>
+ <td class="paramname"> <em>num_data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_cksumtype *&nbsp;</td>
+ <td class="paramname"> <em>type</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Verify a Kerberos message checksum.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>crypto</em>&nbsp;</td><td>Kerberos crypto context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>usage</em>&nbsp;</td><td>Key usage for this buffer </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>array of buffers to process </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>num_data</em>&nbsp;</td><td>length of array </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>return checksum type if not NULL</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__deprecated.html b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__deprecated.html
new file mode 100644
index 000000000000..cdcec3424854
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__deprecated.html
@@ -0,0 +1,1289 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Heimdal Kerberos 5 deprecated functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal Kerberos 5 deprecated functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#gd2d4fc0147bdb1d67093af5b645ca754">krb5_change_password</a> (krb5_context context, krb5_creds *creds, const char *newpw, int *result_code, krb5_data *result_code_string, krb5_data *result_string) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#gf2759c6a1de47fb9dae082808861f5f9">krb5_config_parse_string_multi</a> (krb5_context context, const char *string, krb5_config_section **res) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#g50031239574b31100d9ab158ce7d026a">krb5_keytype_to_enctypes</a> (krb5_context context, krb5_keytype keytype, unsigned *len, krb5_enctype **val) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#gd181d7f53821544a0646955e124e20ba">krb5_enctypes_compatible_keys</a> (krb5_context context, krb5_enctype etype1, krb5_enctype etype2) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#g220b8b17e81dc71dd3ecd1b079160db9">krb5_free_data_contents</a> (krb5_context context, krb5_data *data) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#gd41975d389631db8a13151fb864c0c42">krb5_keytype_to_enctypes_default</a> (krb5_context context, krb5_keytype keytype, unsigned *len, krb5_enctype **val) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#gdf3188d181f3940b049f5064f74a90ec">krb5_keytype_to_string</a> (krb5_context context, krb5_keytype keytype, char **string) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#gf02ee01e78556f96ba033376a6e5de71">krb5_string_to_keytype</a> (krb5_context context, const char *string, krb5_keytype *keytype) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_CALLCONV&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#g8edb548aa6c313e464c2134dbc0870c6">krb5_password_key_proc</a> (krb5_context context, krb5_enctype type, krb5_salt salt, krb5_const_pointer keyseed, krb5_keyblock **key) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#gbcfa94e926adf978549418807a66a0b8">krb5_get_in_tkt_with_password</a> (krb5_context context, krb5_flags options, krb5_addresses *addrs, const krb5_enctype *etypes, const krb5_preauthtype *pre_auth_types, const char *password, krb5_ccache ccache, krb5_creds *creds, krb5_kdc_rep *ret_as_reply) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#gd1c401931abe9725bef8b0ea8a9dd882">krb5_get_in_tkt_with_skey</a> (krb5_context context, krb5_flags options, krb5_addresses *addrs, const krb5_enctype *etypes, const krb5_preauthtype *pre_auth_types, const krb5_keyblock *key, krb5_ccache ccache, krb5_creds *creds, krb5_kdc_rep *ret_as_reply) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_CALLCONV&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#g2726bd189174a87defdec0a8fec82b49">krb5_keytab_key_proc</a> (krb5_context context, krb5_enctype enctype, krb5_salt salt, krb5_const_pointer keyseed, krb5_keyblock **key) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#ge382db22c6bc14864e90df67b478af9a">krb5_get_in_tkt_with_keytab</a> (krb5_context context, krb5_flags options, krb5_addresses *addrs, const krb5_enctype *etypes, const krb5_preauthtype *pre_auth_types, krb5_keytab keytab, krb5_ccache ccache, krb5_creds *creds, krb5_kdc_rep *ret_as_reply) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_realm <br>
+*KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#g14f320f353bf7c0b325e520627aeecd1">krb5_princ_realm</a> (krb5_context context, krb5_principal principal) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#g376b5b8ec96bd7e644c1583291997dca">krb5_princ_set_realm</a> (krb5_context context, krb5_principal principal, krb5_realm *realm) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#g5b878bf6dc8aac75e3dc563e90690490">krb5_free_creds_contents</a> (krb5_context context, krb5_creds *c) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#g8053e78a8e7e4959ee047cf902ab9b03">krb5_free_error_string</a> (krb5_context context, char *str) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#gf89cefa0b780e9252ab97b7dd1bf340e">krb5_set_error_string</a> (krb5_context context, const char *fmt,...) __attribute__((format(printf</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#ga698492299702f5568e941b62bf4decd">krb5_vset_error_string</a> (krb5_context context, const char *fmt, va_list args) __attribute__((format(printf</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#g0afa2dbf44cdbdae09e934bd9a0da411">krb5_clear_error_string</a> (krb5_context context) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#g20443cc492d983894b53660c9edeed5f">krb5_get_cred_from_kdc_opt</a> (krb5_context context, krb5_ccache ccache, krb5_creds *in_creds, krb5_creds **out_creds, krb5_creds ***ret_tgts, krb5_flags flags) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#g36ec67884f1a29c60698339b106a789c">krb5_get_cred_from_kdc</a> (krb5_context context, krb5_ccache ccache, krb5_creds *in_creds, krb5_creds **out_creds, krb5_creds ***ret_tgts) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#g85cd65c25d7420023e41e3c6e134ec28">krb5_free_unparsed_name</a> (krb5_context context, char *str) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#g947e9702f5104802ae27efec9582488a">krb5_generate_subkey</a> (krb5_context context, const krb5_keyblock *key, krb5_keyblock **subkey) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#g423aebec055ca8e381f9d7e9ad5dad3a">krb5_auth_getremoteseqnumber</a> (krb5_context context, krb5_auth_context auth_context, int32_t *seqnumber) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#gb30808a4f397cf8b6eeabfe5504d6451">krb5_get_init_creds_opt_init</a> (krb5_get_init_creds_opt *opt) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#gf2bc3bce4dfa1ca2da4331fc36e11b0f">krb5_get_init_creds_opt_get_error</a> (krb5_context context, krb5_get_init_creds_opt *opt, KRB_ERROR **error) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__deprecated.html#gc4cfe880cf291fa8be8e5b24e8130424">krb5_c_enctype_compare</a> (krb5_context context, krb5_enctype e1, krb5_enctype e2, krb5_boolean *similar) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g423aebec055ca8e381f9d7e9ad5dad3a"></a><!-- doxytag: member="deprecated.c::krb5_auth_getremoteseqnumber" ref="g423aebec055ca8e381f9d7e9ad5dad3a" args="(krb5_context context, krb5_auth_context auth_context, int32_t *seqnumber) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_auth_getremoteseqnumber </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_auth_context&nbsp;</td>
+ <td class="paramname"> <em>auth_context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int32_t *&nbsp;</td>
+ <td class="paramname"> <em>seqnumber</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: use krb5_auth_con_getremoteseqnumber()
+</div>
+</div><p>
+<a class="anchor" name="gc4cfe880cf291fa8be8e5b24e8130424"></a><!-- doxytag: member="mit_glue.c::krb5_c_enctype_compare" ref="gc4cfe880cf291fa8be8e5b24e8130424" args="(krb5_context context, krb5_enctype e1, krb5_enctype e2, krb5_boolean *similar) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_c_enctype_compare </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype&nbsp;</td>
+ <td class="paramname"> <em>e1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype&nbsp;</td>
+ <td class="paramname"> <em>e2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_boolean *&nbsp;</td>
+ <td class="paramname"> <em>similar</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: keytypes doesn't exists, they are really enctypes.
+</div>
+</div><p>
+<a class="anchor" name="gd2d4fc0147bdb1d67093af5b645ca754"></a><!-- doxytag: member="changepw.c::krb5_change_password" ref="gd2d4fc0147bdb1d67093af5b645ca754" args="(krb5_context context, krb5_creds *creds, const char *newpw, int *result_code, krb5_data *result_code_string, krb5_data *result_string) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_change_password </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>creds</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>newpw</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>result_code</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>result_code_string</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>result_string</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: <a class="el" href="group__krb5__deprecated.html#gd2d4fc0147bdb1d67093af5b645ca754">krb5_change_password()</a> is deprecated, use <a class="el" href="group__krb5.html#g02611e3966053f79eda248d76dccc282">krb5_set_password()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>creds</em>&nbsp;</td><td></td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>newpw</em>&nbsp;</td><td></td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>result_code</em>&nbsp;</td><td></td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>result_code_string</em>&nbsp;</td><td></td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>result_string</em>&nbsp;</td><td></td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On sucess password is changed.</dd></dl>
+@
+</div>
+</div><p>
+<a class="anchor" name="g0afa2dbf44cdbdae09e934bd9a0da411"></a><!-- doxytag: member="deprecated.c::krb5_clear_error_string" ref="g0afa2dbf44cdbdae09e934bd9a0da411" args="(krb5_context context) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_clear_error_string </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Clear the error message returned by krb5_get_error_string().<p>
+Deprecated: use <a class="el" href="group__krb5__error.html#g21bbb3fd831bce0e987b1184668e0764">krb5_clear_error_message()</a><p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos context </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf2759c6a1de47fb9dae082808861f5f9"></a><!-- doxytag: member="config_file.c::krb5_config_parse_string_multi" ref="gf2759c6a1de47fb9dae082808861f5f9" args="(krb5_context context, const char *string, krb5_config_section **res) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_config_parse_string_multi </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>string</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_config_section **&nbsp;</td>
+ <td class="paramname"> <em>res</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: configuration files are not strings
+</div>
+</div><p>
+<a class="anchor" name="gd181d7f53821544a0646955e124e20ba"></a><!-- doxytag: member="crypto.c::krb5_enctypes_compatible_keys" ref="gd181d7f53821544a0646955e124e20ba" args="(krb5_context context, krb5_enctype etype1, krb5_enctype etype2) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_enctypes_compatible_keys </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype&nbsp;</td>
+ <td class="paramname"> <em>etype1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype&nbsp;</td>
+ <td class="paramname"> <em>etype2</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: keytypes doesn't exists, they are really enctypes.
+</div>
+</div><p>
+<a class="anchor" name="g5b878bf6dc8aac75e3dc563e90690490"></a><!-- doxytag: member="deprecated.c::krb5_free_creds_contents" ref="g5b878bf6dc8aac75e3dc563e90690490" args="(krb5_context context, krb5_creds *c) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_free_creds_contents </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>c</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: use <a class="el" href="group__krb5.html#gd89c4c7b633646c39e4a34a7230c94e1">krb5_free_cred_contents()</a>
+</div>
+</div><p>
+<a class="anchor" name="g220b8b17e81dc71dd3ecd1b079160db9"></a><!-- doxytag: member="deprecated.c::krb5_free_data_contents" ref="g220b8b17e81dc71dd3ecd1b079160db9" args="(krb5_context context, krb5_data *data) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_data_contents </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Same as <a class="el" href="group__krb5.html#gb4b80ac7a8bbab89fe947ae1c7828ea8">krb5_data_free()</a>. MIT compat.<p>
+Deprecated: use <a class="el" href="group__krb5.html#gb4b80ac7a8bbab89fe947ae1c7828ea8">krb5_data_free()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>krb5_data to free. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8053e78a8e7e4959ee047cf902ab9b03"></a><!-- doxytag: member="deprecated.c::krb5_free_error_string" ref="g8053e78a8e7e4959ee047cf902ab9b03" args="(krb5_context context, char *str) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_error_string </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>str</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free the error message returned by krb5_get_error_string().<p>
+Deprecated: use krb5_free_error_message()<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>error message to free </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g85cd65c25d7420023e41e3c6e134ec28"></a><!-- doxytag: member="deprecated.c::krb5_free_unparsed_name" ref="g85cd65c25d7420023e41e3c6e134ec28" args="(krb5_context context, char *str) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_unparsed_name </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>str</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: use krb5_xfree().
+</div>
+</div><p>
+<a class="anchor" name="g947e9702f5104802ae27efec9582488a"></a><!-- doxytag: member="deprecated.c::krb5_generate_subkey" ref="g947e9702f5104802ae27efec9582488a" args="(krb5_context context, const krb5_keyblock *key, krb5_keyblock **subkey) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_generate_subkey </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_keyblock *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keyblock **&nbsp;</td>
+ <td class="paramname"> <em>subkey</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: use <a class="el" href="group__krb5__crypto.html#g147a581626c11fafee04bfda036781ea">krb5_generate_subkey_extended()</a>
+</div>
+</div><p>
+<a class="anchor" name="g36ec67884f1a29c60698339b106a789c"></a><!-- doxytag: member="deprecated.c::krb5_get_cred_from_kdc" ref="g36ec67884f1a29c60698339b106a789c" args="(krb5_context context, krb5_ccache ccache, krb5_creds *in_creds, krb5_creds **out_creds, krb5_creds ***ret_tgts) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_cred_from_kdc </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>ccache</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>in_creds</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds **&nbsp;</td>
+ <td class="paramname"> <em>out_creds</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds ***&nbsp;</td>
+ <td class="paramname"> <em>ret_tgts</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: use krb5_get_credentials_with_flags().
+</div>
+</div><p>
+<a class="anchor" name="g20443cc492d983894b53660c9edeed5f"></a><!-- doxytag: member="deprecated.c::krb5_get_cred_from_kdc_opt" ref="g20443cc492d983894b53660c9edeed5f" args="(krb5_context context, krb5_ccache ccache, krb5_creds *in_creds, krb5_creds **out_creds, krb5_creds ***ret_tgts, krb5_flags flags) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_cred_from_kdc_opt </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>ccache</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>in_creds</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds **&nbsp;</td>
+ <td class="paramname"> <em>out_creds</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds ***&nbsp;</td>
+ <td class="paramname"> <em>ret_tgts</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_flags&nbsp;</td>
+ <td class="paramname"> <em>flags</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: use krb5_get_credentials_with_flags().
+</div>
+</div><p>
+<a class="anchor" name="ge382db22c6bc14864e90df67b478af9a"></a><!-- doxytag: member="deprecated.c::krb5_get_in_tkt_with_keytab" ref="ge382db22c6bc14864e90df67b478af9a" args="(krb5_context context, krb5_flags options, krb5_addresses *addrs, const krb5_enctype *etypes, const krb5_preauthtype *pre_auth_types, krb5_keytab keytab, krb5_ccache ccache, krb5_creds *creds, krb5_kdc_rep *ret_as_reply) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_in_tkt_with_keytab </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_flags&nbsp;</td>
+ <td class="paramname"> <em>options</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_addresses *&nbsp;</td>
+ <td class="paramname"> <em>addrs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_enctype *&nbsp;</td>
+ <td class="paramname"> <em>etypes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_preauthtype *&nbsp;</td>
+ <td class="paramname"> <em>pre_auth_types</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab&nbsp;</td>
+ <td class="paramname"> <em>keytab</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>ccache</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>creds</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_kdc_rep *&nbsp;</td>
+ <td class="paramname"> <em>ret_as_reply</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: use krb5_get_init_creds() and friends.
+</div>
+</div><p>
+<a class="anchor" name="gbcfa94e926adf978549418807a66a0b8"></a><!-- doxytag: member="deprecated.c::krb5_get_in_tkt_with_password" ref="gbcfa94e926adf978549418807a66a0b8" args="(krb5_context context, krb5_flags options, krb5_addresses *addrs, const krb5_enctype *etypes, const krb5_preauthtype *pre_auth_types, const char *password, krb5_ccache ccache, krb5_creds *creds, krb5_kdc_rep *ret_as_reply) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_in_tkt_with_password </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_flags&nbsp;</td>
+ <td class="paramname"> <em>options</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_addresses *&nbsp;</td>
+ <td class="paramname"> <em>addrs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_enctype *&nbsp;</td>
+ <td class="paramname"> <em>etypes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_preauthtype *&nbsp;</td>
+ <td class="paramname"> <em>pre_auth_types</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>password</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>ccache</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>creds</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_kdc_rep *&nbsp;</td>
+ <td class="paramname"> <em>ret_as_reply</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: use krb5_get_init_creds() and friends.
+</div>
+</div><p>
+<a class="anchor" name="gd1c401931abe9725bef8b0ea8a9dd882"></a><!-- doxytag: member="deprecated.c::krb5_get_in_tkt_with_skey" ref="gd1c401931abe9725bef8b0ea8a9dd882" args="(krb5_context context, krb5_flags options, krb5_addresses *addrs, const krb5_enctype *etypes, const krb5_preauthtype *pre_auth_types, const krb5_keyblock *key, krb5_ccache ccache, krb5_creds *creds, krb5_kdc_rep *ret_as_reply) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_in_tkt_with_skey </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_flags&nbsp;</td>
+ <td class="paramname"> <em>options</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_addresses *&nbsp;</td>
+ <td class="paramname"> <em>addrs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_enctype *&nbsp;</td>
+ <td class="paramname"> <em>etypes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_preauthtype *&nbsp;</td>
+ <td class="paramname"> <em>pre_auth_types</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_keyblock *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>ccache</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>creds</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_kdc_rep *&nbsp;</td>
+ <td class="paramname"> <em>ret_as_reply</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: use krb5_get_init_creds() and friends.
+</div>
+</div><p>
+<a class="anchor" name="gf2bc3bce4dfa1ca2da4331fc36e11b0f"></a><!-- doxytag: member="init_creds.c::krb5_get_init_creds_opt_get_error" ref="gf2bc3bce4dfa1ca2da4331fc36e11b0f" args="(krb5_context context, krb5_get_init_creds_opt *opt, KRB_ERROR **error) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_init_creds_opt_get_error </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_get_init_creds_opt *&nbsp;</td>
+ <td class="paramname"> <em>opt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">KRB_ERROR **&nbsp;</td>
+ <td class="paramname"> <em>error</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: use the new <a class="el" href="group__krb5__credential.html#g1a610bb2706e4048e8220225da110033">krb5_init_creds_init()</a> and <a class="el" href="group__krb5__credential.html#gb5b9ab4698f5af99c06dbcc015c39e27">krb5_init_creds_get_error()</a>.
+</div>
+</div><p>
+<a class="anchor" name="gb30808a4f397cf8b6eeabfe5504d6451"></a><!-- doxytag: member="init_creds.c::krb5_get_init_creds_opt_init" ref="gb30808a4f397cf8b6eeabfe5504d6451" args="(krb5_get_init_creds_opt *opt) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_get_init_creds_opt_init </td>
+ <td>(</td>
+ <td class="paramtype">krb5_get_init_creds_opt *&nbsp;</td>
+ <td class="paramname"> <em>opt</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: use <a class="el" href="group__krb5__credential.html#gbc0922393cb5c5eecec2d83f1851c21b">krb5_get_init_creds_opt_alloc()</a>.<p>
+The reason <a class="el" href="group__krb5__deprecated.html#gb30808a4f397cf8b6eeabfe5504d6451">krb5_get_init_creds_opt_init()</a> is deprecated is that krb5_get_init_creds_opt is a static structure and for ABI reason it can't grow, ie can't add new functionality.
+</div>
+</div><p>
+<a class="anchor" name="g2726bd189174a87defdec0a8fec82b49"></a><!-- doxytag: member="deprecated.c::krb5_keytab_key_proc" ref="g2726bd189174a87defdec0a8fec82b49" args="(krb5_context context, krb5_enctype enctype, krb5_salt salt, krb5_const_pointer keyseed, krb5_keyblock **key) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_CALLCONV krb5_keytab_key_proc </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype&nbsp;</td>
+ <td class="paramname"> <em>enctype</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_salt&nbsp;</td>
+ <td class="paramname"> <em>salt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_pointer&nbsp;</td>
+ <td class="paramname"> <em>keyseed</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keyblock **&nbsp;</td>
+ <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: use krb5_get_init_creds() and friends.
+</div>
+</div><p>
+<a class="anchor" name="g50031239574b31100d9ab158ce7d026a"></a><!-- doxytag: member="crypto.c::krb5_keytype_to_enctypes" ref="g50031239574b31100d9ab158ce7d026a" args="(krb5_context context, krb5_keytype keytype, unsigned *len, krb5_enctype **val) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_keytype_to_enctypes </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytype&nbsp;</td>
+ <td class="paramname"> <em>keytype</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned *&nbsp;</td>
+ <td class="paramname"> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype **&nbsp;</td>
+ <td class="paramname"> <em>val</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: keytypes doesn't exists, they are really enctypes.
+</div>
+</div><p>
+<a class="anchor" name="gd41975d389631db8a13151fb864c0c42"></a><!-- doxytag: member="deprecated.c::krb5_keytype_to_enctypes_default" ref="gd41975d389631db8a13151fb864c0c42" args="(krb5_context context, krb5_keytype keytype, unsigned *len, krb5_enctype **val) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_keytype_to_enctypes_default </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytype&nbsp;</td>
+ <td class="paramname"> <em>keytype</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned *&nbsp;</td>
+ <td class="paramname"> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype **&nbsp;</td>
+ <td class="paramname"> <em>val</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: keytypes doesn't exists, they are really enctypes.
+</div>
+</div><p>
+<a class="anchor" name="gdf3188d181f3940b049f5064f74a90ec"></a><!-- doxytag: member="deprecated.c::krb5_keytype_to_string" ref="gdf3188d181f3940b049f5064f74a90ec" args="(krb5_context context, krb5_keytype keytype, char **string) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_keytype_to_string </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytype&nbsp;</td>
+ <td class="paramname"> <em>keytype</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>string</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: keytypes doesn't exists, they are really enctypes in most cases, use krb5_enctype_to_string().
+</div>
+</div><p>
+<a class="anchor" name="g8edb548aa6c313e464c2134dbc0870c6"></a><!-- doxytag: member="deprecated.c::krb5_password_key_proc" ref="g8edb548aa6c313e464c2134dbc0870c6" args="(krb5_context context, krb5_enctype type, krb5_salt salt, krb5_const_pointer keyseed, krb5_keyblock **key) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_CALLCONV krb5_password_key_proc </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype&nbsp;</td>
+ <td class="paramname"> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_salt&nbsp;</td>
+ <td class="paramname"> <em>salt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_pointer&nbsp;</td>
+ <td class="paramname"> <em>keyseed</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keyblock **&nbsp;</td>
+ <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: use krb5_get_init_creds() and friends.
+</div>
+</div><p>
+<a class="anchor" name="g14f320f353bf7c0b325e520627aeecd1"></a><!-- doxytag: member="deprecated.c::krb5_princ_realm" ref="g14f320f353bf7c0b325e520627aeecd1" args="(krb5_context context, krb5_principal principal) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_realm* KRB5_LIB_CALL krb5_princ_realm </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: use <a class="el" href="group__krb5__principal.html#gccd23426798cf776a96c23a455576362">krb5_principal_get_realm()</a>
+</div>
+</div><p>
+<a class="anchor" name="g376b5b8ec96bd7e644c1583291997dca"></a><!-- doxytag: member="deprecated.c::krb5_princ_set_realm" ref="g376b5b8ec96bd7e644c1583291997dca" args="(krb5_context context, krb5_principal principal, krb5_realm *realm) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_princ_set_realm </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_realm *&nbsp;</td>
+ <td class="paramname"> <em>realm</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: use <a class="el" href="group__krb5__principal.html#gaacf06babb00b391f35a8468a0ec96f9">krb5_principal_set_realm()</a>
+</div>
+</div><p>
+<a class="anchor" name="gf89cefa0b780e9252ab97b7dd1bf340e"></a><!-- doxytag: member="deprecated.c::krb5_set_error_string" ref="gf89cefa0b780e9252ab97b7dd1bf340e" args="(krb5_context context, const char *fmt,...) __attribute__((format(printf" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_error_string </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>fmt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&nbsp;</td>
+ <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the error message returned by krb5_get_error_string().<p>
+Deprecated: use krb5_get_error_message()<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>fmt</em>&nbsp;</td><td>error message to free</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf02ee01e78556f96ba033376a6e5de71"></a><!-- doxytag: member="deprecated.c::krb5_string_to_keytype" ref="gf02ee01e78556f96ba033376a6e5de71" args="(krb5_context context, const char *string, krb5_keytype *keytype) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_string_to_keytype </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>string</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytype *&nbsp;</td>
+ <td class="paramname"> <em>keytype</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Deprecated: keytypes doesn't exists, they are really enctypes in most cases, use krb5_string_to_enctype().
+</div>
+</div><p>
+<a class="anchor" name="ga698492299702f5568e941b62bf4decd"></a><!-- doxytag: member="deprecated.c::krb5_vset_error_string" ref="ga698492299702f5568e941b62bf4decd" args="(krb5_context context, const char *fmt, va_list args) __attribute__((format(printf" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_vset_error_string </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>fmt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">va_list&nbsp;</td>
+ <td class="paramname"> <em>args</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the error message returned by krb5_get_error_string(), deprecated, use <a class="el" href="group__krb5__error.html#g8961540f386e3e3d2700d31f7a4ba63d">krb5_set_error_message()</a>.<p>
+Deprecated: use krb5_vset_error_message()<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>msg</em>&nbsp;</td><td>error message to free</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__digest.html b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__digest.html
new file mode 100644
index 000000000000..d977e5dffb83
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__digest.html
@@ -0,0 +1,87 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Heimdal Kerberos 5 digest service</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal Kerberos 5 digest service</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__digest.html#gfdcbf9b8641947963775c33b1ffb38fa">krb5_digest_probe</a> (krb5_context context, krb5_realm realm, krb5_ccache ccache, unsigned *flags)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="gfdcbf9b8641947963775c33b1ffb38fa"></a><!-- doxytag: member="digest.c::krb5_digest_probe" ref="gfdcbf9b8641947963775c33b1ffb38fa" args="(krb5_context context, krb5_realm realm, krb5_ccache ccache, unsigned *flags)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_digest_probe </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_realm&nbsp;</td>
+ <td class="paramname"> <em>realm</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>ccache</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned *&nbsp;</td>
+ <td class="paramname"> <em>flags</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the supported/allowed mechanism for this principal.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>realm</em>&nbsp;</td><td>The realm of the KDC. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ccache</em>&nbsp;</td><td>The credential cache to use when talking to the KDC. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>The supported mechanism.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__error.html b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__error.html
new file mode 100644
index 000000000000..3c192e5ebf32
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__error.html
@@ -0,0 +1,239 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Heimdal Kerberos 5 error reporting functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal Kerberos 5 error reporting functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__error.html#gbfadc71c9680807445c9c73bfb80c7de">krb5_eai_to_heim_errno</a> (int eai_errno, int system_error)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__error.html#gf04d419f89c5d4525f05f08710aed85e">krb5_h_errno_to_heim_errno</a> (int eai_errno)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__error.html#g21bbb3fd831bce0e987b1184668e0764">krb5_clear_error_message</a> (krb5_context context)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__error.html#g8961540f386e3e3d2700d31f7a4ba63d">krb5_set_error_message</a> (krb5_context context, krb5_error_code ret, const char *fmt,...) __attribute__((format(printf</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__error.html#g0561875954862c00e141a9e680f2e8d0">krb5_vwarn</a> (krb5_context context, krb5_error_code code, const char *fmt, va_list ap) __attribute__((format(printf</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g21bbb3fd831bce0e987b1184668e0764"></a><!-- doxytag: member="error_string.c::krb5_clear_error_message" ref="g21bbb3fd831bce0e987b1184668e0764" args="(krb5_context context)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_clear_error_message </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Clears the error message from the Kerberos 5 context.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>The Kerberos 5 context to clear </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gbfadc71c9680807445c9c73bfb80c7de"></a><!-- doxytag: member="eai_to_heim_errno.c::krb5_eai_to_heim_errno" ref="gbfadc71c9680807445c9c73bfb80c7de" args="(int eai_errno, int system_error)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_eai_to_heim_errno </td>
+ <td>(</td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>eai_errno</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>system_error</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Convert the getaddrinfo() error code to a Kerberos et error code.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>eai_errno</em>&nbsp;</td><td>contains the error code from getaddrinfo(). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>system_error</em>&nbsp;</td><td>should have the value of errno after the failed getaddrinfo().</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Kerberos error code representing the EAI errors. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf04d419f89c5d4525f05f08710aed85e"></a><!-- doxytag: member="eai_to_heim_errno.c::krb5_h_errno_to_heim_errno" ref="gf04d419f89c5d4525f05f08710aed85e" args="(int eai_errno)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_h_errno_to_heim_errno </td>
+ <td>(</td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>eai_errno</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Convert the gethostname() error code (h_error) to a Kerberos et error code.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>eai_errno</em>&nbsp;</td><td>contains the error code from gethostname().</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Kerberos error code representing the gethostname errors. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8961540f386e3e3d2700d31f7a4ba63d"></a><!-- doxytag: member="error_string.c::krb5_set_error_message" ref="g8961540f386e3e3d2700d31f7a4ba63d" args="(krb5_context context, krb5_error_code ret, const char *fmt,...) __attribute__((format(printf" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_set_error_message </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_error_code&nbsp;</td>
+ <td class="paramname"> <em>ret</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>fmt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&nbsp;</td>
+ <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the context full error string for a specific error code. The error that is stored should be internationalized.<p>
+The if context is NULL, no error string is stored.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ret</em>&nbsp;</td><td>The error code </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>fmt</em>&nbsp;</td><td>Error string for the error code </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>printf(3) style parameters. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g0561875954862c00e141a9e680f2e8d0"></a><!-- doxytag: member="warn.c::krb5_vwarn" ref="g0561875954862c00e141a9e680f2e8d0" args="(krb5_context context, krb5_error_code code, const char *fmt, va_list ap) __attribute__((format(printf" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_vwarn </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_error_code&nbsp;</td>
+ <td class="paramname"> <em>code</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>fmt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">va_list&nbsp;</td>
+ <td class="paramname"> <em>ap</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Log a warning to the log, default stderr, include the error from the last failure.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>code</em>&nbsp;</td><td>error code of the last error </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>fmt</em>&nbsp;</td><td>message to print </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ap</em>&nbsp;</td><td>arguments </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__keytab.html b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__keytab.html
new file mode 100644
index 000000000000..9447c29fd142
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__keytab.html
@@ -0,0 +1,1055 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Heimdal Kerberos 5 keytab handling functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal Kerberos 5 keytab handling functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#g0b54b479db89c76e46d6edae8328848e">krb5_kt_register</a> (krb5_context context, const krb5_kt_ops *ops)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#gc57fead58fb1baa003d6438613731901">krb5_kt_resolve</a> (krb5_context context, const char *name, krb5_keytab *id)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#g3fdc1c60208dc99c1f0ebec18e2a7a52">krb5_kt_default_name</a> (krb5_context context, char *name, size_t namesize)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#gaaff7211e887e908d909d75febf33200">krb5_kt_default_modify_name</a> (krb5_context context, char *name, size_t namesize)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#gfcd059883c79dbd99a179bc4225d16b5">krb5_kt_default</a> (krb5_context context, krb5_keytab *id)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#g6040b238ff8adeb346ca35e5530bdeff">krb5_kt_read_service_key</a> (krb5_context context, krb5_pointer keyprocarg, krb5_principal principal, krb5_kvno vno, krb5_enctype enctype, krb5_keyblock **key)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#g632921a4b144a4eb656968d836efd9bb">krb5_kt_get_type</a> (krb5_context context, krb5_keytab keytab, char *prefix, size_t prefixsize)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#ga10348fa20bbae806d652aa4adb44bdd">krb5_kt_get_name</a> (krb5_context context, krb5_keytab keytab, char *name, size_t namesize)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#g40744ad6c5d9eed2b76d26f5e698d1f3">krb5_kt_get_full_name</a> (krb5_context context, krb5_keytab keytab, char **str)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#gb67f5ae0a7c4b87d193218b842cad590">krb5_kt_close</a> (krb5_context context, krb5_keytab id)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#g23f1f8d506d680564ff0c783b903abf9">krb5_kt_destroy</a> (krb5_context context, krb5_keytab id)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#g688d397ec30b48e5edc5a59567bc8010">krb5_kt_compare</a> (krb5_context context, krb5_keytab_entry *entry, krb5_const_principal principal, krb5_kvno vno, krb5_enctype enctype)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#gd7183b9573330db0575118057b3a02a5">krb5_kt_get_entry</a> (krb5_context context, krb5_keytab id, krb5_const_principal principal, krb5_kvno kvno, krb5_enctype enctype, krb5_keytab_entry *entry)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#g6c6c4233517bd5b12f5c3a99ed31b058">krb5_kt_copy_entry_contents</a> (krb5_context context, const krb5_keytab_entry *in, krb5_keytab_entry *out)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#gc0774ab1407eaaaa0e5998478de246e2">krb5_kt_free_entry</a> (krb5_context context, krb5_keytab_entry *entry)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#g1efd8ee48d6e3caa31cad475423b8917">krb5_kt_start_seq_get</a> (krb5_context context, krb5_keytab id, krb5_kt_cursor *cursor)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#gc40140c41333a86d3c40426f50b4e1b0">krb5_kt_next_entry</a> (krb5_context context, krb5_keytab id, krb5_keytab_entry *entry, krb5_kt_cursor *cursor)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#g11289efb407d93a1f84d5c64731a4bd1">krb5_kt_end_seq_get</a> (krb5_context context, krb5_keytab id, krb5_kt_cursor *cursor)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#g68d16c2a59d10dc3ca84bf8cbf6a4731">krb5_kt_add_entry</a> (krb5_context context, krb5_keytab id, krb5_keytab_entry *entry)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#g0f3e7f55fd97a595c961f0ffc49bebac">krb5_kt_remove_entry</a> (krb5_context context, krb5_keytab id, krb5_keytab_entry *entry)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__keytab.html#gf0947f9089022eaf4c83a463cad10ed3">krb5_kt_have_content</a> (krb5_context context, krb5_keytab id)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g68d16c2a59d10dc3ca84bf8cbf6a4731"></a><!-- doxytag: member="keytab.c::krb5_kt_add_entry" ref="g68d16c2a59d10dc3ca84bf8cbf6a4731" args="(krb5_context context, krb5_keytab id, krb5_keytab_entry *entry)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_add_entry </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab_entry *&nbsp;</td>
+ <td class="paramname"> <em>entry</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add the entry in `entry' to the keytab `id'.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>a keytab. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>entry</em>&nbsp;</td><td>the entry to add</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb67f5ae0a7c4b87d193218b842cad590"></a><!-- doxytag: member="keytab.c::krb5_kt_close" ref="gb67f5ae0a7c4b87d193218b842cad590" args="(krb5_context context, krb5_keytab id)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_close </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab&nbsp;</td>
+ <td class="paramname"> <em>id</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Finish using the keytab in `id'. All resources will be released, even on errors.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>keytab to close.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g688d397ec30b48e5edc5a59567bc8010"></a><!-- doxytag: member="keytab.c::krb5_kt_compare" ref="g688d397ec30b48e5edc5a59567bc8010" args="(krb5_context context, krb5_keytab_entry *entry, krb5_const_principal principal, krb5_kvno vno, krb5_enctype enctype)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_kt_compare </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab_entry *&nbsp;</td>
+ <td class="paramname"> <em>entry</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_kvno&nbsp;</td>
+ <td class="paramname"> <em>vno</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype&nbsp;</td>
+ <td class="paramname"> <em>enctype</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Compare `entry' against `principal, vno, enctype'. Any of `principal, vno, enctype' might be 0 which acts as a wildcard. Return TRUE if they compare the same, FALSE otherwise.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>entry</em>&nbsp;</td><td>an entry to match with. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>principal to match, NULL matches all principals. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>vno</em>&nbsp;</td><td>key version to match, 0 matches all key version numbers. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>enctype</em>&nbsp;</td><td>encryption type to match, 0 matches all encryption types.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return TRUE or match, FALSE if not matched. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6c6c4233517bd5b12f5c3a99ed31b058"></a><!-- doxytag: member="keytab.c::krb5_kt_copy_entry_contents" ref="g6c6c4233517bd5b12f5c3a99ed31b058" args="(krb5_context context, const krb5_keytab_entry *in, krb5_keytab_entry *out)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_copy_entry_contents </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_keytab_entry *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab_entry *&nbsp;</td>
+ <td class="paramname"> <em>out</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy the contents of `in' into `out'.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>the keytab entry to copy. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>the copy of the keytab entry, free with <a class="el" href="group__krb5__keytab.html#gc0774ab1407eaaaa0e5998478de246e2">krb5_kt_free_entry()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gfcd059883c79dbd99a179bc4225d16b5"></a><!-- doxytag: member="keytab.c::krb5_kt_default" ref="gfcd059883c79dbd99a179bc4225d16b5" args="(krb5_context context, krb5_keytab *id)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_default </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab *&nbsp;</td>
+ <td class="paramname"> <em>id</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set `id' to the default keytab.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>the new default keytab.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gaaff7211e887e908d909d75febf33200"></a><!-- doxytag: member="keytab.c::krb5_kt_default_modify_name" ref="gaaff7211e887e908d909d75febf33200" args="(krb5_context context, char *name, size_t namesize)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_default_modify_name </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>namesize</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy the name of the default modify keytab into `name'.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>buffer where the name will be written </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>namesize</em>&nbsp;</td><td>length of name</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3fdc1c60208dc99c1f0ebec18e2a7a52"></a><!-- doxytag: member="keytab.c::krb5_kt_default_name" ref="g3fdc1c60208dc99c1f0ebec18e2a7a52" args="(krb5_context context, char *name, size_t namesize)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_default_name </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>namesize</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+copy the name of the default keytab into `name'.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>buffer where the name will be written </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>namesize</em>&nbsp;</td><td>length of name</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g23f1f8d506d680564ff0c783b903abf9"></a><!-- doxytag: member="keytab.c::krb5_kt_destroy" ref="g23f1f8d506d680564ff0c783b903abf9" args="(krb5_context context, krb5_keytab id)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_destroy </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab&nbsp;</td>
+ <td class="paramname"> <em>id</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Destroy (remove) the keytab in `id'. All resources will be released, even on errors, does the equvalment of <a class="el" href="group__krb5__keytab.html#gb67f5ae0a7c4b87d193218b842cad590">krb5_kt_close()</a> on the resources.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>keytab to destroy.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g11289efb407d93a1f84d5c64731a4bd1"></a><!-- doxytag: member="keytab.c::krb5_kt_end_seq_get" ref="g11289efb407d93a1f84d5c64731a4bd1" args="(krb5_context context, krb5_keytab id, krb5_kt_cursor *cursor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_end_seq_get </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_kt_cursor *&nbsp;</td>
+ <td class="paramname"> <em>cursor</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Release all resources associated with `cursor'.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>a keytab. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cursor</em>&nbsp;</td><td>the cursor to free.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc0774ab1407eaaaa0e5998478de246e2"></a><!-- doxytag: member="keytab.c::krb5_kt_free_entry" ref="gc0774ab1407eaaaa0e5998478de246e2" args="(krb5_context context, krb5_keytab_entry *entry)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_free_entry </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab_entry *&nbsp;</td>
+ <td class="paramname"> <em>entry</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free the contents of `entry'.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>entry</em>&nbsp;</td><td>the entry to free</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd7183b9573330db0575118057b3a02a5"></a><!-- doxytag: member="keytab.c::krb5_kt_get_entry" ref="gd7183b9573330db0575118057b3a02a5" args="(krb5_context context, krb5_keytab id, krb5_const_principal principal, krb5_kvno kvno, krb5_enctype enctype, krb5_keytab_entry *entry)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_get_entry </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_kvno&nbsp;</td>
+ <td class="paramname"> <em>kvno</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype&nbsp;</td>
+ <td class="paramname"> <em>enctype</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab_entry *&nbsp;</td>
+ <td class="paramname"> <em>entry</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Retrieve the keytab entry for `principal, kvno, enctype' into `entry' from the keytab `id'. Matching is done like <a class="el" href="group__krb5__keytab.html#g688d397ec30b48e5edc5a59567bc8010">krb5_kt_compare()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>a keytab. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>principal to match, NULL matches all principals. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>kvno</em>&nbsp;</td><td>key version to match, 0 matches all key version numbers. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>enctype</em>&nbsp;</td><td>encryption type to match, 0 matches all encryption types. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>entry</em>&nbsp;</td><td>the returned entry, free with <a class="el" href="group__krb5__keytab.html#gc0774ab1407eaaaa0e5998478de246e2">krb5_kt_free_entry()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g40744ad6c5d9eed2b76d26f5e698d1f3"></a><!-- doxytag: member="keytab.c::krb5_kt_get_full_name" ref="g40744ad6c5d9eed2b76d26f5e698d1f3" args="(krb5_context context, krb5_keytab keytab, char **str)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_get_full_name </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab&nbsp;</td>
+ <td class="paramname"> <em>keytab</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>str</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Retrieve the full name of the keytab `keytab' and store the name in `str'.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>keytab</em>&nbsp;</td><td>keytab to get name for. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>the name of the keytab name, usee krb5_xfree() to free the string. On error, *str is set to NULL.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga10348fa20bbae806d652aa4adb44bdd"></a><!-- doxytag: member="keytab.c::krb5_kt_get_name" ref="ga10348fa20bbae806d652aa4adb44bdd" args="(krb5_context context, krb5_keytab keytab, char *name, size_t namesize)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_get_name </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab&nbsp;</td>
+ <td class="paramname"> <em>keytab</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>namesize</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Retrieve the name of the keytab `keytab' into `name', `namesize'<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>keytab</em>&nbsp;</td><td>the keytab to get the name for. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>name buffer. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>namesize</em>&nbsp;</td><td>size of name buffer.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g632921a4b144a4eb656968d836efd9bb"></a><!-- doxytag: member="keytab.c::krb5_kt_get_type" ref="g632921a4b144a4eb656968d836efd9bb" args="(krb5_context context, krb5_keytab keytab, char *prefix, size_t prefixsize)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_get_type </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab&nbsp;</td>
+ <td class="paramname"> <em>keytab</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>prefix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>prefixsize</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the type of the `keytab' in the string `prefix of length `prefixsize'.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>keytab</em>&nbsp;</td><td>the keytab to get the prefix for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>prefix</em>&nbsp;</td><td>prefix buffer </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>prefixsize</em>&nbsp;</td><td>length of prefix buffer</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf0947f9089022eaf4c83a463cad10ed3"></a><!-- doxytag: member="keytab.c::krb5_kt_have_content" ref="gf0947f9089022eaf4c83a463cad10ed3" args="(krb5_context context, krb5_keytab id)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_kt_have_content </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab&nbsp;</td>
+ <td class="paramname"> <em>id</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return true if the keytab exists and have entries<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>a keytab.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc40140c41333a86d3c40426f50b4e1b0"></a><!-- doxytag: member="keytab.c::krb5_kt_next_entry" ref="gc40140c41333a86d3c40426f50b4e1b0" args="(krb5_context context, krb5_keytab id, krb5_keytab_entry *entry, krb5_kt_cursor *cursor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_next_entry </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab_entry *&nbsp;</td>
+ <td class="paramname"> <em>entry</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_kt_cursor *&nbsp;</td>
+ <td class="paramname"> <em>cursor</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the next entry from keytab, advance the cursor. On last entry the function will return KRB5_KT_END.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>a keytab. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>entry</em>&nbsp;</td><td>the returned entry, free with <a class="el" href="group__krb5__keytab.html#gc0774ab1407eaaaa0e5998478de246e2">krb5_kt_free_entry()</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cursor</em>&nbsp;</td><td>the cursor of the iteration.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6040b238ff8adeb346ca35e5530bdeff"></a><!-- doxytag: member="keytab.c::krb5_kt_read_service_key" ref="g6040b238ff8adeb346ca35e5530bdeff" args="(krb5_context context, krb5_pointer keyprocarg, krb5_principal principal, krb5_kvno vno, krb5_enctype enctype, krb5_keyblock **key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_read_service_key </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_pointer&nbsp;</td>
+ <td class="paramname"> <em>keyprocarg</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_kvno&nbsp;</td>
+ <td class="paramname"> <em>vno</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_enctype&nbsp;</td>
+ <td class="paramname"> <em>enctype</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keyblock **&nbsp;</td>
+ <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Read the key identified by `(principal, vno, enctype)' from the keytab in `keyprocarg' (the default if == NULL) into `*key'.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>keyprocarg</em>&nbsp;</td><td></td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td></td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>vno</em>&nbsp;</td><td></td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>enctype</em>&nbsp;</td><td></td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td></td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g0b54b479db89c76e46d6edae8328848e"></a><!-- doxytag: member="keytab.c::krb5_kt_register" ref="g0b54b479db89c76e46d6edae8328848e" args="(krb5_context context, const krb5_kt_ops *ops)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_register </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_kt_ops *&nbsp;</td>
+ <td class="paramname"> <em>ops</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Register a new keytab backend.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ops</em>&nbsp;</td><td>a backend to register.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g0f3e7f55fd97a595c961f0ffc49bebac"></a><!-- doxytag: member="keytab.c::krb5_kt_remove_entry" ref="g0f3e7f55fd97a595c961f0ffc49bebac" args="(krb5_context context, krb5_keytab id, krb5_keytab_entry *entry)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_remove_entry </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab_entry *&nbsp;</td>
+ <td class="paramname"> <em>entry</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Remove an entry from the keytab, matching is done using <a class="el" href="group__krb5__keytab.html#g688d397ec30b48e5edc5a59567bc8010">krb5_kt_compare()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>a keytab. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>entry</em>&nbsp;</td><td>the entry to remove</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc57fead58fb1baa003d6438613731901"></a><!-- doxytag: member="keytab.c::krb5_kt_resolve" ref="gc57fead58fb1baa003d6438613731901" args="(krb5_context context, const char *name, krb5_keytab *id)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_resolve </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab *&nbsp;</td>
+ <td class="paramname"> <em>id</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Resolve the keytab name (of the form `type:residual') in `name' into a keytab in `id'.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>name to resolve </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>resulting keytab, free with <a class="el" href="group__krb5__keytab.html#gb67f5ae0a7c4b87d193218b842cad590">krb5_kt_close()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1efd8ee48d6e3caa31cad475423b8917"></a><!-- doxytag: member="keytab.c::krb5_kt_start_seq_get" ref="g1efd8ee48d6e3caa31cad475423b8917" args="(krb5_context context, krb5_keytab id, krb5_kt_cursor *cursor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_start_seq_get </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keytab&nbsp;</td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_kt_cursor *&nbsp;</td>
+ <td class="paramname"> <em>cursor</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set `cursor' to point at the beginning of `id'.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>a keytab. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cursor</em>&nbsp;</td><td>a newly allocated cursor, free with <a class="el" href="group__krb5__keytab.html#g11289efb407d93a1f84d5c64731a4bd1">krb5_kt_end_seq_get()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__pac.html b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__pac.html
new file mode 100644
index 000000000000..45dddb6cf761
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__pac.html
@@ -0,0 +1,155 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Heimdal Kerberos 5 PAC handling functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal Kerberos 5 PAC handling functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__pac.html#gd25693feb5786c4c964bfcff87961bf7">krb5_pac_get_buffer</a> (krb5_context context, krb5_pac p, uint32_t type, krb5_data *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__pac.html#g07a7fffbb07e4434a0e3526653c629a0">krb5_pac_verify</a> (krb5_context context, const krb5_pac pac, time_t authtime, krb5_const_principal principal, const krb5_keyblock *server, const krb5_keyblock *privsvr)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="gd25693feb5786c4c964bfcff87961bf7"></a><!-- doxytag: member="pac.c::krb5_pac_get_buffer" ref="gd25693feb5786c4c964bfcff87961bf7" args="(krb5_context context, krb5_pac p, uint32_t type, krb5_data *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_pac_get_buffer </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_pac&nbsp;</td>
+ <td class="paramname"> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint32_t&nbsp;</td>
+ <td class="paramname"> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the PAC buffer of specific type from the pac.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>the pac structure returned by krb5_pac_parse(). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>type of buffer to get </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>return data, free with <a class="el" href="group__krb5.html#gb4b80ac7a8bbab89fe947ae1c7828ea8">krb5_data_free()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g07a7fffbb07e4434a0e3526653c629a0"></a><!-- doxytag: member="pac.c::krb5_pac_verify" ref="g07a7fffbb07e4434a0e3526653c629a0" args="(krb5_context context, const krb5_pac pac, time_t authtime, krb5_const_principal principal, const krb5_keyblock *server, const krb5_keyblock *privsvr)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_pac_verify </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_pac&nbsp;</td>
+ <td class="paramname"> <em>pac</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">time_t&nbsp;</td>
+ <td class="paramname"> <em>authtime</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_keyblock *&nbsp;</td>
+ <td class="paramname"> <em>server</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_keyblock *&nbsp;</td>
+ <td class="paramname"> <em>privsvr</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Verify the PAC.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>pac</em>&nbsp;</td><td>the pac structure returned by krb5_pac_parse(). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>authtime</em>&nbsp;</td><td>The time of the ticket the PAC belongs to. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>the principal to verify. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>server</em>&nbsp;</td><td>The service key, most always be given. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>privsvr</em>&nbsp;</td><td>The KDC key, may be given.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__principal.html b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__principal.html
new file mode 100644
index 000000000000..678478a12e3d
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__principal.html
@@ -0,0 +1,1180 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Heimdal Kerberos 5 principal functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal Kerberos 5 principal functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#g5bd3f620ebe8cd4fe44b5c858ba17d22">krb5_free_principal</a> (krb5_context context, krb5_principal p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#g28b750b990452f02922bc74a6cac0313">krb5_principal_set_type</a> (krb5_context context, krb5_principal principal, int type)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION int KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#gf4a599c42592ff7485753e80b8de67b7">krb5_principal_get_type</a> (krb5_context context, krb5_const_principal principal)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION const char <br>
+*KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#gccd23426798cf776a96c23a455576362">krb5_principal_get_realm</a> (krb5_context context, krb5_const_principal principal)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION unsigned int <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#g0138febd5414ace4835d3af78694833c">krb5_principal_get_num_comp</a> (krb5_context context, krb5_const_principal principal)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#g1f1c6a19e7ccffb3284545ed3c12b827">krb5_parse_name_flags</a> (krb5_context context, const char *name, int flags, krb5_principal *principal)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#gf0b0da913ab93d6e2577c0ccf4631f24">krb5_parse_name</a> (krb5_context context, const char *name, krb5_principal *principal)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#g6f173badfb37ad41fdab6db77bde7689">krb5_unparse_name_fixed</a> (krb5_context context, krb5_const_principal principal, char *name, size_t len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#gcebe44e0685fc7b6c89a53eca71e7d24">krb5_unparse_name_fixed_short</a> (krb5_context context, krb5_const_principal principal, char *name, size_t len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#gd9ba42e18d79aa27458338967b66693f">krb5_unparse_name_fixed_flags</a> (krb5_context context, krb5_const_principal principal, int flags, char *name, size_t len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#gac881051ed59fe0dcd08cee62280b332">krb5_unparse_name</a> (krb5_context context, krb5_const_principal principal, char **name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#gd46122cd0e543b6c1219abb8730378e7">krb5_unparse_name_flags</a> (krb5_context context, krb5_const_principal principal, int flags, char **name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#g600247895edbde37e195c8b2089295a3">krb5_unparse_name_short</a> (krb5_context context, krb5_const_principal principal, char **name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#gaacf06babb00b391f35a8468a0ec96f9">krb5_principal_set_realm</a> (krb5_context context, krb5_principal principal, krb5_const_realm realm)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#gb22638ec4ccdb648366653426708c1c5">krb5_build_principal</a> (krb5_context context, krb5_principal *principal, int rlen, krb5_const_realm realm,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#ge744b61285c2ed08317e6c7cc433dd48">krb5_make_principal</a> (krb5_context context, krb5_principal *principal, krb5_const_realm realm,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#gf8405ffca469a2fd936eb109cb3d9b16">krb5_copy_principal</a> (krb5_context context, krb5_const_principal inprinc, krb5_principal *outprinc)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#g3c49cc0c1dac96d31a91aa263d8cdb4a">krb5_principal_compare_any_realm</a> (krb5_context context, krb5_const_principal princ1, krb5_const_principal princ2)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#g13c84ce37f704c99353888eb03a19ea6">krb5_principal_compare</a> (krb5_context context, krb5_const_principal princ1, krb5_const_principal princ2)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#g15abb49ce86457827a66f4ddfdd5b60c">krb5_realm_compare</a> (krb5_context context, krb5_const_principal princ1, krb5_const_principal princ2)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#g6cf45d0f9cb4b0bf3b6ef574d9e5cc6a">krb5_principal_match</a> (krb5_context context, krb5_const_principal princ, krb5_const_principal pattern)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#g8be0f5000da6ee0d4bd5dcaf3cb01d08">krb5_sname_to_principal</a> (krb5_context context, const char *hostname, const char *sname, int32_t type, krb5_principal *ret_princ)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#gb044a3dca038ef4c61779cf1d0dc1e87">krb5_parse_nametype</a> (krb5_context context, const char *str, int32_t *nametype)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__principal.html#g9b24f6db481f24b86a93702eaa2755fc">krb5_principal_is_krbtgt</a> (krb5_context context, krb5_const_principal p)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="gb22638ec4ccdb648366653426708c1c5"></a><!-- doxytag: member="principal.c::krb5_build_principal" ref="gb22638ec4ccdb648366653426708c1c5" args="(krb5_context context, krb5_principal *principal, int rlen, krb5_const_realm realm,...)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_build_principal </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal *&nbsp;</td>
+ <td class="paramname"> <em>principal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>rlen</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_realm&nbsp;</td>
+ <td class="paramname"> <em>realm</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&nbsp;</td>
+ <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Build a principal using vararg style building<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>returned principal </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>rlen</em>&nbsp;</td><td>length of realm </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>realm</em>&nbsp;</td><td>realm name </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>a list of components ended with NULL.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An krb5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf8405ffca469a2fd936eb109cb3d9b16"></a><!-- doxytag: member="principal.c::krb5_copy_principal" ref="gf8405ffca469a2fd936eb109cb3d9b16" args="(krb5_context context, krb5_const_principal inprinc, krb5_principal *outprinc)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_principal </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>inprinc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal *&nbsp;</td>
+ <td class="paramname"> <em>outprinc</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy a principal<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>inprinc</em>&nbsp;</td><td>principal to copy </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>outprinc</em>&nbsp;</td><td>copied principal, free with <a class="el" href="group__krb5__principal.html#g5bd3f620ebe8cd4fe44b5c858ba17d22">krb5_free_principal()</a></td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An krb5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5bd3f620ebe8cd4fe44b5c858ba17d22"></a><!-- doxytag: member="principal.c::krb5_free_principal" ref="g5bd3f620ebe8cd4fe44b5c858ba17d22" args="(krb5_context context, krb5_principal p)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_principal </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal&nbsp;</td>
+ <td class="paramname"> <em>p</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Frees a Kerberos principal allocated by the library with <a class="el" href="group__krb5__principal.html#gf0b0da913ab93d6e2577c0ccf4631f24">krb5_parse_name()</a>, <a class="el" href="group__krb5__principal.html#ge744b61285c2ed08317e6c7cc433dd48">krb5_make_principal()</a> or any other related principal functions.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>a principal to free.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An krb5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge744b61285c2ed08317e6c7cc433dd48"></a><!-- doxytag: member="principal.c::krb5_make_principal" ref="ge744b61285c2ed08317e6c7cc433dd48" args="(krb5_context context, krb5_principal *principal, krb5_const_realm realm,...)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_make_principal </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal *&nbsp;</td>
+ <td class="paramname"> <em>principal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_realm&nbsp;</td>
+ <td class="paramname"> <em>realm</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&nbsp;</td>
+ <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Build a principal using vararg style building<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>returned principal </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>realm</em>&nbsp;</td><td>realm name </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>a list of components ended with NULL.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An krb5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf0b0da913ab93d6e2577c0ccf4631f24"></a><!-- doxytag: member="principal.c::krb5_parse_name" ref="gf0b0da913ab93d6e2577c0ccf4631f24" args="(krb5_context context, const char *name, krb5_principal *principal)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_parse_name </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal *&nbsp;</td>
+ <td class="paramname"> <em>principal</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Parse a name into a krb5_principal structure<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>name to parse into a Kerberos principal </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>returned principal, free with <a class="el" href="group__krb5__principal.html#g5bd3f620ebe8cd4fe44b5c858ba17d22">krb5_free_principal()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An krb5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1f1c6a19e7ccffb3284545ed3c12b827"></a><!-- doxytag: member="principal.c::krb5_parse_name_flags" ref="g1f1c6a19e7ccffb3284545ed3c12b827" args="(krb5_context context, const char *name, int flags, krb5_principal *principal)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_parse_name_flags </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal *&nbsp;</td>
+ <td class="paramname"> <em>principal</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Parse a name into a krb5_principal structure, flags controls the behavior.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>name to parse into a Kerberos principal </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>flags to control the behavior </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>returned principal, free with <a class="el" href="group__krb5__principal.html#g5bd3f620ebe8cd4fe44b5c858ba17d22">krb5_free_principal()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An krb5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb044a3dca038ef4c61779cf1d0dc1e87"></a><!-- doxytag: member="principal.c::krb5_parse_nametype" ref="gb044a3dca038ef4c61779cf1d0dc1e87" args="(krb5_context context, const char *str, int32_t *nametype)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_parse_nametype </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>str</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int32_t *&nbsp;</td>
+ <td class="paramname"> <em>nametype</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Parse nametype string and return a nametype integer
+</div>
+</div><p>
+<a class="anchor" name="g13c84ce37f704c99353888eb03a19ea6"></a><!-- doxytag: member="principal.c::krb5_principal_compare" ref="g13c84ce37f704c99353888eb03a19ea6" args="(krb5_context context, krb5_const_principal princ1, krb5_const_principal princ2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_principal_compare </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>princ1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>princ2</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Compares the two principals, including realm of the principals and returns TRUE if they are the same and FALSE if not.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>princ1</em>&nbsp;</td><td>first principal to compare </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>princ2</em>&nbsp;</td><td>second principal to compare</td></tr>
+ </table>
+</dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__krb5__principal.html#g3c49cc0c1dac96d31a91aa263d8cdb4a">krb5_principal_compare_any_realm()</a> <p>
+<a class="el" href="group__krb5__principal.html#g15abb49ce86457827a66f4ddfdd5b60c">krb5_realm_compare()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3c49cc0c1dac96d31a91aa263d8cdb4a"></a><!-- doxytag: member="principal.c::krb5_principal_compare_any_realm" ref="g3c49cc0c1dac96d31a91aa263d8cdb4a" args="(krb5_context context, krb5_const_principal princ1, krb5_const_principal princ2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_principal_compare_any_realm </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>princ1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>princ2</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return TRUE iff princ1 == princ2 (without considering the realm)<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>princ1</em>&nbsp;</td><td>first principal to compare </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>princ2</em>&nbsp;</td><td>second principal to compare</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>non zero if equal, 0 if not</dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__krb5__principal.html#g13c84ce37f704c99353888eb03a19ea6">krb5_principal_compare()</a> <p>
+<a class="el" href="group__krb5__principal.html#g15abb49ce86457827a66f4ddfdd5b60c">krb5_realm_compare()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g0138febd5414ace4835d3af78694833c"></a><!-- doxytag: member="principal.c::krb5_principal_get_num_comp" ref="g0138febd5414ace4835d3af78694833c" args="(krb5_context context, krb5_const_principal principal)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION unsigned int KRB5_LIB_CALL krb5_principal_get_num_comp </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get number of component is principal.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>principal to query</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>number of components in string </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gccd23426798cf776a96c23a455576362"></a><!-- doxytag: member="principal.c::krb5_principal_get_realm" ref="gccd23426798cf776a96c23a455576362" args="(krb5_context context, krb5_const_principal principal)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL krb5_principal_get_realm </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the realm of the principal<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>principal to get the realm for</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>realm of the principal, don't free or use after krb5_principal is freed </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf4a599c42592ff7485753e80b8de67b7"></a><!-- doxytag: member="principal.c::krb5_principal_get_type" ref="gf4a599c42592ff7485753e80b8de67b7" args="(krb5_context context, krb5_const_principal principal)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_principal_get_type </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the type of the principal<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>principal to get the type for</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the type of principal </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9b24f6db481f24b86a93702eaa2755fc"></a><!-- doxytag: member="principal.c::krb5_principal_is_krbtgt" ref="g9b24f6db481f24b86a93702eaa2755fc" args="(krb5_context context, krb5_const_principal p)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_principal_is_krbtgt </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>p</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Check if the cname part of the principal is a krbtgt principal
+</div>
+</div><p>
+<a class="anchor" name="g6cf45d0f9cb4b0bf3b6ef574d9e5cc6a"></a><!-- doxytag: member="principal.c::krb5_principal_match" ref="g6cf45d0f9cb4b0bf3b6ef574d9e5cc6a" args="(krb5_context context, krb5_const_principal princ, krb5_const_principal pattern)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_principal_match </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>princ</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>pattern</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+return TRUE iff princ matches pattern
+</div>
+</div><p>
+<a class="anchor" name="gaacf06babb00b391f35a8468a0ec96f9"></a><!-- doxytag: member="principal.c::krb5_principal_set_realm" ref="gaacf06babb00b391f35a8468a0ec96f9" args="(krb5_context context, krb5_principal principal, krb5_const_realm realm)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_principal_set_realm </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_realm&nbsp;</td>
+ <td class="paramname"> <em>realm</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set a new realm for a principal, and as a side-effect free the previous realm.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>principal set the realm for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>realm</em>&nbsp;</td><td>the new realm to set</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An krb5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g28b750b990452f02922bc74a6cac0313"></a><!-- doxytag: member="principal.c::krb5_principal_set_type" ref="g28b750b990452f02922bc74a6cac0313" args="(krb5_context context, krb5_principal principal, int type)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_principal_set_type </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>type</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the type of the principal<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>principal to set the type for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>the new type</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An krb5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g15abb49ce86457827a66f4ddfdd5b60c"></a><!-- doxytag: member="principal.c::krb5_realm_compare" ref="g15abb49ce86457827a66f4ddfdd5b60c" args="(krb5_context context, krb5_const_principal princ1, krb5_const_principal princ2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_realm_compare </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>princ1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>princ2</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+return TRUE iff realm(princ1) == realm(princ2)<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>princ1</em>&nbsp;</td><td>first principal to compare </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>princ2</em>&nbsp;</td><td>second principal to compare</td></tr>
+ </table>
+</dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__krb5__principal.html#g3c49cc0c1dac96d31a91aa263d8cdb4a">krb5_principal_compare_any_realm()</a> <p>
+<a class="el" href="group__krb5__principal.html#g13c84ce37f704c99353888eb03a19ea6">krb5_principal_compare()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8be0f5000da6ee0d4bd5dcaf3cb01d08"></a><!-- doxytag: member="principal.c::krb5_sname_to_principal" ref="g8be0f5000da6ee0d4bd5dcaf3cb01d08" args="(krb5_context context, const char *hostname, const char *sname, int32_t type, krb5_principal *ret_princ)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_sname_to_principal </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>hostname</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>sname</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int32_t&nbsp;</td>
+ <td class="paramname"> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal *&nbsp;</td>
+ <td class="paramname"> <em>ret_princ</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a principal for the service running on hostname. If KRB5_NT_SRV_HST is used, the hostname is canonization using DNS (or some other service), this is potentially insecure.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>hostname</em>&nbsp;</td><td>hostname to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>sname</em>&nbsp;</td><td>Service name to use </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>name type of pricipal, use KRB5_NT_SRV_HST or KRB5_NT_UNKNOWN. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ret_princ</em>&nbsp;</td><td>return principal, free with <a class="el" href="group__krb5__principal.html#g5bd3f620ebe8cd4fe44b5c858ba17d22">krb5_free_principal()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An krb5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gac881051ed59fe0dcd08cee62280b332"></a><!-- doxytag: member="principal.c::krb5_unparse_name" ref="gac881051ed59fe0dcd08cee62280b332" args="(krb5_context context, krb5_const_principal principal, char **name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_unparse_name </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Unparse the Kerberos name into a string<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>principal to query </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>resulting string, free with krb5_xfree()</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An krb5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6f173badfb37ad41fdab6db77bde7689"></a><!-- doxytag: member="principal.c::krb5_unparse_name_fixed" ref="g6f173badfb37ad41fdab6db77bde7689" args="(krb5_context context, krb5_const_principal principal, char *name, size_t len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_unparse_name_fixed </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Unparse the principal name to a fixed buffer<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>principal to unparse </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>buffer to write name to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of buffer</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An krb5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd9ba42e18d79aa27458338967b66693f"></a><!-- doxytag: member="principal.c::krb5_unparse_name_fixed_flags" ref="gd9ba42e18d79aa27458338967b66693f" args="(krb5_context context, krb5_const_principal principal, int flags, char *name, size_t len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_unparse_name_fixed_flags </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Unparse the principal name with unparse flags to a fixed buffer.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>principal to unparse </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>unparse flags </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>buffer to write name to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of buffer</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An krb5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gcebe44e0685fc7b6c89a53eca71e7d24"></a><!-- doxytag: member="principal.c::krb5_unparse_name_fixed_short" ref="gcebe44e0685fc7b6c89a53eca71e7d24" args="(krb5_context context, krb5_const_principal principal, char *name, size_t len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_unparse_name_fixed_short </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Unparse the principal name to a fixed buffer. The realm is skipped if its a default realm.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>principal to unparse </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>buffer to write name to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of buffer</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An krb5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd46122cd0e543b6c1219abb8730378e7"></a><!-- doxytag: member="principal.c::krb5_unparse_name_flags" ref="gd46122cd0e543b6c1219abb8730378e7" args="(krb5_context context, krb5_const_principal principal, int flags, char **name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_unparse_name_flags </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Unparse the Kerberos name into a string<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>principal to query </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>flag to determine the behavior </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>resulting string, free with krb5_xfree()</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An krb5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g600247895edbde37e195c8b2089295a3"></a><!-- doxytag: member="principal.c::krb5_unparse_name_short" ref="g600247895edbde37e195c8b2089295a3" args="(krb5_context context, krb5_const_principal principal, char **name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_unparse_name_short </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Unparse the principal name to a allocated buffer. The realm is skipped if its a default realm.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>principal to unparse </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>returned buffer, free with krb5_xfree()</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An krb5 error code, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__storage.html b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__storage.html
new file mode 100644
index 000000000000..71c0e02aa5b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__storage.html
@@ -0,0 +1,2092 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Heimdal Kerberos 5 storage functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal Kerberos 5 storage functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g99af12d663a652732293b99ecff81989">krb5_storage_set_flags</a> (krb5_storage *sp, krb5_flags flags)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g314501a5959ccde26989429691fded9d">krb5_storage_clear_flags</a> (krb5_storage *sp, krb5_flags flags)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g430a3498c04aff00534c6e08330b312c">krb5_storage_is_flags</a> (krb5_storage *sp, krb5_flags flags)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g8f3e170aeb4a9108b3bfeb550184022c">krb5_storage_set_byteorder</a> (krb5_storage *sp, krb5_flags byteorder)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_flags <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g9f521cbe41ed5ba522d3a2006c61201a">krb5_storage_get_byteorder</a> (krb5_storage *sp)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#gdaf85983fe8563a63623cd472ff6e2b0">krb5_storage_set_max_alloc</a> (krb5_storage *sp, size_t size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION off_t <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g4ecf2806cc57252af155a66fbb705773">krb5_storage_seek</a> (krb5_storage *sp, off_t offset, int whence)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION int KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#gac8da1cf94bd8f60c32ae41bd30abae6">krb5_storage_truncate</a> (krb5_storage *sp, off_t offset)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_ssize_t <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g4b916691b096448f5b492fcd67148106">krb5_storage_read</a> (krb5_storage *sp, void *buf, size_t len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_ssize_t <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#gbcc9e0d450d9a02773f4a53bf14fefac">krb5_storage_write</a> (krb5_storage *sp, const void *buf, size_t len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#gbc10ced03dcf096b2f09b08568087900">krb5_storage_set_eof_code</a> (krb5_storage *sp, int code)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION int KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g8f9e3f1442a4f14ac802bdb9db5f4890">krb5_storage_get_eof_code</a> (krb5_storage *sp)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g110924b1d3a19859eafcfb58127adbb9">krb5_storage_free</a> (krb5_storage *sp)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g7722a5408e5be17d0c258cc2e57e4f41">krb5_storage_to_data</a> (krb5_storage *sp, krb5_data *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#gf20f743f1d41879479c4a9d7c0f05339">krb5_store_int32</a> (krb5_storage *sp, int32_t value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#gc844df1aadfa6d0b38ffd93413aa1fd8">krb5_store_uint32</a> (krb5_storage *sp, uint32_t value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g34771e1bed3a205479b62058b46bf118">krb5_ret_int32</a> (krb5_storage *sp, int32_t *value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#gbfdfdb6469374de5537cb484f84b11cc">krb5_ret_uint32</a> (krb5_storage *sp, uint32_t *value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g41fd71dc201db2872e59016a1652bf6c">krb5_store_int16</a> (krb5_storage *sp, int16_t value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g80accfb51fadeb1b19584634701a81f7">krb5_store_uint16</a> (krb5_storage *sp, uint16_t value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g22a752d61f15a4dfe2f6250b6318e9ad">krb5_ret_int16</a> (krb5_storage *sp, int16_t *value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g70b3c617f00a9705bc2c5ab841a28aab">krb5_ret_uint16</a> (krb5_storage *sp, uint16_t *value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g39925711ba540216111a8b84f4a1650a">krb5_store_int8</a> (krb5_storage *sp, int8_t value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#gb9856e6211e292b4c9d4c96941c6948e">krb5_store_uint8</a> (krb5_storage *sp, uint8_t value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#gbb124c12e5cee024f44cc2b7c14d39c2">krb5_ret_int8</a> (krb5_storage *sp, int8_t *value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g9a90ecc945cf95ea0cda1c6199a735b5">krb5_ret_uint8</a> (krb5_storage *sp, uint8_t *value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g49be426cc2c3e5b10d87cb7643069f04">krb5_store_data</a> (krb5_storage *sp, krb5_data data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g8c7a2d85381d67f05b5ac7f11f07317c">krb5_ret_data</a> (krb5_storage *sp, krb5_data *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g7d0904deeaf23dd845966b954e4b5355">krb5_store_string</a> (krb5_storage *sp, const char *s)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g832d820ec4510a06ee600d5658f7bb44">krb5_ret_string</a> (krb5_storage *sp, char **string)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g60c3e526288efc7b8a751f43ac254aad">krb5_store_stringz</a> (krb5_storage *sp, const char *s)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g49d6e513666d88682d83fe8a68cdff65">krb5_ret_stringz</a> (krb5_storage *sp, char **string)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g54ca232c7ccaf71e2a26e42196dd9780">krb5_store_principal</a> (krb5_storage *sp, krb5_const_principal p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g7dc492d545194b464fd91c03f9685127">krb5_ret_principal</a> (krb5_storage *sp, krb5_principal *princ)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g54b3e661a9b7b267ba5df17b2e9a59f9">krb5_store_keyblock</a> (krb5_storage *sp, krb5_keyblock p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#ga187d43f213353f98b8bf7dc3ced58d5">krb5_ret_keyblock</a> (krb5_storage *sp, krb5_keyblock *p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g3a0bdbf713eea83651b6f9845ea24900">krb5_store_times</a> (krb5_storage *sp, krb5_times times)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#gc2821394420e954939f9eab8cb6492f5">krb5_ret_times</a> (krb5_storage *sp, krb5_times *times)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g36c55f5c0c7b555a189623a49bc478cf">krb5_store_address</a> (krb5_storage *sp, krb5_address p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g6e0be2257ada5b7a37601bde612c3d0c">krb5_ret_address</a> (krb5_storage *sp, krb5_address *adr)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#gd3a1994e44a47e8106334820db9e4946">krb5_store_addrs</a> (krb5_storage *sp, krb5_addresses p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g4aeeeaba2f5f67031e29704132ecd9ff">krb5_ret_addrs</a> (krb5_storage *sp, krb5_addresses *adr)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g51b5290d8fd6a75c0142815899e209b2">krb5_store_authdata</a> (krb5_storage *sp, krb5_authdata auth)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g49b219ccbc36aed9f3979b4f5374879f">krb5_ret_authdata</a> (krb5_storage *sp, krb5_authdata *auth)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g78a861ff5fb0090d6c05046ef2cff117">krb5_store_creds</a> (krb5_storage *sp, krb5_creds *creds)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g2dc654b283ff77bc4f9071f4a230948b">krb5_ret_creds</a> (krb5_storage *sp, krb5_creds *creds)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g4a3550d1bb7b7641a8c5904e2dcf1a16">krb5_store_creds_tag</a> (krb5_storage *sp, krb5_creds *creds)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#ge7b1a317660a64e555622499bb7624c6">krb5_ret_creds_tag</a> (krb5_storage *sp, krb5_creds *creds)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_storage <br>
+*KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g6ba3655c175405064c1ec80e044667cb">krb5_storage_emem</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_storage <br>
+*KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g60c7ea40fa36375dfd6b4c1213834668">krb5_storage_from_fd</a> (krb5_socket_t fd_in)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_storage <br>
+*KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g481850b82dfa486ffaf15be7109f9d07">krb5_storage_from_mem</a> (void *buf, size_t len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_storage <br>
+*KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g022a581989d5cffca3ac53dd79d865af">krb5_storage_from_data</a> (krb5_data *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_storage <br>
+*KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__storage.html#g53fa57f40353b6dc6a322f597ddbe628">krb5_storage_from_readonly_mem</a> (const void *buf, size_t len)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g6e0be2257ada5b7a37601bde612c3d0c"></a><!-- doxytag: member="store.c::krb5_ret_address" ref="g6e0be2257ada5b7a37601bde612c3d0c" args="(krb5_storage *sp, krb5_address *adr)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_address </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_address *&nbsp;</td>
+ <td class="paramname"> <em>adr</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Read a address block from the storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>adr</em>&nbsp;</td><td>the address block read from storage</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4aeeeaba2f5f67031e29704132ecd9ff"></a><!-- doxytag: member="store.c::krb5_ret_addrs" ref="g4aeeeaba2f5f67031e29704132ecd9ff" args="(krb5_storage *sp, krb5_addresses *adr)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_addrs </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_addresses *&nbsp;</td>
+ <td class="paramname"> <em>adr</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Read a addresses block from the storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>adr</em>&nbsp;</td><td>the addresses block read from storage</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g49b219ccbc36aed9f3979b4f5374879f"></a><!-- doxytag: member="store.c::krb5_ret_authdata" ref="g49b219ccbc36aed9f3979b4f5374879f" args="(krb5_storage *sp, krb5_authdata *auth)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_authdata </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_authdata *&nbsp;</td>
+ <td class="paramname"> <em>auth</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Read a auth data from the storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>auth</em>&nbsp;</td><td>the auth data block read from storage</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2dc654b283ff77bc4f9071f4a230948b"></a><!-- doxytag: member="store.c::krb5_ret_creds" ref="g2dc654b283ff77bc4f9071f4a230948b" args="(krb5_storage *sp, krb5_creds *creds)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_creds </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>creds</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Read a credentials block from the storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>creds</em>&nbsp;</td><td>the credentials block read from storage</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge7b1a317660a64e555622499bb7624c6"></a><!-- doxytag: member="store.c::krb5_ret_creds_tag" ref="ge7b1a317660a64e555622499bb7624c6" args="(krb5_storage *sp, krb5_creds *creds)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_creds_tag </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>creds</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Read a tagged credentials block from the storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>creds</em>&nbsp;</td><td>the credentials block read from storage</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8c7a2d85381d67f05b5ac7f11f07317c"></a><!-- doxytag: member="store.c::krb5_ret_data" ref="g8c7a2d85381d67f05b5ac7f11f07317c" args="(krb5_storage *sp, krb5_data *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_data </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Parse a data from the storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to read from </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the parsed data</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g22a752d61f15a4dfe2f6250b6318e9ad"></a><!-- doxytag: member="store.c::krb5_ret_int16" ref="g22a752d61f15a4dfe2f6250b6318e9ad" args="(krb5_storage *sp, int16_t *value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_int16 </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int16_t *&nbsp;</td>
+ <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Read a int16 from storage, byte order is controlled by the settings on the storage, see <a class="el" href="group__krb5__storage.html#g8f3e170aeb4a9108b3bfeb550184022c">krb5_storage_set_byteorder()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage to write too </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value read from the buffer</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, or a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g34771e1bed3a205479b62058b46bf118"></a><!-- doxytag: member="store.c::krb5_ret_int32" ref="g34771e1bed3a205479b62058b46bf118" args="(krb5_storage *sp, int32_t *value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_int32 </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int32_t *&nbsp;</td>
+ <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Read a int32 from storage, byte order is controlled by the settings on the storage, see <a class="el" href="group__krb5__storage.html#g8f3e170aeb4a9108b3bfeb550184022c">krb5_storage_set_byteorder()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage to write too </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value read from the buffer</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, or a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gbb124c12e5cee024f44cc2b7c14d39c2"></a><!-- doxytag: member="store.c::krb5_ret_int8" ref="gbb124c12e5cee024f44cc2b7c14d39c2" args="(krb5_storage *sp, int8_t *value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_int8 </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int8_t *&nbsp;</td>
+ <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Read a int8 from storage<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage to write too </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value read from the buffer</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, or a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga187d43f213353f98b8bf7dc3ced58d5"></a><!-- doxytag: member="store.c::krb5_ret_keyblock" ref="ga187d43f213353f98b8bf7dc3ced58d5" args="(krb5_storage *sp, krb5_keyblock *p)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_keyblock </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keyblock *&nbsp;</td>
+ <td class="paramname"> <em>p</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Read a keyblock from the storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>the keyblock read from storage, free using <a class="el" href="group__krb5__crypto.html#g2e434abf56e7d7852358e11cdab0bb33">krb5_free_keyblock()</a></td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7dc492d545194b464fd91c03f9685127"></a><!-- doxytag: member="store.c::krb5_ret_principal" ref="g7dc492d545194b464fd91c03f9685127" args="(krb5_storage *sp, krb5_principal *princ)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_principal </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal *&nbsp;</td>
+ <td class="paramname"> <em>princ</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Parse principal from the storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to read from </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>princ</em>&nbsp;</td><td>the parsed principal</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g832d820ec4510a06ee600d5658f7bb44"></a><!-- doxytag: member="store.c::krb5_ret_string" ref="g832d820ec4510a06ee600d5658f7bb44" args="(krb5_storage *sp, char **string)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_string </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>string</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Parse a string from the storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to read from </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>string</em>&nbsp;</td><td>the parsed string</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g49d6e513666d88682d83fe8a68cdff65"></a><!-- doxytag: member="store.c::krb5_ret_stringz" ref="g49d6e513666d88682d83fe8a68cdff65" args="(krb5_storage *sp, char **string)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_stringz </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>string</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Parse zero terminated string from the storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to read from </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>string</em>&nbsp;</td><td>the parsed string</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc2821394420e954939f9eab8cb6492f5"></a><!-- doxytag: member="store.c::krb5_ret_times" ref="gc2821394420e954939f9eab8cb6492f5" args="(krb5_storage *sp, krb5_times *times)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_times </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_times *&nbsp;</td>
+ <td class="paramname"> <em>times</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Read a times block from the storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>times</em>&nbsp;</td><td>the times block read from storage</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g70b3c617f00a9705bc2c5ab841a28aab"></a><!-- doxytag: member="store.c::krb5_ret_uint16" ref="g70b3c617f00a9705bc2c5ab841a28aab" args="(krb5_storage *sp, uint16_t *value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_uint16 </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint16_t *&nbsp;</td>
+ <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Read a int16 from storage, byte order is controlled by the settings on the storage, see <a class="el" href="group__krb5__storage.html#g8f3e170aeb4a9108b3bfeb550184022c">krb5_storage_set_byteorder()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage to write too </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value read from the buffer</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, or a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gbfdfdb6469374de5537cb484f84b11cc"></a><!-- doxytag: member="store.c::krb5_ret_uint32" ref="gbfdfdb6469374de5537cb484f84b11cc" args="(krb5_storage *sp, uint32_t *value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_uint32 </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint32_t *&nbsp;</td>
+ <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Read a uint32 from storage, byte order is controlled by the settings on the storage, see <a class="el" href="group__krb5__storage.html#g8f3e170aeb4a9108b3bfeb550184022c">krb5_storage_set_byteorder()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage to write too </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value read from the buffer</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, or a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9a90ecc945cf95ea0cda1c6199a735b5"></a><!-- doxytag: member="store.c::krb5_ret_uint8" ref="g9a90ecc945cf95ea0cda1c6199a735b5" args="(krb5_storage *sp, uint8_t *value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_uint8 </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t *&nbsp;</td>
+ <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Read a uint8 from storage<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage to write too </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value read from the buffer</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, or a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g314501a5959ccde26989429691fded9d"></a><!-- doxytag: member="store.c::krb5_storage_clear_flags" ref="g314501a5959ccde26989429691fded9d" args="(krb5_storage *sp, krb5_flags flags)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_storage_clear_flags </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_flags&nbsp;</td>
+ <td class="paramname"> <em>flags</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Clear the flags on a storage buffer<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to clear the flags on </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>the flags to clear </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6ba3655c175405064c1ec80e044667cb"></a><!-- doxytag: member="store_emem.c::krb5_storage_emem" ref="g6ba3655c175405064c1ec80e044667cb" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_storage* KRB5_LIB_CALL krb5_storage_emem </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a elastic (allocating) memory storage backend. Memory is allocated on demand. Free returned krb5_storage with <a class="el" href="group__krb5__storage.html#g110924b1d3a19859eafcfb58127adbb9">krb5_storage_free()</a>.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>A krb5_storage on success, or NULL on out of memory error.</dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__krb5__storage.html#g481850b82dfa486ffaf15be7109f9d07">krb5_storage_from_mem()</a> <p>
+<a class="el" href="group__krb5__storage.html#g53fa57f40353b6dc6a322f597ddbe628">krb5_storage_from_readonly_mem()</a> <p>
+<a class="el" href="group__krb5__storage.html#g60c7ea40fa36375dfd6b4c1213834668">krb5_storage_from_fd()</a> <p>
+<a class="el" href="group__krb5__storage.html#g022a581989d5cffca3ac53dd79d865af">krb5_storage_from_data()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g110924b1d3a19859eafcfb58127adbb9"></a><!-- doxytag: member="store.c::krb5_storage_free" ref="g110924b1d3a19859eafcfb58127adbb9" args="(krb5_storage *sp)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_storage_free </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free a krb5 storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage to free.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An Kerberos 5 error code. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g022a581989d5cffca3ac53dd79d865af"></a><!-- doxytag: member="store_mem.c::krb5_storage_from_data" ref="g022a581989d5cffca3ac53dd79d865af" args="(krb5_data *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_storage* KRB5_LIB_CALL krb5_storage_from_data </td>
+ <td>(</td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>data</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a fixed size memory storage block<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>A krb5_storage on success, or NULL on out of memory error.</dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd>krb5_storage_mem() <p>
+<a class="el" href="group__krb5__storage.html#g481850b82dfa486ffaf15be7109f9d07">krb5_storage_from_mem()</a> <p>
+<a class="el" href="group__krb5__storage.html#g53fa57f40353b6dc6a322f597ddbe628">krb5_storage_from_readonly_mem()</a> <p>
+<a class="el" href="group__krb5__storage.html#g60c7ea40fa36375dfd6b4c1213834668">krb5_storage_from_fd()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g60c7ea40fa36375dfd6b4c1213834668"></a><!-- doxytag: member="store_fd.c::krb5_storage_from_fd" ref="g60c7ea40fa36375dfd6b4c1213834668" args="(krb5_socket_t fd_in)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_storage* KRB5_LIB_CALL krb5_storage_from_fd </td>
+ <td>(</td>
+ <td class="paramtype">krb5_socket_t&nbsp;</td>
+ <td class="paramname"> <em>fd_in</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>A krb5_storage on success, or NULL on out of memory error.</dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__krb5__storage.html#g6ba3655c175405064c1ec80e044667cb">krb5_storage_emem()</a> <p>
+<a class="el" href="group__krb5__storage.html#g481850b82dfa486ffaf15be7109f9d07">krb5_storage_from_mem()</a> <p>
+<a class="el" href="group__krb5__storage.html#g53fa57f40353b6dc6a322f597ddbe628">krb5_storage_from_readonly_mem()</a> <p>
+<a class="el" href="group__krb5__storage.html#g022a581989d5cffca3ac53dd79d865af">krb5_storage_from_data()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g481850b82dfa486ffaf15be7109f9d07"></a><!-- doxytag: member="store_mem.c::krb5_storage_from_mem" ref="g481850b82dfa486ffaf15be7109f9d07" args="(void *buf, size_t len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_storage* KRB5_LIB_CALL krb5_storage_from_mem </td>
+ <td>(</td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a fixed size memory storage block<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>A krb5_storage on success, or NULL on out of memory error.</dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd>krb5_storage_mem() <p>
+<a class="el" href="group__krb5__storage.html#g53fa57f40353b6dc6a322f597ddbe628">krb5_storage_from_readonly_mem()</a> <p>
+<a class="el" href="group__krb5__storage.html#g022a581989d5cffca3ac53dd79d865af">krb5_storage_from_data()</a> <p>
+<a class="el" href="group__krb5__storage.html#g60c7ea40fa36375dfd6b4c1213834668">krb5_storage_from_fd()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g53fa57f40353b6dc6a322f597ddbe628"></a><!-- doxytag: member="store_mem.c::krb5_storage_from_readonly_mem" ref="g53fa57f40353b6dc6a322f597ddbe628" args="(const void *buf, size_t len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_storage* KRB5_LIB_CALL krb5_storage_from_readonly_mem </td>
+ <td>(</td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a fixed size memory storage block that is read only<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>A krb5_storage on success, or NULL on out of memory error.</dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd>krb5_storage_mem() <p>
+<a class="el" href="group__krb5__storage.html#g481850b82dfa486ffaf15be7109f9d07">krb5_storage_from_mem()</a> <p>
+<a class="el" href="group__krb5__storage.html#g022a581989d5cffca3ac53dd79d865af">krb5_storage_from_data()</a> <p>
+<a class="el" href="group__krb5__storage.html#g60c7ea40fa36375dfd6b4c1213834668">krb5_storage_from_fd()</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9f521cbe41ed5ba522d3a2006c61201a"></a><!-- doxytag: member="store.c::krb5_storage_get_byteorder" ref="g9f521cbe41ed5ba522d3a2006c61201a" args="(krb5_storage *sp)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_flags KRB5_LIB_CALL krb5_storage_get_byteorder </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return the current byteorder for the buffer. See <a class="el" href="group__krb5__storage.html#g8f3e170aeb4a9108b3bfeb550184022c">krb5_storage_set_byteorder()</a> for the list or byte order contants.
+</div>
+</div><p>
+<a class="anchor" name="g8f9e3f1442a4f14ac802bdb9db5f4890"></a><!-- doxytag: member="store.c::krb5_storage_get_eof_code" ref="g8f9e3f1442a4f14ac802bdb9db5f4890" args="(krb5_storage *sp)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_storage_get_eof_code </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the return code that will be used when end of storage is reached.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>storage error code </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g430a3498c04aff00534c6e08330b312c"></a><!-- doxytag: member="store.c::krb5_storage_is_flags" ref="g430a3498c04aff00534c6e08330b312c" args="(krb5_storage *sp, krb5_flags flags)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_storage_is_flags </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_flags&nbsp;</td>
+ <td class="paramname"> <em>flags</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Return true or false depending on if the storage flags is set or not. NB testing for the flag 0 always return true.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to check flags on </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>The flags to test for</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>true if all the flags are set, false if not. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4b916691b096448f5b492fcd67148106"></a><!-- doxytag: member="store.c::krb5_storage_read" ref="g4b916691b096448f5b492fcd67148106" args="(krb5_storage *sp, void *buf, size_t len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_ssize_t KRB5_LIB_CALL krb5_storage_read </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Read to the storage buffer.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to read from </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>the buffer to store the data in </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>the length to read</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>The length of data read (can be shorter then len), or negative on error. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4ecf2806cc57252af155a66fbb705773"></a><!-- doxytag: member="store.c::krb5_storage_seek" ref="g4ecf2806cc57252af155a66fbb705773" args="(krb5_storage *sp, off_t offset, int whence)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION off_t KRB5_LIB_CALL krb5_storage_seek </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">off_t&nbsp;</td>
+ <td class="paramname"> <em>offset</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>whence</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Seek to a new offset.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to seek in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>the offset to seek </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>whence</em>&nbsp;</td><td>relateive searching, SEEK_CUR from the current position, SEEK_END from the end, SEEK_SET absolute from the start.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>The new current offset </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8f3e170aeb4a9108b3bfeb550184022c"></a><!-- doxytag: member="store.c::krb5_storage_set_byteorder" ref="g8f3e170aeb4a9108b3bfeb550184022c" args="(krb5_storage *sp, krb5_flags byteorder)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_storage_set_byteorder </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_flags&nbsp;</td>
+ <td class="paramname"> <em>byteorder</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the new byte order of the storage buffer.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to set the byte order for. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>byteorder</em>&nbsp;</td><td>the new byte order.</td></tr>
+ </table>
+</dl>
+The byte order are: KRB5_STORAGE_BYTEORDER_BE, KRB5_STORAGE_BYTEORDER_LE and KRB5_STORAGE_BYTEORDER_HOST.
+</div>
+</div><p>
+<a class="anchor" name="gbc10ced03dcf096b2f09b08568087900"></a><!-- doxytag: member="store.c::krb5_storage_set_eof_code" ref="gbc10ced03dcf096b2f09b08568087900" args="(krb5_storage *sp, int code)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_storage_set_eof_code </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>code</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the return code that will be used when end of storage is reached.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>code</em>&nbsp;</td><td>the error code to return on end of storage </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g99af12d663a652732293b99ecff81989"></a><!-- doxytag: member="store.c::krb5_storage_set_flags" ref="g99af12d663a652732293b99ecff81989" args="(krb5_storage *sp, krb5_flags flags)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_storage_set_flags </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_flags&nbsp;</td>
+ <td class="paramname"> <em>flags</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add the flags on a storage buffer by or-ing in the flags to the buffer.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to set the flags on </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>the flags to set </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gdaf85983fe8563a63623cd472ff6e2b0"></a><!-- doxytag: member="store.c::krb5_storage_set_max_alloc" ref="gdaf85983fe8563a63623cd472ff6e2b0" args="(krb5_storage *sp, size_t size)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_storage_set_max_alloc </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the max alloc value<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer set the max allow for </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>maximum size to allocate, use 0 to remove limit </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7722a5408e5be17d0c258cc2e57e4f41"></a><!-- doxytag: member="store.c::krb5_storage_to_data" ref="g7722a5408e5be17d0c258cc2e57e4f41" args="(krb5_storage *sp, krb5_data *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_storage_to_data </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data *&nbsp;</td>
+ <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy the contnent of storage<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage to copy to a data </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the copied data, free with <a class="el" href="group__krb5.html#gb4b80ac7a8bbab89fe947ae1c7828ea8">krb5_data_free()</a></td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, or a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gac8da1cf94bd8f60c32ae41bd30abae6"></a><!-- doxytag: member="store.c::krb5_storage_truncate" ref="gac8da1cf94bd8f60c32ae41bd30abae6" args="(krb5_storage *sp, off_t offset)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_storage_truncate </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">off_t&nbsp;</td>
+ <td class="paramname"> <em>offset</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Truncate the storage buffer in sp to offset.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to truncate. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>the offset to truncate too.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An Kerberos 5 error code. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gbcc9e0d450d9a02773f4a53bf14fefac"></a><!-- doxytag: member="store.c::krb5_storage_write" ref="gbcc9e0d450d9a02773f4a53bf14fefac" args="(krb5_storage *sp, const void *buf, size_t len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_ssize_t KRB5_LIB_CALL krb5_storage_write </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Write to the storage buffer.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>the buffer to write to the storage buffer </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>the length to write</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>The length of data written (can be shorter then len), or negative on error. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g36c55f5c0c7b555a189623a49bc478cf"></a><!-- doxytag: member="store.c::krb5_store_address" ref="g36c55f5c0c7b555a189623a49bc478cf" args="(krb5_storage *sp, krb5_address p)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_address </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_address&nbsp;</td>
+ <td class="paramname"> <em>p</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Write a address block to storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>the address block to write.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd3a1994e44a47e8106334820db9e4946"></a><!-- doxytag: member="store.c::krb5_store_addrs" ref="gd3a1994e44a47e8106334820db9e4946" args="(krb5_storage *sp, krb5_addresses p)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_addrs </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_addresses&nbsp;</td>
+ <td class="paramname"> <em>p</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Write a addresses block to storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>the addresses block to write.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g51b5290d8fd6a75c0142815899e209b2"></a><!-- doxytag: member="store.c::krb5_store_authdata" ref="g51b5290d8fd6a75c0142815899e209b2" args="(krb5_storage *sp, krb5_authdata auth)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_authdata </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_authdata&nbsp;</td>
+ <td class="paramname"> <em>auth</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Write a auth data block to storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>auth</em>&nbsp;</td><td>the auth data block to write.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g78a861ff5fb0090d6c05046ef2cff117"></a><!-- doxytag: member="store.c::krb5_store_creds" ref="g78a861ff5fb0090d6c05046ef2cff117" args="(krb5_storage *sp, krb5_creds *creds)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_creds </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>creds</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Write a credentials block to storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>creds</em>&nbsp;</td><td>the creds block to write.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4a3550d1bb7b7641a8c5904e2dcf1a16"></a><!-- doxytag: member="store.c::krb5_store_creds_tag" ref="g4a3550d1bb7b7641a8c5904e2dcf1a16" args="(krb5_storage *sp, krb5_creds *creds)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_creds_tag </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>creds</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Write a tagged credentials block to storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>creds</em>&nbsp;</td><td>the creds block to write.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g49be426cc2c3e5b10d87cb7643069f04"></a><!-- doxytag: member="store.c::krb5_store_data" ref="g49be426cc2c3e5b10d87cb7643069f04" args="(krb5_storage *sp, krb5_data data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_data </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_data&nbsp;</td>
+ <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store a data to the storage. The data is stored with an int32 as lenght plus the data (not padded).<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the buffer to store.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g41fd71dc201db2872e59016a1652bf6c"></a><!-- doxytag: member="store.c::krb5_store_int16" ref="g41fd71dc201db2872e59016a1652bf6c" args="(krb5_storage *sp, int16_t value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_int16 </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int16_t&nbsp;</td>
+ <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store a int16 to storage, byte order is controlled by the settings on the storage, see <a class="el" href="group__krb5__storage.html#g8f3e170aeb4a9108b3bfeb550184022c">krb5_storage_set_byteorder()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage to write too </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to store</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, or a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf20f743f1d41879479c4a9d7c0f05339"></a><!-- doxytag: member="store.c::krb5_store_int32" ref="gf20f743f1d41879479c4a9d7c0f05339" args="(krb5_storage *sp, int32_t value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_int32 </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int32_t&nbsp;</td>
+ <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store a int32 to storage, byte order is controlled by the settings on the storage, see <a class="el" href="group__krb5__storage.html#g8f3e170aeb4a9108b3bfeb550184022c">krb5_storage_set_byteorder()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage to write too </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to store</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, or a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g39925711ba540216111a8b84f4a1650a"></a><!-- doxytag: member="store.c::krb5_store_int8" ref="g39925711ba540216111a8b84f4a1650a" args="(krb5_storage *sp, int8_t value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_int8 </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int8_t&nbsp;</td>
+ <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store a int8 to storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage to write too </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to store</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, or a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g54b3e661a9b7b267ba5df17b2e9a59f9"></a><!-- doxytag: member="store.c::krb5_store_keyblock" ref="g54b3e661a9b7b267ba5df17b2e9a59f9" args="(krb5_storage *sp, krb5_keyblock p)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_keyblock </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_keyblock&nbsp;</td>
+ <td class="paramname"> <em>p</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store a keyblock to the storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>the keyblock to write</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g54ca232c7ccaf71e2a26e42196dd9780"></a><!-- doxytag: member="store.c::krb5_store_principal" ref="g54ca232c7ccaf71e2a26e42196dd9780" args="(krb5_storage *sp, krb5_const_principal p)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_principal </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_const_principal&nbsp;</td>
+ <td class="paramname"> <em>p</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Write a principal block to storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>the principal block to write.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7d0904deeaf23dd845966b954e4b5355"></a><!-- doxytag: member="store.c::krb5_store_string" ref="g7d0904deeaf23dd845966b954e4b5355" args="(krb5_storage *sp, const char *s)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_string </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>s</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store a string to the buffer. The data is formated as an len:uint32 plus the string itself (not padded).<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>the string to store.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g60c3e526288efc7b8a751f43ac254aad"></a><!-- doxytag: member="store.c::krb5_store_stringz" ref="g60c3e526288efc7b8a751f43ac254aad" args="(krb5_storage *sp, const char *s)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_stringz </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>s</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store a zero terminated string to the buffer. The data is stored one character at a time until a NUL is stored.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>the string to store.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3a0bdbf713eea83651b6f9845ea24900"></a><!-- doxytag: member="store.c::krb5_store_times" ref="g3a0bdbf713eea83651b6f9845ea24900" args="(krb5_storage *sp, krb5_times times)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_times </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_times&nbsp;</td>
+ <td class="paramname"> <em>times</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Write a times block to storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage buffer to write to </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>times</em>&nbsp;</td><td>the times block to write.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g80accfb51fadeb1b19584634701a81f7"></a><!-- doxytag: member="store.c::krb5_store_uint16" ref="g80accfb51fadeb1b19584634701a81f7" args="(krb5_storage *sp, uint16_t value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_uint16 </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint16_t&nbsp;</td>
+ <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store a uint16 to storage, byte order is controlled by the settings on the storage, see <a class="el" href="group__krb5__storage.html#g8f3e170aeb4a9108b3bfeb550184022c">krb5_storage_set_byteorder()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage to write too </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to store</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, or a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc844df1aadfa6d0b38ffd93413aa1fd8"></a><!-- doxytag: member="store.c::krb5_store_uint32" ref="gc844df1aadfa6d0b38ffd93413aa1fd8" args="(krb5_storage *sp, uint32_t value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_uint32 </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint32_t&nbsp;</td>
+ <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store a uint32 to storage, byte order is controlled by the settings on the storage, see <a class="el" href="group__krb5__storage.html#g8f3e170aeb4a9108b3bfeb550184022c">krb5_storage_set_byteorder()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage to write too </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to store</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, or a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb9856e6211e292b4c9d4c96941c6948e"></a><!-- doxytag: member="store.c::krb5_store_uint8" ref="gb9856e6211e292b4c9d4c96941c6948e" args="(krb5_storage *sp, uint8_t value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_uint8 </td>
+ <td>(</td>
+ <td class="paramtype">krb5_storage *&nbsp;</td>
+ <td class="paramname"> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t&nbsp;</td>
+ <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Store a uint8 to storage.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>sp</em>&nbsp;</td><td>the storage to write too </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to store</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, or a Kerberos 5 error code on failure. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__support.html b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__support.html
new file mode 100644
index 000000000000..8c6545fc39b3
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__support.html
@@ -0,0 +1,1320 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Heimdal Kerberos 5 support functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal Kerberos 5 support functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#g245208f2d59a8fd7187089ad445e51d0">krb5_acl_match_string</a> (krb5_context context, const char *string, const char *format,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#g7c5dbc1743dc0bc63765edf82d10eb9e">krb5_acl_match_file</a> (krb5_context context, const char *file, const char *format,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#g59892cdf61d0a6a59b3dd2e9998b541a">krb5_config_parse_file_multi</a> (krb5_context context, const char *fname, krb5_config_section **res)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#g84277205c4b221cc28f1fd36be19dba8">krb5_config_file_free</a> (krb5_context context, krb5_config_section *s)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION const <br>
+krb5_config_binding <br>
+*KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#gee87399e25e34ac1e0e4a1841951e2fa">krb5_config_get_list</a> (krb5_context context, const krb5_config_section *c,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION const <br>
+krb5_config_binding <br>
+*KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#gfbc6548d480aaf5118025b742f4f468d">krb5_config_vget_list</a> (krb5_context context, const krb5_config_section *c, va_list args)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION const char <br>
+*KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#gc0845cba8c8f7fd2e447de60d81556ac">krb5_config_get_string</a> (krb5_context context, const krb5_config_section *c,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION const char <br>
+*KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#gec7eaee2b6f04f1ed4a64b37efa767e4">krb5_config_vget_string</a> (krb5_context context, const krb5_config_section *c, va_list args)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION const char <br>
+*KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#g124f18195eb05c3662ce2bcf06c7451b">krb5_config_vget_string_default</a> (krb5_context context, const krb5_config_section *c, const char *def_value, va_list args)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION const char <br>
+*KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#gaef298c290e0c315d7f4bf07ba272b60">krb5_config_get_string_default</a> (krb5_context context, const krb5_config_section *c, const char *def_value,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION char <br>
+**KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#g614850564b4d21b92e113fde9420bf3c">krb5_config_vget_strings</a> (krb5_context context, const krb5_config_section *c, va_list args)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION char <br>
+**KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#g8f43dbe4a34a820a70d081e5d3190e01">krb5_config_get_strings</a> (krb5_context context, const krb5_config_section *c,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION void <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#g3440f86b07fa86aae0f0889445a0def2">krb5_config_free_strings</a> (char **strings)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#g8a29a130369232a638629cb37bfbeb66">krb5_config_vget_bool_default</a> (krb5_context context, const krb5_config_section *c, krb5_boolean def_value, va_list args)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#g16e5b2da5e3751d7b3d4fe8d43f0a677">krb5_config_vget_bool</a> (krb5_context context, const krb5_config_section *c, va_list args)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#gca6abdb90a74af3747f87bfb5e9c85ab">krb5_config_get_bool_default</a> (krb5_context context, const krb5_config_section *c, krb5_boolean def_value,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#g39402ca8c1b1eb2af4b514eed826f971">krb5_config_get_bool</a> (krb5_context context, const krb5_config_section *c,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION int KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#g11d7ea1fa9a910acb568c42d8dd28350">krb5_config_vget_time_default</a> (krb5_context context, const krb5_config_section *c, int def_value, va_list args)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION int KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#g88331c69f41e1e65abc49a9b66efc7d5">krb5_config_vget_time</a> (krb5_context context, const krb5_config_section *c, va_list args)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION int KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#g019554d71140a32f64b6e4a2244d1168">krb5_config_get_time_default</a> (krb5_context context, const krb5_config_section *c, int def_value,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION int KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#gf797bad7e8499b7be6099ccff7f56226">krb5_config_get_time</a> (krb5_context context, const krb5_config_section *c,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#g947f1780e8b73fe0edb4f64da2f0b2f3">krb5_expand_hostname</a> (krb5_context context, const char *orig_hostname, char **new_hostname)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#g933f524c34ae6a80ba8aa6c0700992ef">krb5_expand_hostname_realms</a> (krb5_context context, const char *orig_hostname, char **new_hostname, char ***realms)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#gca0ab80d3affb5986aa5061f3782401b">krb5_free_host_realm</a> (krb5_context context, krb5_realm *realmlist)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION krb5_boolean <br>
+KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#g6368eceea4261ef2ccb8dc39ecc87772">krb5_kuserok</a> (krb5_context context, krb5_principal principal, const char *luser)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__support.html#gb6e4d59cca3b2e65abbd83204ad0e789">krb5_plugin_register</a> (krb5_context context, enum krb5_plugin_type type, const char *name, void *symbol)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g7c5dbc1743dc0bc63765edf82d10eb9e"></a><!-- doxytag: member="acl.c::krb5_acl_match_file" ref="g7c5dbc1743dc0bc63765edf82d10eb9e" args="(krb5_context context, const char *file, const char *format,...)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_acl_match_file </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&nbsp;</td>
+ <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_acl_match_file matches ACL format against each line in a file using <a class="el" href="group__krb5__support.html#g245208f2d59a8fd7187089ad445e51d0">krb5_acl_match_string()</a>. Lines starting with # are treated like comments and ignored.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>file</em>&nbsp;</td><td>file with acl listed in the file. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>format</em>&nbsp;</td><td>format to match. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>parameter to format string.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0.</dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__krb5__support.html#g245208f2d59a8fd7187089ad445e51d0">krb5_acl_match_string</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g245208f2d59a8fd7187089ad445e51d0"></a><!-- doxytag: member="acl.c::krb5_acl_match_string" ref="g245208f2d59a8fd7187089ad445e51d0" args="(krb5_context context, const char *string, const char *format,...)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_acl_match_string </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>string</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&nbsp;</td>
+ <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+krb5_acl_match_string matches ACL format against a string.<p>
+The ACL format has three format specifiers: s, f, and r. Each specifier will retrieve one argument from the variable arguments for either matching or storing data. The input string is split up using " " (space) and "\t" (tab) as a delimiter; multiple and "\t" in a row are considered to be the same.<p>
+List of format specifiers:<ul>
+<li>s Matches a string using strcmp(3) (case sensitive).</li><li>f Matches the string with fnmatch(3). Theflags argument (the last argument) passed to the fnmatch function is 0.</li><li>r Returns a copy of the string in the char ** passed in; the copy must be freed with free(3). There is no need to free(3) the string on error: the function will clean up and set the pointer to NULL.</li></ul>
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>string</em>&nbsp;</td><td>string to match with </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>format</em>&nbsp;</td><td>format to match </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>parameter to format string</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0.</dd></dl>
+<div class="fragment"><pre class="fragment"> <span class="keywordtype">char</span> *s;
+
+ ret = <a class="code" href="group__krb5__support.html#g245208f2d59a8fd7187089ad445e51d0">krb5_acl_match_string</a>(context, <span class="stringliteral">"foo"</span>, <span class="stringliteral">"s"</span>, <span class="stringliteral">"foo"</span>);
+ <span class="keywordflow">if</span> (ret)
+ krb5_errx(context, 1, <span class="stringliteral">"acl didn't match"</span>);
+ ret = <a class="code" href="group__krb5__support.html#g245208f2d59a8fd7187089ad445e51d0">krb5_acl_match_string</a>(context, <span class="stringliteral">"foo foo baz/kaka"</span>,
+ <span class="stringliteral">"ss"</span>, <span class="stringliteral">"foo"</span>, &amp;s, <span class="stringliteral">"foo/\\*"</span>);
+ <span class="keywordflow">if</span> (ret) {
+ <span class="comment">// no need to free(s) on error</span>
+ assert(s == NULL);
+ krb5_errx(context, 1, <span class="stringliteral">"acl didn't match"</span>);
+ }
+ free(s);
+</pre></div><p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__krb5__support.html#g7c5dbc1743dc0bc63765edf82d10eb9e">krb5_acl_match_file</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g84277205c4b221cc28f1fd36be19dba8"></a><!-- doxytag: member="config_file.c::krb5_config_file_free" ref="g84277205c4b221cc28f1fd36be19dba8" args="(krb5_context context, krb5_config_section *s)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_config_file_free </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_config_section *&nbsp;</td>
+ <td class="paramname"> <em>s</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free configuration file section, the result of krb5_config_parse_file() and <a class="el" href="group__krb5__support.html#g59892cdf61d0a6a59b3dd2e9998b541a">krb5_config_parse_file_multi()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>the configuration section to free</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns 0 on successes, otherwise an error code, see krb5_get_error_message() </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3440f86b07fa86aae0f0889445a0def2"></a><!-- doxytag: member="config_file.c::krb5_config_free_strings" ref="g3440f86b07fa86aae0f0889445a0def2" args="(char **strings)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_config_free_strings </td>
+ <td>(</td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>strings</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free the resulting strings from krb5_config-get_strings() and <a class="el" href="group__krb5__support.html#g614850564b4d21b92e113fde9420bf3c">krb5_config_vget_strings()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>strings</em>&nbsp;</td><td>strings to free </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g39402ca8c1b1eb2af4b514eed826f971"></a><!-- doxytag: member="config_file.c::krb5_config_get_bool" ref="g39402ca8c1b1eb2af4b514eed826f971" args="(krb5_context context, const krb5_config_section *c,...)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_config_get_bool </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_config_section *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&nbsp;</td>
+ <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Like <a class="el" href="group__krb5__support.html#g39402ca8c1b1eb2af4b514eed826f971">krb5_config_get_bool()</a> but with a va_list list of configuration selection.<p>
+Configuration value to a boolean value, where yes/true and any non-zero number means TRUE and other value is FALSE.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a configuration section, or NULL to use the section from context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>a list of names, terminated with NULL.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>TRUE or FALSE </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gca6abdb90a74af3747f87bfb5e9c85ab"></a><!-- doxytag: member="config_file.c::krb5_config_get_bool_default" ref="gca6abdb90a74af3747f87bfb5e9c85ab" args="(krb5_context context, const krb5_config_section *c, krb5_boolean def_value,...)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_config_get_bool_default </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_config_section *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_boolean&nbsp;</td>
+ <td class="paramname"> <em>def_value</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&nbsp;</td>
+ <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<a class="el" href="group__krb5__support.html#gca6abdb90a74af3747f87bfb5e9c85ab">krb5_config_get_bool_default()</a> will convert the configuration option value to a boolean value, where yes/true and any non-zero number means TRUE and other value is FALSE.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a configuration section, or NULL to use the section from context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>def_value</em>&nbsp;</td><td>the default value to return if no configuration found in the database. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>a list of names, terminated with NULL.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>TRUE or FALSE </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gee87399e25e34ac1e0e4a1841951e2fa"></a><!-- doxytag: member="config_file.c::krb5_config_get_list" ref="gee87399e25e34ac1e0e4a1841951e2fa" args="(krb5_context context, const krb5_config_section *c,...)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION const krb5_config_binding* KRB5_LIB_CALL krb5_config_get_list </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_config_section *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&nbsp;</td>
+ <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a list of configuration binding list for more processing<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a configuration section, or NULL to use the section from context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>a list of names, terminated with NULL.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>NULL if configuration list is not found, a list otherwise </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc0845cba8c8f7fd2e447de60d81556ac"></a><!-- doxytag: member="config_file.c::krb5_config_get_string" ref="gc0845cba8c8f7fd2e447de60d81556ac" args="(krb5_context context, const krb5_config_section *c,...)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL krb5_config_get_string </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_config_section *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&nbsp;</td>
+ <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Returns a "const char *" to a string in the configuration database. The string may not be valid after a reload of the configuration database so a caller should make a local copy if it needs to keep the string.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a configuration section, or NULL to use the section from context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>a list of names, terminated with NULL.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>NULL if configuration string not found, a string otherwise </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gaef298c290e0c315d7f4bf07ba272b60"></a><!-- doxytag: member="config_file.c::krb5_config_get_string_default" ref="gaef298c290e0c315d7f4bf07ba272b60" args="(krb5_context context, const krb5_config_section *c, const char *def_value,...)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL krb5_config_get_string_default </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_config_section *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>def_value</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&nbsp;</td>
+ <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Like <a class="el" href="group__krb5__support.html#gc0845cba8c8f7fd2e447de60d81556ac">krb5_config_get_string()</a>, but instead of returning NULL, instead return a default value.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a configuration section, or NULL to use the section from context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>def_value</em>&nbsp;</td><td>the default value to return if no configuration found in the database. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>a list of names, terminated with NULL.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a configuration string </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8f43dbe4a34a820a70d081e5d3190e01"></a><!-- doxytag: member="config_file.c::krb5_config_get_strings" ref="g8f43dbe4a34a820a70d081e5d3190e01" args="(krb5_context context, const krb5_config_section *c,...)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION char** KRB5_LIB_CALL krb5_config_get_strings </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_config_section *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&nbsp;</td>
+ <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a list of configuration strings, free the result with <a class="el" href="group__krb5__support.html#g3440f86b07fa86aae0f0889445a0def2">krb5_config_free_strings()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a configuration section, or NULL to use the section from context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>a list of names, terminated with NULL.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>TRUE or FALSE </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf797bad7e8499b7be6099ccff7f56226"></a><!-- doxytag: member="config_file.c::krb5_config_get_time" ref="gf797bad7e8499b7be6099ccff7f56226" args="(krb5_context context, const krb5_config_section *c,...)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_config_get_time </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_config_section *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&nbsp;</td>
+ <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the time from the configuration file using a relative time, for example: 1h30s<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a configuration section, or NULL to use the section from context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>a list of names, terminated with NULL.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>parsed the time or -1 on error </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g019554d71140a32f64b6e4a2244d1168"></a><!-- doxytag: member="config_file.c::krb5_config_get_time_default" ref="g019554d71140a32f64b6e4a2244d1168" args="(krb5_context context, const krb5_config_section *c, int def_value,...)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_config_get_time_default </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_config_section *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>def_value</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&nbsp;</td>
+ <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the time from the configuration file using a relative time, for example: 1h30s<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a configuration section, or NULL to use the section from context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>def_value</em>&nbsp;</td><td>the default value to return if no configuration found in the database. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>a list of names, terminated with NULL.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>parsed the time (or def_value on parse error) </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g59892cdf61d0a6a59b3dd2e9998b541a"></a><!-- doxytag: member="config_file.c::krb5_config_parse_file_multi" ref="g59892cdf61d0a6a59b3dd2e9998b541a" args="(krb5_context context, const char *fname, krb5_config_section **res)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_config_parse_file_multi </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>fname</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_config_section **&nbsp;</td>
+ <td class="paramname"> <em>res</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Parse a configuration file and add the result into res. This interface can be used to parse several configuration files into one resulting krb5_config_section by calling it repeatably.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>fname</em>&nbsp;</td><td>a file name to a Kerberos configuration file </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>the returned result, must be free with <a class="el" href="group__krb5.html#gce1b568d05875e7c4fbc6e5af5a8bdbf">krb5_free_config_files()</a>. </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+<p>
+If the fname starts with "~/" parse configuration file in the current users home directory. The behavior can be disabled and enabled by calling <a class="el" href="group__krb5.html#g3a8e40d622ff1460b2f554d83a9059ea">krb5_set_home_dir_access()</a>.
+</div>
+</div><p>
+<a class="anchor" name="g16e5b2da5e3751d7b3d4fe8d43f0a677"></a><!-- doxytag: member="config_file.c::krb5_config_vget_bool" ref="g16e5b2da5e3751d7b3d4fe8d43f0a677" args="(krb5_context context, const krb5_config_section *c, va_list args)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_config_vget_bool </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_config_section *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">va_list&nbsp;</td>
+ <td class="paramname"> <em>args</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<a class="el" href="group__krb5__support.html#g39402ca8c1b1eb2af4b514eed826f971">krb5_config_get_bool()</a> will convert the configuration option value to a boolean value, where yes/true and any non-zero number means TRUE and other value is FALSE.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a configuration section, or NULL to use the section from context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>a va_list of arguments</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>TRUE or FALSE </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8a29a130369232a638629cb37bfbeb66"></a><!-- doxytag: member="config_file.c::krb5_config_vget_bool_default" ref="g8a29a130369232a638629cb37bfbeb66" args="(krb5_context context, const krb5_config_section *c, krb5_boolean def_value, va_list args)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_config_vget_bool_default </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_config_section *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_boolean&nbsp;</td>
+ <td class="paramname"> <em>def_value</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">va_list&nbsp;</td>
+ <td class="paramname"> <em>args</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Like <a class="el" href="group__krb5__support.html#gca6abdb90a74af3747f87bfb5e9c85ab">krb5_config_get_bool_default()</a> but with a va_list list of configuration selection.<p>
+Configuration value to a boolean value, where yes/true and any non-zero number means TRUE and other value is FALSE.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a configuration section, or NULL to use the section from context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>def_value</em>&nbsp;</td><td>the default value to return if no configuration found in the database. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>a va_list of arguments</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>TRUE or FALSE </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gfbc6548d480aaf5118025b742f4f468d"></a><!-- doxytag: member="config_file.c::krb5_config_vget_list" ref="gfbc6548d480aaf5118025b742f4f468d" args="(krb5_context context, const krb5_config_section *c, va_list args)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION const krb5_config_binding* KRB5_LIB_CALL krb5_config_vget_list </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_config_section *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">va_list&nbsp;</td>
+ <td class="paramname"> <em>args</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a list of configuration binding list for more processing<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a configuration section, or NULL to use the section from context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>a va_list of arguments</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>NULL if configuration list is not found, a list otherwise </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gec7eaee2b6f04f1ed4a64b37efa767e4"></a><!-- doxytag: member="config_file.c::krb5_config_vget_string" ref="gec7eaee2b6f04f1ed4a64b37efa767e4" args="(krb5_context context, const krb5_config_section *c, va_list args)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL krb5_config_vget_string </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_config_section *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">va_list&nbsp;</td>
+ <td class="paramname"> <em>args</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Like <a class="el" href="group__krb5__support.html#gc0845cba8c8f7fd2e447de60d81556ac">krb5_config_get_string()</a>, but uses a va_list instead of ...<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a configuration section, or NULL to use the section from context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>a va_list of arguments</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>NULL if configuration string not found, a string otherwise </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g124f18195eb05c3662ce2bcf06c7451b"></a><!-- doxytag: member="config_file.c::krb5_config_vget_string_default" ref="g124f18195eb05c3662ce2bcf06c7451b" args="(krb5_context context, const krb5_config_section *c, const char *def_value, va_list args)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL krb5_config_vget_string_default </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_config_section *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>def_value</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">va_list&nbsp;</td>
+ <td class="paramname"> <em>args</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Like <a class="el" href="group__krb5__support.html#gec7eaee2b6f04f1ed4a64b37efa767e4">krb5_config_vget_string()</a>, but instead of returning NULL, instead return a default value.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a configuration section, or NULL to use the section from context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>def_value</em>&nbsp;</td><td>the default value to return if no configuration found in the database. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>a va_list of arguments</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a configuration string </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g614850564b4d21b92e113fde9420bf3c"></a><!-- doxytag: member="config_file.c::krb5_config_vget_strings" ref="g614850564b4d21b92e113fde9420bf3c" args="(krb5_context context, const krb5_config_section *c, va_list args)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION char** KRB5_LIB_CALL krb5_config_vget_strings </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_config_section *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">va_list&nbsp;</td>
+ <td class="paramname"> <em>args</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get a list of configuration strings, free the result with <a class="el" href="group__krb5__support.html#g3440f86b07fa86aae0f0889445a0def2">krb5_config_free_strings()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a configuration section, or NULL to use the section from context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>a va_list of arguments</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>TRUE or FALSE </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g88331c69f41e1e65abc49a9b66efc7d5"></a><!-- doxytag: member="config_file.c::krb5_config_vget_time" ref="g88331c69f41e1e65abc49a9b66efc7d5" args="(krb5_context context, const krb5_config_section *c, va_list args)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_config_vget_time </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_config_section *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">va_list&nbsp;</td>
+ <td class="paramname"> <em>args</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the time from the configuration file using a relative time, for example: 1h30s<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a configuration section, or NULL to use the section from context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>a va_list of arguments</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>parsed the time or -1 on error </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g11d7ea1fa9a910acb568c42d8dd28350"></a><!-- doxytag: member="config_file.c::krb5_config_vget_time_default" ref="g11d7ea1fa9a910acb568c42d8dd28350" args="(krb5_context context, const krb5_config_section *c, int def_value, va_list args)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_config_vget_time_default </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_config_section *&nbsp;</td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>def_value</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">va_list&nbsp;</td>
+ <td class="paramname"> <em>args</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the time from the configuration file using a relative time.<p>
+Like <a class="el" href="group__krb5__support.html#g019554d71140a32f64b6e4a2244d1168">krb5_config_get_time_default()</a> but with a va_list list of configuration selection.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>a configuration section, or NULL to use the section from context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>def_value</em>&nbsp;</td><td>the default value to return if no configuration found in the database. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>a va_list of arguments</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>parsed the time (or def_value on parse error) </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g947f1780e8b73fe0edb4f64da2f0b2f3"></a><!-- doxytag: member="expand_hostname.c::krb5_expand_hostname" ref="g947f1780e8b73fe0edb4f64da2f0b2f3" args="(krb5_context context, const char *orig_hostname, char **new_hostname)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_expand_hostname </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>orig_hostname</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>new_hostname</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<a class="el" href="group__krb5__support.html#g947f1780e8b73fe0edb4f64da2f0b2f3">krb5_expand_hostname()</a> tries to make orig_hostname into a more canonical one in the newly allocated space returned in new_hostname.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>orig_hostname</em>&nbsp;</td><td>hostname to canonicalise. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>new_hostname</em>&nbsp;</td><td>output hostname, caller must free hostname with krb5_xfree().</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g933f524c34ae6a80ba8aa6c0700992ef"></a><!-- doxytag: member="expand_hostname.c::krb5_expand_hostname_realms" ref="g933f524c34ae6a80ba8aa6c0700992ef" args="(krb5_context context, const char *orig_hostname, char **new_hostname, char ***realms)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_expand_hostname_realms </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>orig_hostname</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&nbsp;</td>
+ <td class="paramname"> <em>new_hostname</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char ***&nbsp;</td>
+ <td class="paramname"> <em>realms</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<a class="el" href="group__krb5__support.html#g933f524c34ae6a80ba8aa6c0700992ef">krb5_expand_hostname_realms()</a> expands orig_hostname to a name we believe to be a hostname in newly allocated space in new_hostname and return the realms new_hostname is believed to belong to in realms.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>orig_hostname</em>&nbsp;</td><td>hostname to canonicalise. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>new_hostname</em>&nbsp;</td><td>output hostname, caller must free hostname with krb5_xfree(). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>realms</em>&nbsp;</td><td>output possible realms, is an array that is terminated with NULL. Caller must free with <a class="el" href="group__krb5__support.html#gca0ab80d3affb5986aa5061f3782401b">krb5_free_host_realm()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Return an error code or 0, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gca0ab80d3affb5986aa5061f3782401b"></a><!-- doxytag: member="free_host_realm.c::krb5_free_host_realm" ref="gca0ab80d3affb5986aa5061f3782401b" args="(krb5_context context, krb5_realm *realmlist)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_free_host_realm </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_realm *&nbsp;</td>
+ <td class="paramname"> <em>realmlist</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free all memory allocated by `realmlist'<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>A Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>realmlist</em>&nbsp;</td><td>realmlist to free, NULL is ok</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>a Kerberos error code, always 0. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6368eceea4261ef2ccb8dc39ecc87772"></a><!-- doxytag: member="kuserok.c::krb5_kuserok" ref="g6368eceea4261ef2ccb8dc39ecc87772" args="(krb5_context context, krb5_principal principal, const char *luser)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_kuserok </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_principal&nbsp;</td>
+ <td class="paramname"> <em>principal</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>luser</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+This function takes the name of a local user and checks if principal is allowed to log in as that user.<p>
+The user may have a ~/.k5login file listing principals that are allowed to login as that user. If that file does not exist, all principals with a first component identical to the username, and a realm considered local, are allowed access.<p>
+The .k5login file must contain one principal per line, be owned by user and not be writable by group or other (but must be readable by anyone).<p>
+Note that if the file exists, no implicit access rights are given to user@LOCALREALM.<p>
+Optionally, a set of files may be put in ~/.k5login.d (a directory), in which case they will all be checked in the same manner as .k5login. The files may be called anything, but files starting with a hash (#) , or ending with a tilde (~) are ignored. Subdirectories are not traversed. Note that this directory may not be checked by other Kerberos implementations.<p>
+If no configuration file exists, match user against local domains, ie luser@LOCAL-REALMS-IN-CONFIGURATION-FILES.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>principal</em>&nbsp;</td><td>principal to check if allowed to login </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>luser</em>&nbsp;</td><td>local user id</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns TRUE if access should be granted, FALSE otherwise. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb6e4d59cca3b2e65abbd83204ad0e789"></a><!-- doxytag: member="plugin.c::krb5_plugin_register" ref="gb6e4d59cca3b2e65abbd83204ad0e789" args="(krb5_context context, enum krb5_plugin_type type, const char *name, void *symbol)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_plugin_register </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">enum krb5_plugin_type&nbsp;</td>
+ <td class="paramname"> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>symbol</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Register a plugin symbol name of specific type. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>a Keberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>type of plugin symbol </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>name of plugin symbol </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>symbol</em>&nbsp;</td><td>a pointer to the named symbol </td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of error a non zero error com_err error is returned and the Kerberos error string is set. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__ticket.html b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__ticket.html
new file mode 100644
index 000000000000..38400ab7f21b
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__ticket.html
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Heimdal Kerberos 5 ticket functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal Kerberos 5 ticket functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION unsigned <br>
+long KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__ticket.html#gb6a75ab695ff8478394084138af9eb16">krb5_ticket_get_flags</a> (krb5_context context, const krb5_ticket *ticket)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="gb6a75ab695ff8478394084138af9eb16"></a><!-- doxytag: member="ticket.c::krb5_ticket_get_flags" ref="gb6a75ab695ff8478394084138af9eb16" args="(krb5_context context, const krb5_ticket *ticket)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION unsigned long KRB5_LIB_CALL krb5_ticket_get_flags </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const krb5_ticket *&nbsp;</td>
+ <td class="paramname"> <em>ticket</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the flags from the Kerberos ticket<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos context </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ticket</em>&nbsp;</td><td>Kerberos ticket</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>ticket flags </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__v4compat.html b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__v4compat.html
new file mode 100644
index 000000000000..6acfb9e78574
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/group__krb5__v4compat.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Heimdal Kerberos 4 compatiblity functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal Kerberos 4 compatiblity functions</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__v4compat.html#g0b661217785509322350a73e516ebb3e">krb524_convert_creds_kdc</a> (krb5_context context, krb5_creds *in_cred, struct credentials *v4creds) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">KRB5_LIB_FUNCTION <br>
+krb5_error_code KRB5_LIB_CALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__krb5__v4compat.html#g9669ba06773974372902df45a8284cf0">krb524_convert_creds_kdc_ccache</a> (krb5_context context, krb5_ccache ccache, krb5_creds *in_cred, struct credentials *v4creds) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g0b661217785509322350a73e516ebb3e"></a><!-- doxytag: member="convert_creds.c::krb524_convert_creds_kdc" ref="g0b661217785509322350a73e516ebb3e" args="(krb5_context context, krb5_creds *in_cred, struct credentials *v4creds) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb524_convert_creds_kdc </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>in_cred</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct credentials *&nbsp;</td>
+ <td class="paramname"> <em>v4creds</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Convert the v5 credentials in in_cred to v4-dito in v4creds. This is done by sending them to the 524 function in the KDC. If `in_cred' doesn't contain a DES session key, then a new one is gotten from the KDC and stored in the cred cache `ccache'.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>in_cred</em>&nbsp;</td><td>the credential to convert </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>v4creds</em>&nbsp;</td><td>the converted credential</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9669ba06773974372902df45a8284cf0"></a><!-- doxytag: member="convert_creds.c::krb524_convert_creds_kdc_ccache" ref="g9669ba06773974372902df45a8284cf0" args="(krb5_context context, krb5_ccache ccache, krb5_creds *in_cred, struct credentials *v4creds) KRB5_DEPRECATED_FUNCTION(&quot;Use X instead&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb524_convert_creds_kdc_ccache </td>
+ <td>(</td>
+ <td class="paramtype">krb5_context&nbsp;</td>
+ <td class="paramname"> <em>context</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_ccache&nbsp;</td>
+ <td class="paramname"> <em>ccache</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">krb5_creds *&nbsp;</td>
+ <td class="paramname"> <em>in_cred</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct credentials *&nbsp;</td>
+ <td class="paramname"> <em>v4creds</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Convert the v5 credentials in in_cred to v4-dito in v4creds, check the credential cache ccache before checking with the KDC.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>Kerberos 5 context. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ccache</em>&nbsp;</td><td>credential cache used to check for des-ticket. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>in_cred</em>&nbsp;</td><td>the credential to convert </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>v4creds</em>&nbsp;</td><td>the converted credential</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message(). </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/index.html b/crypto/heimdal/doc/doxyout/krb5/html/index.html
new file mode 100644
index 000000000000..aed57556e587
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/index.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Heimdal Kerberos 5 library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal Kerberos 5 library</h1>
+<p>
+<h3 align="center">1.5.1 </h3><h2><a class="anchor" name="intro">
+Introduction</a></h2>
+Heimdal libkrb5 library is a implementation of the Kerberos protocol.<p>
+Kerberos is a system for authenticating users and services on a network. It is built upon the assumption that the network is ``unsafe''. For example, data sent over the network can be eavesdropped and altered, and addresses can also be faked. Therefore they cannot be used for authentication purposes.<p>
+<ul>
+<li><a class="el" href="krb5_introduction.html">Introduction to the Kerberos 5 API</a></li><li><a class="el" href="krb5_principal_intro.html">The principal handing functions.</a></li><li><a class="el" href="krb5_ccache_intro.html">The credential cache functions</a></li><li><a class="el" href="krb5_keytab_intro.html">The keytab handing functions</a></li></ul>
+<p>
+If you want to know more about the file formats that is used by Heimdal, please see: <a class="el" href="krb5_fileformats.html">File formats</a><p>
+The project web page: <a href="http://www.h5l.org/">http://www.h5l.org/</a> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:18 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/krb5_ccache_intro.html b/crypto/heimdal/doc/doxyout/krb5/html/krb5_ccache_intro.html
new file mode 100644
index 000000000000..a0992dc66a94
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/krb5_ccache_intro.html
@@ -0,0 +1,74 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: The credential cache functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="krb5_ccache_intro">The credential cache functions </a></h1><h2><a class="anchor" name="section_krb5_ccache">
+Kerberos credential caches</a></h2>
+krb5_ccache structure holds a Kerberos credential cache.<p>
+Heimdal support the follow types of credential caches:<p>
+<ul>
+<li>SCC Store the credential in a database</li><li>FILE Store the credential in memory</li><li>MEMORY Store the credential in memory</li><li>API A credential cache server based solution for Mac OS X</li><li>KCM A credential cache server based solution for all platforms</li></ul>
+<h3><a class="anchor" name="Example">
+Example</a></h3>
+This is a minimalistic version of klist: <div class="fragment"><pre class="fragment"><span class="preprocessor">#include &lt;krb5.h&gt;</span>
+
+<span class="keywordtype">int</span>
+main (<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv)
+{
+ krb5_context context;
+ krb5_cc_cursor cursor;
+ krb5_error_code ret;
+ krb5_ccache id;
+ krb5_creds creds;
+
+ <span class="keywordflow">if</span> (<a class="code" href="group__krb5.html#gbd94206e186c58a093975424a4a567a8">krb5_init_context</a> (&amp;context) != 0)
+ errx(1, <span class="stringliteral">"krb5_context"</span>);
+
+ ret = <a class="code" href="group__krb5__ccache.html#gd7d54822ef022f3e27f7f0f457d9c751">krb5_cc_default</a> (context, &amp;<span class="keywordtype">id</span>);
+ <span class="keywordflow">if</span> (ret)
+ krb5_err(context, 1, ret, <span class="stringliteral">"krb5_cc_default"</span>);
+
+ ret = <a class="code" href="group__krb5__ccache.html#gcbf766cea6b49dd64b76628c7708b979">krb5_cc_start_seq_get</a>(context, <span class="keywordtype">id</span>, &amp;cursor);
+ <span class="keywordflow">if</span> (ret)
+ krb5_err(context, 1, ret, <span class="stringliteral">"krb5_cc_start_seq_get"</span>);
+
+ <span class="keywordflow">while</span>((ret = <a class="code" href="group__krb5__ccache.html#gd9cd0ebcc7bdf3ca2b0ed166ea2f8df6">krb5_cc_next_cred</a>(context, <span class="keywordtype">id</span>, &amp;cursor, &amp;creds)) == 0){
+ <span class="keywordtype">char</span> *principal;
+
+ <a class="code" href="group__krb5__principal.html#gac881051ed59fe0dcd08cee62280b332">krb5_unparse_name</a>(context, creds.server, &amp;principal);
+ printf(<span class="stringliteral">"principal: %s\\n"</span>, principal);
+ free(principal);
+ <a class="code" href="group__krb5.html#gd89c4c7b633646c39e4a34a7230c94e1">krb5_free_cred_contents</a> (context, &amp;creds);
+ }
+ ret = <a class="code" href="group__krb5__ccache.html#g024ce036ebf277f918354d4681bd0550">krb5_cc_end_seq_get</a>(context, <span class="keywordtype">id</span>, &amp;cursor);
+ <span class="keywordflow">if</span> (ret)
+ krb5_err(context, 1, ret, <span class="stringliteral">"krb5_cc_end_seq_get"</span>);
+
+ <a class="code" href="group__krb5__ccache.html#gebc0dd2a77529c05fb49e27235da7017">krb5_cc_close</a>(context, <span class="keywordtype">id</span>);
+
+ <a class="code" href="group__krb5.html#ge51d83f5d5f589883f1cd10887892777">krb5_free_context</a>(context);
+ <span class="keywordflow">return</span> 0;
+}
+</pre></div> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:18 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/krb5_fileformats.html b/crypto/heimdal/doc/doxyout/krb5/html/krb5_fileformats.html
new file mode 100644
index 000000000000..543ba048abdd
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/krb5_fileformats.html
@@ -0,0 +1,154 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: File formats</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="krb5_fileformats">File formats </a></h1><h2><a class="anchor" name="fileformats">
+File formats</a></h2>
+This section documents the diffrent file formats that are used in Heimdal and other Kerberos implementations.<h3><a class="anchor" name="file_keytab">
+keytab</a></h3>
+The keytab binary format is not a standard format. The format has evolved and may continue to. It is however understood by several Kerberos implementations including Heimdal, MIT, Sun's Java ktab and are created by the ktpass.exe utility from Windows. So it has established itself as the defacto format for storing Kerberos keys.<p>
+The following C-like structure definitions illustrate the MIT keytab file format. All values are in network byte order. All text is ASCII.<p>
+<div class="fragment"><pre class="fragment"> keytab {
+ uint16_t file_format_version; # 0x502
+ keytab_entry entries[*];
+ };
+
+ keytab_entry {
+ int32_t size;
+ uint16_t num_components; # subtract 1 <span class="keywordflow">if</span> version 0x501
+ counted_octet_string realm;
+ counted_octet_string components[num_components];
+ uint32_t name_type; # not present <span class="keywordflow">if</span> version 0x501
+ uint32_t timestamp;
+ uint8_t vno8;
+ keyblock key;
+ uint32_t vno; #only present <span class="keywordflow">if</span> &gt;= 4 bytes left in entry
+ uint32_t flags; #only present <span class="keywordflow">if</span> &gt;= 4 bytes left in entry
+ };
+
+ counted_octet_string {
+ uint16_t length;
+ uint8_t data[length];
+ };
+
+ keyblock {
+ uint16_t type;
+ counted_octet_string;
+ };
+</pre></div><p>
+All numbers are stored in network byteorder (big endian) format.<p>
+The keytab file format begins with the 16 bit file_format_version which at the time this document was authored is 0x502. The format of older keytabs is described at the end of this document.<p>
+The file_format_version is immediately followed by an array of keytab_entry structures which are prefixed with a 32 bit size indicating the number of bytes that follow in the entry. Note that the size should be evaluated as signed. This is because a negative value indicates that the entry is in fact empty (e.g. it has been deleted) and that the negative value of that negative value (which is of course a positive value) is the offset to the next keytab_entry. Based on these size values alone the entire keytab file can be traversed.<p>
+The size is followed by a 16 bit num_components field indicating the number of counted_octet_string components in the components array.<p>
+The num_components field is followed by a counted_octet_string representing the realm of the principal.<p>
+A counted_octet_string is simply an array of bytes prefixed with a 16 bit length. For the realm and name components, the counted_octet_string bytes are ASCII encoded text with no zero terminator.<p>
+Following the realm is the components array that represents the name of the principal. The text of these components may be joined with slashs to construct the typical SPN representation. For example, the service principal HTTP/www.foo.net@FOO.NET would consist of name components "HTTP" followed by "www.foo.net".<p>
+Following the components array is the 32 bit name_type (e.g. 1 is KRB5_NT_PRINCIPAL, 2 is KRB5_NT_SRV_INST, 5 is KRB5_NT_UID, etc). In practice the name_type is almost certainly 1 meaning KRB5_NT_PRINCIPAL.<p>
+The 32 bit timestamp indicates the time the key was established for that principal. The value represents the number of seconds since Jan 1, 1970.<p>
+The 8 bit vno8 field is the version number of the key. This value is overridden by the 32 bit vno field if it is present. The vno8 field is filled with the lower 8 bits of the 32 bit protocol kvno field.<p>
+The keyblock structure consists of a 16 bit value indicating the encryption type and is a counted_octet_string containing the key. The encryption type is the same as the Kerberos standard (e.g. 3 is des-cbc-md5, 23 is arcfour-hmac-md5, etc).<p>
+The last field of the keytab_entry structure is optional. If the size of the keytab_entry indicates that there are at least 4 bytes remaining, a 32 bit value representing the key version number is present. This value supersedes the 8 bit vno8 value preceeding the keyblock.<p>
+Older keytabs with a file_format_version of 0x501 are different in three ways:<p>
+<ul>
+<li>All integers are in host byte order [1].</li><li>The num_components field is 1 too large (i.e. after decoding, decrement by 1).</li><li>The 32 bit name_type field is not present.</li></ul>
+<p>
+[1] The file_format_version field should really be treated as two separate 8 bit quantities representing the major and minor version number respectively.<h3><a class="anchor" name="file_hdb_dump">
+Heimdal database dump file</a></h3>
+Format of the Heimdal text dump file as of Heimdal 0.6.3:<p>
+Each line in the dump file is one entry in the database.<p>
+Each field of a line is separated by one or more spaces, with the exception of fields consisting of principals containing spaces, where space can be quoted with \ and \ is quoted by \.<p>
+Fields and their types are:<p>
+<div class="fragment"><pre class="fragment"> Quoted princial (quote character is \) [string]
+ Keys [keys]
+ Created by [event]
+ Modified by [<span class="keyword">event</span> optional]
+ Valid start time [time optional]
+ Valid end time [time optional]
+ Password end valid time [time optional]
+ Max lifetime of ticket [time optional]
+ Max renew time of ticket [integer optional]
+ Flags [hdb flags]
+ Generation number [generation optional]
+ Extensions [extentions optional]
+</pre></div><p>
+Fields following these silently are ignored.<p>
+All optional fields will be skipped if they fail to parse (or comprise the optional field marker of "-", w/o quotes).<p>
+Example:<p>
+<div class="fragment"><pre class="fragment"> fred\@CODE.COM 27:1:16:e8b4c8fc7e60b9e641dcf4cff3f08a701d982a2f89ba373733d26ca59ba6c789666f6b8bfcf169412bb1e5dceb9b33cda29f3412:-:1:3:4498a933881178c744f4232172dcd774c64e81fa6d05ecdf643a7e390624a0ebf3c7407a:-:1:2:b01934b13eb795d76f3a80717d469639b4da0cfb644161340ef44fdeb375e54d684dbb85:-:1:1:ea8e16d8078bf60c781da90f508d4deccba70595258b9d31888d33987cd31af0c9cced2e:- 20020415130120:admin\@CODE.COM 20041221112428:fred\@CODE.COM - - - 86400 604800 126 20020415130120:793707:28 -
+</pre></div><p>
+Encoding of types are as follows:<p>
+<ul>
+<li>keys</li></ul>
+<p>
+<div class="fragment"><pre class="fragment"> kvno:[masterkvno:keytype:keydata:salt]{zero or more separated by :}
+</pre></div><p>
+kvno is the key version number.<p>
+keydata is hex-encoded<p>
+masterkvno is the kvno of the database master key. If this field is empty, the kadmin load and merge operations will encrypt the key data with the master key if there is one. Otherwise the key data will be imported asis.<p>
+salt is encoded as "-" (no/default salt) or<p>
+<div class="fragment"><pre class="fragment"> salt-type /
+ salt-type / <span class="stringliteral">"string"</span>
+ salt-type / hex-encoded-data
+</pre></div><p>
+keytype is the protocol enctype number; see enum ENCTYPE in include/krb5_asn1.h for values.<p>
+Example: <div class="fragment"><pre class="fragment"> 27:1:16:e8b4c8fc7e60b9e641dcf4cff3f08a701d982a2f89ba373733d26ca59ba6c789666f6b8bfcf169412bb1e5dceb9b33cda29f3412:-:1:3:4498a933881178c744f4232172dcd774c64e81fa6d05ecdf643a7e390624a0ebf3c7407a:-:1:2:b01934b13eb795d76f3a80717d469639b4da0cfb644161340ef44fdeb375e54d684dbb85:-:1:1:ea8e16d8078bf60c781da90f508d4deccba70595258b9d31888d33987cd31af0c9cced2e:-
+</pre></div><p>
+<div class="fragment"><pre class="fragment"> kvno=27,{key: masterkvno=1,keytype=des3-cbc-sha1,keydata=..., <span class="keywordflow">default</span> salt}...
+</pre></div><p>
+<ul>
+<li>time</li></ul>
+<p>
+Format of the time is: YYYYmmddHHMMSS, corresponding to strftime format "%Y%m%d%k%M%S".<p>
+Time is expressed in UTC.<p>
+Time can be optional (using -), when the time 0 is used.<p>
+Example:<p>
+<div class="fragment"><pre class="fragment"> 20041221112428
+</pre></div><p>
+<ul>
+<li>event</li></ul>
+<p>
+<div class="fragment"><pre class="fragment"> time:principal
+</pre></div><p>
+time is as given in format time<p>
+principal is a string. Not quoting it may not work in earlier versions of Heimdal.<p>
+Example: <div class="fragment"><pre class="fragment"> 20041221112428:bloggs\@CODE.COM
+</pre></div><p>
+<ul>
+<li>hdb flags</li></ul>
+<p>
+Integer encoding of HDB flags, see HDBFlags in lib/hdb/hdb.asn1. Each bit in the integer is the same as the bit in the specification.<p>
+<ul>
+<li>generation:</li></ul>
+<p>
+<div class="fragment"><pre class="fragment"> time:usec:gen
+</pre></div><p>
+usec is a the microsecond, integer. gen is generation number, integer.<p>
+The generation can be defaulted (using '-') or the empty string<p>
+<ul>
+<li>extensions:</li></ul>
+<p>
+<div class="fragment"><pre class="fragment"> first-hex-encoded-HDB-Extension[:second-...]
+</pre></div><p>
+HDB-extension is encoded the DER encoded HDB-Extension from lib/hdb/hdb.asn1. Consumers HDB extensions should be aware that unknown entires needs to be preserved even thought the ASN.1 data content might be unknown. There is a critical flag in the data to show to the KDC that the entry MUST be understod if the entry is to be used. </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/krb5_init_creds_intro.html b/crypto/heimdal/doc/doxyout/krb5/html/krb5_init_creds_intro.html
new file mode 100644
index 000000000000..a9b43a255e18
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/krb5_init_creds_intro.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: The initial credential handing functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="krb5_init_creds_intro">The initial credential handing functions </a></h1><h2><a class="anchor" name="section_krb5_init_creds">
+Initial credential</a></h2>
+Functions to get initial credentials: <a class="el" href="group__krb5__credential.html">Heimdal Kerberos 5 credential handing functions</a> . </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/krb5_introduction.html b/crypto/heimdal/doc/doxyout/krb5/html/krb5_introduction.html
new file mode 100644
index 000000000000..8745a342f059
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/krb5_introduction.html
@@ -0,0 +1,204 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Introduction to the Kerberos 5 API</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="krb5_introduction">Introduction to the Kerberos 5 API </a></h1><h2><a class="anchor" name="api_overview">
+Kerberos 5 API Overview</a></h2>
+All functions are documented in manual pages. This section tries to give an overview of the major components used in Kerberos library, and point to where to look for a specific function.<h3><a class="anchor" name="intro_krb5_context">
+Kerberos context</a></h3>
+A kerberos context (krb5_context) holds all per thread state. All global variables that are context specific are stored in this structure, including default encryption types, credential cache (for example, a ticket file), and default realms.<p>
+The internals of the structure should never be accessed directly, functions exist for extracting information.<p>
+See the manual page for <a class="el" href="group__krb5.html#gbd94206e186c58a093975424a4a567a8">krb5_init_context()</a> how to create a context and module <a class="el" href="group__krb5.html">Heimdal Kerberos 5 library</a> for more information about the functions.<h3><a class="anchor" name="intro_krb5_auth_context">
+Kerberos authentication context</a></h3>
+Kerberos authentication context (krb5_auth_context) holds all context related to an authenticated connection, in a similar way to the kerberos context that holds the context for the thread or process.<p>
+The krb5_auth_context is used by various functions that are directly related to authentication between the server/client. Example of data that this structure contains are various flags, addresses of client and server, port numbers, keyblocks (and subkeys), sequence numbers, replay cache, and checksum types.<h3><a class="anchor" name="intro_krb5_principal">
+Kerberos principal</a></h3>
+The Kerberos principal is the structure that identifies a user or service in Kerberos. The structure that holds the principal is the krb5_principal. There are function to extract the realm and elements of the principal, but most applications have no reason to inspect the content of the structure.<p>
+The are several ways to create a principal (with different degree of portability), and one way to free it.<p>
+See also the page <a class="el" href="krb5_principal_intro.html">The principal handing functions.</a> for more information and also module <a class="el" href="group__krb5__principal.html">Heimdal Kerberos 5 principal functions</a>.<h3><a class="anchor" name="intro_krb5_ccache">
+Credential cache</a></h3>
+A credential cache holds the tickets for a user. A given user can have several credential caches, one for each realm where the user have the initial tickets (the first krbtgt).<p>
+The credential cache data can be stored internally in different way, each of them for different proposes. File credential (FILE) caches and processes based (KCM) caches are for permanent storage. While memory caches (MEMORY) are local caches to the local process.<p>
+Caches are opened with <a class="el" href="group__krb5__ccache.html#ge8ab9d6f4af5710dab860f2806a7d13b">krb5_cc_resolve()</a> or created with <a class="el" href="group__krb5__ccache.html#g86c0f70d0c2b5de2d876edf4b693b5b9">krb5_cc_new_unique()</a>.<p>
+If the cache needs to be opened again (using <a class="el" href="group__krb5__ccache.html#ge8ab9d6f4af5710dab860f2806a7d13b">krb5_cc_resolve()</a>) <a class="el" href="group__krb5__ccache.html#gebc0dd2a77529c05fb49e27235da7017">krb5_cc_close()</a> will close the handle, but not the remove the cache. <a class="el" href="group__krb5__ccache.html#g3115bcccd71594374831caa9a07b1290">krb5_cc_destroy()</a> will zero out the cache, remove the cache so it can no longer be referenced.<p>
+See also <a class="el" href="krb5_ccache_intro.html">The credential cache functions</a> and <a class="el" href="group__krb5__ccache.html">Heimdal Kerberos 5 credential cache functions</a> .<h3><a class="anchor" name="intro_krb5_error_code">
+Kerberos errors</a></h3>
+Kerberos errors are based on the com_err library. All error codes are 32-bit signed numbers, the first 24 bits define what subsystem the error originates from, and last 8 bits are 255 error codes within the library. Each error code have fixed string associated with it. For example, the error-code -1765328383 have the symbolic name KRB5KDC_ERR_NAME_EXP, and associated error string ``Client's entry in database has expired''.<p>
+This is a great improvement compared to just getting one of the unix error-codes back. However, Heimdal have an extention to pass back customised errors messages. Instead of getting ``Key table entry not found'', the user might back ``failed to find host/host.example.com@EXAMLE.COM(kvno 3) in keytab /etc/krb5.keytab (des-cbc-crc)''. This improves the chance that the user find the cause of the error so you should use the customised error message whenever it's available.<p>
+See also module <a class="el" href="group__krb5__error.html">Heimdal Kerberos 5 error reporting functions</a> .<h3><a class="anchor" name="intro_krb5_keytab">
+Keytab management</a></h3>
+A keytab is a storage for locally stored keys. Heimdal includes keytab support for Kerberos 5 keytabs, Kerberos 4 srvtab, AFS-KeyFile's, and for storing keys in memory.<p>
+Keytabs are used for servers and long-running services.<p>
+See also <a class="el" href="krb5_keytab_intro.html">The keytab handing functions</a> and <a class="el" href="group__krb5__keytab.html">Heimdal Kerberos 5 keytab handling functions</a> .<h3><a class="anchor" name="intro_krb5_crypto">
+Kerberos crypto</a></h3>
+Heimdal includes a implementation of the Kerberos crypto framework, all crypto operations. To create a crypto context call <a class="el" href="group__krb5__crypto.html#gd7003a8a81cef633cc0a2cc07c93dd32">krb5_crypto_init()</a>.<p>
+See also module <a class="el" href="group__krb5__crypto.html">Heimdal Kerberos 5 cryptography functions</a> .<h2><a class="anchor" name="kerberos5_client">
+Walkthrough of a sample Kerberos 5 client</a></h2>
+This example contains parts of a sample TCP Kerberos 5 clients, if you want a real working client, please look in appl/test directory in the Heimdal distribution.<p>
+All Kerberos error-codes that are returned from kerberos functions in this program are passed to krb5_err, that will print a descriptive text of the error code and exit. Graphical programs can convert error-code to a human readable error-string with the krb5_get_error_message() function.<p>
+Note that you should not use any Kerberos function before <a class="el" href="group__krb5.html#gbd94206e186c58a093975424a4a567a8">krb5_init_context()</a> have completed successfully. That is the reason err() is used when <a class="el" href="group__krb5.html#gbd94206e186c58a093975424a4a567a8">krb5_init_context()</a> fails.<p>
+First the client needs to call krb5_init_context to initialise the Kerberos 5 library. This is only needed once per thread in the program. If the function returns a non-zero value it indicates that either the Kerberos implementation is failing or it's disabled on this host.<p>
+<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include &lt;krb5.h&gt;</span>
+
+ <span class="keywordtype">int</span>
+ main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv)
+ {
+ krb5_context context;
+
+ <span class="keywordflow">if</span> (<a class="code" href="group__krb5.html#gbd94206e186c58a093975424a4a567a8">krb5_init_context</a>(&amp;context))
+ errx (1, <span class="stringliteral">"krb5_context"</span>);
+</pre></div><p>
+Now the client wants to connect to the host at the other end. The preferred way of doing this is using getaddrinfo (for operating system that have this function implemented), since getaddrinfo is neutral to the address type and can use any protocol that is available.<p>
+<div class="fragment"><pre class="fragment"> <span class="keyword">struct </span>addrinfo *ai, *a;
+ <span class="keyword">struct </span>addrinfo hints;
+ <span class="keywordtype">int</span> error;
+
+ memset (&amp;hints, 0, <span class="keyword">sizeof</span>(hints));
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_protocol = IPPROTO_TCP;
+
+ error = getaddrinfo (hostname, <span class="stringliteral">"pop3"</span>, &amp;hints, &amp;ai);
+ <span class="keywordflow">if</span> (error)
+ errx (1, <span class="stringliteral">"%s: %s"</span>, hostname, gai_strerror(error));
+
+ <span class="keywordflow">for</span> (a = ai; a != NULL; a = a-&gt;ai_next) {
+ <span class="keywordtype">int</span> s;
+
+ s = socket (a-&gt;ai_family, a-&gt;ai_socktype, a-&gt;ai_protocol);
+ <span class="keywordflow">if</span> (s &lt; 0)
+ <span class="keywordflow">continue</span>;
+ <span class="keywordflow">if</span> (connect (s, a-&gt;ai_addr, a-&gt;ai_addrlen) &lt; 0) {
+ warn (<span class="stringliteral">"connect(%s)"</span>, hostname);
+ close (s);
+ <span class="keywordflow">continue</span>;
+ }
+ freeaddrinfo (ai);
+ ai = NULL;
+ }
+ <span class="keywordflow">if</span> (ai) {
+ freeaddrinfo (ai);
+ errx (<span class="stringliteral">"failed to contact %s"</span>, hostname);
+ }
+</pre></div><p>
+Before authenticating, an authentication context needs to be created. This context keeps all information for one (to be) authenticated connection (see krb5_auth_context).<p>
+<div class="fragment"><pre class="fragment"> status = krb5_auth_con_init (context, &amp;auth_context);
+ <span class="keywordflow">if</span> (status)
+ krb5_err (context, 1, status, <span class="stringliteral">"krb5_auth_con_init"</span>);
+</pre></div><p>
+For setting the address in the authentication there is a help function krb5_auth_con_setaddrs_from_fd() that does everything that is needed when given a connected file descriptor to the socket.<p>
+<div class="fragment"><pre class="fragment"> status = krb5_auth_con_setaddrs_from_fd (context,
+ auth_context,
+ &amp;sock);
+ <span class="keywordflow">if</span> (status)
+ krb5_err (context, 1, status,
+ <span class="stringliteral">"krb5_auth_con_setaddrs_from_fd"</span>);
+</pre></div><p>
+The next step is to build a server principal for the service we want to connect to. (See also <a class="el" href="group__krb5__principal.html#g8be0f5000da6ee0d4bd5dcaf3cb01d08">krb5_sname_to_principal()</a>.)<p>
+<div class="fragment"><pre class="fragment"> status = <a class="code" href="group__krb5__principal.html#g8be0f5000da6ee0d4bd5dcaf3cb01d08">krb5_sname_to_principal</a> (context,
+ hostname,
+ service,
+ KRB5_NT_SRV_HST,
+ &amp;server);
+ <span class="keywordflow">if</span> (status)
+ krb5_err (context, 1, status, <span class="stringliteral">"krb5_sname_to_principal"</span>);
+</pre></div><p>
+The client principal is not passed to krb5_sendauth() function, this causes the krb5_sendauth() function to try to figure it out itself.<p>
+The server program is using the function krb5_recvauth() to receive the Kerberos 5 authenticator.<p>
+In this case, mutual authentication will be tried. That means that the server will authenticate to the client. Using mutual authentication is good since it enables the user to verify that they are talking to the right server (a server that knows the key).<p>
+If you are using a non-blocking socket you will need to do all work of krb5_sendauth() yourself. Basically you need to send over the authenticator from krb5_mk_req() and, in case of mutual authentication, verifying the result from the server with krb5_rd_rep().<p>
+<div class="fragment"><pre class="fragment"> status = krb5_sendauth (context,
+ &amp;auth_context,
+ &amp;sock,
+ VERSION,
+ NULL,
+ server,
+ AP_OPTS_MUTUAL_REQUIRED,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ <span class="keywordflow">if</span> (status)
+ krb5_err (context, 1, status, <span class="stringliteral">"krb5_sendauth"</span>);
+</pre></div><p>
+Once authentication has been performed, it is time to send some data. First we create a krb5_data structure, then we sign it with krb5_mk_safe() using the auth_context that contains the session-key that was exchanged in the krb5_sendauth()/krb5_recvauth() authentication sequence.<p>
+<div class="fragment"><pre class="fragment"> data.data = <span class="stringliteral">"hej"</span>;
+ data.length = 3;
+
+ <a class="code" href="group__krb5.html#ga059e96dde4e0b8c082eb6f3d570b7bc">krb5_data_zero</a> (&amp;packet);
+
+ status = krb5_mk_safe (context,
+ auth_context,
+ &amp;data,
+ &amp;packet,
+ NULL);
+ <span class="keywordflow">if</span> (status)
+ krb5_err (context, 1, status, <span class="stringliteral">"krb5_mk_safe"</span>);
+</pre></div><p>
+And send it over the network.<p>
+<div class="fragment"><pre class="fragment"> len = packet.length;
+ net_len = htonl(len);
+
+ <span class="keywordflow">if</span> (krb5_net_write (context, &amp;sock, &amp;net_len, 4) != 4)
+ err (1, <span class="stringliteral">"krb5_net_write"</span>);
+ <span class="keywordflow">if</span> (krb5_net_write (context, &amp;sock, packet.data, len) != len)
+ err (1, <span class="stringliteral">"krb5_net_write"</span>);
+</pre></div><p>
+To send encrypted (and signed) data krb5_mk_priv() should be used instead. krb5_mk_priv() works the same way as krb5_mk_safe(), with the exception that it encrypts the data in addition to signing it.<p>
+<div class="fragment"><pre class="fragment"> data.data = <span class="stringliteral">"hemligt"</span>;
+ data.length = 7;
+
+ <a class="code" href="group__krb5.html#gb4b80ac7a8bbab89fe947ae1c7828ea8">krb5_data_free</a> (&amp;packet);
+
+ status = krb5_mk_priv (context,
+ auth_context,
+ &amp;data,
+ &amp;packet,
+ NULL);
+ <span class="keywordflow">if</span> (status)
+ krb5_err (context, 1, status, <span class="stringliteral">"krb5_mk_priv"</span>);
+</pre></div><p>
+And send it over the network.<p>
+<div class="fragment"><pre class="fragment"> len = packet.length;
+ net_len = htonl(len);
+
+ <span class="keywordflow">if</span> (krb5_net_write (context, &amp;sock, &amp;net_len, 4) != 4)
+ err (1, <span class="stringliteral">"krb5_net_write"</span>);
+ <span class="keywordflow">if</span> (krb5_net_write (context, &amp;sock, packet.data, len) != len)
+ err (1, <span class="stringliteral">"krb5_net_write"</span>);
+</pre></div><p>
+The server is using krb5_rd_safe() and krb5_rd_priv() to verify the signature and decrypt the packet.<h2><a class="anchor" name="intro_krb5_verify_user">
+Validating a password in an application</a></h2>
+See the manual page for krb5_verify_user().<h2><a class="anchor" name="mit_differences">
+API differences to MIT Kerberos</a></h2>
+This section is somewhat disorganised, but so far there is no overall structure to the differences, though some of the have their root in that Heimdal uses an ASN.1 compiler and MIT doesn't.<h3><a class="anchor" name="mit_krb5_principal">
+Principal and realms</a></h3>
+Heimdal stores the realm as a krb5_realm, that is a char *. MIT Kerberos uses a krb5_data to store a realm.<p>
+In Heimdal krb5_principal doesn't contain the component name_type; it's instead stored in component name.name_type. To get and set the nametype in Heimdal, use <a class="el" href="group__krb5__principal.html#gf4a599c42592ff7485753e80b8de67b7">krb5_principal_get_type()</a> and <a class="el" href="group__krb5__principal.html#g28b750b990452f02922bc74a6cac0313">krb5_principal_set_type()</a>.<p>
+For more information about principal and realms, see krb5_principal.<h3><a class="anchor" name="mit_krb5_error_code">
+Error messages</a></h3>
+To get the error string, Heimdal uses krb5_get_error_message(). This is to return custom error messages (like ``Can't find host/datan.example.com@CODE.COM in /etc/krb5.conf.'' instead of a ``Key table entry not found'' that error_message returns.<p>
+Heimdal uses a threadsafe(r) version of the com_err interface; the global com_err table isn't initialised. Then error_message returns quite a boring error string (just the error code itself). </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/krb5_keytab_intro.html b/crypto/heimdal/doc/doxyout/krb5/html/krb5_keytab_intro.html
new file mode 100644
index 000000000000..814d53515071
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/krb5_keytab_intro.html
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: The keytab handing functions</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="krb5_keytab_intro">The keytab handing functions </a></h1><h2><a class="anchor" name="section_krb5_keytab">
+Kerberos Keytabs</a></h2>
+See the library functions here: <a class="el" href="group__krb5__keytab.html">Heimdal Kerberos 5 keytab handling functions</a><p>
+Keytabs are long term key storage for servers, their equvalment of password files.<p>
+Normally the only function that useful for server are to specify what keytab to use to other core functions like krb5_rd_req() <a class="el" href="group__krb5__keytab.html#gc57fead58fb1baa003d6438613731901">krb5_kt_resolve()</a>, and <a class="el" href="group__krb5__keytab.html#gb67f5ae0a7c4b87d193218b842cad590">krb5_kt_close()</a>.<h3><a class="anchor" name="krb5_keytab_names">
+Keytab names</a></h3>
+A keytab name is on the form type:residual. The residual part is specific to each keytab-type.<p>
+When a keytab-name is resolved, the type is matched with an internal list of keytab types. If there is no matching keytab type, the default keytab is used. The current default type is FILE.<p>
+The default value can be changed in the configuration file /etc/krb5.conf by setting the variable [defaults]default_keytab_name.<p>
+The keytab types that are implemented in Heimdal are:<ul>
+<li>file store the keytab in a file, the type's name is FILE . The residual part is a filename. For compatibility with other Kerberos implemtation WRFILE and JAVA14 is also accepted. WRFILE has the same format as FILE. JAVA14 have a format that is compatible with older versions of MIT kerberos and SUN's Java based installation. They store a truncted kvno, so when the knvo excess 255, they are truncted in this format.</li></ul>
+<p>
+<ul>
+<li>keytab store the keytab in a AFS keyfile (usually /usr/afs/etc/KeyFile ), the type's name is AFSKEYFILE. The residual part is a filename.</li></ul>
+<p>
+<ul>
+<li>memory The keytab is stored in a memory segment. This allows sensitive and/or temporary data not to be stored on disk. The type's name is MEMORY. Each MEMORY keytab is referenced counted by and opened by the residual name, so two handles can point to the same memory area. When the last user closes using <a class="el" href="group__krb5__keytab.html#gb67f5ae0a7c4b87d193218b842cad590">krb5_kt_close()</a> the keytab, the keys in they keytab is memset() to zero and freed and can no longer be looked up by name.</li></ul>
+<h3><a class="anchor" name="krb5_keytab_example">
+Keytab example</a></h3>
+This is a minimalistic version of ktutil.<p>
+<div class="fragment"><pre class="fragment"><span class="keywordtype">int</span>
+main (<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv)
+{
+ krb5_context context;
+ krb5_keytab keytab;
+ krb5_kt_cursor cursor;
+ krb5_keytab_entry entry;
+ krb5_error_code ret;
+ <span class="keywordtype">char</span> *principal;
+
+ <span class="keywordflow">if</span> (<a class="code" href="group__krb5.html#gbd94206e186c58a093975424a4a567a8">krb5_init_context</a> (&amp;context) != 0)
+ errx(1, <span class="stringliteral">"krb5_context"</span>);
+
+ ret = <a class="code" href="group__krb5__keytab.html#gfcd059883c79dbd99a179bc4225d16b5">krb5_kt_default</a> (context, &amp;keytab);
+ <span class="keywordflow">if</span> (ret)
+ krb5_err(context, 1, ret, <span class="stringliteral">"krb5_kt_default"</span>);
+
+ ret = <a class="code" href="group__krb5__keytab.html#g1efd8ee48d6e3caa31cad475423b8917">krb5_kt_start_seq_get</a>(context, keytab, &amp;cursor);
+ <span class="keywordflow">if</span> (ret)
+ krb5_err(context, 1, ret, <span class="stringliteral">"krb5_kt_start_seq_get"</span>);
+ <span class="keywordflow">while</span>((ret = <a class="code" href="group__krb5__keytab.html#gc40140c41333a86d3c40426f50b4e1b0">krb5_kt_next_entry</a>(context, keytab, &amp;entry, &amp;cursor)) == 0){
+ <a class="code" href="group__krb5__principal.html#gac881051ed59fe0dcd08cee62280b332">krb5_unparse_name</a>(context, entry.principal, &amp;principal);
+ printf(<span class="stringliteral">"principal: %s\n"</span>, principal);
+ free(principal);
+ <a class="code" href="group__krb5__keytab.html#gc0774ab1407eaaaa0e5998478de246e2">krb5_kt_free_entry</a>(context, &amp;entry);
+ }
+ ret = <a class="code" href="group__krb5__keytab.html#g11289efb407d93a1f84d5c64731a4bd1">krb5_kt_end_seq_get</a>(context, keytab, &amp;cursor);
+ <span class="keywordflow">if</span> (ret)
+ krb5_err(context, 1, ret, <span class="stringliteral">"krb5_kt_end_seq_get"</span>);
+ ret = <a class="code" href="group__krb5__keytab.html#gb67f5ae0a7c4b87d193218b842cad590">krb5_kt_close</a>(context, keytab);
+ <span class="keywordflow">if</span> (ret)
+ krb5_err(context, 1, ret, <span class="stringliteral">"krb5_kt_close"</span>);
+ <a class="code" href="group__krb5.html#ge51d83f5d5f589883f1cd10887892777">krb5_free_context</a>(context);
+ <span class="keywordflow">return</span> 0;
+}
+</pre></div> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/krb5_principal_intro.html b/crypto/heimdal/doc/doxyout/krb5/html/krb5_principal_intro.html
new file mode 100644
index 000000000000..7cdb71d06091
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/krb5_principal_intro.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: The principal handing functions.</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1><a class="anchor" name="krb5_principal_intro">The principal handing functions. </a></h1>A Kerberos principal is a email address looking string that contains to parts separeted by a @. The later part is the kerbero realm the principal belongs to and the former is a list of 0 or more components. For example <div class="fragment"><pre class="fragment">
+lha@SU.SE
+host/hummel.it.su.se@SU.SE
+host/admin@H5L.ORG
+</pre></div><p>
+See the library functions here: <a class="el" href="group__krb5__principal.html">Heimdal Kerberos 5 principal functions</a> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/modules.html b/crypto/heimdal/doc/doxyout/krb5/html/modules.html
new file mode 100644
index 000000000000..0f566ae26471
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/modules.html
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Module Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li class="current"><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Modules</h1>Here is a list of all modules:<ul>
+<li><a class="el" href="group__krb5.html">Heimdal Kerberos 5 library</a>
+<li><a class="el" href="group__krb5__address.html">Heimdal Kerberos 5 address functions</a>
+<li><a class="el" href="group__krb5__principal.html">Heimdal Kerberos 5 principal functions</a>
+<li><a class="el" href="group__krb5__ccache.html">Heimdal Kerberos 5 credential cache functions</a>
+<li><a class="el" href="group__krb5__crypto.html">Heimdal Kerberos 5 cryptography functions</a>
+<li><a class="el" href="group__krb5__credential.html">Heimdal Kerberos 5 credential handing functions</a>
+<li><a class="el" href="group__krb5__deprecated.html">Heimdal Kerberos 5 deprecated functions</a>
+<li><a class="el" href="group__krb5__digest.html">Heimdal Kerberos 5 digest service</a>
+<li><a class="el" href="group__krb5__error.html">Heimdal Kerberos 5 error reporting functions</a>
+<li><a class="el" href="group__krb5__keytab.html">Heimdal Kerberos 5 keytab handling functions</a>
+<li><a class="el" href="group__krb5__ticket.html">Heimdal Kerberos 5 ticket functions</a>
+<li><a class="el" href="group__krb5__pac.html">Heimdal Kerberos 5 PAC handling functions</a>
+<li><a class="el" href="group__krb5__v4compat.html">Heimdal Kerberos 4 compatiblity functions</a>
+<li><a class="el" href="group__krb5__storage.html">Heimdal Kerberos 5 storage functions</a>
+<li><a class="el" href="group__krb5__support.html">Heimdal Kerberos 5 support functions</a>
+<li><a class="el" href="group__krb5__auth.html">Heimdal Kerberos 5 authentication functions</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/pages.html b/crypto/heimdal/doc/doxyout/krb5/html/pages.html
new file mode 100644
index 000000000000..63a1d90f49dc
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/pages.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: Page Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Related Pages</h1>Here is a list of all related documentation pages:<ul>
+<li><a class="el" href="krb5_ccache_intro.html">The credential cache functions</a>
+
+<li><a class="el" href="krb5_introduction.html">Introduction to the Kerberos 5 API</a>
+
+<li><a class="el" href="krb5_fileformats.html">File formats</a>
+
+<li><a class="el" href="krb5_init_creds_intro.html">The initial credential handing functions</a>
+
+<li><a class="el" href="krb5_keytab_intro.html">The keytab handing functions</a>
+
+<li><a class="el" href="krb5_principal_intro.html">The principal handing functions.</a>
+
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:18 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/structkrb5__crypto__iov.html b/crypto/heimdal/doc/doxyout/krb5/html/structkrb5__crypto__iov.html
new file mode 100644
index 000000000000..046818152718
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/structkrb5__crypto__iov.html
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>HeimdalKerberos5library: krb5_crypto_iov Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>krb5_crypto_iov Struct Reference</h1><!-- doxytag: class="krb5_crypto_iov" --><code>#include &lt;krb5.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Semi private, not stable yet <hr>The documentation for this struct was generated from the following file:<ul>
+<li>/Users/lha/src/heimdal/heimdal-release/heimdal-1.5.1/lib/krb5/krb5.h</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for HeimdalKerberos5library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/tab_b.gif b/crypto/heimdal/doc/doxyout/krb5/html/tab_b.gif
new file mode 100644
index 000000000000..0d623483ffdf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/tab_b.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/tab_l.gif b/crypto/heimdal/doc/doxyout/krb5/html/tab_l.gif
new file mode 100644
index 000000000000..9b1e6337c929
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/tab_l.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/tab_r.gif b/crypto/heimdal/doc/doxyout/krb5/html/tab_r.gif
new file mode 100644
index 000000000000..ce9dd9f533cb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/tab_r.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/krb5/html/tabs.css b/crypto/heimdal/doc/doxyout/krb5/html/tabs.css
new file mode 100644
index 000000000000..95f00a91da30
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/html/tabs.css
@@ -0,0 +1,102 @@
+/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
+
+DIV.tabs
+{
+ float : left;
+ width : 100%;
+ background : url("tab_b.gif") repeat-x bottom;
+ margin-bottom : 4px;
+}
+
+DIV.tabs UL
+{
+ margin : 0px;
+ padding-left : 10px;
+ list-style : none;
+}
+
+DIV.tabs LI, DIV.tabs FORM
+{
+ display : inline;
+ margin : 0px;
+ padding : 0px;
+}
+
+DIV.tabs FORM
+{
+ float : right;
+}
+
+DIV.tabs A
+{
+ float : left;
+ background : url("tab_r.gif") no-repeat right top;
+ border-bottom : 1px solid #84B0C7;
+ font-size : x-small;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+DIV.tabs A:hover
+{
+ background-position: 100% -150px;
+}
+
+DIV.tabs A:link, DIV.tabs A:visited,
+DIV.tabs A:active, DIV.tabs A:hover
+{
+ color: #1A419D;
+}
+
+DIV.tabs SPAN
+{
+ float : left;
+ display : block;
+ background : url("tab_l.gif") no-repeat left top;
+ padding : 5px 9px;
+ white-space : nowrap;
+}
+
+DIV.tabs INPUT
+{
+ float : right;
+ display : inline;
+ font-size : 1em;
+}
+
+DIV.tabs TD
+{
+ font-size : x-small;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+DIV.tabs SPAN {float : none;}
+/* End IE5-Mac hack */
+
+DIV.tabs A:hover SPAN
+{
+ background-position: 0% -150px;
+}
+
+DIV.tabs LI.current A
+{
+ background-position: 100% -150px;
+ border-width : 0px;
+}
+
+DIV.tabs LI.current SPAN
+{
+ background-position: 0% -150px;
+ padding-bottom : 6px;
+}
+
+DIV.navpath
+{
+ background : none;
+ border : none;
+ border-bottom : 1px solid #84B0C7;
+}
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5.3
new file mode 100644
index 000000000000..a6661bd923d8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5.3
@@ -0,0 +1,1092 @@
+.TH "Heimdal Kerberos 5 library" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal Kerberos 5 library \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_add_et_list\fP (krb5_context context, void(*func)(struct et_list **))"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_set_password\fP (krb5_context context, krb5_creds *creds, const char *newpw, krb5_principal targprinc, int *result_code, krb5_data *result_code_string, krb5_data *result_string)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_init_context\fP (krb5_context *context)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_copy_context\fP (krb5_context context, krb5_context *out)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_free_context\fP (krb5_context context)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_set_config_files\fP (krb5_context context, char **filenames)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_prepend_config_files_default\fP (const char *filelist, char ***pfilenames)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_get_default_config_files\fP (char ***pfilenames)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_free_config_files\fP (char **filenames)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION const krb5_enctype *KRB5_LIB_CALL \fBkrb5_kerberos_enctypes\fP (krb5_context context)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_set_default_in_tkt_etypes\fP (krb5_context context, const krb5_enctype *etypes)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_get_default_in_tkt_etypes\fP (krb5_context context, krb5_pdu pdu_type, krb5_enctype **etypes)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_init_ets\fP (krb5_context context)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_set_use_admin_kdc\fP (krb5_context context, krb5_boolean flag)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_get_use_admin_kdc\fP (krb5_context context)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_add_extra_addresses\fP (krb5_context context, krb5_addresses *addresses)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_set_extra_addresses\fP (krb5_context context, const krb5_addresses *addresses)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_get_extra_addresses\fP (krb5_context context, krb5_addresses *addresses)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_add_ignore_addresses\fP (krb5_context context, krb5_addresses *addresses)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_set_ignore_addresses\fP (krb5_context context, const krb5_addresses *addresses)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_get_ignore_addresses\fP (krb5_context context, krb5_addresses *addresses)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_set_fcache_version\fP (krb5_context context, int version)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_get_fcache_version\fP (krb5_context context, int *version)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_is_thread_safe\fP (void)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_set_dns_canonicalize_hostname\fP (krb5_context context, krb5_boolean flag)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_get_dns_canonicalize_hostname\fP (krb5_context context)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_get_kdc_sec_offset\fP (krb5_context context, int32_t *sec, int32_t *usec)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_set_kdc_sec_offset\fP (krb5_context context, int32_t sec, int32_t usec)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION time_t KRB5_LIB_CALL \fBkrb5_get_max_time_skew\fP (krb5_context context)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_set_max_time_skew\fP (krb5_context context, time_t t)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_set_home_dir_access\fP (krb5_context context, krb5_boolean allow)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_copy_host_realm\fP (krb5_context context, const krb5_realm *from, krb5_realm **to)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_free_cred_contents\fP (krb5_context context, krb5_creds *c)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_copy_creds_contents\fP (krb5_context context, const krb5_creds *incred, krb5_creds *c)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_copy_creds\fP (krb5_context context, const krb5_creds *incred, krb5_creds **outcred)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_free_creds\fP (krb5_context context, krb5_creds *c)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_compare_creds\fP (krb5_context context, krb5_flags whichfields, const krb5_creds *mcreds, const krb5_creds *creds)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION unsigned long KRB5_LIB_CALL \fBkrb5_creds_get_ticket_flags\fP (krb5_creds *creds)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_data_zero\fP (krb5_data *p)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_data_free\fP (krb5_data *p)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_free_data\fP (krb5_context context, krb5_data *p)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_data_alloc\fP (krb5_data *p, int len)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_data_realloc\fP (krb5_data *p, int len)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_data_copy\fP (krb5_data *p, const void *data, size_t len)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_copy_data\fP (krb5_context context, const krb5_data *indata, krb5_data **outdata)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION int KRB5_LIB_CALL \fBkrb5_data_cmp\fP (const krb5_data *data1, const krb5_data *data2)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION int KRB5_LIB_CALL \fBkrb5_data_ct_cmp\fP (const krb5_data *data1, const krb5_data *data2)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_krbhst_get_addrinfo\fP (krb5_context context, krb5_krbhst_info *host, struct addrinfo **ai)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_free_ticket\fP (krb5_context context, krb5_ticket *ticket)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_copy_ticket\fP (krb5_context context, const krb5_ticket *from, krb5_ticket **to)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ticket_get_client\fP (krb5_context context, const krb5_ticket *ticket, krb5_principal *client)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ticket_get_server\fP (krb5_context context, const krb5_ticket *ticket, krb5_principal *server)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION time_t KRB5_LIB_CALL \fBkrb5_ticket_get_endtime\fP (krb5_context context, const krb5_ticket *ticket)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ticket_get_authorization_data_type\fP (krb5_context context, krb5_ticket *ticket, int type, krb5_data *data)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_set_real_time\fP (krb5_context context, krb5_timestamp sec, int32_t usec)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_add_et_list (krb5_context context, void(*)(struct et_list **) func)"
+.PP
+Add a specified list of error messages to the et list in context. Call func (probably a comerr-generated function) with a pointer to the current et_list.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A kerberos context.
+.br
+\fIfunc\fP The generated com_err et function.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_add_extra_addresses (krb5_context context, krb5_addresses * addresses)"
+.PP
+Add extra address to the address list that the library will add to the client's address list when communicating with the KDC.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIaddresses\fP addreses to add
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_add_ignore_addresses (krb5_context context, krb5_addresses * addresses)"
+.PP
+Add extra addresses to ignore when fetching addresses from the underlaying operating system.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIaddresses\fP addreses to ignore
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_compare_creds (krb5_context context, krb5_flags whichfields, const krb5_creds * mcreds, const krb5_creds * creds)"
+.PP
+Return TRUE if `mcreds' and `creds' are equal (`whichfields' determines what equal means).
+.PP
+The following flags, set in whichfields affects the comparison:
+.IP "\(bu" 2
+KRB5_TC_MATCH_SRV_NAMEONLY Consider all realms equal when comparing the service principal.
+.IP "\(bu" 2
+KRB5_TC_MATCH_KEYTYPE Compare enctypes.
+.IP "\(bu" 2
+KRB5_TC_MATCH_FLAGS_EXACT Make sure that the ticket flags are identical.
+.IP "\(bu" 2
+KRB5_TC_MATCH_FLAGS Make sure that all ticket flags set in mcreds are also present in creds .
+.IP "\(bu" 2
+KRB5_TC_MATCH_TIMES_EXACT Compares the ticket times exactly.
+.IP "\(bu" 2
+KRB5_TC_MATCH_TIMES Compares only the expiration times of the creds.
+.IP "\(bu" 2
+KRB5_TC_MATCH_AUTHDATA Compares the authdata fields.
+.IP "\(bu" 2
+KRB5_TC_MATCH_2ND_TKT Compares the second tickets (used by user-to-user authentication).
+.IP "\(bu" 2
+KRB5_TC_MATCH_IS_SKEY Compares the existance of the second ticket.
+.PP
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIwhichfields\fP which fields to compare.
+.br
+\fImcreds\fP cred to compare with.
+.br
+\fIcreds\fP cred to compare with.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+return TRUE if mcred and creds are equal, FALSE if not.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_context (krb5_context context, krb5_context * out)"
+.PP
+Make a copy for the Kerberos 5 context, the new krb5_context shoud be freed with \fBkrb5_free_context()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP the Kerberos context to copy
+.br
+\fIout\fP the copy of the Kerberos, set to NULL error.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_creds (krb5_context context, const krb5_creds * incred, krb5_creds ** outcred)"
+.PP
+Copy krb5_creds.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIincred\fP source credential
+.br
+\fIoutcred\fP destination credential, free with \fBkrb5_free_creds()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_creds_contents (krb5_context context, const krb5_creds * incred, krb5_creds * c)"
+.PP
+Copy content of krb5_creds.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIincred\fP source credential
+.br
+\fIc\fP destination credential, free with \fBkrb5_free_cred_contents()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_data (krb5_context context, const krb5_data * indata, krb5_data ** outdata)"
+.PP
+Copy the data into a newly allocated krb5_data.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIindata\fP the krb5_data data to copy
+.br
+\fIoutdata\fP new krb5_date to copy too. Free with \fBkrb5_free_data()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_host_realm (krb5_context context, const krb5_realm * from, krb5_realm ** to)"
+.PP
+Copy the list of realms from `from' to `to'.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIfrom\fP list of realms to copy from.
+.br
+\fIto\fP list of realms to copy to, free list of \fBkrb5_free_host_realm()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_ticket (krb5_context context, const krb5_ticket * from, krb5_ticket ** to)"
+.PP
+Copy ticket and content
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Kerberos 5 context
+.br
+\fIfrom\fP ticket to copy
+.br
+\fIto\fP new copy of ticket, free with \fBkrb5_free_ticket()\fP
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION unsigned long KRB5_LIB_CALL krb5_creds_get_ticket_flags (krb5_creds * creds)"
+.PP
+Returns the ticket flags for the credentials in creds. See also \fBkrb5_ticket_get_flags()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcreds\fP credential to get ticket flags from
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+ticket flags
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_data_alloc (krb5_data * p, int len)"
+.PP
+Allocate data of and krb5_data.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIp\fP krb5_data to allocate.
+.br
+\fIlen\fP size to allocate.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_data_cmp (const krb5_data * data1, const krb5_data * data2)"
+.PP
+Compare to data.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdata1\fP krb5_data to compare
+.br
+\fIdata2\fP krb5_data to compare
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+return the same way as memcmp(), useful when sorting.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_data_copy (krb5_data * p, const void * data, size_t len)"
+.PP
+Copy the data of len into the krb5_data.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIp\fP krb5_data to copy into.
+.br
+\fIdata\fP data to copy..
+.br
+\fIlen\fP new size.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_data_ct_cmp (const krb5_data * data1, const krb5_data * data2)"
+.PP
+Compare to data not exposing timing information from the checksum data
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdata1\fP krb5_data to compare
+.br
+\fIdata2\fP krb5_data to compare
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns zero for same data, otherwise non zero.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_data_free (krb5_data * p)"
+.PP
+Free the content of krb5_data structure, its ok to free a zeroed structure (with memset() or \fBkrb5_data_zero()\fP). When done, the structure will be zeroed. The same function is called \fBkrb5_free_data_contents()\fP in MIT Kerberos.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIp\fP krb5_data to free.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_data_realloc (krb5_data * p, int len)"
+.PP
+Grow (or shrink) the content of krb5_data to a new size.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIp\fP krb5_data to free.
+.br
+\fIlen\fP new size.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_data_zero (krb5_data * p)"
+.PP
+Reset the (potentially uninitalized) krb5_data structure.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIp\fP krb5_data to reset.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_config_files (char ** filenames)"
+.PP
+Free a list of configuration files.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIfilenames\fP list, terminated with a NULL pointer, to be freed. NULL is an valid argument.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_context (krb5_context context)"
+.PP
+Frees the krb5_context allocated by \fBkrb5_init_context()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP context to be freed.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_free_cred_contents (krb5_context context, krb5_creds * c)"
+.PP
+Free content of krb5_creds.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIc\fP krb5_creds to free.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_free_creds (krb5_context context, krb5_creds * c)"
+.PP
+Free krb5_creds.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIc\fP krb5_creds to free.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_data (krb5_context context, krb5_data * p)"
+.PP
+Free krb5_data (and its content).
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIp\fP krb5_data to free.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_free_ticket (krb5_context context, krb5_ticket * ticket)"
+.PP
+Free ticket and content
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Kerberos 5 context
+.br
+\fIticket\fP ticket to free
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_default_config_files (char *** pfilenames)"
+.PP
+Get the global configuration list.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpfilenames\fP return array of filenames, should be freed with \fBkrb5_free_config_files()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_default_in_tkt_etypes (krb5_context context, krb5_pdu pdu_type, krb5_enctype ** etypes)"
+.PP
+Get the default encryption types that will be use in communcation with the KDC, clients and servers.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIetypes\fP Encryption types, array terminated with ETYPE_NULL(0), caller should free array with krb5_xfree():
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_get_dns_canonicalize_hostname (krb5_context context)"
+.PP
+Get if the library uses DNS to canonicalize hostnames.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+return non zero if the library uses DNS to canonicalize hostnames.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_extra_addresses (krb5_context context, krb5_addresses * addresses)"
+.PP
+Get extra address to the address list that the library will add to the client's address list when communicating with the KDC.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIaddresses\fP addreses to set
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_fcache_version (krb5_context context, int * version)"
+.PP
+Get version of fcache that the library should use.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIversion\fP version number.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_ignore_addresses (krb5_context context, krb5_addresses * addresses)"
+.PP
+Get extra addresses to ignore when fetching addresses from the underlaying operating system.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIaddresses\fP list addreses ignored
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_kdc_sec_offset (krb5_context context, int32_t * sec, int32_t * usec)"
+.PP
+Get current offset in time to the KDC.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIsec\fP seconds part of offset.
+.br
+\fIusec\fP micro seconds part of offset.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns zero
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION time_t KRB5_LIB_CALL krb5_get_max_time_skew (krb5_context context)"
+.PP
+Get max time skew allowed.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+timeskew in seconds.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_get_use_admin_kdc (krb5_context context)"
+.PP
+Make the kerberos library default to the admin KDC.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+boolean flag to telling the context will use admin KDC as the default KDC.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_init_context (krb5_context * context)"
+.PP
+Initializes the context structure and reads the configuration file /etc/krb5.conf. The structure should be freed by calling \fBkrb5_free_context()\fP when it is no longer being used.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP pointer to returned context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an errno code is returned. Failure means either that something bad happened during initialization (typically ENOMEM) or that Kerberos should not be used ENXIO.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_init_ets (krb5_context context)"
+.PP
+Init the built-in ets in the Kerberos library.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP kerberos context to add the ets too
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_is_thread_safe (void)"
+.PP
+Runtime check if the Kerberos library was complied with thread support.
+.PP
+\fBReturns:\fP
+.RS 4
+TRUE if the library was compiled with thread support, FALSE if not.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION const krb5_enctype* KRB5_LIB_CALL krb5_kerberos_enctypes (krb5_context context)"
+.PP
+Returns the list of Kerberos encryption types sorted in order of most preferred to least preferred encryption type. Note that some encryption types might be disabled, so you need to check with \fBkrb5_enctype_valid()\fP before using the encryption type.
+.PP
+\fBReturns:\fP
+.RS 4
+list of enctypes, terminated with ETYPE_NULL. Its a static array completed into the Kerberos library so the content doesn't need to be freed.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_krbhst_get_addrinfo (krb5_context context, krb5_krbhst_info * host, struct addrinfo ** ai)"
+.PP
+Return an `struct addrinfo *' for a KDC host.
+.PP
+Returns an the struct addrinfo in in that corresponds to the information in `host'. free:ing is handled by krb5_krbhst_free, so the returned ai must not be released.
+.PP
+First try this as an IP address, this allows us to add a dot at the end to stop using the search domains.
+.PP
+If the hostname contains a dot, assumes it's a FQDN and don't use search domains since that might be painfully slow when machine is disconnected from that network.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_prepend_config_files_default (const char * filelist, char *** pfilenames)"
+.PP
+Prepend the filename to the global configuration list.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIfilelist\fP a filename to add to the default list of filename
+.br
+\fIpfilenames\fP return array of filenames, should be freed with \fBkrb5_free_config_files()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_config_files (krb5_context context, char ** filenames)"
+.PP
+Reinit the context from a new set of filenames.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP context to add configuration too.
+.br
+\fIfilenames\fP array of filenames, end of list is indicated with a NULL filename.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_default_in_tkt_etypes (krb5_context context, const krb5_enctype * etypes)"
+.PP
+Set the default encryption types that will be use in communcation with the KDC, clients and servers.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIetypes\fP Encryption types, array terminated with ETYPE_NULL (0).
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_set_dns_canonicalize_hostname (krb5_context context, krb5_boolean flag)"
+.PP
+Set if the library should use DNS to canonicalize hostnames.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIflag\fP if its dns canonicalizion is used or not.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_extra_addresses (krb5_context context, const krb5_addresses * addresses)"
+.PP
+Set extra address to the address list that the library will add to the client's address list when communicating with the KDC.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIaddresses\fP addreses to set
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_fcache_version (krb5_context context, int version)"
+.PP
+Set version of fcache that the library should use.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIversion\fP version number.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_set_home_dir_access (krb5_context context, krb5_boolean allow)"
+.PP
+Enable and disable home directory access on either the global state or the krb5_context state. By calling \fBkrb5_set_home_dir_access()\fP with context set to NULL, the global state is configured otherwise the state for the krb5_context is modified.
+.PP
+For home directory access to be allowed, both the global state and the krb5_context state have to be allowed.
+.PP
+Administrator (root user), never uses the home directory.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Kerberos 5 context or NULL
+.br
+\fIallow\fP allow if TRUE home directory
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the old value
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_ignore_addresses (krb5_context context, const krb5_addresses * addresses)"
+.PP
+Set extra addresses to ignore when fetching addresses from the underlaying operating system.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIaddresses\fP addreses to ignore
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_kdc_sec_offset (krb5_context context, int32_t sec, int32_t usec)"
+.PP
+Set current offset in time to the KDC.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIsec\fP seconds part of offset.
+.br
+\fIusec\fP micro seconds part of offset.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns zero
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_set_max_time_skew (krb5_context context, time_t t)"
+.PP
+Set max time skew allowed.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIt\fP timeskew in seconds.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_password (krb5_context context, krb5_creds * creds, const char * newpw, krb5_principal targprinc, int * result_code, krb5_data * result_code_string, krb5_data * result_string)"
+.PP
+Change password using creds.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIcreds\fP The initial kadmin/passwd for the principal or an admin principal
+.br
+\fInewpw\fP The new password to set
+.br
+\fItargprinc\fP if unset, the default principal is used.
+.br
+\fIresult_code\fP Result code, KRB5_KPASSWD_SUCCESS is when password is changed.
+.br
+\fIresult_code_string\fP binary message from the server, contains at least the result_code.
+.br
+\fIresult_string\fP A message from the kpasswd service or the library in human printable form. The string is NUL terminated.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+On sucess and *result_code is KRB5_KPASSWD_SUCCESS, the password is changed.
+.RE
+.PP
+@
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_real_time (krb5_context context, krb5_timestamp sec, int32_t usec)"
+.PP
+Set the absolute time that the caller knows the kdc has so the kerberos library can calculate the relative diffrence beteen the KDC time and local system time.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Keberos 5 context.
+.br
+\fIsec\fP The applications new of 'now' in seconds
+.br
+\fIusec\fP The applications new of 'now' in micro seconds
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Kerberos 5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.PP
+If the caller passes in a negative usec, its assumed to be unknown and the function will use the current time usec.
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_set_use_admin_kdc (krb5_context context, krb5_boolean flag)"
+.PP
+Make the kerberos library default to the admin KDC.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIflag\fP boolean flag to select if the use the admin KDC or not.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ticket_get_authorization_data_type (krb5_context context, krb5_ticket * ticket, int type, krb5_data * data)"
+.PP
+Extract the authorization data type of type from the ticket. Store the field in data. This function is to use for kerberos applications.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Kerberos 5 context
+.br
+\fIticket\fP Kerberos ticket
+.br
+\fItype\fP type to fetch
+.br
+\fIdata\fP returned data, free with \fBkrb5_data_free()\fP
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ticket_get_client (krb5_context context, const krb5_ticket * ticket, krb5_principal * client)"
+.PP
+Return client principal in ticket
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Kerberos 5 context
+.br
+\fIticket\fP ticket to copy
+.br
+\fIclient\fP client principal, free with \fBkrb5_free_principal()\fP
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION time_t KRB5_LIB_CALL krb5_ticket_get_endtime (krb5_context context, const krb5_ticket * ticket)"
+.PP
+Return end time of ticket
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Kerberos 5 context
+.br
+\fIticket\fP ticket to copy
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+end time of ticket
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ticket_get_server (krb5_context context, const krb5_ticket * ticket, krb5_principal * server)"
+.PP
+Return server principal in ticket
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Kerberos 5 context
+.br
+\fIticket\fP ticket to copy
+.br
+\fIserver\fP server principal, free with \fBkrb5_free_principal()\fP
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb524_convert_creds_kdc.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb524_convert_creds_kdc.3
new file mode 100644
index 000000000000..2f0545d0dd2a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb524_convert_creds_kdc.3
@@ -0,0 +1 @@
+.so man3/krb5_v4compat.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb524_convert_creds_kdc_ccache.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb524_convert_creds_kdc_ccache.3
new file mode 100644
index 000000000000..2f0545d0dd2a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb524_convert_creds_kdc_ccache.3
@@ -0,0 +1 @@
+.so man3/krb5_v4compat.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_acc_ops.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_acc_ops.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_acc_ops.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_acl_match_file.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_acl_match_file.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_acl_match_file.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_acl_match_string.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_acl_match_string.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_acl_match_string.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_add_et_list.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_add_et_list.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_add_et_list.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_add_extra_addresses.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_add_extra_addresses.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_add_extra_addresses.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_add_ignore_addresses.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_add_ignore_addresses.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_add_ignore_addresses.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_addr2sockaddr.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_addr2sockaddr.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_addr2sockaddr.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address.3
new file mode 100644
index 000000000000..9b2e5d92984c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address.3
@@ -0,0 +1,461 @@
+.TH "Heimdal Kerberos 5 address functions" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal Kerberos 5 address functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_sockaddr2address\fP (krb5_context context, const struct sockaddr *sa, krb5_address *addr)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_sockaddr2port\fP (krb5_context context, const struct sockaddr *sa, int16_t *port)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_addr2sockaddr\fP (krb5_context context, const krb5_address *addr, struct sockaddr *sa, krb5_socklen_t *sa_size, int port)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION size_t KRB5_LIB_CALL \fBkrb5_max_sockaddr_size\fP (void)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_sockaddr_uninteresting\fP (const struct sockaddr *sa)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_h_addr2sockaddr\fP (krb5_context context, int af, const char *addr, struct sockaddr *sa, krb5_socklen_t *sa_size, int port)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_h_addr2addr\fP (krb5_context context, int af, const char *haddr, krb5_address *addr)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_anyaddr\fP (krb5_context context, int af, struct sockaddr *sa, krb5_socklen_t *sa_size, int port)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_print_address\fP (const krb5_address *addr, char *str, size_t len, size_t *ret_len)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_parse_address\fP (krb5_context context, const char *string, krb5_addresses *addresses)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION int KRB5_LIB_CALL \fBkrb5_address_order\fP (krb5_context context, const krb5_address *addr1, const krb5_address *addr2)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_address_compare\fP (krb5_context context, const krb5_address *addr1, const krb5_address *addr2)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_address_search\fP (krb5_context context, const krb5_address *addr, const krb5_addresses *addrlist)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_free_address\fP (krb5_context context, krb5_address *address)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_free_addresses\fP (krb5_context context, krb5_addresses *addresses)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_copy_address\fP (krb5_context context, const krb5_address *inaddr, krb5_address *outaddr)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_copy_addresses\fP (krb5_context context, const krb5_addresses *inaddr, krb5_addresses *outaddr)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_append_addresses\fP (krb5_context context, krb5_addresses *dest, const krb5_addresses *source)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_make_addrport\fP (krb5_context context, krb5_address **res, const krb5_address *addr, int16_t port)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_address_prefixlen_boundary\fP (krb5_context context, const krb5_address *inaddr, unsigned long prefixlen, krb5_address *low, krb5_address *high)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_addr2sockaddr (krb5_context context, const krb5_address * addr, struct sockaddr * sa, krb5_socklen_t * sa_size, int port)"
+.PP
+krb5_addr2sockaddr sets the 'struct sockaddr sockaddr' from addr and port. The argument sa_size should initially contain the size of the sa and after the call, it will contain the actual length of the address. In case of the sa is too small to fit the whole address, the up to *sa_size will be stored, and then *sa_size will be set to the required length.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIaddr\fP the address to copy the from
+.br
+\fIsa\fP the struct sockaddr that will be filled in
+.br
+\fIsa_size\fP pointer to length of sa, and after the call, it will contain the actual length of the address.
+.br
+\fIport\fP set port in sa.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0. Will return KRB5_PROG_ATYPE_NOSUPP in case address type is not supported.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_address_compare (krb5_context context, const krb5_address * addr1, const krb5_address * addr2)"
+.PP
+krb5_address_compare compares the addresses addr1 and addr2. Returns TRUE if the two addresses are the same.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIaddr1\fP address to compare
+.br
+\fIaddr2\fP address to compare
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an TRUE is the address are the same FALSE if not
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_address_order (krb5_context context, const krb5_address * addr1, const krb5_address * addr2)"
+.PP
+krb5_address_order compares the addresses addr1 and addr2 so that it can be used for sorting addresses. If the addresses are the same address krb5_address_order will return 0. Behavies like memcmp(2).
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIaddr1\fP krb5_address to compare
+.br
+\fIaddr2\fP krb5_address to compare
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+< 0 if address addr1 in 'less' then addr2. 0 if addr1 and addr2 is the same address, > 0 if addr2 is 'less' then addr1.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_address_prefixlen_boundary (krb5_context context, const krb5_address * inaddr, unsigned long prefixlen, krb5_address * low, krb5_address * high)"
+.PP
+Calculate the boundary addresses of `inaddr'/`prefixlen' and store them in `low' and `high'.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIinaddr\fP address in prefixlen that the bondery searched
+.br
+\fIprefixlen\fP width of boundery
+.br
+\fIlow\fP lowest address
+.br
+\fIhigh\fP highest address
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_address_search (krb5_context context, const krb5_address * addr, const krb5_addresses * addrlist)"
+.PP
+krb5_address_search checks if the address addr is a member of the address set list addrlist .
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIaddr\fP address to search for.
+.br
+\fIaddrlist\fP list of addresses to look in for addr.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_anyaddr (krb5_context context, int af, struct sockaddr * sa, krb5_socklen_t * sa_size, int port)"
+.PP
+krb5_anyaddr fills in a 'struct sockaddr sa' that can be used to bind(2) to. The argument sa_size should initially contain the size of the sa, and after the call, it will contain the actual length of the address.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIaf\fP address family
+.br
+\fIsa\fP sockaddr
+.br
+\fIsa_size\fP lenght of sa.
+.br
+\fIport\fP for to fill into sa.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_append_addresses (krb5_context context, krb5_addresses * dest, const krb5_addresses * source)"
+.PP
+krb5_append_addresses adds the set of addresses in source to dest. While copying the addresses, duplicates are also sorted out.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIdest\fP destination of copy operation
+.br
+\fIsource\fP adresses that are going to be added to dest
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_address (krb5_context context, const krb5_address * inaddr, krb5_address * outaddr)"
+.PP
+krb5_copy_address copies the content of address inaddr to outaddr.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIinaddr\fP pointer to source address
+.br
+\fIoutaddr\fP pointer to destination address
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_addresses (krb5_context context, const krb5_addresses * inaddr, krb5_addresses * outaddr)"
+.PP
+krb5_copy_addresses copies the content of addresses inaddr to outaddr.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIinaddr\fP pointer to source addresses
+.br
+\fIoutaddr\fP pointer to destination addresses
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_free_address (krb5_context context, krb5_address * address)"
+.PP
+krb5_free_address frees the data stored in the address that is alloced with any of the krb5_address functions.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIaddress\fP addresss to be freed.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_free_addresses (krb5_context context, krb5_addresses * addresses)"
+.PP
+krb5_free_addresses frees the data stored in the address that is alloced with any of the krb5_address functions.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIaddresses\fP addressses to be freed.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_h_addr2addr (krb5_context context, int af, const char * haddr, krb5_address * addr)"
+.PP
+krb5_h_addr2addr works like krb5_h_addr2sockaddr with the exception that it operates on a krb5_address instead of a struct sockaddr.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIaf\fP address family
+.br
+\fIhaddr\fP host address from struct hostent.
+.br
+\fIaddr\fP returned krb5_address.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_h_addr2sockaddr (krb5_context context, int af, const char * addr, struct sockaddr * sa, krb5_socklen_t * sa_size, int port)"
+.PP
+krb5_h_addr2sockaddr initializes a 'struct sockaddr sa' from af and the 'struct hostent' (see gethostbyname(3) ) h_addr_list component. The argument sa_size should initially contain the size of the sa, and after the call, it will contain the actual length of the address.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIaf\fP addresses
+.br
+\fIaddr\fP address
+.br
+\fIsa\fP returned struct sockaddr
+.br
+\fIsa_size\fP size of sa
+.br
+\fIport\fP port to set in sa.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_make_addrport (krb5_context context, krb5_address ** res, const krb5_address * addr, int16_t port)"
+.PP
+Create an address of type KRB5_ADDRESS_ADDRPORT from (addr, port)
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIres\fP built address from addr/port
+.br
+\fIaddr\fP address to use
+.br
+\fIport\fP port to use
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION size_t KRB5_LIB_CALL krb5_max_sockaddr_size (void)"
+.PP
+krb5_max_sockaddr_size returns the max size of the .Li struct sockaddr that the Kerberos library will return.
+.PP
+\fBReturns:\fP
+.RS 4
+Return an size_t of the maximum struct sockaddr.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_parse_address (krb5_context context, const char * string, krb5_addresses * addresses)"
+.PP
+krb5_parse_address returns the resolved hostname in string to the krb5_addresses addresses .
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIstring\fP
+.br
+\fIaddresses\fP
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_print_address (const krb5_address * addr, char * str, size_t len, size_t * ret_len)"
+.PP
+krb5_print_address prints the address in addr to the string string that have the length len. If ret_len is not NULL, it will be filled with the length of the string if size were unlimited (not including the final NUL) .
+.PP
+\fBParameters:\fP
+.RS 4
+\fIaddr\fP address to be printed
+.br
+\fIstr\fP pointer string to print the address into
+.br
+\fIlen\fP length that will fit into area pointed to by 'str'.
+.br
+\fIret_len\fP return length the str.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_sockaddr2address (krb5_context context, const struct sockaddr * sa, krb5_address * addr)"
+.PP
+krb5_sockaddr2address stores a address a 'struct sockaddr' sa in the krb5_address addr.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIsa\fP a struct sockaddr to extract the address from
+.br
+\fIaddr\fP an Kerberos 5 address to store the address in.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_sockaddr2port (krb5_context context, const struct sockaddr * sa, int16_t * port)"
+.PP
+krb5_sockaddr2port extracts a port (if possible) from a 'struct sockaddr.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIsa\fP a struct sockaddr to extract the port from
+.br
+\fIport\fP a pointer to an int16_t store the port in.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0. Will return KRB5_PROG_ATYPE_NOSUPP in case address type is not supported.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_sockaddr_uninteresting (const struct sockaddr * sa)"
+.PP
+krb5_sockaddr_uninteresting returns TRUE for all .Fa sa that the kerberos library thinks are uninteresting. One example are link local addresses.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsa\fP pointer to struct sockaddr that might be interesting.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return a non zero for uninteresting addresses.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address_compare.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address_compare.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address_compare.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address_order.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address_order.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address_order.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address_prefixlen_boundary.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address_prefixlen_boundary.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address_prefixlen_boundary.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address_search.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address_search.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address_search.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_allow_weak_crypto.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_allow_weak_crypto.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_allow_weak_crypto.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_anyaddr.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_anyaddr.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_anyaddr.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_append_addresses.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_append_addresses.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_append_addresses.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_auth.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_auth.3
new file mode 100644
index 000000000000..58edda697d48
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_auth.3
@@ -0,0 +1,138 @@
+.TH "Heimdal Kerberos 5 authentication functions" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal Kerberos 5 authentication functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_rd_req_in_ctx_alloc\fP (krb5_context context, krb5_rd_req_in_ctx *ctx)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_rd_req_in_set_keytab\fP (krb5_context context, krb5_rd_req_in_ctx in, krb5_keytab keytab)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_rd_req_in_set_pac_check\fP (krb5_context context, krb5_rd_req_in_ctx in, krb5_boolean flag)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_rd_req_out_get_server\fP (krb5_context context, krb5_rd_req_out_ctx out, krb5_principal *principal)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_rd_req_out_ctx_free\fP (krb5_context context, krb5_rd_req_out_ctx ctx)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_rd_req_ctx\fP (krb5_context context, krb5_auth_context *auth_context, const krb5_data *inbuf, krb5_const_principal server, krb5_rd_req_in_ctx inctx, krb5_rd_req_out_ctx *outctx)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_rd_req_ctx (krb5_context context, krb5_auth_context * auth_context, const krb5_data * inbuf, krb5_const_principal server, krb5_rd_req_in_ctx inctx, krb5_rd_req_out_ctx * outctx)"
+.PP
+The core server function that verify application authentication requests from clients.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Keberos 5 context.
+.br
+\fIauth_context\fP the authentication context, can be NULL, then default values for the authentication context will used.
+.br
+\fIinbuf\fP the (AP-REQ) authentication buffer
+.br
+\fIserver\fP the server with authenticate as, if NULL the function will try to find any available credential in the keytab that will verify the reply. The function will prefer the server the server client specified in the AP-REQ, but if there is no mach, it will try all keytab entries for a match. This have serious performance issues for larger keytabs.
+.br
+\fIinctx\fP control the behavior of the function, if NULL, the default behavior is used.
+.br
+\fIoutctx\fP the return outctx, free with \fBkrb5_rd_req_out_ctx_free()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Kerberos 5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_rd_req_in_ctx_alloc (krb5_context context, krb5_rd_req_in_ctx * ctx)"
+.PP
+Allocate a krb5_rd_req_in_ctx as an input parameter to \fBkrb5_rd_req_ctx()\fP. The caller should free the context with krb5_rd_req_in_ctx_free() when done with the context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Keberos 5 context.
+.br
+\fIctx\fP in ctx to \fBkrb5_rd_req_ctx()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Kerberos 5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_rd_req_in_set_keytab (krb5_context context, krb5_rd_req_in_ctx in, krb5_keytab keytab)"
+.PP
+Set the keytab that \fBkrb5_rd_req_ctx()\fP will use.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Keberos 5 context.
+.br
+\fIin\fP in ctx to \fBkrb5_rd_req_ctx()\fP.
+.br
+\fIkeytab\fP keytab that \fBkrb5_rd_req_ctx()\fP will use, only copy the pointer, so the caller must free they keytab after krb5_rd_req_in_ctx_free() is called.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Kerberos 5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_rd_req_in_set_pac_check (krb5_context context, krb5_rd_req_in_ctx in, krb5_boolean flag)"
+.PP
+Set if krb5_rq_red() is going to check the Windows PAC or not
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Keberos 5 context.
+.br
+\fIin\fP krb5_rd_req_in_ctx to check the option on.
+.br
+\fIflag\fP flag to select if to check the pac (TRUE) or not (FALSE).
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Kerberos 5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_rd_req_out_ctx_free (krb5_context context, krb5_rd_req_out_ctx ctx)"
+.PP
+Free the krb5_rd_req_out_ctx.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Keberos 5 context.
+.br
+\fIctx\fP krb5_rd_req_out_ctx context to free.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_rd_req_out_get_server (krb5_context context, krb5_rd_req_out_ctx out, krb5_principal * principal)"
+.PP
+Get the principal that was used in the request from the client. Might not match whats in the ticket if \fBkrb5_rd_req_ctx()\fP searched in the keytab for a matching key.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Kerberos 5 context.
+.br
+\fIout\fP a krb5_rd_req_out_ctx from \fBkrb5_rd_req_ctx()\fP.
+.br
+\fIprincipal\fP return principal, free with \fBkrb5_free_principal()\fP.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_auth_getremoteseqnumber.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_auth_getremoteseqnumber.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_auth_getremoteseqnumber.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_build_principal.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_build_principal.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_build_principal.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_c_enctype_compare.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_c_enctype_compare.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_c_enctype_compare.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_cache_end_seq_get.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_cache_end_seq_get.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_cache_end_seq_get.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_cache_get_first.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_cache_get_first.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_cache_get_first.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_cache_match.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_cache_match.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_cache_match.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_cache_next.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_cache_next.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_cache_next.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_clear_mcred.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_clear_mcred.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_clear_mcred.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_close.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_close.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_close.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_copy_cache.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_copy_cache.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_copy_cache.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_copy_creds.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_copy_creds.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_copy_creds.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_copy_match_f.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_copy_match_f.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_copy_match_f.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_default.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_default.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_default.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_default_name.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_default_name.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_default_name.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_destroy.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_destroy.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_destroy.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_end_seq_get.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_end_seq_get.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_end_seq_get.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_gen_new.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_gen_new.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_gen_new.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_config.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_config.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_config.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_flags.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_flags.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_flags.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_friendly_name.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_friendly_name.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_friendly_name.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_full_name.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_full_name.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_full_name.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_kdc_offset.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_kdc_offset.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_kdc_offset.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_lifetime.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_lifetime.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_lifetime.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_name.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_name.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_name.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_ops.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_ops.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_ops.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_prefix_ops.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_prefix_ops.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_prefix_ops.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_principal.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_principal.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_principal.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_type.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_type.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_type.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_version.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_version.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_get_version.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_initialize.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_initialize.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_initialize.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_last_change_time.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_last_change_time.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_last_change_time.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_move.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_move.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_move.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_new_unique.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_new_unique.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_new_unique.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_next_cred.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_next_cred.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_next_cred.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_register.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_register.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_register.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_remove_cred.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_remove_cred.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_remove_cred.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_resolve.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_resolve.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_resolve.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_retrieve_cred.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_retrieve_cred.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_retrieve_cred.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_config.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_config.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_config.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_default_name.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_default_name.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_default_name.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_flags.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_flags.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_flags.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_friendly_name.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_friendly_name.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_friendly_name.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_kdc_offset.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_kdc_offset.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_set_kdc_offset.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_start_seq_get.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_start_seq_get.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_start_seq_get.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_store_cred.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_store_cred.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_store_cred.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_support_switch.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_support_switch.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_support_switch.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_switch.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_switch.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cc_switch.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3
new file mode 100644
index 000000000000..3c9b05e00869
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3
@@ -0,0 +1,888 @@
+.TH "Heimdal Kerberos 5 credential cache functions" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal Kerberos 5 credential cache functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_register\fP (krb5_context context, const krb5_cc_ops *ops, krb5_boolean override)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_resolve\fP (krb5_context context, const char *name, krb5_ccache *id)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_new_unique\fP (krb5_context context, const char *type, const char *hint, krb5_ccache *id)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION const char *KRB5_LIB_CALL \fBkrb5_cc_get_name\fP (krb5_context context, krb5_ccache id)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION const char *KRB5_LIB_CALL \fBkrb5_cc_get_type\fP (krb5_context context, krb5_ccache id)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_get_full_name\fP (krb5_context context, krb5_ccache id, char **str)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION const krb5_cc_ops *KRB5_LIB_CALL \fBkrb5_cc_get_ops\fP (krb5_context context, krb5_ccache id)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_switch\fP (krb5_context context, krb5_ccache id)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_cc_support_switch\fP (krb5_context context, const char *type)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_set_default_name\fP (krb5_context context, const char *name)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION const char *KRB5_LIB_CALL \fBkrb5_cc_default_name\fP (krb5_context context)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_default\fP (krb5_context context, krb5_ccache *id)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_initialize\fP (krb5_context context, krb5_ccache id, krb5_principal primary_principal)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_destroy\fP (krb5_context context, krb5_ccache id)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_close\fP (krb5_context context, krb5_ccache id)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_store_cred\fP (krb5_context context, krb5_ccache id, krb5_creds *creds)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_retrieve_cred\fP (krb5_context context, krb5_ccache id, krb5_flags whichfields, const krb5_creds *mcreds, krb5_creds *creds)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_get_principal\fP (krb5_context context, krb5_ccache id, krb5_principal *principal)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_start_seq_get\fP (krb5_context context, const krb5_ccache id, krb5_cc_cursor *cursor)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_next_cred\fP (krb5_context context, const krb5_ccache id, krb5_cc_cursor *cursor, krb5_creds *creds)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_end_seq_get\fP (krb5_context context, const krb5_ccache id, krb5_cc_cursor *cursor)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_remove_cred\fP (krb5_context context, krb5_ccache id, krb5_flags which, krb5_creds *cred)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_set_flags\fP (krb5_context context, krb5_ccache id, krb5_flags flags)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_get_flags\fP (krb5_context context, krb5_ccache id, krb5_flags *flags)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_copy_match_f\fP (krb5_context context, const krb5_ccache from, krb5_ccache to, krb5_boolean(*match)(krb5_context, void *, const krb5_creds *), void *matchctx, unsigned int *matched)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_copy_cache\fP (krb5_context context, const krb5_ccache from, krb5_ccache to)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_get_version\fP (krb5_context context, const krb5_ccache id)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_cc_clear_mcred\fP (krb5_creds *mcred)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION const krb5_cc_ops *KRB5_LIB_CALL \fBkrb5_cc_get_prefix_ops\fP (krb5_context context, const char *prefix)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_cache_get_first\fP (krb5_context context, const char *type, krb5_cc_cache_cursor *cursor)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_cache_next\fP (krb5_context context, krb5_cc_cache_cursor cursor, krb5_ccache *id)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_cache_end_seq_get\fP (krb5_context context, krb5_cc_cache_cursor cursor)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_cache_match\fP (krb5_context context, krb5_principal client, krb5_ccache *id)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_move\fP (krb5_context context, krb5_ccache from, krb5_ccache to)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_is_config_principal\fP (krb5_context context, krb5_const_principal principal)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_set_config\fP (krb5_context context, krb5_ccache id, krb5_const_principal principal, const char *name, krb5_data *data)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_get_config\fP (krb5_context context, krb5_ccache id, krb5_const_principal principal, const char *name, krb5_data *data)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cccol_cursor_new\fP (krb5_context context, krb5_cccol_cursor *cursor)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cccol_cursor_next\fP (krb5_context context, krb5_cccol_cursor cursor, krb5_ccache *cache)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cccol_cursor_free\fP (krb5_context context, krb5_cccol_cursor *cursor)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_last_change_time\fP (krb5_context context, krb5_ccache id, krb5_timestamp *mtime)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cccol_last_change_time\fP (krb5_context context, const char *type, krb5_timestamp *mtime)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_get_friendly_name\fP (krb5_context context, krb5_ccache id, char **name)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_set_friendly_name\fP (krb5_context context, krb5_ccache id, const char *name)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_get_lifetime\fP (krb5_context context, krb5_ccache id, time_t *t)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_set_kdc_offset\fP (krb5_context context, krb5_ccache id, krb5_deltat offset)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_get_kdc_offset\fP (krb5_context context, krb5_ccache id, krb5_deltat *offset)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_gen_new\fP (krb5_context context, const krb5_cc_ops *ops, krb5_ccache *id) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cc_copy_creds\fP (krb5_context context, const krb5_ccache from, krb5_ccache to)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_get_validated_creds\fP (krb5_context context, krb5_creds *creds, krb5_principal client, krb5_ccache ccache, char *service)"
+.br
+.in -1c
+.SS "Variables"
+
+.in +1c
+.ti -1c
+.RI "KRB5_LIB_VARIABLE const krb5_cc_ops \fBkrb5_acc_ops\fP"
+.br
+.ti -1c
+.RI "KRB5_LIB_VARIABLE const krb5_cc_ops \fBkrb5_fcc_ops\fP"
+.br
+.ti -1c
+.RI "KRB5_LIB_VARIABLE const krb5_cc_ops \fBkrb5_mcc_ops\fP"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_cache_end_seq_get (krb5_context context, krb5_cc_cache_cursor cursor)"
+.PP
+Destroy the cursor `cursor'.
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_cache_get_first (krb5_context context, const char * type, krb5_cc_cache_cursor * cursor)"
+.PP
+Start iterating over all caches of specified type. See also \fBkrb5_cccol_cursor_new()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context
+.br
+\fItype\fP optional type to iterate over, if NULL, the default cache is used.
+.br
+\fIcursor\fP cursor should be freed with \fBkrb5_cc_cache_end_seq_get()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_cache_match (krb5_context context, krb5_principal client, krb5_ccache * id)"
+.PP
+Search for a matching credential cache that have the `principal' as the default principal. On success, `id' needs to be freed with \fBkrb5_cc_close()\fP or \fBkrb5_cc_destroy()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context
+.br
+\fIclient\fP The principal to search for
+.br
+\fIid\fP the returned credential cache
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+On failure, error code is returned and `id' is set to NULL.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_cache_next (krb5_context context, krb5_cc_cache_cursor cursor, krb5_ccache * id)"
+.PP
+Retrieve the next cache pointed to by (`cursor') in `id' and advance `cursor'.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context
+.br
+\fIcursor\fP the iterator cursor, returned by \fBkrb5_cc_cache_get_first()\fP
+.br
+\fIid\fP next ccache
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return 0 or an error code. Returns KRB5_CC_END when the end of caches is reached, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_cc_clear_mcred (krb5_creds * mcred)"
+.PP
+Clear `mcreds' so it can be used with krb5_cc_retrieve_cred
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_close (krb5_context context, krb5_ccache id)"
+.PP
+Stop using the ccache `id' and free the related resources.
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_copy_cache (krb5_context context, const krb5_ccache from, krb5_ccache to)"
+.PP
+Just like \fBkrb5_cc_copy_match_f()\fP, but copy everything.
+.PP
+@
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_copy_creds (krb5_context context, const krb5_ccache from, krb5_ccache to)"
+.PP
+MIT compat glue
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_copy_match_f (krb5_context context, const krb5_ccache from, krb5_ccache to, krb5_boolean(*)(krb5_context, void *, const krb5_creds *) match, void * matchctx, unsigned int * matched)"
+.PP
+Copy the contents of `from' to `to' if the given match function return true.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIfrom\fP the cache to copy data from.
+.br
+\fIto\fP the cache to copy data to.
+.br
+\fImatch\fP a match function that should return TRUE if cred argument should be copied, if NULL, all credentials are copied.
+.br
+\fImatchctx\fP context passed to match function.
+.br
+\fImatched\fP set to true if there was a credential that matched, may be NULL.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_default (krb5_context context, krb5_ccache * id)"
+.PP
+Open the default ccache in `id'.
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL krb5_cc_default_name (krb5_context context)"
+.PP
+Return a pointer to a context static string containing the default ccache name.
+.PP
+\fBReturns:\fP
+.RS 4
+String to the default credential cache name.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_destroy (krb5_context context, krb5_ccache id)"
+.PP
+Remove the ccache `id'.
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_end_seq_get (krb5_context context, const krb5_ccache id, krb5_cc_cursor * cursor)"
+.PP
+Destroy the cursor `cursor'.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_gen_new (krb5_context context, const krb5_cc_ops * ops, krb5_ccache * id)"
+.PP
+Generate a new ccache of type `ops' in `id'.
+.PP
+Deprecated: use \fBkrb5_cc_new_unique()\fP instead.
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_config (krb5_context context, krb5_ccache id, krb5_const_principal principal, const char * name, krb5_data * data)"
+.PP
+Get some configuration for the credential cache in the cache.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIid\fP the credential cache to store the data for
+.br
+\fIprincipal\fP configuration for a specific principal, if NULL, global for the whole cache.
+.br
+\fIname\fP name under which the configuraion is stored.
+.br
+\fIdata\fP data to fetched, free with \fBkrb5_data_free()\fP
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_flags (krb5_context context, krb5_ccache id, krb5_flags * flags)"
+.PP
+Get the flags of `id', store them in `flags'.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_friendly_name (krb5_context context, krb5_ccache id, char ** name)"
+.PP
+Return a friendly name on credential cache. Free the result with krb5_xfree().
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_full_name (krb5_context context, krb5_ccache id, char ** str)"
+.PP
+Return the complete resolvable name the cache
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIid\fP return pointer to a found credential cache
+.br
+\fIstr\fP the returned name of a credential cache, free with krb5_xfree()
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 or an error (and then *str is set to NULL).
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_kdc_offset (krb5_context context, krb5_ccache id, krb5_deltat * offset)"
+.PP
+Get the time offset betwen the client and the KDC
+.PP
+If the backend doesn't support KDC offset, use the context global setting.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIid\fP a credential cache
+.br
+\fIoffset\fP the offset in seconds
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_lifetime (krb5_context context, krb5_ccache id, time_t * t)"
+.PP
+Get the lifetime of the initial ticket in the cache
+.PP
+Get the lifetime of the initial ticket in the cache, if the initial ticket was not found, the error code KRB5_CC_END is returned.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIid\fP a credential cache
+.br
+\fIt\fP the relative lifetime of the initial ticket
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL krb5_cc_get_name (krb5_context context, krb5_ccache id)"
+.PP
+Return the name of the ccache `id'
+.SS "KRB5_LIB_FUNCTION const krb5_cc_ops* KRB5_LIB_CALL krb5_cc_get_ops (krb5_context context, krb5_ccache id)"
+.PP
+Return krb5_cc_ops of a the ccache `id'.
+.SS "KRB5_LIB_FUNCTION const krb5_cc_ops* KRB5_LIB_CALL krb5_cc_get_prefix_ops (krb5_context context, const char * prefix)"
+.PP
+Get the cc ops that is registered in `context' to handle the prefix. prefix can be a complete credential cache name or a prefix, the function will only use part up to the first colon (:) if there is one. If prefix the argument is NULL, the default ccache implemtation is returned.
+.PP
+\fBReturns:\fP
+.RS 4
+Returns NULL if ops not found.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_principal (krb5_context context, krb5_ccache id, krb5_principal * principal)"
+.PP
+Return the principal of `id' in `principal'.
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL krb5_cc_get_type (krb5_context context, krb5_ccache id)"
+.PP
+Return the type of the ccache `id'.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_version (krb5_context context, const krb5_ccache id)"
+.PP
+Return the version of `id'.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_initialize (krb5_context context, krb5_ccache id, krb5_principal primary_principal)"
+.PP
+Create a new ccache in `id' for `primary_principal'.
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_last_change_time (krb5_context context, krb5_ccache id, krb5_timestamp * mtime)"
+.PP
+Return the last time the credential cache was modified.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context
+.br
+\fIid\fP The credential cache to probe
+.br
+\fImtime\fP the last modification time, set to 0 on error.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return 0 or and error. See krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_move (krb5_context context, krb5_ccache from, krb5_ccache to)"
+.PP
+Move the content from one credential cache to another. The operation is an atomic switch.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIfrom\fP the credential cache to move the content from
+.br
+\fIto\fP the credential cache to move the content to
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+On sucess, from is freed. On failure, error code is returned and from and to are both still allocated, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_new_unique (krb5_context context, const char * type, const char * hint, krb5_ccache * id)"
+.PP
+Generates a new unique ccache of `type` in `id'. If `type' is NULL, the library chooses the default credential cache type. The supplied `hint' (that can be NULL) is a string that the credential cache type can use to base the name of the credential on, this is to make it easier for the user to differentiate the credentials.
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_next_cred (krb5_context context, const krb5_ccache id, krb5_cc_cursor * cursor, krb5_creds * creds)"
+.PP
+Retrieve the next cred pointed to by (`id', `cursor') in `creds' and advance `cursor'.
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_register (krb5_context context, const krb5_cc_ops * ops, krb5_boolean override)"
+.PP
+Add a new ccache type with operations `ops', overwriting any existing one if `override'.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIops\fP type of plugin symbol
+.br
+\fIoverride\fP flag to select if the registration is to overide an existing ops with the same name.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_remove_cred (krb5_context context, krb5_ccache id, krb5_flags which, krb5_creds * cred)"
+.PP
+Remove the credential identified by `cred', `which' from `id'.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_resolve (krb5_context context, const char * name, krb5_ccache * id)"
+.PP
+Find and allocate a ccache in `id' from the specification in `residual'. If the ccache name doesn't contain any colon, interpret it as a file name.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIname\fP string name of a credential cache.
+.br
+\fIid\fP return pointer to a found credential cache.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return 0 or an error code. In case of an error, id is set to NULL, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_retrieve_cred (krb5_context context, krb5_ccache id, krb5_flags whichfields, const krb5_creds * mcreds, krb5_creds * creds)"
+.PP
+Retrieve the credential identified by `mcreds' (and `whichfields') from `id' in `creds'. 'creds' must be free by the caller using krb5_free_cred_contents.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context
+.br
+\fIid\fP a Kerberos 5 credential cache
+.br
+\fIwhichfields\fP what fields to use for matching credentials, same flags as whichfields in \fBkrb5_compare_creds()\fP
+.br
+\fImcreds\fP template credential to use for comparing
+.br
+\fIcreds\fP returned credential, free with \fBkrb5_free_cred_contents()\fP
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_set_config (krb5_context context, krb5_ccache id, krb5_const_principal principal, const char * name, krb5_data * data)"
+.PP
+Store some configuration for the credential cache in the cache. Existing configuration under the same name is over-written.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIid\fP the credential cache to store the data for
+.br
+\fIprincipal\fP configuration for a specific principal, if NULL, global for the whole cache.
+.br
+\fIname\fP name under which the configuraion is stored.
+.br
+\fIdata\fP data to store, if NULL, configure is removed.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_set_default_name (krb5_context context, const char * name)"
+.PP
+Set the default cc name for `context' to `name'.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_set_flags (krb5_context context, krb5_ccache id, krb5_flags flags)"
+.PP
+Set the flags of `id' to `flags'.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_set_friendly_name (krb5_context context, krb5_ccache id, const char * name)"
+.PP
+Set the friendly name on credential cache.
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_set_kdc_offset (krb5_context context, krb5_ccache id, krb5_deltat offset)"
+.PP
+Set the time offset betwen the client and the KDC
+.PP
+If the backend doesn't support KDC offset, use the context global setting.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIid\fP a credential cache
+.br
+\fIoffset\fP the offset in seconds
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_start_seq_get (krb5_context context, const krb5_ccache id, krb5_cc_cursor * cursor)"
+.PP
+Start iterating over `id', `cursor' is initialized to the beginning. Caller must free the cursor with \fBkrb5_cc_end_seq_get()\fP.
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_store_cred (krb5_context context, krb5_ccache id, krb5_creds * creds)"
+.PP
+Store `creds' in the ccache `id'.
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_cc_support_switch (krb5_context context, const char * type)"
+.PP
+Return true if the default credential cache support switch
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_switch (krb5_context context, krb5_ccache id)"
+.PP
+Switch the default default credential cache for a specific credcache type (and name for some implementations).
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cccol_cursor_free (krb5_context context, krb5_cccol_cursor * cursor)"
+.PP
+End an iteration and free all resources, can be done before end is reached.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context
+.br
+\fIcursor\fP the iteration cursor to be freed.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return 0 or and error, KRB5_CC_END is returned at the end of iteration. See krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cccol_cursor_new (krb5_context context, krb5_cccol_cursor * cursor)"
+.PP
+Get a new cache interation cursor that will interate over all credentials caches independent of type.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIcursor\fP passed into \fBkrb5_cccol_cursor_next()\fP and free with \fBkrb5_cccol_cursor_free()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 or and error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cccol_cursor_next (krb5_context context, krb5_cccol_cursor cursor, krb5_ccache * cache)"
+.PP
+Get next credential cache from the iteration.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context
+.br
+\fIcursor\fP the iteration cursor
+.br
+\fIcache\fP the returned cursor, pointer is set to NULL on failure and a cache on success. The returned cache needs to be freed with \fBkrb5_cc_close()\fP or destroyed with \fBkrb5_cc_destroy()\fP. MIT Kerberos behavies slightly diffrent and sets cache to NULL when all caches are iterated over and return 0.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return 0 or and error, KRB5_CC_END is returned at the end of iteration. See krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cccol_last_change_time (krb5_context context, const char * type, krb5_timestamp * mtime)"
+.PP
+Return the last modfication time for a cache collection. The query can be limited to a specific cache type. If the function return 0 and mtime is 0, there was no credentials in the caches.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context
+.br
+\fItype\fP The credential cache to probe, if NULL, all type are traversed.
+.br
+\fImtime\fP the last modification time, set to 0 on error.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return 0 or and error. See krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_validated_creds (krb5_context context, krb5_creds * creds, krb5_principal client, krb5_ccache ccache, char * service)"
+.PP
+Validate the newly fetch credential, see also krb5_verify_init_creds().
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Kerberos 5 context
+.br
+\fIcreds\fP the credentials to verify
+.br
+\fIclient\fP the client name to match up
+.br
+\fIccache\fP the credential cache to use
+.br
+\fIservice\fP a service name to use, used with \fBkrb5_sname_to_principal()\fP to build a hostname to use to verify.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_is_config_principal (krb5_context context, krb5_const_principal principal)"
+.PP
+Return TRUE (non zero) if the principal is a configuration principal (generated part of \fBkrb5_cc_set_config()\fP). Returns FALSE (zero) if not a configuration principal.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIprincipal\fP principal to check if it a configuration principal
+.RE
+.PP
+
+.SH "Variable Documentation"
+.PP
+.SS "KRB5_LIB_VARIABLE const krb5_cc_ops \fBkrb5_acc_ops\fP"
+.PP
+\fBInitial value:\fP
+.PP
+.nf
+ {
+ KRB5_CC_OPS_VERSION,
+ 'API',
+ acc_get_name,
+ acc_resolve,
+ acc_gen_new,
+ acc_initialize,
+ acc_destroy,
+ acc_close,
+ acc_store_cred,
+ NULL,
+ acc_get_principal,
+ acc_get_first,
+ acc_get_next,
+ acc_end_get,
+ acc_remove_cred,
+ acc_set_flags,
+ acc_get_version,
+ acc_get_cache_first,
+ acc_get_cache_next,
+ acc_end_cache_get,
+ acc_move,
+ acc_get_default_name,
+ acc_set_default,
+ acc_lastchange,
+ NULL,
+ NULL,
+}
+.fi
+Variable containing the API based credential cache implemention.
+.SS "KRB5_LIB_VARIABLE const krb5_cc_ops \fBkrb5_fcc_ops\fP"
+.PP
+\fBInitial value:\fP
+.PP
+.nf
+ {
+ KRB5_CC_OPS_VERSION,
+ 'FILE',
+ fcc_get_name,
+ fcc_resolve,
+ fcc_gen_new,
+ fcc_initialize,
+ fcc_destroy,
+ fcc_close,
+ fcc_store_cred,
+ NULL,
+ fcc_get_principal,
+ fcc_get_first,
+ fcc_get_next,
+ fcc_end_get,
+ fcc_remove_cred,
+ fcc_set_flags,
+ fcc_get_version,
+ fcc_get_cache_first,
+ fcc_get_cache_next,
+ fcc_end_cache_get,
+ fcc_move,
+ fcc_get_default_name,
+ NULL,
+ fcc_lastchange,
+ fcc_set_kdc_offset,
+ fcc_get_kdc_offset
+}
+.fi
+Variable containing the FILE based credential cache implemention.
+.SS "KRB5_LIB_VARIABLE const krb5_cc_ops \fBkrb5_mcc_ops\fP"
+.PP
+\fBInitial value:\fP
+.PP
+.nf
+ {
+ KRB5_CC_OPS_VERSION,
+ 'MEMORY',
+ mcc_get_name,
+ mcc_resolve,
+ mcc_gen_new,
+ mcc_initialize,
+ mcc_destroy,
+ mcc_close,
+ mcc_store_cred,
+ NULL,
+ mcc_get_principal,
+ mcc_get_first,
+ mcc_get_next,
+ mcc_end_get,
+ mcc_remove_cred,
+ mcc_set_flags,
+ NULL,
+ mcc_get_cache_first,
+ mcc_get_cache_next,
+ mcc_end_cache_get,
+ mcc_move,
+ mcc_default_name,
+ NULL,
+ mcc_lastchange,
+ mcc_set_kdc_offset,
+ mcc_get_kdc_offset
+}
+.fi
+Variable containing the MEMORY based credential cache implemention.
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache_intro.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache_intro.3
new file mode 100644
index 000000000000..c5ac4acd1eab
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache_intro.3
@@ -0,0 +1,69 @@
+.TH "krb5_ccache_intro" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+krb5_ccache_intro \- The credential cache functions
+.SH "Kerberos credential caches"
+.PP
+krb5_ccache structure holds a Kerberos credential cache.
+.PP
+Heimdal support the follow types of credential caches:
+.PP
+.IP "\(bu" 2
+SCC Store the credential in a database
+.IP "\(bu" 2
+FILE Store the credential in memory
+.IP "\(bu" 2
+MEMORY Store the credential in memory
+.IP "\(bu" 2
+API A credential cache server based solution for Mac OS X
+.IP "\(bu" 2
+KCM A credential cache server based solution for all platforms
+.PP
+.SS "Example"
+This is a minimalistic version of klist:
+.PP
+.nf
+#include <krb5.h>
+
+int
+main (int argc, char **argv)
+{
+ krb5_context context;
+ krb5_cc_cursor cursor;
+ krb5_error_code ret;
+ krb5_ccache id;
+ krb5_creds creds;
+
+ if (krb5_init_context (&context) != 0)
+ errx(1, 'krb5_context');
+
+ ret = krb5_cc_default (context, &id);
+ if (ret)
+ krb5_err(context, 1, ret, 'krb5_cc_default');
+
+ ret = krb5_cc_start_seq_get(context, id, &cursor);
+ if (ret)
+ krb5_err(context, 1, ret, 'krb5_cc_start_seq_get');
+
+ while((ret = krb5_cc_next_cred(context, id, &cursor, &creds)) == 0){
+ char *principal;
+
+ krb5_unparse_name(context, creds.server, &principal);
+ printf('principal: %s\\n', principal);
+ free(principal);
+ krb5_free_cred_contents (context, &creds);
+ }
+ ret = krb5_cc_end_seq_get(context, id, &cursor);
+ if (ret)
+ krb5_err(context, 1, ret, 'krb5_cc_end_seq_get');
+
+ krb5_cc_close(context, id);
+
+ krb5_free_context(context);
+ return 0;
+}
+
+.fi
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cccol_cursor_free.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cccol_cursor_free.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cccol_cursor_free.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cccol_cursor_new.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cccol_cursor_new.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cccol_cursor_new.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cccol_cursor_next.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cccol_cursor_next.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cccol_cursor_next.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cccol_last_change_time.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cccol_last_change_time.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cccol_last_change_time.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_change_password.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_change_password.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_change_password.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cksumtype_to_enctype.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cksumtype_to_enctype.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_cksumtype_to_enctype.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_clear_error_message.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_clear_error_message.3
new file mode 100644
index 000000000000..f721fda2cd4b
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_clear_error_message.3
@@ -0,0 +1 @@
+.so man3/krb5_error.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_clear_error_string.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_clear_error_string.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_clear_error_string.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_compare_creds.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_compare_creds.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_compare_creds.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_file_free.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_file_free.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_file_free.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_free_strings.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_free_strings.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_free_strings.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_bool.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_bool.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_bool.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_bool_default.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_bool_default.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_bool_default.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_list.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_list.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_list.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_string.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_string.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_string.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_string_default.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_string_default.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_string_default.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_strings.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_strings.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_strings.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_time.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_time.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_time.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_time_default.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_time_default.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_get_time_default.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_parse_file_multi.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_parse_file_multi.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_parse_file_multi.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_parse_string_multi.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_parse_string_multi.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_parse_string_multi.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_bool.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_bool.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_bool.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_bool_default.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_bool_default.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_bool_default.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_list.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_list.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_list.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_string.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_string.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_string.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_string_default.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_string_default.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_string_default.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_strings.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_strings.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_strings.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_time.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_time.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_time.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_time_default.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_time_default.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_config_vget_time_default.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_address.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_address.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_address.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_addresses.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_addresses.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_addresses.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_context.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_context.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_context.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_creds.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_creds.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_creds.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_creds_contents.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_creds_contents.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_creds_contents.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_data.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_data.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_data.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_host_realm.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_host_realm.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_host_realm.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_keyblock.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_keyblock.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_keyblock.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_keyblock_contents.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_keyblock_contents.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_keyblock_contents.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_principal.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_principal.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_principal.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_ticket.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_ticket.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_copy_ticket.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_create_checksum_iov.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_create_checksum_iov.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_create_checksum_iov.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_credential.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_credential.3
new file mode 100644
index 000000000000..40cda97ab5dc
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_credential.3
@@ -0,0 +1,279 @@
+.TH "Heimdal Kerberos 5 credential handing functions" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal Kerberos 5 credential handing functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_fwd_tgt_creds\fP (krb5_context context, krb5_auth_context auth_context, const char *hostname, krb5_principal client, krb5_principal server, krb5_ccache ccache, int forwardable, krb5_data *out_data)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_get_forwarded_creds\fP (krb5_context context, krb5_auth_context auth_context, krb5_ccache ccache, krb5_flags flags, const char *hostname, krb5_creds *in_creds, krb5_data *out_data)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_get_init_creds_opt_alloc\fP (krb5_context context, krb5_get_init_creds_opt **opt)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_get_init_creds_opt_free\fP (krb5_context context, krb5_get_init_creds_opt *opt)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_init_creds_init\fP (krb5_context context, krb5_principal client, krb5_prompter_fct prompter, void *prompter_data, krb5_deltat start_time, krb5_get_init_creds_opt *options, krb5_init_creds_context *rctx)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_init_creds_set_service\fP (krb5_context context, krb5_init_creds_context ctx, const char *service)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_init_creds_set_password\fP (krb5_context context, krb5_init_creds_context ctx, const char *password)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_init_creds_set_keytab\fP (krb5_context context, krb5_init_creds_context ctx, krb5_keytab keytab)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_init_creds_step\fP (krb5_context context, krb5_init_creds_context ctx, krb5_data *in, krb5_data *out, krb5_krbhst_info *hostinfo, unsigned int *flags)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_init_creds_get_error\fP (krb5_context context, krb5_init_creds_context ctx, KRB_ERROR *error)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_init_creds_free\fP (krb5_context context, krb5_init_creds_context ctx)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_init_creds_get\fP (krb5_context context, krb5_init_creds_context ctx)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_get_init_creds_password\fP (krb5_context context, krb5_creds *creds, krb5_principal client, const char *password, krb5_prompter_fct prompter, void *data, krb5_deltat start_time, const char *in_tkt_service, krb5_get_init_creds_opt *options)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_get_init_creds_keyblock\fP (krb5_context context, krb5_creds *creds, krb5_principal client, krb5_keyblock *keyblock, krb5_deltat start_time, const char *in_tkt_service, krb5_get_init_creds_opt *options)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_get_init_creds_keytab\fP (krb5_context context, krb5_creds *creds, krb5_principal client, krb5_keytab keytab, krb5_deltat start_time, const char *in_tkt_service, krb5_get_init_creds_opt *options)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_fwd_tgt_creds (krb5_context context, krb5_auth_context auth_context, const char * hostname, krb5_principal client, krb5_principal server, krb5_ccache ccache, int forwardable, krb5_data * out_data)"
+.PP
+Forward credentials for client to host hostname , making them forwardable if forwardable, and returning the blob of data to sent in out_data. If hostname == NULL, pick it from server.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A kerberos 5 context.
+.br
+\fIauth_context\fP the auth context with the key to encrypt the out_data.
+.br
+\fIhostname\fP the host to forward the tickets too.
+.br
+\fIclient\fP the client to delegate from.
+.br
+\fIserver\fP the server to delegate the credential too.
+.br
+\fIccache\fP credential cache to use.
+.br
+\fIforwardable\fP make the forwarded ticket forwabledable.
+.br
+\fIout_data\fP the resulting credential.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_forwarded_creds (krb5_context context, krb5_auth_context auth_context, krb5_ccache ccache, krb5_flags flags, const char * hostname, krb5_creds * in_creds, krb5_data * out_data)"
+.PP
+Gets tickets forwarded to hostname. If the tickets that are forwarded are address-less, the forwarded tickets will also be address-less.
+.PP
+If the ticket have any address, hostname will be used for figure out the address to forward the ticket too. This since this might use DNS, its insecure and also doesn't represent configured all addresses of the host. For example, the host might have two adresses, one IPv4 and one IPv6 address where the later is not published in DNS. This IPv6 address might be used communications and thus the resulting ticket useless.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A kerberos 5 context.
+.br
+\fIauth_context\fP the auth context with the key to encrypt the out_data.
+.br
+\fIccache\fP credential cache to use
+.br
+\fIflags\fP the flags to control the resulting ticket flags
+.br
+\fIhostname\fP the host to forward the tickets too.
+.br
+\fIin_creds\fP the in client and server ticket names. The client and server components forwarded to the remote host.
+.br
+\fIout_data\fP the resulting credential.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.PP
+Some older of the MIT gssapi library used clear-text tickets (warped inside AP-REQ encryption), use the krb5_auth_context flag KRB5_AUTH_CONTEXT_CLEAR_FORWARDED_CRED to support those tickets. The session key is used otherwise to encrypt the forwarded ticket.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_init_creds_keyblock (krb5_context context, krb5_creds * creds, krb5_principal client, krb5_keyblock * keyblock, krb5_deltat start_time, const char * in_tkt_service, krb5_get_init_creds_opt * options)"
+.PP
+Get new credentials using keyblock.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_init_creds_keytab (krb5_context context, krb5_creds * creds, krb5_principal client, krb5_keytab keytab, krb5_deltat start_time, const char * in_tkt_service, krb5_get_init_creds_opt * options)"
+.PP
+Get new credentials using keytab.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_init_creds_opt_alloc (krb5_context context, krb5_get_init_creds_opt ** opt)"
+.PP
+Allocate a new krb5_get_init_creds_opt structure, free with \fBkrb5_get_init_creds_opt_free()\fP.
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_get_init_creds_opt_free (krb5_context context, krb5_get_init_creds_opt * opt)"
+.PP
+Free krb5_get_init_creds_opt structure.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_init_creds_password (krb5_context context, krb5_creds * creds, krb5_principal client, const char * password, krb5_prompter_fct prompter, void * data, krb5_deltat start_time, const char * in_tkt_service, krb5_get_init_creds_opt * options)"
+.PP
+Get new credentials using password.
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_init_creds_free (krb5_context context, krb5_init_creds_context ctx)"
+.PP
+Free the krb5_init_creds_context allocated by \fBkrb5_init_creds_init()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIctx\fP The krb5_init_creds_context to free.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_init_creds_get (krb5_context context, krb5_init_creds_context ctx)"
+.PP
+Get new credentials as setup by the krb5_init_creds_context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIctx\fP The krb5_init_creds_context to process.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_init_creds_get_error (krb5_context context, krb5_init_creds_context ctx, KRB_ERROR * error)"
+.PP
+Get the last error from the transaction.
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 or an error code
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_init_creds_init (krb5_context context, krb5_principal client, krb5_prompter_fct prompter, void * prompter_data, krb5_deltat start_time, krb5_get_init_creds_opt * options, krb5_init_creds_context * rctx)"
+.PP
+Start a new context to get a new initial credential.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIclient\fP The Kerberos principal to get the credential for, if NULL is given, the default principal is used as determined by krb5_get_default_principal().
+.br
+\fIprompter\fP
+.br
+\fIprompter_data\fP
+.br
+\fIstart_time\fP the time the ticket should start to be valid or 0 for now.
+.br
+\fIoptions\fP a options structure, can be NULL for default options.
+.br
+\fIrctx\fP A new allocated free with \fBkrb5_init_creds_free()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 for success or an Kerberos 5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_init_creds_set_keytab (krb5_context context, krb5_init_creds_context ctx, krb5_keytab keytab)"
+.PP
+Set the keytab to use for authentication.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Kerberos 5 context.
+.br
+\fIctx\fP ctx krb5_init_creds_context context.
+.br
+\fIkeytab\fP the keytab to read the key from.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 for success, or an Kerberos 5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_init_creds_set_password (krb5_context context, krb5_init_creds_context ctx, const char * password)"
+.PP
+Sets the password that will use for the request.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Kerberos 5 context.
+.br
+\fIctx\fP ctx krb5_init_creds_context context.
+.br
+\fIpassword\fP the password to use.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 for success, or an Kerberos 5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_init_creds_set_service (krb5_context context, krb5_init_creds_context ctx, const char * service)"
+.PP
+Sets the service that the is requested. This call is only neede for special initial tickets, by default the a krbtgt is fetched in the default realm.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Kerberos 5 context.
+.br
+\fIctx\fP a krb5_init_creds_context context.
+.br
+\fIservice\fP the service given as a string, for example 'kadmind/admin'. If NULL, the default krbtgt in the clients realm is set.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 for success, or an Kerberos 5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_init_creds_step (krb5_context context, krb5_init_creds_context ctx, krb5_data * in, krb5_data * out, krb5_krbhst_info * hostinfo, unsigned int * flags)"
+.PP
+The core loop if krb5_get_init_creds() function family. Create the packets and have the caller send them off to the KDC.
+.PP
+If the caller want all work been done for them, use \fBkrb5_init_creds_get()\fP instead.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Kerberos 5 context.
+.br
+\fIctx\fP ctx krb5_init_creds_context context.
+.br
+\fIin\fP input data from KDC, first round it should be reset by krb5_data_zer().
+.br
+\fIout\fP reply to KDC.
+.br
+\fIhostinfo\fP KDC address info, first round it can be NULL.
+.br
+\fIflags\fP status of the round, if KRB5_INIT_CREDS_STEP_FLAG_CONTINUE is set, continue one more round.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 for success, or an Kerberos 5 error code, see krb5_get_error_message().
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_creds_get_ticket_flags.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_creds_get_ticket_flags.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_creds_get_ticket_flags.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto.3
new file mode 100644
index 000000000000..79367b198970
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto.3
@@ -0,0 +1,550 @@
+.TH "Heimdal Kerberos 5 cryptography functions" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal Kerberos 5 cryptography functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_enctype_valid\fP (krb5_context context, krb5_enctype etype)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_cksumtype_to_enctype\fP (krb5_context context, krb5_cksumtype ctype, krb5_enctype *etype)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_encrypt_iov_ivec\fP (krb5_context context, krb5_crypto crypto, unsigned usage, \fBkrb5_crypto_iov\fP *data, int num_data, void *ivec)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_decrypt_iov_ivec\fP (krb5_context context, krb5_crypto crypto, unsigned usage, \fBkrb5_crypto_iov\fP *data, unsigned int num_data, void *ivec)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_create_checksum_iov\fP (krb5_context context, krb5_crypto crypto, unsigned usage, \fBkrb5_crypto_iov\fP *data, unsigned int num_data, krb5_cksumtype *type)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_verify_checksum_iov\fP (krb5_context context, krb5_crypto crypto, unsigned usage, \fBkrb5_crypto_iov\fP *data, unsigned int num_data, krb5_cksumtype *type)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_crypto_init\fP (krb5_context context, const krb5_keyblock *key, krb5_enctype etype, krb5_crypto *crypto)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_crypto_destroy\fP (krb5_context context, krb5_crypto crypto)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_crypto_getblocksize\fP (krb5_context context, krb5_crypto crypto, size_t *blocksize)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_crypto_getenctype\fP (krb5_context context, krb5_crypto crypto, krb5_enctype *enctype)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_crypto_getpadsize\fP (krb5_context context, krb5_crypto crypto, size_t *padsize)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_crypto_getconfoundersize\fP (krb5_context context, krb5_crypto crypto, size_t *confoundersize)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_enctype_disable\fP (krb5_context context, krb5_enctype enctype)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_enctype_enable\fP (krb5_context context, krb5_enctype enctype)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_allow_weak_crypto\fP (krb5_context context, krb5_boolean enable)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_random_to_key\fP (krb5_context context, krb5_enctype type, const void *data, size_t size, krb5_keyblock *key)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_crypto_fx_cf2\fP (krb5_context context, const krb5_crypto crypto1, const krb5_crypto crypto2, krb5_data *pepper1, krb5_data *pepper2, krb5_enctype enctype, krb5_keyblock *res)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_generate_subkey_extended\fP (krb5_context context, const krb5_keyblock *key, krb5_enctype etype, krb5_keyblock **subkey)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_keyblock_zero\fP (krb5_keyblock *keyblock)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_free_keyblock_contents\fP (krb5_context context, krb5_keyblock *keyblock)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_free_keyblock\fP (krb5_context context, krb5_keyblock *keyblock)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_copy_keyblock_contents\fP (krb5_context context, const krb5_keyblock *inblock, krb5_keyblock *to)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_copy_keyblock\fP (krb5_context context, const krb5_keyblock *inblock, krb5_keyblock **to)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_enctype KRB5_LIB_CALL \fBkrb5_keyblock_get_enctype\fP (const krb5_keyblock *block)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_keyblock_init\fP (krb5_context context, krb5_enctype type, const void *data, size_t size, krb5_keyblock *key)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_allow_weak_crypto (krb5_context context, krb5_boolean enable)"
+.PP
+Enable or disable all weak encryption types
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context
+.br
+\fIenable\fP true to enable, false to disable
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cksumtype_to_enctype (krb5_context context, krb5_cksumtype ctype, krb5_enctype * etype)"
+.PP
+Return the coresponding encryption type for a checksum type.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos context
+.br
+\fIctype\fP The checksum type to get the result enctype for
+.br
+\fIetype\fP The returned encryption, when the matching etype is not found, etype is set to ETYPE_NULL.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code for an failure or 0 on success.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_keyblock (krb5_context context, const krb5_keyblock * inblock, krb5_keyblock ** to)"
+.PP
+Copy a keyblock, free the output keyblock with \fBkrb5_free_keyblock()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Kerberos 5 context
+.br
+\fIinblock\fP the key to copy
+.br
+\fIto\fP the output key.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success or a Kerberos 5 error code
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_keyblock_contents (krb5_context context, const krb5_keyblock * inblock, krb5_keyblock * to)"
+.PP
+Copy a keyblock, free the output keyblock with \fBkrb5_free_keyblock_contents()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Kerberos 5 context
+.br
+\fIinblock\fP the key to copy
+.br
+\fIto\fP the output key.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success or a Kerberos 5 error code
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_create_checksum_iov (krb5_context context, krb5_crypto crypto, unsigned usage, \fBkrb5_crypto_iov\fP * data, unsigned int num_data, krb5_cksumtype * type)"
+.PP
+Create a Kerberos message checksum.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos context
+.br
+\fIcrypto\fP Kerberos crypto context
+.br
+\fIusage\fP Key usage for this buffer
+.br
+\fIdata\fP array of buffers to process
+.br
+\fInum_data\fP length of array
+.br
+\fItype\fP output data
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_destroy (krb5_context context, krb5_crypto crypto)"
+.PP
+Free a crypto context created by \fBkrb5_crypto_init()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos context
+.br
+\fIcrypto\fP crypto context to free
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_fx_cf2 (krb5_context context, const krb5_crypto crypto1, const krb5_crypto crypto2, krb5_data * pepper1, krb5_data * pepper2, krb5_enctype enctype, krb5_keyblock * res)"
+.PP
+The FX-CF2 key derivation function, used in FAST and preauth framework.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context
+.br
+\fIcrypto1\fP first key to combine
+.br
+\fIcrypto2\fP second key to combine
+.br
+\fIpepper1\fP factor to combine with first key to garante uniqueness
+.br
+\fIpepper2\fP factor to combine with second key to garante uniqueness
+.br
+\fIenctype\fP the encryption type of the resulting key
+.br
+\fIres\fP allocated key, free with \fBkrb5_free_keyblock_contents()\fP
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_getblocksize (krb5_context context, krb5_crypto crypto, size_t * blocksize)"
+.PP
+Return the blocksize used algorithm referenced by the crypto context
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos context
+.br
+\fIcrypto\fP crypto context to query
+.br
+\fIblocksize\fP the resulting blocksize
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_getconfoundersize (krb5_context context, krb5_crypto crypto, size_t * confoundersize)"
+.PP
+Return the confounder size used by the crypto context
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos context
+.br
+\fIcrypto\fP crypto context to query
+.br
+\fIconfoundersize\fP the returned confounder size
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_getenctype (krb5_context context, krb5_crypto crypto, krb5_enctype * enctype)"
+.PP
+Return the encryption type used by the crypto context
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos context
+.br
+\fIcrypto\fP crypto context to query
+.br
+\fIenctype\fP the resulting encryption type
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_getpadsize (krb5_context context, krb5_crypto crypto, size_t * padsize)"
+.PP
+Return the padding size used by the crypto context
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos context
+.br
+\fIcrypto\fP crypto context to query
+.br
+\fIpadsize\fP the return padding size
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_crypto_init (krb5_context context, const krb5_keyblock * key, krb5_enctype etype, krb5_crypto * crypto)"
+.PP
+Create a crypto context used for all encryption and signature operation. The encryption type to use is taken from the key, but can be overridden with the enctype parameter. This can be useful for encryptions types which is compatiable (DES for example).
+.PP
+To free the crypto context, use \fBkrb5_crypto_destroy()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos context
+.br
+\fIkey\fP the key block information with all key data
+.br
+\fIetype\fP the encryption type
+.br
+\fIcrypto\fP the resulting crypto context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_decrypt_iov_ivec (krb5_context context, krb5_crypto crypto, unsigned usage, \fBkrb5_crypto_iov\fP * data, unsigned int num_data, void * ivec)"
+.PP
+Inline decrypt a Kerberos message.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos context
+.br
+\fIcrypto\fP Kerberos crypto context
+.br
+\fIusage\fP Key usage for this buffer
+.br
+\fIdata\fP array of buffers to process
+.br
+\fInum_data\fP length of array
+.br
+\fIivec\fP initial cbc/cts vector
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+1. KRB5_CRYPTO_TYPE_HEADER 2. one KRB5_CRYPTO_TYPE_DATA and array [0,...] of KRB5_CRYPTO_TYPE_SIGN_ONLY in any order, however the receiver have to aware of the order. KRB5_CRYPTO_TYPE_SIGN_ONLY is commonly used unencrypoted protocol headers and trailers. The output data will be of same size as the input data or shorter.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_encrypt_iov_ivec (krb5_context context, krb5_crypto crypto, unsigned usage, \fBkrb5_crypto_iov\fP * data, int num_data, void * ivec)"
+.PP
+Inline encrypt a kerberos message
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos context
+.br
+\fIcrypto\fP Kerberos crypto context
+.br
+\fIusage\fP Key usage for this buffer
+.br
+\fIdata\fP array of buffers to process
+.br
+\fInum_data\fP length of array
+.br
+\fIivec\fP initial cbc/cts vector
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+Kerberos encrypted data look like this:
+.PP
+1. KRB5_CRYPTO_TYPE_HEADER 2. array [1,...] KRB5_CRYPTO_TYPE_DATA and array [0,...] KRB5_CRYPTO_TYPE_SIGN_ONLY in any order, however the receiver have to aware of the order. KRB5_CRYPTO_TYPE_SIGN_ONLY is commonly used headers and trailers. 3. KRB5_CRYPTO_TYPE_PADDING, at least on padsize long if padsize > 1 4. KRB5_CRYPTO_TYPE_TRAILER
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_enctype_disable (krb5_context context, krb5_enctype enctype)"
+.PP
+Disable encryption type
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context
+.br
+\fIenctype\fP encryption type to disable
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_enctype_enable (krb5_context context, krb5_enctype enctype)"
+.PP
+Enable encryption type
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context
+.br
+\fIenctype\fP encryption type to enable
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_enctype_valid (krb5_context context, krb5_enctype etype)"
+.PP
+Check if a enctype is valid, return 0 if it is.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos context
+.br
+\fIetype\fP enctype to check if its valid or not
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code for an failure or 0 on success (enctype valid).
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_keyblock (krb5_context context, krb5_keyblock * keyblock)"
+.PP
+Free a keyblock, also zero out the content of the keyblock, uses \fBkrb5_free_keyblock_contents()\fP to free the content.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Kerberos 5 context
+.br
+\fIkeyblock\fP keyblock to free, NULL is valid argument
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_keyblock_contents (krb5_context context, krb5_keyblock * keyblock)"
+.PP
+Free a keyblock's content, also zero out the content of the keyblock.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Kerberos 5 context
+.br
+\fIkeyblock\fP keyblock content to free, NULL is valid argument
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_generate_subkey_extended (krb5_context context, const krb5_keyblock * key, krb5_enctype etype, krb5_keyblock ** subkey)"
+.PP
+Generate subkey, from keyblock
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP kerberos context
+.br
+\fIkey\fP session key
+.br
+\fIetype\fP encryption type of subkey, if ETYPE_NULL, use key's enctype
+.br
+\fIsubkey\fP returned new, free with \fBkrb5_free_keyblock()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success or a Kerberos 5 error code
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_enctype KRB5_LIB_CALL krb5_keyblock_get_enctype (const krb5_keyblock * block)"
+.PP
+Get encryption type of a keyblock.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_keyblock_init (krb5_context context, krb5_enctype type, const void * data, size_t size, krb5_keyblock * key)"
+.PP
+Fill in `key' with key data of type `enctype' from `data' of length `size'. Key should be freed using \fBkrb5_free_keyblock_contents()\fP.
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success or a Kerberos 5 error code
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_keyblock_zero (krb5_keyblock * keyblock)"
+.PP
+Zero out a keyblock
+.PP
+\fBParameters:\fP
+.RS 4
+\fIkeyblock\fP keyblock to zero out
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_random_to_key (krb5_context context, krb5_enctype type, const void * data, size_t size, krb5_keyblock * key)"
+.PP
+Converts the random bytestring to a protocol key according to Kerberos crypto frame work. It may be assumed that all the bits of the input string are equally random, even though the entropy present in the random source may be limited.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context
+.br
+\fItype\fP the enctype resulting key will be of
+.br
+\fIdata\fP input random data to convert to a key
+.br
+\fIsize\fP size of input random data, at least krb5_enctype_keysize() long
+.br
+\fIkey\fP key, output key, free with \fBkrb5_free_keyblock_contents()\fP
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_verify_checksum_iov (krb5_context context, krb5_crypto crypto, unsigned usage, \fBkrb5_crypto_iov\fP * data, unsigned int num_data, krb5_cksumtype * type)"
+.PP
+Verify a Kerberos message checksum.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos context
+.br
+\fIcrypto\fP Kerberos crypto context
+.br
+\fIusage\fP Key usage for this buffer
+.br
+\fIdata\fP array of buffers to process
+.br
+\fInum_data\fP length of array
+.br
+\fItype\fP return checksum type if not NULL
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_destroy.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_destroy.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_destroy.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_fx_cf2.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_fx_cf2.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_fx_cf2.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_getblocksize.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_getblocksize.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_getblocksize.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_getconfoundersize.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_getconfoundersize.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_getconfoundersize.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_getenctype.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_getenctype.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_getenctype.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_getpadsize.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_getpadsize.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_getpadsize.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_init.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_init.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_init.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_iov.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_iov.3
new file mode 100644
index 000000000000..fa74965198d0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_crypto_iov.3
@@ -0,0 +1,17 @@
+.TH "krb5_crypto_iov" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+krb5_crypto_iov \-
+.SH SYNOPSIS
+.br
+.PP
+\fC#include <krb5.h>\fP
+.PP
+.SH "Detailed Description"
+.PP
+Semi private, not stable yet
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for HeimdalKerberos5library from the source code.
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_alloc.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_alloc.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_alloc.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_cmp.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_cmp.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_cmp.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_copy.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_copy.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_copy.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_ct_cmp.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_ct_cmp.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_ct_cmp.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_free.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_free.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_free.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_realloc.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_realloc.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_realloc.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_zero.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_zero.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_data_zero.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_decrypt_iov_ivec.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_decrypt_iov_ivec.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_decrypt_iov_ivec.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_deprecated.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_deprecated.3
new file mode 100644
index 000000000000..ea0c90144e64
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_deprecated.3
@@ -0,0 +1,269 @@
+.TH "Heimdal Kerberos 5 deprecated functions" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal Kerberos 5 deprecated functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_change_password\fP (krb5_context context, krb5_creds *creds, const char *newpw, int *result_code, krb5_data *result_code_string, krb5_data *result_string) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_config_parse_string_multi\fP (krb5_context context, const char *string, krb5_config_section **res) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_keytype_to_enctypes\fP (krb5_context context, krb5_keytype keytype, unsigned *len, krb5_enctype **val) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_enctypes_compatible_keys\fP (krb5_context context, krb5_enctype etype1, krb5_enctype etype2) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_free_data_contents\fP (krb5_context context, krb5_data *data) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_keytype_to_enctypes_default\fP (krb5_context context, krb5_keytype keytype, unsigned *len, krb5_enctype **val) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_keytype_to_string\fP (krb5_context context, krb5_keytype keytype, char **string) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_string_to_keytype\fP (krb5_context context, const char *string, krb5_keytype *keytype) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_CALLCONV \fBkrb5_password_key_proc\fP (krb5_context context, krb5_enctype type, krb5_salt salt, krb5_const_pointer keyseed, krb5_keyblock **key) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_get_in_tkt_with_password\fP (krb5_context context, krb5_flags options, krb5_addresses *addrs, const krb5_enctype *etypes, const krb5_preauthtype *pre_auth_types, const char *password, krb5_ccache ccache, krb5_creds *creds, krb5_kdc_rep *ret_as_reply) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_get_in_tkt_with_skey\fP (krb5_context context, krb5_flags options, krb5_addresses *addrs, const krb5_enctype *etypes, const krb5_preauthtype *pre_auth_types, const krb5_keyblock *key, krb5_ccache ccache, krb5_creds *creds, krb5_kdc_rep *ret_as_reply) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_CALLCONV \fBkrb5_keytab_key_proc\fP (krb5_context context, krb5_enctype enctype, krb5_salt salt, krb5_const_pointer keyseed, krb5_keyblock **key) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_get_in_tkt_with_keytab\fP (krb5_context context, krb5_flags options, krb5_addresses *addrs, const krb5_enctype *etypes, const krb5_preauthtype *pre_auth_types, krb5_keytab keytab, krb5_ccache ccache, krb5_creds *creds, krb5_kdc_rep *ret_as_reply) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_realm *KRB5_LIB_CALL \fBkrb5_princ_realm\fP (krb5_context context, krb5_principal principal) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_princ_set_realm\fP (krb5_context context, krb5_principal principal, krb5_realm *realm) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_free_creds_contents\fP (krb5_context context, krb5_creds *c) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_free_error_string\fP (krb5_context context, char *str) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_set_error_string\fP (krb5_context context, const char *fmt,...) __attribute__((format(printf"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_vset_error_string\fP (krb5_context context, const char *fmt, va_list args) __attribute__((format(printf"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_clear_error_string\fP (krb5_context context) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_get_cred_from_kdc_opt\fP (krb5_context context, krb5_ccache ccache, krb5_creds *in_creds, krb5_creds **out_creds, krb5_creds ***ret_tgts, krb5_flags flags) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_get_cred_from_kdc\fP (krb5_context context, krb5_ccache ccache, krb5_creds *in_creds, krb5_creds **out_creds, krb5_creds ***ret_tgts) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_free_unparsed_name\fP (krb5_context context, char *str) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_generate_subkey\fP (krb5_context context, const krb5_keyblock *key, krb5_keyblock **subkey) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_auth_getremoteseqnumber\fP (krb5_context context, krb5_auth_context auth_context, int32_t *seqnumber) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_get_init_creds_opt_init\fP (krb5_get_init_creds_opt *opt) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_get_init_creds_opt_get_error\fP (krb5_context context, krb5_get_init_creds_opt *opt, KRB_ERROR **error) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_c_enctype_compare\fP (krb5_context context, krb5_enctype e1, krb5_enctype e2, krb5_boolean *similar) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_auth_getremoteseqnumber (krb5_context context, krb5_auth_context auth_context, int32_t * seqnumber)"
+.PP
+Deprecated: use krb5_auth_con_getremoteseqnumber()
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_c_enctype_compare (krb5_context context, krb5_enctype e1, krb5_enctype e2, krb5_boolean * similar)"
+.PP
+Deprecated: keytypes doesn't exists, they are really enctypes.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_change_password (krb5_context context, krb5_creds * creds, const char * newpw, int * result_code, krb5_data * result_code_string, krb5_data * result_string)"
+.PP
+Deprecated: \fBkrb5_change_password()\fP is deprecated, use \fBkrb5_set_password()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIcreds\fP
+.br
+\fInewpw\fP
+.br
+\fIresult_code\fP
+.br
+\fIresult_code_string\fP
+.br
+\fIresult_string\fP
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+On sucess password is changed.
+.RE
+.PP
+@
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_clear_error_string (krb5_context context)"
+.PP
+Clear the error message returned by krb5_get_error_string().
+.PP
+Deprecated: use \fBkrb5_clear_error_message()\fP
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos context
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_config_parse_string_multi (krb5_context context, const char * string, krb5_config_section ** res)"
+.PP
+Deprecated: configuration files are not strings
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_enctypes_compatible_keys (krb5_context context, krb5_enctype etype1, krb5_enctype etype2)"
+.PP
+Deprecated: keytypes doesn't exists, they are really enctypes.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_free_creds_contents (krb5_context context, krb5_creds * c)"
+.PP
+Deprecated: use \fBkrb5_free_cred_contents()\fP
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_data_contents (krb5_context context, krb5_data * data)"
+.PP
+Same as \fBkrb5_data_free()\fP. MIT compat.
+.PP
+Deprecated: use \fBkrb5_data_free()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIdata\fP krb5_data to free.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_error_string (krb5_context context, char * str)"
+.PP
+Free the error message returned by krb5_get_error_string().
+.PP
+Deprecated: use krb5_free_error_message()
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos context
+.br
+\fIstr\fP error message to free
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_unparsed_name (krb5_context context, char * str)"
+.PP
+Deprecated: use krb5_xfree().
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_generate_subkey (krb5_context context, const krb5_keyblock * key, krb5_keyblock ** subkey)"
+.PP
+Deprecated: use \fBkrb5_generate_subkey_extended()\fP
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_cred_from_kdc (krb5_context context, krb5_ccache ccache, krb5_creds * in_creds, krb5_creds ** out_creds, krb5_creds *** ret_tgts)"
+.PP
+Deprecated: use krb5_get_credentials_with_flags().
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_cred_from_kdc_opt (krb5_context context, krb5_ccache ccache, krb5_creds * in_creds, krb5_creds ** out_creds, krb5_creds *** ret_tgts, krb5_flags flags)"
+.PP
+Deprecated: use krb5_get_credentials_with_flags().
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_in_tkt_with_keytab (krb5_context context, krb5_flags options, krb5_addresses * addrs, const krb5_enctype * etypes, const krb5_preauthtype * pre_auth_types, krb5_keytab keytab, krb5_ccache ccache, krb5_creds * creds, krb5_kdc_rep * ret_as_reply)"
+.PP
+Deprecated: use krb5_get_init_creds() and friends.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_in_tkt_with_password (krb5_context context, krb5_flags options, krb5_addresses * addrs, const krb5_enctype * etypes, const krb5_preauthtype * pre_auth_types, const char * password, krb5_ccache ccache, krb5_creds * creds, krb5_kdc_rep * ret_as_reply)"
+.PP
+Deprecated: use krb5_get_init_creds() and friends.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_in_tkt_with_skey (krb5_context context, krb5_flags options, krb5_addresses * addrs, const krb5_enctype * etypes, const krb5_preauthtype * pre_auth_types, const krb5_keyblock * key, krb5_ccache ccache, krb5_creds * creds, krb5_kdc_rep * ret_as_reply)"
+.PP
+Deprecated: use krb5_get_init_creds() and friends.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_init_creds_opt_get_error (krb5_context context, krb5_get_init_creds_opt * opt, KRB_ERROR ** error)"
+.PP
+Deprecated: use the new \fBkrb5_init_creds_init()\fP and \fBkrb5_init_creds_get_error()\fP.
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_get_init_creds_opt_init (krb5_get_init_creds_opt * opt)"
+.PP
+Deprecated: use \fBkrb5_get_init_creds_opt_alloc()\fP.
+.PP
+The reason \fBkrb5_get_init_creds_opt_init()\fP is deprecated is that krb5_get_init_creds_opt is a static structure and for ABI reason it can't grow, ie can't add new functionality.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_CALLCONV krb5_keytab_key_proc (krb5_context context, krb5_enctype enctype, krb5_salt salt, krb5_const_pointer keyseed, krb5_keyblock ** key)"
+.PP
+Deprecated: use krb5_get_init_creds() and friends.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_keytype_to_enctypes (krb5_context context, krb5_keytype keytype, unsigned * len, krb5_enctype ** val)"
+.PP
+Deprecated: keytypes doesn't exists, they are really enctypes.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_keytype_to_enctypes_default (krb5_context context, krb5_keytype keytype, unsigned * len, krb5_enctype ** val)"
+.PP
+Deprecated: keytypes doesn't exists, they are really enctypes.
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_keytype_to_string (krb5_context context, krb5_keytype keytype, char ** string)"
+.PP
+Deprecated: keytypes doesn't exists, they are really enctypes in most cases, use krb5_enctype_to_string().
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_CALLCONV krb5_password_key_proc (krb5_context context, krb5_enctype type, krb5_salt salt, krb5_const_pointer keyseed, krb5_keyblock ** key)"
+.PP
+Deprecated: use krb5_get_init_creds() and friends.
+.SS "KRB5_LIB_FUNCTION krb5_realm* KRB5_LIB_CALL krb5_princ_realm (krb5_context context, krb5_principal principal)"
+.PP
+Deprecated: use \fBkrb5_principal_get_realm()\fP
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_princ_set_realm (krb5_context context, krb5_principal principal, krb5_realm * realm)"
+.PP
+Deprecated: use \fBkrb5_principal_set_realm()\fP
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_error_string (krb5_context context, const char * fmt, ...)"
+.PP
+Set the error message returned by krb5_get_error_string().
+.PP
+Deprecated: use krb5_get_error_message()
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos context
+.br
+\fIfmt\fP error message to free
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_string_to_keytype (krb5_context context, const char * string, krb5_keytype * keytype)"
+.PP
+Deprecated: keytypes doesn't exists, they are really enctypes in most cases, use krb5_string_to_enctype().
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_vset_error_string (krb5_context context, const char * fmt, va_list args)"
+.PP
+Set the error message returned by krb5_get_error_string(), deprecated, use \fBkrb5_set_error_message()\fP.
+.PP
+Deprecated: use krb5_vset_error_message()
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos context
+.br
+\fImsg\fP error message to free
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_digest.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_digest.3
new file mode 100644
index 000000000000..1be62851d667
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_digest.3
@@ -0,0 +1,38 @@
+.TH "Heimdal Kerberos 5 digest service" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal Kerberos 5 digest service \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_digest_probe\fP (krb5_context context, krb5_realm realm, krb5_ccache ccache, unsigned *flags)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_digest_probe (krb5_context context, krb5_realm realm, krb5_ccache ccache, unsigned * flags)"
+.PP
+Get the supported/allowed mechanism for this principal.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Keberos context.
+.br
+\fIrealm\fP The realm of the KDC.
+.br
+\fIccache\fP The credential cache to use when talking to the KDC.
+.br
+\fIflags\fP The supported mechanism.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_digest_probe.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_digest_probe.3
new file mode 100644
index 000000000000..d7f12b174eb0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_digest_probe.3
@@ -0,0 +1 @@
+.so man3/krb5_digest.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_eai_to_heim_errno.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_eai_to_heim_errno.3
new file mode 100644
index 000000000000..f721fda2cd4b
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_eai_to_heim_errno.3
@@ -0,0 +1 @@
+.so man3/krb5_error.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_encrypt_iov_ivec.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_encrypt_iov_ivec.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_encrypt_iov_ivec.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_enctype_disable.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_enctype_disable.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_enctype_disable.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_enctype_enable.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_enctype_enable.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_enctype_enable.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_enctype_valid.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_enctype_valid.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_enctype_valid.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_enctypes_compatible_keys.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_enctypes_compatible_keys.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_enctypes_compatible_keys.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_error.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_error.3
new file mode 100644
index 000000000000..7ada02c39977
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_error.3
@@ -0,0 +1,105 @@
+.TH "Heimdal Kerberos 5 error reporting functions" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal Kerberos 5 error reporting functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_eai_to_heim_errno\fP (int eai_errno, int system_error)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_h_errno_to_heim_errno\fP (int eai_errno)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_clear_error_message\fP (krb5_context context)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_set_error_message\fP (krb5_context context, krb5_error_code ret, const char *fmt,...) __attribute__((format(printf"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_vwarn\fP (krb5_context context, krb5_error_code code, const char *fmt, va_list ap) __attribute__((format(printf"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_clear_error_message (krb5_context context)"
+.PP
+Clears the error message from the Kerberos 5 context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP The Kerberos 5 context to clear
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_eai_to_heim_errno (int eai_errno, int system_error)"
+.PP
+Convert the getaddrinfo() error code to a Kerberos et error code.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIeai_errno\fP contains the error code from getaddrinfo().
+.br
+\fIsystem_error\fP should have the value of errno after the failed getaddrinfo().
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Kerberos error code representing the EAI errors.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_h_errno_to_heim_errno (int eai_errno)"
+.PP
+Convert the gethostname() error code (h_error) to a Kerberos et error code.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIeai_errno\fP contains the error code from gethostname().
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Kerberos error code representing the gethostname errors.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_set_error_message (krb5_context context, krb5_error_code ret, const char * fmt, ...)"
+.PP
+Set the context full error string for a specific error code. The error that is stored should be internationalized.
+.PP
+The if context is NULL, no error string is stored.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context
+.br
+\fIret\fP The error code
+.br
+\fIfmt\fP Error string for the error code
+.br
+\fI...\fP printf(3) style parameters.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_vwarn (krb5_context context, krb5_error_code code, const char * fmt, va_list ap)"
+.PP
+Log a warning to the log, default stderr, include the error from the last failure.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIcode\fP error code of the last error
+.br
+\fIfmt\fP message to print
+.br
+\fIap\fP arguments
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_expand_hostname.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_expand_hostname.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_expand_hostname.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_expand_hostname_realms.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_expand_hostname_realms.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_expand_hostname_realms.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fcc_ops.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fcc_ops.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fcc_ops.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fileformats.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fileformats.3
new file mode 100644
index 000000000000..2a2663f44255
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fileformats.3
@@ -0,0 +1,233 @@
+.TH "krb5_fileformats" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+krb5_fileformats \- File formats
+.SH "File formats"
+.PP
+This section documents the diffrent file formats that are used in Heimdal and other Kerberos implementations.
+.SS "keytab"
+The keytab binary format is not a standard format. The format has evolved and may continue to. It is however understood by several Kerberos implementations including Heimdal, MIT, Sun's Java ktab and are created by the ktpass.exe utility from Windows. So it has established itself as the defacto format for storing Kerberos keys.
+.PP
+The following C-like structure definitions illustrate the MIT keytab file format. All values are in network byte order. All text is ASCII.
+.PP
+.PP
+.nf
+ keytab {
+ uint16_t file_format_version; # 0x502
+ keytab_entry entries[*];
+ };
+
+ keytab_entry {
+ int32_t size;
+ uint16_t num_components; # subtract 1 if version 0x501
+ counted_octet_string realm;
+ counted_octet_string components[num_components];
+ uint32_t name_type; # not present if version 0x501
+ uint32_t timestamp;
+ uint8_t vno8;
+ keyblock key;
+ uint32_t vno; #only present if >= 4 bytes left in entry
+ uint32_t flags; #only present if >= 4 bytes left in entry
+ };
+
+ counted_octet_string {
+ uint16_t length;
+ uint8_t data[length];
+ };
+
+ keyblock {
+ uint16_t type;
+ counted_octet_string;
+ };
+.fi
+.PP
+.PP
+All numbers are stored in network byteorder (big endian) format.
+.PP
+The keytab file format begins with the 16 bit file_format_version which at the time this document was authored is 0x502. The format of older keytabs is described at the end of this document.
+.PP
+The file_format_version is immediately followed by an array of keytab_entry structures which are prefixed with a 32 bit size indicating the number of bytes that follow in the entry. Note that the size should be evaluated as signed. This is because a negative value indicates that the entry is in fact empty (e.g. it has been deleted) and that the negative value of that negative value (which is of course a positive value) is the offset to the next keytab_entry. Based on these size values alone the entire keytab file can be traversed.
+.PP
+The size is followed by a 16 bit num_components field indicating the number of counted_octet_string components in the components array.
+.PP
+The num_components field is followed by a counted_octet_string representing the realm of the principal.
+.PP
+A counted_octet_string is simply an array of bytes prefixed with a 16 bit length. For the realm and name components, the counted_octet_string bytes are ASCII encoded text with no zero terminator.
+.PP
+Following the realm is the components array that represents the name of the principal. The text of these components may be joined with slashs to construct the typical SPN representation. For example, the service principal HTTP/www.foo.net@FOO.NET would consist of name components 'HTTP' followed by 'www.foo.net'.
+.PP
+Following the components array is the 32 bit name_type (e.g. 1 is KRB5_NT_PRINCIPAL, 2 is KRB5_NT_SRV_INST, 5 is KRB5_NT_UID, etc). In practice the name_type is almost certainly 1 meaning KRB5_NT_PRINCIPAL.
+.PP
+The 32 bit timestamp indicates the time the key was established for that principal. The value represents the number of seconds since Jan 1, 1970.
+.PP
+The 8 bit vno8 field is the version number of the key. This value is overridden by the 32 bit vno field if it is present. The vno8 field is filled with the lower 8 bits of the 32 bit protocol kvno field.
+.PP
+The keyblock structure consists of a 16 bit value indicating the encryption type and is a counted_octet_string containing the key. The encryption type is the same as the Kerberos standard (e.g. 3 is des-cbc-md5, 23 is arcfour-hmac-md5, etc).
+.PP
+The last field of the keytab_entry structure is optional. If the size of the keytab_entry indicates that there are at least 4 bytes remaining, a 32 bit value representing the key version number is present. This value supersedes the 8 bit vno8 value preceeding the keyblock.
+.PP
+Older keytabs with a file_format_version of 0x501 are different in three ways:
+.PP
+.IP "\(bu" 2
+All integers are in host byte order [1].
+.IP "\(bu" 2
+The num_components field is 1 too large (i.e. after decoding, decrement by 1).
+.IP "\(bu" 2
+The 32 bit name_type field is not present.
+.PP
+.PP
+[1] The file_format_version field should really be treated as two separate 8 bit quantities representing the major and minor version number respectively.
+.SS "Heimdal database dump file"
+Format of the Heimdal text dump file as of Heimdal 0.6.3:
+.PP
+Each line in the dump file is one entry in the database.
+.PP
+Each field of a line is separated by one or more spaces, with the exception of fields consisting of principals containing spaces, where space can be quoted with \\ and \\ is quoted by \\.
+.PP
+Fields and their types are:
+.PP
+.PP
+.nf
+ Quoted princial (quote character is \) [string]
+ Keys [keys]
+ Created by [event]
+ Modified by [event optional]
+ Valid start time [time optional]
+ Valid end time [time optional]
+ Password end valid time [time optional]
+ Max lifetime of ticket [time optional]
+ Max renew time of ticket [integer optional]
+ Flags [hdb flags]
+ Generation number [generation optional]
+ Extensions [extentions optional]
+.fi
+.PP
+.PP
+Fields following these silently are ignored.
+.PP
+All optional fields will be skipped if they fail to parse (or comprise the optional field marker of '-', w/o quotes).
+.PP
+Example:
+.PP
+.PP
+.nf
+ fred\@CODE.COM 27:1:16:e8b4c8fc7e60b9e641dcf4cff3f08a701d982a2f89ba373733d26ca59ba6c789666f6b8bfcf169412bb1e5dceb9b33cda29f3412:-:1:3:4498a933881178c744f4232172dcd774c64e81fa6d05ecdf643a7e390624a0ebf3c7407a:-:1:2:b01934b13eb795d76f3a80717d469639b4da0cfb644161340ef44fdeb375e54d684dbb85:-:1:1:ea8e16d8078bf60c781da90f508d4deccba70595258b9d31888d33987cd31af0c9cced2e:- 20020415130120:admin\@CODE.COM 20041221112428:fred\@CODE.COM - - - 86400 604800 126 20020415130120:793707:28 -
+.fi
+.PP
+.PP
+Encoding of types are as follows:
+.PP
+.IP "\(bu" 2
+keys
+.PP
+.PP
+.PP
+.nf
+ kvno:[masterkvno:keytype:keydata:salt]{zero or more separated by :}
+.fi
+.PP
+.PP
+kvno is the key version number.
+.PP
+keydata is hex-encoded
+.PP
+masterkvno is the kvno of the database master key. If this field is empty, the kadmin load and merge operations will encrypt the key data with the master key if there is one. Otherwise the key data will be imported asis.
+.PP
+salt is encoded as '-' (no/default salt) or
+.PP
+.PP
+.nf
+ salt-type /
+ salt-type / 'string'
+ salt-type / hex-encoded-data
+.fi
+.PP
+.PP
+keytype is the protocol enctype number; see enum ENCTYPE in include/krb5_asn1.h for values.
+.PP
+Example:
+.PP
+.nf
+ 27:1:16:e8b4c8fc7e60b9e641dcf4cff3f08a701d982a2f89ba373733d26ca59ba6c789666f6b8bfcf169412bb1e5dceb9b33cda29f3412:-:1:3:4498a933881178c744f4232172dcd774c64e81fa6d05ecdf643a7e390624a0ebf3c7407a:-:1:2:b01934b13eb795d76f3a80717d469639b4da0cfb644161340ef44fdeb375e54d684dbb85:-:1:1:ea8e16d8078bf60c781da90f508d4deccba70595258b9d31888d33987cd31af0c9cced2e:-
+
+.fi
+.PP
+.PP
+.PP
+.nf
+ kvno=27,{key: masterkvno=1,keytype=des3-cbc-sha1,keydata=..., default salt}...
+.fi
+.PP
+.PP
+.IP "\(bu" 2
+time
+.PP
+.PP
+Format of the time is: YYYYmmddHHMMSS, corresponding to strftime format '%Y%m%d%k%M%S'.
+.PP
+Time is expressed in UTC.
+.PP
+Time can be optional (using -), when the time 0 is used.
+.PP
+Example:
+.PP
+.PP
+.nf
+ 20041221112428
+.fi
+.PP
+.PP
+.IP "\(bu" 2
+event
+.PP
+.PP
+.PP
+.nf
+ time:principal
+.fi
+.PP
+.PP
+time is as given in format time
+.PP
+principal is a string. Not quoting it may not work in earlier versions of Heimdal.
+.PP
+Example:
+.PP
+.nf
+ 20041221112428:bloggs\@CODE.COM
+
+.fi
+.PP
+.PP
+.IP "\(bu" 2
+hdb flags
+.PP
+.PP
+Integer encoding of HDB flags, see HDBFlags in lib/hdb/hdb.asn1. Each bit in the integer is the same as the bit in the specification.
+.PP
+.IP "\(bu" 2
+generation:
+.PP
+.PP
+.PP
+.nf
+ time:usec:gen
+.fi
+.PP
+.PP
+usec is a the microsecond, integer. gen is generation number, integer.
+.PP
+The generation can be defaulted (using '-') or the empty string
+.PP
+.IP "\(bu" 2
+extensions:
+.PP
+.PP
+.PP
+.nf
+ first-hex-encoded-HDB-Extension[:second-...]
+.fi
+.PP
+.PP
+HDB-extension is encoded the DER encoded HDB-Extension from lib/hdb/hdb.asn1. Consumers HDB extensions should be aware that unknown entires needs to be preserved even thought the ASN.1 data content might be unknown. There is a critical flag in the data to show to the KDC that the entry MUST be understod if the entry is to be used.
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_address.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_address.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_address.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_addresses.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_addresses.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_addresses.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_config_files.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_config_files.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_config_files.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_context.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_context.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_context.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_cred_contents.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_cred_contents.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_cred_contents.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_creds.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_creds.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_creds.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_creds_contents.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_creds_contents.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_creds_contents.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_data.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_data.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_data.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_data_contents.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_data_contents.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_data_contents.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_error_string.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_error_string.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_error_string.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_host_realm.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_host_realm.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_host_realm.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_keyblock.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_keyblock.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_keyblock.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_keyblock_contents.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_keyblock_contents.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_keyblock_contents.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_principal.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_principal.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_principal.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_ticket.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_ticket.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_ticket.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_unparsed_name.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_unparsed_name.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_free_unparsed_name.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fwd_tgt_creds.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fwd_tgt_creds.3
new file mode 100644
index 000000000000..9030ec942980
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fwd_tgt_creds.3
@@ -0,0 +1 @@
+.so man3/krb5_credential.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_generate_subkey.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_generate_subkey.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_generate_subkey.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_generate_subkey_extended.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_generate_subkey_extended.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_generate_subkey_extended.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_cred_from_kdc.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_cred_from_kdc.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_cred_from_kdc.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_cred_from_kdc_opt.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_cred_from_kdc_opt.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_cred_from_kdc_opt.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_default_config_files.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_default_config_files.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_default_config_files.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_default_in_tkt_etypes.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_default_in_tkt_etypes.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_default_in_tkt_etypes.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_dns_canonicalize_hostname.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_dns_canonicalize_hostname.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_dns_canonicalize_hostname.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_extra_addresses.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_extra_addresses.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_extra_addresses.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_fcache_version.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_fcache_version.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_fcache_version.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_forwarded_creds.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_forwarded_creds.3
new file mode 100644
index 000000000000..9030ec942980
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_forwarded_creds.3
@@ -0,0 +1 @@
+.so man3/krb5_credential.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_ignore_addresses.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_ignore_addresses.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_ignore_addresses.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_in_tkt_with_keytab.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_in_tkt_with_keytab.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_in_tkt_with_keytab.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_in_tkt_with_password.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_in_tkt_with_password.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_in_tkt_with_password.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_in_tkt_with_skey.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_in_tkt_with_skey.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_in_tkt_with_skey.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_keyblock.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_keyblock.3
new file mode 100644
index 000000000000..9030ec942980
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_keyblock.3
@@ -0,0 +1 @@
+.so man3/krb5_credential.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_keytab.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_keytab.3
new file mode 100644
index 000000000000..9030ec942980
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_keytab.3
@@ -0,0 +1 @@
+.so man3/krb5_credential.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_opt_alloc.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_opt_alloc.3
new file mode 100644
index 000000000000..9030ec942980
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_opt_alloc.3
@@ -0,0 +1 @@
+.so man3/krb5_credential.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_opt_free.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_opt_free.3
new file mode 100644
index 000000000000..9030ec942980
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_opt_free.3
@@ -0,0 +1 @@
+.so man3/krb5_credential.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_opt_get_error.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_opt_get_error.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_opt_get_error.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_opt_init.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_opt_init.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_opt_init.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_password.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_password.3
new file mode 100644
index 000000000000..9030ec942980
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_init_creds_password.3
@@ -0,0 +1 @@
+.so man3/krb5_credential.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_kdc_sec_offset.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_kdc_sec_offset.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_kdc_sec_offset.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_max_time_skew.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_max_time_skew.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_max_time_skew.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_use_admin_kdc.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_use_admin_kdc.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_use_admin_kdc.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_validated_creds.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_validated_creds.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_get_validated_creds.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_h_addr2addr.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_h_addr2addr.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_h_addr2addr.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_h_addr2sockaddr.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_h_addr2sockaddr.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_h_addr2sockaddr.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_h_errno_to_heim_errno.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_h_errno_to_heim_errno.3
new file mode 100644
index 000000000000..f721fda2cd4b
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_h_errno_to_heim_errno.3
@@ -0,0 +1 @@
+.so man3/krb5_error.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_context.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_context.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_context.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_free.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_free.3
new file mode 100644
index 000000000000..9030ec942980
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_free.3
@@ -0,0 +1 @@
+.so man3/krb5_credential.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_get.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_get.3
new file mode 100644
index 000000000000..9030ec942980
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_get.3
@@ -0,0 +1 @@
+.so man3/krb5_credential.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_get_error.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_get_error.3
new file mode 100644
index 000000000000..9030ec942980
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_get_error.3
@@ -0,0 +1 @@
+.so man3/krb5_credential.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_init.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_init.3
new file mode 100644
index 000000000000..9030ec942980
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_init.3
@@ -0,0 +1 @@
+.so man3/krb5_credential.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_intro.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_intro.3
new file mode 100644
index 000000000000..d24d0a02609e
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_intro.3
@@ -0,0 +1,8 @@
+.TH "krb5_init_creds_intro" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+krb5_init_creds_intro \- The initial credential handing functions
+.SH "Initial credential"
+.PP
+Functions to get initial credentials: \fBHeimdal Kerberos 5 credential handing functions\fP .
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_set_keytab.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_set_keytab.3
new file mode 100644
index 000000000000..9030ec942980
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_set_keytab.3
@@ -0,0 +1 @@
+.so man3/krb5_credential.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_set_password.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_set_password.3
new file mode 100644
index 000000000000..9030ec942980
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_set_password.3
@@ -0,0 +1 @@
+.so man3/krb5_credential.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_set_service.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_set_service.3
new file mode 100644
index 000000000000..9030ec942980
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_set_service.3
@@ -0,0 +1 @@
+.so man3/krb5_credential.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_step.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_step.3
new file mode 100644
index 000000000000..9030ec942980
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_creds_step.3
@@ -0,0 +1 @@
+.so man3/krb5_credential.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_ets.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_ets.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_init_ets.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_introduction.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_introduction.3
new file mode 100644
index 000000000000..14cf52f69db0
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_introduction.3
@@ -0,0 +1,259 @@
+.TH "krb5_introduction" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+krb5_introduction \- Introduction to the Kerberos 5 API
+.SH "Kerberos 5 API Overview"
+.PP
+All functions are documented in manual pages. This section tries to give an overview of the major components used in Kerberos library, and point to where to look for a specific function.
+.SS "Kerberos context"
+A kerberos context (krb5_context) holds all per thread state. All global variables that are context specific are stored in this structure, including default encryption types, credential cache (for example, a ticket file), and default realms.
+.PP
+The internals of the structure should never be accessed directly, functions exist for extracting information.
+.PP
+See the manual page for \fBkrb5_init_context()\fP how to create a context and module \fBHeimdal Kerberos 5 library\fP for more information about the functions.
+.SS "Kerberos authentication context"
+Kerberos authentication context (krb5_auth_context) holds all context related to an authenticated connection, in a similar way to the kerberos context that holds the context for the thread or process.
+.PP
+The krb5_auth_context is used by various functions that are directly related to authentication between the server/client. Example of data that this structure contains are various flags, addresses of client and server, port numbers, keyblocks (and subkeys), sequence numbers, replay cache, and checksum types.
+.SS "Kerberos principal"
+The Kerberos principal is the structure that identifies a user or service in Kerberos. The structure that holds the principal is the krb5_principal. There are function to extract the realm and elements of the principal, but most applications have no reason to inspect the content of the structure.
+.PP
+The are several ways to create a principal (with different degree of portability), and one way to free it.
+.PP
+See also the page \fBThe principal handing functions.\fP for more information and also module \fBHeimdal Kerberos 5 principal functions\fP.
+.SS "Credential cache"
+A credential cache holds the tickets for a user. A given user can have several credential caches, one for each realm where the user have the initial tickets (the first krbtgt).
+.PP
+The credential cache data can be stored internally in different way, each of them for different proposes. File credential (FILE) caches and processes based (KCM) caches are for permanent storage. While memory caches (MEMORY) are local caches to the local process.
+.PP
+Caches are opened with \fBkrb5_cc_resolve()\fP or created with \fBkrb5_cc_new_unique()\fP.
+.PP
+If the cache needs to be opened again (using \fBkrb5_cc_resolve()\fP) \fBkrb5_cc_close()\fP will close the handle, but not the remove the cache. \fBkrb5_cc_destroy()\fP will zero out the cache, remove the cache so it can no longer be referenced.
+.PP
+See also \fBThe credential cache functions\fP and \fBHeimdal Kerberos 5 credential cache functions\fP .
+.SS "Kerberos errors"
+Kerberos errors are based on the com_err library. All error codes are 32-bit signed numbers, the first 24 bits define what subsystem the error originates from, and last 8 bits are 255 error codes within the library. Each error code have fixed string associated with it. For example, the error-code -1765328383 have the symbolic name KRB5KDC_ERR_NAME_EXP, and associated error string ``Client's entry in database has expired''.
+.PP
+This is a great improvement compared to just getting one of the unix error-codes back. However, Heimdal have an extention to pass back customised errors messages. Instead of getting ``Key table entry not found'', the user might back ``failed to find host/host.example.com@EXAMLE.COM(kvno 3) in keytab /etc/krb5.keytab (des-cbc-crc)''. This improves the chance that the user find the cause of the error so you should use the customised error message whenever it's available.
+.PP
+See also module \fBHeimdal Kerberos 5 error reporting functions\fP .
+.SS "Keytab management"
+A keytab is a storage for locally stored keys. Heimdal includes keytab support for Kerberos 5 keytabs, Kerberos 4 srvtab, AFS-KeyFile's, and for storing keys in memory.
+.PP
+Keytabs are used for servers and long-running services.
+.PP
+See also \fBThe keytab handing functions\fP and \fBHeimdal Kerberos 5 keytab handling functions\fP .
+.SS "Kerberos crypto"
+Heimdal includes a implementation of the Kerberos crypto framework, all crypto operations. To create a crypto context call \fBkrb5_crypto_init()\fP.
+.PP
+See also module \fBHeimdal Kerberos 5 cryptography functions\fP .
+.SH "Walkthrough of a sample Kerberos 5 client"
+.PP
+This example contains parts of a sample TCP Kerberos 5 clients, if you want a real working client, please look in appl/test directory in the Heimdal distribution.
+.PP
+All Kerberos error-codes that are returned from kerberos functions in this program are passed to krb5_err, that will print a descriptive text of the error code and exit. Graphical programs can convert error-code to a human readable error-string with the krb5_get_error_message() function.
+.PP
+Note that you should not use any Kerberos function before \fBkrb5_init_context()\fP have completed successfully. That is the reason err() is used when \fBkrb5_init_context()\fP fails.
+.PP
+First the client needs to call krb5_init_context to initialise the Kerberos 5 library. This is only needed once per thread in the program. If the function returns a non-zero value it indicates that either the Kerberos implementation is failing or it's disabled on this host.
+.PP
+.PP
+.nf
+ #include <krb5.h>
+
+ int
+ main(int argc, char **argv)
+ {
+ krb5_context context;
+
+ if (krb5_init_context(&context))
+ errx (1, 'krb5_context');
+.fi
+.PP
+.PP
+Now the client wants to connect to the host at the other end. The preferred way of doing this is using getaddrinfo (for operating system that have this function implemented), since getaddrinfo is neutral to the address type and can use any protocol that is available.
+.PP
+.PP
+.nf
+ struct addrinfo *ai, *a;
+ struct addrinfo hints;
+ int error;
+
+ memset (&hints, 0, sizeof(hints));
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_protocol = IPPROTO_TCP;
+
+ error = getaddrinfo (hostname, 'pop3', &hints, &ai);
+ if (error)
+ errx (1, '%s: %s', hostname, gai_strerror(error));
+
+ for (a = ai; a != NULL; a = a->ai_next) {
+ int s;
+
+ s = socket (a->ai_family, a->ai_socktype, a->ai_protocol);
+ if (s < 0)
+ continue;
+ if (connect (s, a->ai_addr, a->ai_addrlen) < 0) {
+ warn ('connect(%s)', hostname);
+ close (s);
+ continue;
+ }
+ freeaddrinfo (ai);
+ ai = NULL;
+ }
+ if (ai) {
+ freeaddrinfo (ai);
+ errx ('failed to contact %s', hostname);
+ }
+.fi
+.PP
+.PP
+Before authenticating, an authentication context needs to be created. This context keeps all information for one (to be) authenticated connection (see krb5_auth_context).
+.PP
+.PP
+.nf
+ status = krb5_auth_con_init (context, &auth_context);
+ if (status)
+ krb5_err (context, 1, status, 'krb5_auth_con_init');
+.fi
+.PP
+.PP
+For setting the address in the authentication there is a help function krb5_auth_con_setaddrs_from_fd() that does everything that is needed when given a connected file descriptor to the socket.
+.PP
+.PP
+.nf
+ status = krb5_auth_con_setaddrs_from_fd (context,
+ auth_context,
+ &sock);
+ if (status)
+ krb5_err (context, 1, status,
+ 'krb5_auth_con_setaddrs_from_fd');
+.fi
+.PP
+.PP
+The next step is to build a server principal for the service we want to connect to. (See also \fBkrb5_sname_to_principal()\fP.)
+.PP
+.PP
+.nf
+ status = krb5_sname_to_principal (context,
+ hostname,
+ service,
+ KRB5_NT_SRV_HST,
+ &server);
+ if (status)
+ krb5_err (context, 1, status, 'krb5_sname_to_principal');
+.fi
+.PP
+.PP
+The client principal is not passed to krb5_sendauth() function, this causes the krb5_sendauth() function to try to figure it out itself.
+.PP
+The server program is using the function krb5_recvauth() to receive the Kerberos 5 authenticator.
+.PP
+In this case, mutual authentication will be tried. That means that the server will authenticate to the client. Using mutual authentication is good since it enables the user to verify that they are talking to the right server (a server that knows the key).
+.PP
+If you are using a non-blocking socket you will need to do all work of krb5_sendauth() yourself. Basically you need to send over the authenticator from krb5_mk_req() and, in case of mutual authentication, verifying the result from the server with krb5_rd_rep().
+.PP
+.PP
+.nf
+ status = krb5_sendauth (context,
+ &auth_context,
+ &sock,
+ VERSION,
+ NULL,
+ server,
+ AP_OPTS_MUTUAL_REQUIRED,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ if (status)
+ krb5_err (context, 1, status, 'krb5_sendauth');
+.fi
+.PP
+.PP
+Once authentication has been performed, it is time to send some data. First we create a krb5_data structure, then we sign it with krb5_mk_safe() using the auth_context that contains the session-key that was exchanged in the krb5_sendauth()/krb5_recvauth() authentication sequence.
+.PP
+.PP
+.nf
+ data.data = 'hej';
+ data.length = 3;
+
+ krb5_data_zero (&packet);
+
+ status = krb5_mk_safe (context,
+ auth_context,
+ &data,
+ &packet,
+ NULL);
+ if (status)
+ krb5_err (context, 1, status, 'krb5_mk_safe');
+.fi
+.PP
+.PP
+And send it over the network.
+.PP
+.PP
+.nf
+ len = packet.length;
+ net_len = htonl(len);
+
+ if (krb5_net_write (context, &sock, &net_len, 4) != 4)
+ err (1, 'krb5_net_write');
+ if (krb5_net_write (context, &sock, packet.data, len) != len)
+ err (1, 'krb5_net_write');
+.fi
+.PP
+.PP
+To send encrypted (and signed) data krb5_mk_priv() should be used instead. krb5_mk_priv() works the same way as krb5_mk_safe(), with the exception that it encrypts the data in addition to signing it.
+.PP
+.PP
+.nf
+ data.data = 'hemligt';
+ data.length = 7;
+
+ krb5_data_free (&packet);
+
+ status = krb5_mk_priv (context,
+ auth_context,
+ &data,
+ &packet,
+ NULL);
+ if (status)
+ krb5_err (context, 1, status, 'krb5_mk_priv');
+.fi
+.PP
+.PP
+And send it over the network.
+.PP
+.PP
+.nf
+ len = packet.length;
+ net_len = htonl(len);
+
+ if (krb5_net_write (context, &sock, &net_len, 4) != 4)
+ err (1, 'krb5_net_write');
+ if (krb5_net_write (context, &sock, packet.data, len) != len)
+ err (1, 'krb5_net_write');
+.fi
+.PP
+.PP
+The server is using krb5_rd_safe() and krb5_rd_priv() to verify the signature and decrypt the packet.
+.SH "Validating a password in an application"
+.PP
+See the manual page for krb5_verify_user().
+.SH "API differences to MIT Kerberos"
+.PP
+This section is somewhat disorganised, but so far there is no overall structure to the differences, though some of the have their root in that Heimdal uses an ASN.1 compiler and MIT doesn't.
+.SS "Principal and realms"
+Heimdal stores the realm as a krb5_realm, that is a char *. MIT Kerberos uses a krb5_data to store a realm.
+.PP
+In Heimdal krb5_principal doesn't contain the component name_type; it's instead stored in component name.name_type. To get and set the nametype in Heimdal, use \fBkrb5_principal_get_type()\fP and \fBkrb5_principal_set_type()\fP.
+.PP
+For more information about principal and realms, see krb5_principal.
+.SS "Error messages"
+To get the error string, Heimdal uses krb5_get_error_message(). This is to return custom error messages (like ``Can't find host/datan.example.com@CODE.COM in /etc/krb5.conf.'' instead of a ``Key table entry not found'' that error_message returns.
+.PP
+Heimdal uses a threadsafe(r) version of the com_err interface; the global com_err table isn't initialised. Then error_message returns quite a boring error string (just the error code itself).
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_is_config_principal.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_is_config_principal.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_is_config_principal.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_is_thread_safe.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_is_thread_safe.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_is_thread_safe.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kerberos_enctypes.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kerberos_enctypes.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kerberos_enctypes.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keyblock_get_enctype.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keyblock_get_enctype.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keyblock_get_enctype.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keyblock_init.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keyblock_init.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keyblock_init.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keyblock_zero.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keyblock_zero.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keyblock_zero.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytab.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytab.3
new file mode 100644
index 000000000000..3c76f400d5ee
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytab.3
@@ -0,0 +1,486 @@
+.TH "Heimdal Kerberos 5 keytab handling functions" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal Kerberos 5 keytab handling functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_register\fP (krb5_context context, const krb5_kt_ops *ops)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_resolve\fP (krb5_context context, const char *name, krb5_keytab *id)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_default_name\fP (krb5_context context, char *name, size_t namesize)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_default_modify_name\fP (krb5_context context, char *name, size_t namesize)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_default\fP (krb5_context context, krb5_keytab *id)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_read_service_key\fP (krb5_context context, krb5_pointer keyprocarg, krb5_principal principal, krb5_kvno vno, krb5_enctype enctype, krb5_keyblock **key)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_get_type\fP (krb5_context context, krb5_keytab keytab, char *prefix, size_t prefixsize)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_get_name\fP (krb5_context context, krb5_keytab keytab, char *name, size_t namesize)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_get_full_name\fP (krb5_context context, krb5_keytab keytab, char **str)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_close\fP (krb5_context context, krb5_keytab id)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_destroy\fP (krb5_context context, krb5_keytab id)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_kt_compare\fP (krb5_context context, krb5_keytab_entry *entry, krb5_const_principal principal, krb5_kvno vno, krb5_enctype enctype)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_get_entry\fP (krb5_context context, krb5_keytab id, krb5_const_principal principal, krb5_kvno kvno, krb5_enctype enctype, krb5_keytab_entry *entry)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_copy_entry_contents\fP (krb5_context context, const krb5_keytab_entry *in, krb5_keytab_entry *out)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_free_entry\fP (krb5_context context, krb5_keytab_entry *entry)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_start_seq_get\fP (krb5_context context, krb5_keytab id, krb5_kt_cursor *cursor)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_next_entry\fP (krb5_context context, krb5_keytab id, krb5_keytab_entry *entry, krb5_kt_cursor *cursor)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_end_seq_get\fP (krb5_context context, krb5_keytab id, krb5_kt_cursor *cursor)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_add_entry\fP (krb5_context context, krb5_keytab id, krb5_keytab_entry *entry)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_kt_remove_entry\fP (krb5_context context, krb5_keytab id, krb5_keytab_entry *entry)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_kt_have_content\fP (krb5_context context, krb5_keytab id)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_add_entry (krb5_context context, krb5_keytab id, krb5_keytab_entry * entry)"
+.PP
+Add the entry in `entry' to the keytab `id'.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIid\fP a keytab.
+.br
+\fIentry\fP the entry to add
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_close (krb5_context context, krb5_keytab id)"
+.PP
+Finish using the keytab in `id'. All resources will be released, even on errors.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIid\fP keytab to close.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_kt_compare (krb5_context context, krb5_keytab_entry * entry, krb5_const_principal principal, krb5_kvno vno, krb5_enctype enctype)"
+.PP
+Compare `entry' against `principal, vno, enctype'. Any of `principal, vno, enctype' might be 0 which acts as a wildcard. Return TRUE if they compare the same, FALSE otherwise.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIentry\fP an entry to match with.
+.br
+\fIprincipal\fP principal to match, NULL matches all principals.
+.br
+\fIvno\fP key version to match, 0 matches all key version numbers.
+.br
+\fIenctype\fP encryption type to match, 0 matches all encryption types.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return TRUE or match, FALSE if not matched.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_copy_entry_contents (krb5_context context, const krb5_keytab_entry * in, krb5_keytab_entry * out)"
+.PP
+Copy the contents of `in' into `out'.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIin\fP the keytab entry to copy.
+.br
+\fIout\fP the copy of the keytab entry, free with \fBkrb5_kt_free_entry()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_default (krb5_context context, krb5_keytab * id)"
+.PP
+Set `id' to the default keytab.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIid\fP the new default keytab.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_default_modify_name (krb5_context context, char * name, size_t namesize)"
+.PP
+Copy the name of the default modify keytab into `name'.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIname\fP buffer where the name will be written
+.br
+\fInamesize\fP length of name
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_default_name (krb5_context context, char * name, size_t namesize)"
+.PP
+copy the name of the default keytab into `name'.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIname\fP buffer where the name will be written
+.br
+\fInamesize\fP length of name
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_destroy (krb5_context context, krb5_keytab id)"
+.PP
+Destroy (remove) the keytab in `id'. All resources will be released, even on errors, does the equvalment of \fBkrb5_kt_close()\fP on the resources.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIid\fP keytab to destroy.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_end_seq_get (krb5_context context, krb5_keytab id, krb5_kt_cursor * cursor)"
+.PP
+Release all resources associated with `cursor'.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIid\fP a keytab.
+.br
+\fIcursor\fP the cursor to free.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_free_entry (krb5_context context, krb5_keytab_entry * entry)"
+.PP
+Free the contents of `entry'.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIentry\fP the entry to free
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_get_entry (krb5_context context, krb5_keytab id, krb5_const_principal principal, krb5_kvno kvno, krb5_enctype enctype, krb5_keytab_entry * entry)"
+.PP
+Retrieve the keytab entry for `principal, kvno, enctype' into `entry' from the keytab `id'. Matching is done like \fBkrb5_kt_compare()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIid\fP a keytab.
+.br
+\fIprincipal\fP principal to match, NULL matches all principals.
+.br
+\fIkvno\fP key version to match, 0 matches all key version numbers.
+.br
+\fIenctype\fP encryption type to match, 0 matches all encryption types.
+.br
+\fIentry\fP the returned entry, free with \fBkrb5_kt_free_entry()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_get_full_name (krb5_context context, krb5_keytab keytab, char ** str)"
+.PP
+Retrieve the full name of the keytab `keytab' and store the name in `str'.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIkeytab\fP keytab to get name for.
+.br
+\fIstr\fP the name of the keytab name, usee krb5_xfree() to free the string. On error, *str is set to NULL.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_get_name (krb5_context context, krb5_keytab keytab, char * name, size_t namesize)"
+.PP
+Retrieve the name of the keytab `keytab' into `name', `namesize'
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIkeytab\fP the keytab to get the name for.
+.br
+\fIname\fP name buffer.
+.br
+\fInamesize\fP size of name buffer.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_get_type (krb5_context context, krb5_keytab keytab, char * prefix, size_t prefixsize)"
+.PP
+Return the type of the `keytab' in the string `prefix of length `prefixsize'.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIkeytab\fP the keytab to get the prefix for
+.br
+\fIprefix\fP prefix buffer
+.br
+\fIprefixsize\fP length of prefix buffer
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_kt_have_content (krb5_context context, krb5_keytab id)"
+.PP
+Return true if the keytab exists and have entries
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIid\fP a keytab.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_next_entry (krb5_context context, krb5_keytab id, krb5_keytab_entry * entry, krb5_kt_cursor * cursor)"
+.PP
+Get the next entry from keytab, advance the cursor. On last entry the function will return KRB5_KT_END.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIid\fP a keytab.
+.br
+\fIentry\fP the returned entry, free with \fBkrb5_kt_free_entry()\fP.
+.br
+\fIcursor\fP the cursor of the iteration.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_read_service_key (krb5_context context, krb5_pointer keyprocarg, krb5_principal principal, krb5_kvno vno, krb5_enctype enctype, krb5_keyblock ** key)"
+.PP
+Read the key identified by `(principal, vno, enctype)' from the keytab in `keyprocarg' (the default if == NULL) into `*key'.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIkeyprocarg\fP
+.br
+\fIprincipal\fP
+.br
+\fIvno\fP
+.br
+\fIenctype\fP
+.br
+\fIkey\fP
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_register (krb5_context context, const krb5_kt_ops * ops)"
+.PP
+Register a new keytab backend.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIops\fP a backend to register.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_remove_entry (krb5_context context, krb5_keytab id, krb5_keytab_entry * entry)"
+.PP
+Remove an entry from the keytab, matching is done using \fBkrb5_kt_compare()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIid\fP a keytab.
+.br
+\fIentry\fP the entry to remove
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_resolve (krb5_context context, const char * name, krb5_keytab * id)"
+.PP
+Resolve the keytab name (of the form `type:residual') in `name' into a keytab in `id'.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIname\fP name to resolve
+.br
+\fIid\fP resulting keytab, free with \fBkrb5_kt_close()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_kt_start_seq_get (krb5_context context, krb5_keytab id, krb5_kt_cursor * cursor)"
+.PP
+Set `cursor' to point at the beginning of `id'.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context.
+.br
+\fIid\fP a keytab.
+.br
+\fIcursor\fP a newly allocated cursor, free with \fBkrb5_kt_end_seq_get()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytab_intro.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytab_intro.3
new file mode 100644
index 000000000000..ee3eff2ce4c7
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytab_intro.3
@@ -0,0 +1,74 @@
+.TH "krb5_keytab_intro" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+krb5_keytab_intro \- The keytab handing functions
+.SH "Kerberos Keytabs"
+.PP
+See the library functions here: \fBHeimdal Kerberos 5 keytab handling functions\fP
+.PP
+Keytabs are long term key storage for servers, their equvalment of password files.
+.PP
+Normally the only function that useful for server are to specify what keytab to use to other core functions like krb5_rd_req() \fBkrb5_kt_resolve()\fP, and \fBkrb5_kt_close()\fP.
+.SS "Keytab names"
+A keytab name is on the form type:residual. The residual part is specific to each keytab-type.
+.PP
+When a keytab-name is resolved, the type is matched with an internal list of keytab types. If there is no matching keytab type, the default keytab is used. The current default type is FILE.
+.PP
+The default value can be changed in the configuration file /etc/krb5.conf by setting the variable [defaults]default_keytab_name.
+.PP
+The keytab types that are implemented in Heimdal are:
+.IP "\(bu" 2
+file store the keytab in a file, the type's name is FILE . The residual part is a filename. For compatibility with other Kerberos implemtation WRFILE and JAVA14 is also accepted. WRFILE has the same format as FILE. JAVA14 have a format that is compatible with older versions of MIT kerberos and SUN's Java based installation. They store a truncted kvno, so when the knvo excess 255, they are truncted in this format.
+.PP
+.PP
+.IP "\(bu" 2
+keytab store the keytab in a AFS keyfile (usually /usr/afs/etc/KeyFile ), the type's name is AFSKEYFILE. The residual part is a filename.
+.PP
+.PP
+.IP "\(bu" 2
+memory The keytab is stored in a memory segment. This allows sensitive and/or temporary data not to be stored on disk. The type's name is MEMORY. Each MEMORY keytab is referenced counted by and opened by the residual name, so two handles can point to the same memory area. When the last user closes using \fBkrb5_kt_close()\fP the keytab, the keys in they keytab is memset() to zero and freed and can no longer be looked up by name.
+.PP
+.SS "Keytab example"
+This is a minimalistic version of ktutil.
+.PP
+.PP
+.nf
+int
+main (int argc, char **argv)
+{
+ krb5_context context;
+ krb5_keytab keytab;
+ krb5_kt_cursor cursor;
+ krb5_keytab_entry entry;
+ krb5_error_code ret;
+ char *principal;
+
+ if (krb5_init_context (&context) != 0)
+ errx(1, 'krb5_context');
+
+ ret = krb5_kt_default (context, &keytab);
+ if (ret)
+ krb5_err(context, 1, ret, 'krb5_kt_default');
+
+ ret = krb5_kt_start_seq_get(context, keytab, &cursor);
+ if (ret)
+ krb5_err(context, 1, ret, 'krb5_kt_start_seq_get');
+ while((ret = krb5_kt_next_entry(context, keytab, &entry, &cursor)) == 0){
+ krb5_unparse_name(context, entry.principal, &principal);
+ printf('principal: %s\n', principal);
+ free(principal);
+ krb5_kt_free_entry(context, &entry);
+ }
+ ret = krb5_kt_end_seq_get(context, keytab, &cursor);
+ if (ret)
+ krb5_err(context, 1, ret, 'krb5_kt_end_seq_get');
+ ret = krb5_kt_close(context, keytab);
+ if (ret)
+ krb5_err(context, 1, ret, 'krb5_kt_close');
+ krb5_free_context(context);
+ return 0;
+}
+.fi
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytab_key_proc.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytab_key_proc.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytab_key_proc.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytype_to_enctypes.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytype_to_enctypes.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytype_to_enctypes.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytype_to_enctypes_default.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytype_to_enctypes_default.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytype_to_enctypes_default.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytype_to_string.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytype_to_string.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_keytype_to_string.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_krbhst_get_addrinfo.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_krbhst_get_addrinfo.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_krbhst_get_addrinfo.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_add_entry.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_add_entry.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_add_entry.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_close.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_close.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_close.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_compare.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_compare.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_compare.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_copy_entry_contents.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_copy_entry_contents.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_copy_entry_contents.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_default.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_default.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_default.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_default_modify_name.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_default_modify_name.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_default_modify_name.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_default_name.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_default_name.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_default_name.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_destroy.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_destroy.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_destroy.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_end_seq_get.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_end_seq_get.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_end_seq_get.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_free_entry.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_free_entry.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_free_entry.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_get_entry.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_get_entry.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_get_entry.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_get_full_name.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_get_full_name.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_get_full_name.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_get_name.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_get_name.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_get_name.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_get_type.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_get_type.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_get_type.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_have_content.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_have_content.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_have_content.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_next_entry.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_next_entry.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_next_entry.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_read_service_key.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_read_service_key.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_read_service_key.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_register.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_register.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_register.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_remove_entry.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_remove_entry.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_remove_entry.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_resolve.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_resolve.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_resolve.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_start_seq_get.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_start_seq_get.3
new file mode 100644
index 000000000000..abf40bbf82b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kt_start_seq_get.3
@@ -0,0 +1 @@
+.so man3/krb5_keytab.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kuserok.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kuserok.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_kuserok.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_make_addrport.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_make_addrport.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_make_addrport.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_make_principal.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_make_principal.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_make_principal.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_max_sockaddr_size.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_max_sockaddr_size.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_max_sockaddr_size.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_mcc_ops.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_mcc_ops.3
new file mode 100644
index 000000000000..e64747b9d073
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_mcc_ops.3
@@ -0,0 +1 @@
+.so man3/krb5_ccache.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_pac.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_pac.3
new file mode 100644
index 000000000000..d4ea6d229309
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_pac.3
@@ -0,0 +1,66 @@
+.TH "Heimdal Kerberos 5 PAC handling functions" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal Kerberos 5 PAC handling functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_pac_get_buffer\fP (krb5_context context, krb5_pac p, uint32_t type, krb5_data *data)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_pac_verify\fP (krb5_context context, const krb5_pac pac, time_t authtime, krb5_const_principal principal, const krb5_keyblock *server, const krb5_keyblock *privsvr)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_pac_get_buffer (krb5_context context, krb5_pac p, uint32_t type, krb5_data * data)"
+.PP
+Get the PAC buffer of specific type from the pac.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIp\fP the pac structure returned by krb5_pac_parse().
+.br
+\fItype\fP type of buffer to get
+.br
+\fIdata\fP return data, free with \fBkrb5_data_free()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_pac_verify (krb5_context context, const krb5_pac pac, time_t authtime, krb5_const_principal principal, const krb5_keyblock * server, const krb5_keyblock * privsvr)"
+.PP
+Verify the PAC.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIpac\fP the pac structure returned by krb5_pac_parse().
+.br
+\fIauthtime\fP The time of the ticket the PAC belongs to.
+.br
+\fIprincipal\fP the principal to verify.
+.br
+\fIserver\fP The service key, most always be given.
+.br
+\fIprivsvr\fP The KDC key, may be given.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_pac_get_buffer.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_pac_get_buffer.3
new file mode 100644
index 000000000000..bd150f6be5b9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_pac_get_buffer.3
@@ -0,0 +1 @@
+.so man3/krb5_pac.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_pac_verify.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_pac_verify.3
new file mode 100644
index 000000000000..bd150f6be5b9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_pac_verify.3
@@ -0,0 +1 @@
+.so man3/krb5_pac.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_parse_address.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_parse_address.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_parse_address.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_parse_name.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_parse_name.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_parse_name.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_parse_name_flags.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_parse_name_flags.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_parse_name_flags.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_parse_nametype.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_parse_nametype.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_parse_nametype.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_password_key_proc.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_password_key_proc.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_password_key_proc.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_plugin_register.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_plugin_register.3
new file mode 100644
index 000000000000..21a2567dc68c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_plugin_register.3
@@ -0,0 +1 @@
+.so man3/krb5_support.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_prepend_config_files_default.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_prepend_config_files_default.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_prepend_config_files_default.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_princ_realm.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_princ_realm.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_princ_realm.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_princ_set_realm.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_princ_set_realm.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_princ_set_realm.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3
new file mode 100644
index 000000000000..23ceedf156bb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3
@@ -0,0 +1,519 @@
+.TH "Heimdal Kerberos 5 principal functions" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal Kerberos 5 principal functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_free_principal\fP (krb5_context context, krb5_principal p)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_principal_set_type\fP (krb5_context context, krb5_principal principal, int type)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION int KRB5_LIB_CALL \fBkrb5_principal_get_type\fP (krb5_context context, krb5_const_principal principal)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION const char *KRB5_LIB_CALL \fBkrb5_principal_get_realm\fP (krb5_context context, krb5_const_principal principal)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION unsigned int KRB5_LIB_CALL \fBkrb5_principal_get_num_comp\fP (krb5_context context, krb5_const_principal principal)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_parse_name_flags\fP (krb5_context context, const char *name, int flags, krb5_principal *principal)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_parse_name\fP (krb5_context context, const char *name, krb5_principal *principal)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_unparse_name_fixed\fP (krb5_context context, krb5_const_principal principal, char *name, size_t len)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_unparse_name_fixed_short\fP (krb5_context context, krb5_const_principal principal, char *name, size_t len)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_unparse_name_fixed_flags\fP (krb5_context context, krb5_const_principal principal, int flags, char *name, size_t len)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_unparse_name\fP (krb5_context context, krb5_const_principal principal, char **name)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_unparse_name_flags\fP (krb5_context context, krb5_const_principal principal, int flags, char **name)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_unparse_name_short\fP (krb5_context context, krb5_const_principal principal, char **name)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_principal_set_realm\fP (krb5_context context, krb5_principal principal, krb5_const_realm realm)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_build_principal\fP (krb5_context context, krb5_principal *principal, int rlen, krb5_const_realm realm,...)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_make_principal\fP (krb5_context context, krb5_principal *principal, krb5_const_realm realm,...)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_copy_principal\fP (krb5_context context, krb5_const_principal inprinc, krb5_principal *outprinc)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_principal_compare_any_realm\fP (krb5_context context, krb5_const_principal princ1, krb5_const_principal princ2)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_principal_compare\fP (krb5_context context, krb5_const_principal princ1, krb5_const_principal princ2)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_realm_compare\fP (krb5_context context, krb5_const_principal princ1, krb5_const_principal princ2)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_principal_match\fP (krb5_context context, krb5_const_principal princ, krb5_const_principal pattern)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_sname_to_principal\fP (krb5_context context, const char *hostname, const char *sname, int32_t type, krb5_principal *ret_princ)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_parse_nametype\fP (krb5_context context, const char *str, int32_t *nametype)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_principal_is_krbtgt\fP (krb5_context context, krb5_const_principal p)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_build_principal (krb5_context context, krb5_principal * principal, int rlen, krb5_const_realm realm, ...)"
+.PP
+Build a principal using vararg style building
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos context.
+.br
+\fIprincipal\fP returned principal
+.br
+\fIrlen\fP length of realm
+.br
+\fIrealm\fP realm name
+.br
+\fI...\fP a list of components ended with NULL.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An krb5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_copy_principal (krb5_context context, krb5_const_principal inprinc, krb5_principal * outprinc)"
+.PP
+Copy a principal
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos context.
+.br
+\fIinprinc\fP principal to copy
+.br
+\fIoutprinc\fP copied principal, free with \fBkrb5_free_principal()\fP
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An krb5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_principal (krb5_context context, krb5_principal p)"
+.PP
+Frees a Kerberos principal allocated by the library with \fBkrb5_parse_name()\fP, \fBkrb5_make_principal()\fP or any other related principal functions.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos context.
+.br
+\fIp\fP a principal to free.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An krb5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_make_principal (krb5_context context, krb5_principal * principal, krb5_const_realm realm, ...)"
+.PP
+Build a principal using vararg style building
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos context.
+.br
+\fIprincipal\fP returned principal
+.br
+\fIrealm\fP realm name
+.br
+\fI...\fP a list of components ended with NULL.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An krb5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_parse_name (krb5_context context, const char * name, krb5_principal * principal)"
+.PP
+Parse a name into a krb5_principal structure
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context
+.br
+\fIname\fP name to parse into a Kerberos principal
+.br
+\fIprincipal\fP returned principal, free with \fBkrb5_free_principal()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An krb5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_parse_name_flags (krb5_context context, const char * name, int flags, krb5_principal * principal)"
+.PP
+Parse a name into a krb5_principal structure, flags controls the behavior.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context
+.br
+\fIname\fP name to parse into a Kerberos principal
+.br
+\fIflags\fP flags to control the behavior
+.br
+\fIprincipal\fP returned principal, free with \fBkrb5_free_principal()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An krb5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_parse_nametype (krb5_context context, const char * str, int32_t * nametype)"
+.PP
+Parse nametype string and return a nametype integer
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_principal_compare (krb5_context context, krb5_const_principal princ1, krb5_const_principal princ2)"
+.PP
+Compares the two principals, including realm of the principals and returns TRUE if they are the same and FALSE if not.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context
+.br
+\fIprinc1\fP first principal to compare
+.br
+\fIprinc2\fP second principal to compare
+.RE
+.PP
+\fBSee also:\fP
+.RS 4
+\fBkrb5_principal_compare_any_realm()\fP
+.PP
+\fBkrb5_realm_compare()\fP
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_principal_compare_any_realm (krb5_context context, krb5_const_principal princ1, krb5_const_principal princ2)"
+.PP
+Return TRUE iff princ1 == princ2 (without considering the realm)
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context
+.br
+\fIprinc1\fP first principal to compare
+.br
+\fIprinc2\fP second principal to compare
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+non zero if equal, 0 if not
+.RE
+.PP
+\fBSee also:\fP
+.RS 4
+\fBkrb5_principal_compare()\fP
+.PP
+\fBkrb5_realm_compare()\fP
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION unsigned int KRB5_LIB_CALL krb5_principal_get_num_comp (krb5_context context, krb5_const_principal principal)"
+.PP
+Get number of component is principal.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context
+.br
+\fIprincipal\fP principal to query
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+number of components in string
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL krb5_principal_get_realm (krb5_context context, krb5_const_principal principal)"
+.PP
+Get the realm of the principal
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos context.
+.br
+\fIprincipal\fP principal to get the realm for
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+realm of the principal, don't free or use after krb5_principal is freed
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_principal_get_type (krb5_context context, krb5_const_principal principal)"
+.PP
+Get the type of the principal
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos context.
+.br
+\fIprincipal\fP principal to get the type for
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the type of principal
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_principal_is_krbtgt (krb5_context context, krb5_const_principal p)"
+.PP
+Check if the cname part of the principal is a krbtgt principal
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_principal_match (krb5_context context, krb5_const_principal princ, krb5_const_principal pattern)"
+.PP
+return TRUE iff princ matches pattern
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_principal_set_realm (krb5_context context, krb5_principal principal, krb5_const_realm realm)"
+.PP
+Set a new realm for a principal, and as a side-effect free the previous realm.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos context.
+.br
+\fIprincipal\fP principal set the realm for
+.br
+\fIrealm\fP the new realm to set
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An krb5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_principal_set_type (krb5_context context, krb5_principal principal, int type)"
+.PP
+Set the type of the principal
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos context.
+.br
+\fIprincipal\fP principal to set the type for
+.br
+\fItype\fP the new type
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An krb5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_realm_compare (krb5_context context, krb5_const_principal princ1, krb5_const_principal princ2)"
+.PP
+return TRUE iff realm(princ1) == realm(princ2)
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context
+.br
+\fIprinc1\fP first principal to compare
+.br
+\fIprinc2\fP second principal to compare
+.RE
+.PP
+\fBSee also:\fP
+.RS 4
+\fBkrb5_principal_compare_any_realm()\fP
+.PP
+\fBkrb5_principal_compare()\fP
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_sname_to_principal (krb5_context context, const char * hostname, const char * sname, int32_t type, krb5_principal * ret_princ)"
+.PP
+Create a principal for the service running on hostname. If KRB5_NT_SRV_HST is used, the hostname is canonization using DNS (or some other service), this is potentially insecure.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos context.
+.br
+\fIhostname\fP hostname to use
+.br
+\fIsname\fP Service name to use
+.br
+\fItype\fP name type of pricipal, use KRB5_NT_SRV_HST or KRB5_NT_UNKNOWN.
+.br
+\fIret_princ\fP return principal, free with \fBkrb5_free_principal()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An krb5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_unparse_name (krb5_context context, krb5_const_principal principal, char ** name)"
+.PP
+Unparse the Kerberos name into a string
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context
+.br
+\fIprincipal\fP principal to query
+.br
+\fIname\fP resulting string, free with krb5_xfree()
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An krb5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_unparse_name_fixed (krb5_context context, krb5_const_principal principal, char * name, size_t len)"
+.PP
+Unparse the principal name to a fixed buffer
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos context.
+.br
+\fIprincipal\fP principal to unparse
+.br
+\fIname\fP buffer to write name to
+.br
+\fIlen\fP length of buffer
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An krb5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_unparse_name_fixed_flags (krb5_context context, krb5_const_principal principal, int flags, char * name, size_t len)"
+.PP
+Unparse the principal name with unparse flags to a fixed buffer.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos context.
+.br
+\fIprincipal\fP principal to unparse
+.br
+\fIflags\fP unparse flags
+.br
+\fIname\fP buffer to write name to
+.br
+\fIlen\fP length of buffer
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An krb5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_unparse_name_fixed_short (krb5_context context, krb5_const_principal principal, char * name, size_t len)"
+.PP
+Unparse the principal name to a fixed buffer. The realm is skipped if its a default realm.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos context.
+.br
+\fIprincipal\fP principal to unparse
+.br
+\fIname\fP buffer to write name to
+.br
+\fIlen\fP length of buffer
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An krb5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_unparse_name_flags (krb5_context context, krb5_const_principal principal, int flags, char ** name)"
+.PP
+Unparse the Kerberos name into a string
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context
+.br
+\fIprincipal\fP principal to query
+.br
+\fIflags\fP flag to determine the behavior
+.br
+\fIname\fP resulting string, free with krb5_xfree()
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An krb5 error code, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_unparse_name_short (krb5_context context, krb5_const_principal principal, char ** name)"
+.PP
+Unparse the principal name to a allocated buffer. The realm is skipped if its a default realm.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos context.
+.br
+\fIprincipal\fP principal to unparse
+.br
+\fIname\fP returned buffer, free with krb5_xfree()
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An krb5 error code, see krb5_get_error_message().
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_compare.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_compare.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_compare.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_compare_any_realm.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_compare_any_realm.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_compare_any_realm.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_get_num_comp.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_get_num_comp.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_get_num_comp.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_get_realm.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_get_realm.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_get_realm.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_get_type.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_get_type.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_get_type.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_intro.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_intro.3
new file mode 100644
index 000000000000..4f496fa3b854
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_intro.3
@@ -0,0 +1,17 @@
+.TH "krb5_principal_intro" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+krb5_principal_intro \- The principal handing functions.
+A Kerberos principal is a email address looking string that contains to parts separeted by a @. The later part is the kerbero realm the principal belongs to and the former is a list of 0 or more components. For example
+.PP
+.nf
+
+lha@SU.SE
+host/hummel.it.su.se@SU.SE
+host/admin@H5L.ORG
+
+.fi
+.PP
+.PP
+See the library functions here: \fBHeimdal Kerberos 5 principal functions\fP
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_is_krbtgt.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_is_krbtgt.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_is_krbtgt.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_match.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_match.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_match.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_set_realm.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_set_realm.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_set_realm.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_set_type.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_set_type.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal_set_type.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_print_address.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_print_address.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_print_address.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_random_to_key.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_random_to_key.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_random_to_key.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_ctx.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_ctx.3
new file mode 100644
index 000000000000..a329e38ee1a7
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_ctx.3
@@ -0,0 +1 @@
+.so man3/krb5_auth.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_in_ctx_alloc.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_in_ctx_alloc.3
new file mode 100644
index 000000000000..a329e38ee1a7
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_in_ctx_alloc.3
@@ -0,0 +1 @@
+.so man3/krb5_auth.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_in_set_keytab.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_in_set_keytab.3
new file mode 100644
index 000000000000..a329e38ee1a7
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_in_set_keytab.3
@@ -0,0 +1 @@
+.so man3/krb5_auth.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_in_set_pac_check.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_in_set_pac_check.3
new file mode 100644
index 000000000000..a329e38ee1a7
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_in_set_pac_check.3
@@ -0,0 +1 @@
+.so man3/krb5_auth.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_out_ctx_free.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_out_ctx_free.3
new file mode 100644
index 000000000000..a329e38ee1a7
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_out_ctx_free.3
@@ -0,0 +1 @@
+.so man3/krb5_auth.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_out_get_server.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_out_get_server.3
new file mode 100644
index 000000000000..a329e38ee1a7
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_rd_req_out_get_server.3
@@ -0,0 +1 @@
+.so man3/krb5_auth.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_realm_compare.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_realm_compare.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_realm_compare.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_address.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_address.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_address.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_addrs.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_addrs.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_addrs.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_authdata.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_authdata.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_authdata.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_creds.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_creds.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_creds.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_creds_tag.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_creds_tag.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_creds_tag.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_data.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_data.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_data.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_int16.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_int16.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_int16.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_int32.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_int32.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_int32.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_int8.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_int8.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_int8.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_keyblock.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_keyblock.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_keyblock.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_principal.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_principal.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_principal.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_string.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_string.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_string.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_stringz.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_stringz.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_stringz.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_times.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_times.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_times.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_uint16.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_uint16.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_uint16.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_uint32.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_uint32.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_uint32.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_uint8.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_uint8.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ret_uint8.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_config_files.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_config_files.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_config_files.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_default_in_tkt_etypes.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_default_in_tkt_etypes.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_default_in_tkt_etypes.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_dns_canonicalize_hostname.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_dns_canonicalize_hostname.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_dns_canonicalize_hostname.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_error_message.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_error_message.3
new file mode 100644
index 000000000000..f721fda2cd4b
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_error_message.3
@@ -0,0 +1 @@
+.so man3/krb5_error.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_error_string.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_error_string.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_error_string.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_extra_addresses.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_extra_addresses.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_extra_addresses.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_fcache_version.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_fcache_version.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_fcache_version.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_home_dir_access.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_home_dir_access.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_home_dir_access.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_ignore_addresses.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_ignore_addresses.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_ignore_addresses.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_kdc_sec_offset.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_kdc_sec_offset.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_kdc_sec_offset.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_max_time_skew.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_max_time_skew.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_max_time_skew.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_password.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_password.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_password.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_real_time.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_real_time.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_real_time.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_use_admin_kdc.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_use_admin_kdc.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_set_use_admin_kdc.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_sname_to_principal.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_sname_to_principal.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_sname_to_principal.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_sockaddr2address.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_sockaddr2address.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_sockaddr2address.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_sockaddr2port.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_sockaddr2port.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_sockaddr2port.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_sockaddr_uninteresting.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_sockaddr_uninteresting.3
new file mode 100644
index 000000000000..de56fa15d113
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_sockaddr_uninteresting.3
@@ -0,0 +1 @@
+.so man3/krb5_address.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage.3
new file mode 100644
index 000000000000..0db3d661a3df
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage.3
@@ -0,0 +1,1055 @@
+.TH "Heimdal Kerberos 5 storage functions" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal Kerberos 5 storage functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_storage_set_flags\fP (krb5_storage *sp, krb5_flags flags)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_storage_clear_flags\fP (krb5_storage *sp, krb5_flags flags)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_storage_is_flags\fP (krb5_storage *sp, krb5_flags flags)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_storage_set_byteorder\fP (krb5_storage *sp, krb5_flags byteorder)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_flags KRB5_LIB_CALL \fBkrb5_storage_get_byteorder\fP (krb5_storage *sp)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_storage_set_max_alloc\fP (krb5_storage *sp, size_t size)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION off_t KRB5_LIB_CALL \fBkrb5_storage_seek\fP (krb5_storage *sp, off_t offset, int whence)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION int KRB5_LIB_CALL \fBkrb5_storage_truncate\fP (krb5_storage *sp, off_t offset)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_ssize_t KRB5_LIB_CALL \fBkrb5_storage_read\fP (krb5_storage *sp, void *buf, size_t len)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_ssize_t KRB5_LIB_CALL \fBkrb5_storage_write\fP (krb5_storage *sp, const void *buf, size_t len)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_storage_set_eof_code\fP (krb5_storage *sp, int code)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION int KRB5_LIB_CALL \fBkrb5_storage_get_eof_code\fP (krb5_storage *sp)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_storage_free\fP (krb5_storage *sp)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_storage_to_data\fP (krb5_storage *sp, krb5_data *data)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_store_int32\fP (krb5_storage *sp, int32_t value)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_store_uint32\fP (krb5_storage *sp, uint32_t value)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ret_int32\fP (krb5_storage *sp, int32_t *value)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ret_uint32\fP (krb5_storage *sp, uint32_t *value)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_store_int16\fP (krb5_storage *sp, int16_t value)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_store_uint16\fP (krb5_storage *sp, uint16_t value)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ret_int16\fP (krb5_storage *sp, int16_t *value)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ret_uint16\fP (krb5_storage *sp, uint16_t *value)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_store_int8\fP (krb5_storage *sp, int8_t value)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_store_uint8\fP (krb5_storage *sp, uint8_t value)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ret_int8\fP (krb5_storage *sp, int8_t *value)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ret_uint8\fP (krb5_storage *sp, uint8_t *value)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_store_data\fP (krb5_storage *sp, krb5_data data)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ret_data\fP (krb5_storage *sp, krb5_data *data)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_store_string\fP (krb5_storage *sp, const char *s)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ret_string\fP (krb5_storage *sp, char **string)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_store_stringz\fP (krb5_storage *sp, const char *s)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ret_stringz\fP (krb5_storage *sp, char **string)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_store_principal\fP (krb5_storage *sp, krb5_const_principal p)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ret_principal\fP (krb5_storage *sp, krb5_principal *princ)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_store_keyblock\fP (krb5_storage *sp, krb5_keyblock p)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ret_keyblock\fP (krb5_storage *sp, krb5_keyblock *p)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_store_times\fP (krb5_storage *sp, krb5_times times)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ret_times\fP (krb5_storage *sp, krb5_times *times)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_store_address\fP (krb5_storage *sp, krb5_address p)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ret_address\fP (krb5_storage *sp, krb5_address *adr)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_store_addrs\fP (krb5_storage *sp, krb5_addresses p)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ret_addrs\fP (krb5_storage *sp, krb5_addresses *adr)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_store_authdata\fP (krb5_storage *sp, krb5_authdata auth)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ret_authdata\fP (krb5_storage *sp, krb5_authdata *auth)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_store_creds\fP (krb5_storage *sp, krb5_creds *creds)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ret_creds\fP (krb5_storage *sp, krb5_creds *creds)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_store_creds_tag\fP (krb5_storage *sp, krb5_creds *creds)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_ret_creds_tag\fP (krb5_storage *sp, krb5_creds *creds)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_storage *KRB5_LIB_CALL \fBkrb5_storage_emem\fP (void)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_storage *KRB5_LIB_CALL \fBkrb5_storage_from_fd\fP (krb5_socket_t fd_in)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_storage *KRB5_LIB_CALL \fBkrb5_storage_from_mem\fP (void *buf, size_t len)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_storage *KRB5_LIB_CALL \fBkrb5_storage_from_data\fP (krb5_data *data)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_storage *KRB5_LIB_CALL \fBkrb5_storage_from_readonly_mem\fP (const void *buf, size_t len)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_address (krb5_storage * sp, krb5_address * adr)"
+.PP
+Read a address block from the storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fIadr\fP the address block read from storage
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_addrs (krb5_storage * sp, krb5_addresses * adr)"
+.PP
+Read a addresses block from the storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fIadr\fP the addresses block read from storage
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_authdata (krb5_storage * sp, krb5_authdata * auth)"
+.PP
+Read a auth data from the storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fIauth\fP the auth data block read from storage
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_creds (krb5_storage * sp, krb5_creds * creds)"
+.PP
+Read a credentials block from the storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fIcreds\fP the credentials block read from storage
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_creds_tag (krb5_storage * sp, krb5_creds * creds)"
+.PP
+Read a tagged credentials block from the storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fIcreds\fP the credentials block read from storage
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_data (krb5_storage * sp, krb5_data * data)"
+.PP
+Parse a data from the storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to read from
+.br
+\fIdata\fP the parsed data
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_int16 (krb5_storage * sp, int16_t * value)"
+.PP
+Read a int16 from storage, byte order is controlled by the settings on the storage, see \fBkrb5_storage_set_byteorder()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage to write too
+.br
+\fIvalue\fP the value read from the buffer
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 for success, or a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_int32 (krb5_storage * sp, int32_t * value)"
+.PP
+Read a int32 from storage, byte order is controlled by the settings on the storage, see \fBkrb5_storage_set_byteorder()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage to write too
+.br
+\fIvalue\fP the value read from the buffer
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 for success, or a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_int8 (krb5_storage * sp, int8_t * value)"
+.PP
+Read a int8 from storage
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage to write too
+.br
+\fIvalue\fP the value read from the buffer
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 for success, or a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_keyblock (krb5_storage * sp, krb5_keyblock * p)"
+.PP
+Read a keyblock from the storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fIp\fP the keyblock read from storage, free using \fBkrb5_free_keyblock()\fP
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_principal (krb5_storage * sp, krb5_principal * princ)"
+.PP
+Parse principal from the storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to read from
+.br
+\fIprinc\fP the parsed principal
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_string (krb5_storage * sp, char ** string)"
+.PP
+Parse a string from the storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to read from
+.br
+\fIstring\fP the parsed string
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_stringz (krb5_storage * sp, char ** string)"
+.PP
+Parse zero terminated string from the storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to read from
+.br
+\fIstring\fP the parsed string
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_times (krb5_storage * sp, krb5_times * times)"
+.PP
+Read a times block from the storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fItimes\fP the times block read from storage
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_uint16 (krb5_storage * sp, uint16_t * value)"
+.PP
+Read a int16 from storage, byte order is controlled by the settings on the storage, see \fBkrb5_storage_set_byteorder()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage to write too
+.br
+\fIvalue\fP the value read from the buffer
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 for success, or a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_uint32 (krb5_storage * sp, uint32_t * value)"
+.PP
+Read a uint32 from storage, byte order is controlled by the settings on the storage, see \fBkrb5_storage_set_byteorder()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage to write too
+.br
+\fIvalue\fP the value read from the buffer
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 for success, or a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_ret_uint8 (krb5_storage * sp, uint8_t * value)"
+.PP
+Read a uint8 from storage
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage to write too
+.br
+\fIvalue\fP the value read from the buffer
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 for success, or a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_storage_clear_flags (krb5_storage * sp, krb5_flags flags)"
+.PP
+Clear the flags on a storage buffer
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to clear the flags on
+.br
+\fIflags\fP the flags to clear
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_storage* KRB5_LIB_CALL krb5_storage_emem (void)"
+.PP
+Create a elastic (allocating) memory storage backend. Memory is allocated on demand. Free returned krb5_storage with \fBkrb5_storage_free()\fP.
+.PP
+\fBReturns:\fP
+.RS 4
+A krb5_storage on success, or NULL on out of memory error.
+.RE
+.PP
+\fBSee also:\fP
+.RS 4
+\fBkrb5_storage_from_mem()\fP
+.PP
+\fBkrb5_storage_from_readonly_mem()\fP
+.PP
+\fBkrb5_storage_from_fd()\fP
+.PP
+\fBkrb5_storage_from_data()\fP
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_storage_free (krb5_storage * sp)"
+.PP
+Free a krb5 storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage to free.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An Kerberos 5 error code.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_storage* KRB5_LIB_CALL krb5_storage_from_data (krb5_data * data)"
+.PP
+Create a fixed size memory storage block
+.PP
+\fBReturns:\fP
+.RS 4
+A krb5_storage on success, or NULL on out of memory error.
+.RE
+.PP
+\fBSee also:\fP
+.RS 4
+krb5_storage_mem()
+.PP
+\fBkrb5_storage_from_mem()\fP
+.PP
+\fBkrb5_storage_from_readonly_mem()\fP
+.PP
+\fBkrb5_storage_from_fd()\fP
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_storage* KRB5_LIB_CALL krb5_storage_from_fd (krb5_socket_t fd_in)"
+.PP
+\fBReturns:\fP
+.RS 4
+A krb5_storage on success, or NULL on out of memory error.
+.RE
+.PP
+\fBSee also:\fP
+.RS 4
+\fBkrb5_storage_emem()\fP
+.PP
+\fBkrb5_storage_from_mem()\fP
+.PP
+\fBkrb5_storage_from_readonly_mem()\fP
+.PP
+\fBkrb5_storage_from_data()\fP
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_storage* KRB5_LIB_CALL krb5_storage_from_mem (void * buf, size_t len)"
+.PP
+Create a fixed size memory storage block
+.PP
+\fBReturns:\fP
+.RS 4
+A krb5_storage on success, or NULL on out of memory error.
+.RE
+.PP
+\fBSee also:\fP
+.RS 4
+krb5_storage_mem()
+.PP
+\fBkrb5_storage_from_readonly_mem()\fP
+.PP
+\fBkrb5_storage_from_data()\fP
+.PP
+\fBkrb5_storage_from_fd()\fP
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_storage* KRB5_LIB_CALL krb5_storage_from_readonly_mem (const void * buf, size_t len)"
+.PP
+Create a fixed size memory storage block that is read only
+.PP
+\fBReturns:\fP
+.RS 4
+A krb5_storage on success, or NULL on out of memory error.
+.RE
+.PP
+\fBSee also:\fP
+.RS 4
+krb5_storage_mem()
+.PP
+\fBkrb5_storage_from_mem()\fP
+.PP
+\fBkrb5_storage_from_data()\fP
+.PP
+\fBkrb5_storage_from_fd()\fP
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_flags KRB5_LIB_CALL krb5_storage_get_byteorder (krb5_storage * sp)"
+.PP
+Return the current byteorder for the buffer. See \fBkrb5_storage_set_byteorder()\fP for the list or byte order contants.
+.SS "KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_storage_get_eof_code (krb5_storage * sp)"
+.PP
+Get the return code that will be used when end of storage is reached.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+storage error code
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_storage_is_flags (krb5_storage * sp, krb5_flags flags)"
+.PP
+Return true or false depending on if the storage flags is set or not. NB testing for the flag 0 always return true.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to check flags on
+.br
+\fIflags\fP The flags to test for
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+true if all the flags are set, false if not.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_ssize_t KRB5_LIB_CALL krb5_storage_read (krb5_storage * sp, void * buf, size_t len)"
+.PP
+Read to the storage buffer.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to read from
+.br
+\fIbuf\fP the buffer to store the data in
+.br
+\fIlen\fP the length to read
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+The length of data read (can be shorter then len), or negative on error.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION off_t KRB5_LIB_CALL krb5_storage_seek (krb5_storage * sp, off_t offset, int whence)"
+.PP
+Seek to a new offset.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to seek in.
+.br
+\fIoffset\fP the offset to seek
+.br
+\fIwhence\fP relateive searching, SEEK_CUR from the current position, SEEK_END from the end, SEEK_SET absolute from the start.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+The new current offset
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_storage_set_byteorder (krb5_storage * sp, krb5_flags byteorder)"
+.PP
+Set the new byte order of the storage buffer.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to set the byte order for.
+.br
+\fIbyteorder\fP the new byte order.
+.RE
+.PP
+The byte order are: KRB5_STORAGE_BYTEORDER_BE, KRB5_STORAGE_BYTEORDER_LE and KRB5_STORAGE_BYTEORDER_HOST.
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_storage_set_eof_code (krb5_storage * sp, int code)"
+.PP
+Set the return code that will be used when end of storage is reached.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage
+.br
+\fIcode\fP the error code to return on end of storage
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_storage_set_flags (krb5_storage * sp, krb5_flags flags)"
+.PP
+Add the flags on a storage buffer by or-ing in the flags to the buffer.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to set the flags on
+.br
+\fIflags\fP the flags to set
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_storage_set_max_alloc (krb5_storage * sp, size_t size)"
+.PP
+Set the max alloc value
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer set the max allow for
+.br
+\fIsize\fP maximum size to allocate, use 0 to remove limit
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_storage_to_data (krb5_storage * sp, krb5_data * data)"
+.PP
+Copy the contnent of storage
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage to copy to a data
+.br
+\fIdata\fP the copied data, free with \fBkrb5_data_free()\fP
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 for success, or a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_storage_truncate (krb5_storage * sp, off_t offset)"
+.PP
+Truncate the storage buffer in sp to offset.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to truncate.
+.br
+\fIoffset\fP the offset to truncate too.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+An Kerberos 5 error code.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_ssize_t KRB5_LIB_CALL krb5_storage_write (krb5_storage * sp, const void * buf, size_t len)"
+.PP
+Write to the storage buffer.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fIbuf\fP the buffer to write to the storage buffer
+.br
+\fIlen\fP the length to write
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+The length of data written (can be shorter then len), or negative on error.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_address (krb5_storage * sp, krb5_address p)"
+.PP
+Write a address block to storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fIp\fP the address block to write.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_addrs (krb5_storage * sp, krb5_addresses p)"
+.PP
+Write a addresses block to storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fIp\fP the addresses block to write.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_authdata (krb5_storage * sp, krb5_authdata auth)"
+.PP
+Write a auth data block to storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fIauth\fP the auth data block to write.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_creds (krb5_storage * sp, krb5_creds * creds)"
+.PP
+Write a credentials block to storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fIcreds\fP the creds block to write.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_creds_tag (krb5_storage * sp, krb5_creds * creds)"
+.PP
+Write a tagged credentials block to storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fIcreds\fP the creds block to write.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_data (krb5_storage * sp, krb5_data data)"
+.PP
+Store a data to the storage. The data is stored with an int32 as lenght plus the data (not padded).
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fIdata\fP the buffer to store.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_int16 (krb5_storage * sp, int16_t value)"
+.PP
+Store a int16 to storage, byte order is controlled by the settings on the storage, see \fBkrb5_storage_set_byteorder()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage to write too
+.br
+\fIvalue\fP the value to store
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 for success, or a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_int32 (krb5_storage * sp, int32_t value)"
+.PP
+Store a int32 to storage, byte order is controlled by the settings on the storage, see \fBkrb5_storage_set_byteorder()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage to write too
+.br
+\fIvalue\fP the value to store
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 for success, or a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_int8 (krb5_storage * sp, int8_t value)"
+.PP
+Store a int8 to storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage to write too
+.br
+\fIvalue\fP the value to store
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 for success, or a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_keyblock (krb5_storage * sp, krb5_keyblock p)"
+.PP
+Store a keyblock to the storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fIp\fP the keyblock to write
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_principal (krb5_storage * sp, krb5_const_principal p)"
+.PP
+Write a principal block to storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fIp\fP the principal block to write.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_string (krb5_storage * sp, const char * s)"
+.PP
+Store a string to the buffer. The data is formated as an len:uint32 plus the string itself (not padded).
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fIs\fP the string to store.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_stringz (krb5_storage * sp, const char * s)"
+.PP
+Store a zero terminated string to the buffer. The data is stored one character at a time until a NUL is stored.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fIs\fP the string to store.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_times (krb5_storage * sp, krb5_times times)"
+.PP
+Write a times block to storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage buffer to write to
+.br
+\fItimes\fP the times block to write.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_uint16 (krb5_storage * sp, uint16_t value)"
+.PP
+Store a uint16 to storage, byte order is controlled by the settings on the storage, see \fBkrb5_storage_set_byteorder()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage to write too
+.br
+\fIvalue\fP the value to store
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 for success, or a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_uint32 (krb5_storage * sp, uint32_t value)"
+.PP
+Store a uint32 to storage, byte order is controlled by the settings on the storage, see \fBkrb5_storage_set_byteorder()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage to write too
+.br
+\fIvalue\fP the value to store
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 for success, or a Kerberos 5 error code on failure.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_store_uint8 (krb5_storage * sp, uint8_t value)"
+.PP
+Store a uint8 to storage.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP the storage to write too
+.br
+\fIvalue\fP the value to store
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 for success, or a Kerberos 5 error code on failure.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_clear_flags.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_clear_flags.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_clear_flags.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_emem.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_emem.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_emem.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_free.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_free.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_free.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_from_data.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_from_data.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_from_data.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_from_fd.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_from_fd.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_from_fd.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_from_mem.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_from_mem.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_from_mem.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_from_readonly_mem.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_from_readonly_mem.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_from_readonly_mem.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_get_byteorder.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_get_byteorder.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_get_byteorder.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_get_eof_code.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_get_eof_code.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_get_eof_code.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_is_flags.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_is_flags.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_is_flags.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_read.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_read.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_read.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_seek.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_seek.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_seek.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_set_byteorder.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_set_byteorder.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_set_byteorder.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_set_eof_code.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_set_eof_code.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_set_eof_code.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_set_flags.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_set_flags.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_set_flags.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_set_max_alloc.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_set_max_alloc.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_set_max_alloc.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_to_data.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_to_data.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_to_data.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_truncate.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_truncate.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_truncate.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_write.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_write.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_storage_write.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_address.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_address.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_address.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_addrs.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_addrs.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_addrs.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_authdata.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_authdata.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_authdata.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_creds.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_creds.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_creds.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_creds_tag.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_creds_tag.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_creds_tag.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_data.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_data.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_data.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_int16.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_int16.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_int16.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_int32.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_int32.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_int32.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_int8.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_int8.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_int8.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_keyblock.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_keyblock.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_keyblock.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_principal.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_principal.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_principal.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_string.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_string.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_string.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_stringz.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_stringz.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_stringz.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_times.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_times.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_times.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_uint16.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_uint16.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_uint16.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_uint32.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_uint32.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_uint32.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_uint8.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_uint8.3
new file mode 100644
index 000000000000..de414358a467
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_store_uint8.3
@@ -0,0 +1 @@
+.so man3/krb5_storage.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_string_to_keytype.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_string_to_keytype.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_string_to_keytype.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_support.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_support.3
new file mode 100644
index 000000000000..524a6b98e7bf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_support.3
@@ -0,0 +1,650 @@
+.TH "Heimdal Kerberos 5 support functions" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal Kerberos 5 support functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_acl_match_string\fP (krb5_context context, const char *string, const char *format,...)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_acl_match_file\fP (krb5_context context, const char *file, const char *format,...)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_config_parse_file_multi\fP (krb5_context context, const char *fname, krb5_config_section **res)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_config_file_free\fP (krb5_context context, krb5_config_section *s)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION const krb5_config_binding *KRB5_LIB_CALL \fBkrb5_config_get_list\fP (krb5_context context, const krb5_config_section *c,...)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION const krb5_config_binding *KRB5_LIB_CALL \fBkrb5_config_vget_list\fP (krb5_context context, const krb5_config_section *c, va_list args)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION const char *KRB5_LIB_CALL \fBkrb5_config_get_string\fP (krb5_context context, const krb5_config_section *c,...)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION const char *KRB5_LIB_CALL \fBkrb5_config_vget_string\fP (krb5_context context, const krb5_config_section *c, va_list args)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION const char *KRB5_LIB_CALL \fBkrb5_config_vget_string_default\fP (krb5_context context, const krb5_config_section *c, const char *def_value, va_list args)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION const char *KRB5_LIB_CALL \fBkrb5_config_get_string_default\fP (krb5_context context, const krb5_config_section *c, const char *def_value,...)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION char **KRB5_LIB_CALL \fBkrb5_config_vget_strings\fP (krb5_context context, const krb5_config_section *c, va_list args)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION char **KRB5_LIB_CALL \fBkrb5_config_get_strings\fP (krb5_context context, const krb5_config_section *c,...)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION void KRB5_LIB_CALL \fBkrb5_config_free_strings\fP (char **strings)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_config_vget_bool_default\fP (krb5_context context, const krb5_config_section *c, krb5_boolean def_value, va_list args)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_config_vget_bool\fP (krb5_context context, const krb5_config_section *c, va_list args)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_config_get_bool_default\fP (krb5_context context, const krb5_config_section *c, krb5_boolean def_value,...)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_config_get_bool\fP (krb5_context context, const krb5_config_section *c,...)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION int KRB5_LIB_CALL \fBkrb5_config_vget_time_default\fP (krb5_context context, const krb5_config_section *c, int def_value, va_list args)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION int KRB5_LIB_CALL \fBkrb5_config_vget_time\fP (krb5_context context, const krb5_config_section *c, va_list args)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION int KRB5_LIB_CALL \fBkrb5_config_get_time_default\fP (krb5_context context, const krb5_config_section *c, int def_value,...)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION int KRB5_LIB_CALL \fBkrb5_config_get_time\fP (krb5_context context, const krb5_config_section *c,...)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_expand_hostname\fP (krb5_context context, const char *orig_hostname, char **new_hostname)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_expand_hostname_realms\fP (krb5_context context, const char *orig_hostname, char **new_hostname, char ***realms)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_free_host_realm\fP (krb5_context context, krb5_realm *realmlist)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL \fBkrb5_kuserok\fP (krb5_context context, krb5_principal principal, const char *luser)"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb5_plugin_register\fP (krb5_context context, enum krb5_plugin_type type, const char *name, void *symbol)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_acl_match_file (krb5_context context, const char * file, const char * format, ...)"
+.PP
+krb5_acl_match_file matches ACL format against each line in a file using \fBkrb5_acl_match_string()\fP. Lines starting with # are treated like comments and ignored.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIfile\fP file with acl listed in the file.
+.br
+\fIformat\fP format to match.
+.br
+\fI...\fP parameter to format string.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+\fBSee also:\fP
+.RS 4
+\fBkrb5_acl_match_string\fP
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_acl_match_string (krb5_context context, const char * string, const char * format, ...)"
+.PP
+krb5_acl_match_string matches ACL format against a string.
+.PP
+The ACL format has three format specifiers: s, f, and r. Each specifier will retrieve one argument from the variable arguments for either matching or storing data. The input string is split up using ' ' (space) and '\\t' (tab) as a delimiter; multiple and '\\t' in a row are considered to be the same.
+.PP
+List of format specifiers:
+.IP "\(bu" 2
+s Matches a string using strcmp(3) (case sensitive).
+.IP "\(bu" 2
+f Matches the string with fnmatch(3). Theflags argument (the last argument) passed to the fnmatch function is 0.
+.IP "\(bu" 2
+r Returns a copy of the string in the char ** passed in; the copy must be freed with free(3). There is no need to free(3) the string on error: the function will clean up and set the pointer to NULL.
+.PP
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context
+.br
+\fIstring\fP string to match with
+.br
+\fIformat\fP format to match
+.br
+\fI...\fP parameter to format string
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0.
+.RE
+.PP
+.PP
+.nf
+ char *s;
+
+ ret = krb5_acl_match_string(context, 'foo', 's', 'foo');
+ if (ret)
+ krb5_errx(context, 1, 'acl didn't match');
+ ret = krb5_acl_match_string(context, 'foo foo baz/kaka',
+ 'ss', 'foo', &s, 'foo/\\*');
+ if (ret) {
+ // no need to free(s) on error
+ assert(s == NULL);
+ krb5_errx(context, 1, 'acl didn't match');
+ }
+ free(s);
+.fi
+.PP
+.PP
+\fBSee also:\fP
+.RS 4
+\fBkrb5_acl_match_file\fP
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_config_file_free (krb5_context context, krb5_config_section * s)"
+.PP
+Free configuration file section, the result of krb5_config_parse_file() and \fBkrb5_config_parse_file_multi()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context
+.br
+\fIs\fP the configuration section to free
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns 0 on successes, otherwise an error code, see krb5_get_error_message()
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_config_free_strings (char ** strings)"
+.PP
+Free the resulting strings from krb5_config-get_strings() and \fBkrb5_config_vget_strings()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIstrings\fP strings to free
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_config_get_bool (krb5_context context, const krb5_config_section * c, ...)"
+.PP
+Like \fBkrb5_config_get_bool()\fP but with a va_list list of configuration selection.
+.PP
+Configuration value to a boolean value, where yes/true and any non-zero number means TRUE and other value is FALSE.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIc\fP a configuration section, or NULL to use the section from context
+.br
+\fI...\fP a list of names, terminated with NULL.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+TRUE or FALSE
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_config_get_bool_default (krb5_context context, const krb5_config_section * c, krb5_boolean def_value, ...)"
+.PP
+\fBkrb5_config_get_bool_default()\fP will convert the configuration option value to a boolean value, where yes/true and any non-zero number means TRUE and other value is FALSE.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIc\fP a configuration section, or NULL to use the section from context
+.br
+\fIdef_value\fP the default value to return if no configuration found in the database.
+.br
+\fI...\fP a list of names, terminated with NULL.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+TRUE or FALSE
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION const krb5_config_binding* KRB5_LIB_CALL krb5_config_get_list (krb5_context context, const krb5_config_section * c, ...)"
+.PP
+Get a list of configuration binding list for more processing
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIc\fP a configuration section, or NULL to use the section from context
+.br
+\fI...\fP a list of names, terminated with NULL.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+NULL if configuration list is not found, a list otherwise
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL krb5_config_get_string (krb5_context context, const krb5_config_section * c, ...)"
+.PP
+Returns a 'const char *' to a string in the configuration database. The string may not be valid after a reload of the configuration database so a caller should make a local copy if it needs to keep the string.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIc\fP a configuration section, or NULL to use the section from context
+.br
+\fI...\fP a list of names, terminated with NULL.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+NULL if configuration string not found, a string otherwise
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL krb5_config_get_string_default (krb5_context context, const krb5_config_section * c, const char * def_value, ...)"
+.PP
+Like \fBkrb5_config_get_string()\fP, but instead of returning NULL, instead return a default value.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIc\fP a configuration section, or NULL to use the section from context
+.br
+\fIdef_value\fP the default value to return if no configuration found in the database.
+.br
+\fI...\fP a list of names, terminated with NULL.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+a configuration string
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION char** KRB5_LIB_CALL krb5_config_get_strings (krb5_context context, const krb5_config_section * c, ...)"
+.PP
+Get a list of configuration strings, free the result with \fBkrb5_config_free_strings()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIc\fP a configuration section, or NULL to use the section from context
+.br
+\fI...\fP a list of names, terminated with NULL.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+TRUE or FALSE
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_config_get_time (krb5_context context, const krb5_config_section * c, ...)"
+.PP
+Get the time from the configuration file using a relative time, for example: 1h30s
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIc\fP a configuration section, or NULL to use the section from context
+.br
+\fI...\fP a list of names, terminated with NULL.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+parsed the time or -1 on error
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_config_get_time_default (krb5_context context, const krb5_config_section * c, int def_value, ...)"
+.PP
+Get the time from the configuration file using a relative time, for example: 1h30s
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIc\fP a configuration section, or NULL to use the section from context
+.br
+\fIdef_value\fP the default value to return if no configuration found in the database.
+.br
+\fI...\fP a list of names, terminated with NULL.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+parsed the time (or def_value on parse error)
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_config_parse_file_multi (krb5_context context, const char * fname, krb5_config_section ** res)"
+.PP
+Parse a configuration file and add the result into res. This interface can be used to parse several configuration files into one resulting krb5_config_section by calling it repeatably.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Kerberos 5 context.
+.br
+\fIfname\fP a file name to a Kerberos configuration file
+.br
+\fIres\fP the returned result, must be free with \fBkrb5_free_config_files()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.PP
+If the fname starts with '~/' parse configuration file in the current users home directory. The behavior can be disabled and enabled by calling \fBkrb5_set_home_dir_access()\fP.
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_config_vget_bool (krb5_context context, const krb5_config_section * c, va_list args)"
+.PP
+\fBkrb5_config_get_bool()\fP will convert the configuration option value to a boolean value, where yes/true and any non-zero number means TRUE and other value is FALSE.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIc\fP a configuration section, or NULL to use the section from context
+.br
+\fIargs\fP a va_list of arguments
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+TRUE or FALSE
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_config_vget_bool_default (krb5_context context, const krb5_config_section * c, krb5_boolean def_value, va_list args)"
+.PP
+Like \fBkrb5_config_get_bool_default()\fP but with a va_list list of configuration selection.
+.PP
+Configuration value to a boolean value, where yes/true and any non-zero number means TRUE and other value is FALSE.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIc\fP a configuration section, or NULL to use the section from context
+.br
+\fIdef_value\fP the default value to return if no configuration found in the database.
+.br
+\fIargs\fP a va_list of arguments
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+TRUE or FALSE
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION const krb5_config_binding* KRB5_LIB_CALL krb5_config_vget_list (krb5_context context, const krb5_config_section * c, va_list args)"
+.PP
+Get a list of configuration binding list for more processing
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIc\fP a configuration section, or NULL to use the section from context
+.br
+\fIargs\fP a va_list of arguments
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+NULL if configuration list is not found, a list otherwise
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL krb5_config_vget_string (krb5_context context, const krb5_config_section * c, va_list args)"
+.PP
+Like \fBkrb5_config_get_string()\fP, but uses a va_list instead of ...
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIc\fP a configuration section, or NULL to use the section from context
+.br
+\fIargs\fP a va_list of arguments
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+NULL if configuration string not found, a string otherwise
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL krb5_config_vget_string_default (krb5_context context, const krb5_config_section * c, const char * def_value, va_list args)"
+.PP
+Like \fBkrb5_config_vget_string()\fP, but instead of returning NULL, instead return a default value.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIc\fP a configuration section, or NULL to use the section from context
+.br
+\fIdef_value\fP the default value to return if no configuration found in the database.
+.br
+\fIargs\fP a va_list of arguments
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+a configuration string
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION char** KRB5_LIB_CALL krb5_config_vget_strings (krb5_context context, const krb5_config_section * c, va_list args)"
+.PP
+Get a list of configuration strings, free the result with \fBkrb5_config_free_strings()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIc\fP a configuration section, or NULL to use the section from context
+.br
+\fIargs\fP a va_list of arguments
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+TRUE or FALSE
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_config_vget_time (krb5_context context, const krb5_config_section * c, va_list args)"
+.PP
+Get the time from the configuration file using a relative time, for example: 1h30s
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIc\fP a configuration section, or NULL to use the section from context
+.br
+\fIargs\fP a va_list of arguments
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+parsed the time or -1 on error
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION int KRB5_LIB_CALL krb5_config_vget_time_default (krb5_context context, const krb5_config_section * c, int def_value, va_list args)"
+.PP
+Get the time from the configuration file using a relative time.
+.PP
+Like \fBkrb5_config_get_time_default()\fP but with a va_list list of configuration selection.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIc\fP a configuration section, or NULL to use the section from context
+.br
+\fIdef_value\fP the default value to return if no configuration found in the database.
+.br
+\fIargs\fP a va_list of arguments
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+parsed the time (or def_value on parse error)
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_expand_hostname (krb5_context context, const char * orig_hostname, char ** new_hostname)"
+.PP
+\fBkrb5_expand_hostname()\fP tries to make orig_hostname into a more canonical one in the newly allocated space returned in new_hostname.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIorig_hostname\fP hostname to canonicalise.
+.br
+\fInew_hostname\fP output hostname, caller must free hostname with krb5_xfree().
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_expand_hostname_realms (krb5_context context, const char * orig_hostname, char ** new_hostname, char *** realms)"
+.PP
+\fBkrb5_expand_hostname_realms()\fP expands orig_hostname to a name we believe to be a hostname in newly allocated space in new_hostname and return the realms new_hostname is believed to belong to in realms.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fIorig_hostname\fP hostname to canonicalise.
+.br
+\fInew_hostname\fP output hostname, caller must free hostname with krb5_xfree().
+.br
+\fIrealms\fP output possible realms, is an array that is terminated with NULL. Caller must free with \fBkrb5_free_host_realm()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Return an error code or 0, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_free_host_realm (krb5_context context, krb5_realm * realmlist)"
+.PP
+Free all memory allocated by `realmlist'
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP A Kerberos 5 context.
+.br
+\fIrealmlist\fP realmlist to free, NULL is ok
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+a Kerberos error code, always 0.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_kuserok (krb5_context context, krb5_principal principal, const char * luser)"
+.PP
+This function takes the name of a local user and checks if principal is allowed to log in as that user.
+.PP
+The user may have a ~/.k5login file listing principals that are allowed to login as that user. If that file does not exist, all principals with a first component identical to the username, and a realm considered local, are allowed access.
+.PP
+The .k5login file must contain one principal per line, be owned by user and not be writable by group or other (but must be readable by anyone).
+.PP
+Note that if the file exists, no implicit access rights are given to user@LOCALREALM.
+.PP
+Optionally, a set of files may be put in ~/.k5login.d (a directory), in which case they will all be checked in the same manner as .k5login. The files may be called anything, but files starting with a hash (#) , or ending with a tilde (~) are ignored. Subdirectories are not traversed. Note that this directory may not be checked by other Kerberos implementations.
+.PP
+If no configuration file exists, match user against local domains, ie luser@LOCAL-REALMS-IN-CONFIGURATION-FILES.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIprincipal\fP principal to check if allowed to login
+.br
+\fIluser\fP local user id
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns TRUE if access should be granted, FALSE otherwise.
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_plugin_register (krb5_context context, enum krb5_plugin_type type, const char * name, void * symbol)"
+.PP
+Register a plugin symbol name of specific type.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP a Keberos context
+.br
+\fItype\fP type of plugin symbol
+.br
+\fIname\fP name of plugin symbol
+.br
+\fIsymbol\fP a pointer to the named symbol
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+In case of error a non zero error com_err error is returned and the Kerberos error string is set.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket.3
new file mode 100644
index 000000000000..4ae511292379
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket.3
@@ -0,0 +1,34 @@
+.TH "Heimdal Kerberos 5 ticket functions" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal Kerberos 5 ticket functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "KRB5_LIB_FUNCTION unsigned long KRB5_LIB_CALL \fBkrb5_ticket_get_flags\fP (krb5_context context, const krb5_ticket *ticket)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "KRB5_LIB_FUNCTION unsigned long KRB5_LIB_CALL krb5_ticket_get_flags (krb5_context context, const krb5_ticket * ticket)"
+.PP
+Get the flags from the Kerberos ticket
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos context
+.br
+\fIticket\fP Kerberos ticket
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+ticket flags
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_authorization_data_type.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_authorization_data_type.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_authorization_data_type.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_client.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_client.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_client.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_endtime.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_endtime.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_endtime.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_flags.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_flags.3
new file mode 100644
index 000000000000..7b8aa1908a1e
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_flags.3
@@ -0,0 +1 @@
+.so man3/krb5_ticket.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_server.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_server.3
new file mode 100644
index 000000000000..16c542ae4a70
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ticket_get_server.3
@@ -0,0 +1 @@
+.so man3/krb5.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_fixed.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_fixed.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_fixed.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_fixed_flags.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_fixed_flags.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_fixed_flags.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_fixed_short.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_fixed_short.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_fixed_short.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_flags.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_flags.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_flags.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_short.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_short.3
new file mode 100644
index 000000000000..86ad45a98b4c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_unparse_name_short.3
@@ -0,0 +1 @@
+.so man3/krb5_principal.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.3
new file mode 100644
index 000000000000..8d80e3edcf6f
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.3
@@ -0,0 +1,60 @@
+.TH "Heimdal Kerberos 4 compatiblity functions" 3 "30 Sep 2011" "Version 1.5.1" "HeimdalKerberos5library" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal Kerberos 4 compatiblity functions \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb524_convert_creds_kdc\fP (krb5_context context, krb5_creds *in_cred, struct credentials *v4creds) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.ti -1c
+.RI "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL \fBkrb524_convert_creds_kdc_ccache\fP (krb5_context context, krb5_ccache ccache, krb5_creds *in_cred, struct credentials *v4creds) KRB5_DEPRECATED_FUNCTION('Use X instead')"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb524_convert_creds_kdc (krb5_context context, krb5_creds * in_cred, struct credentials * v4creds)"
+.PP
+Convert the v5 credentials in in_cred to v4-dito in v4creds. This is done by sending them to the 524 function in the KDC. If `in_cred' doesn't contain a DES session key, then a new one is gotten from the KDC and stored in the cred cache `ccache'.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIin_cred\fP the credential to convert
+.br
+\fIv4creds\fP the converted credential
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
+.SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb524_convert_creds_kdc_ccache (krb5_context context, krb5_ccache ccache, krb5_creds * in_cred, struct credentials * v4creds)"
+.PP
+Convert the v5 credentials in in_cred to v4-dito in v4creds, check the credential cache ccache before checking with the KDC.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcontext\fP Kerberos 5 context.
+.br
+\fIccache\fP credential cache used to check for des-ticket.
+.br
+\fIin_cred\fP the credential to convert
+.br
+\fIv4creds\fP the converted credential
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+Returns 0 to indicate success. Otherwise an kerberos et error code is returned, see krb5_get_error_message().
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_verify_checksum_iov.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_verify_checksum_iov.3
new file mode 100644
index 000000000000..ebfd1cbfb9b2
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_verify_checksum_iov.3
@@ -0,0 +1 @@
+.so man3/krb5_crypto.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_vset_error_string.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_vset_error_string.3
new file mode 100644
index 000000000000..daa28323968c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_vset_error_string.3
@@ -0,0 +1 @@
+.so man3/krb5_deprecated.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_vwarn.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_vwarn.3
new file mode 100644
index 000000000000..f721fda2cd4b
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_vwarn.3
@@ -0,0 +1 @@
+.so man3/krb5_error.3
diff --git a/crypto/heimdal/doc/doxyout/krb5/manpages b/crypto/heimdal/doc/doxyout/krb5/manpages
new file mode 100644
index 000000000000..b5172637fdef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/krb5/manpages
@@ -0,0 +1,360 @@
+krb5/man/man3/krb5.3
+krb5/man/man3/krb524_convert_creds_kdc.3
+krb5/man/man3/krb524_convert_creds_kdc_ccache.3
+krb5/man/man3/krb5_acc_ops.3
+krb5/man/man3/krb5_acl_match_file.3
+krb5/man/man3/krb5_acl_match_string.3
+krb5/man/man3/krb5_add_et_list.3
+krb5/man/man3/krb5_add_extra_addresses.3
+krb5/man/man3/krb5_add_ignore_addresses.3
+krb5/man/man3/krb5_addr2sockaddr.3
+krb5/man/man3/krb5_address.3
+krb5/man/man3/krb5_address_compare.3
+krb5/man/man3/krb5_address_order.3
+krb5/man/man3/krb5_address_prefixlen_boundary.3
+krb5/man/man3/krb5_address_search.3
+krb5/man/man3/krb5_allow_weak_crypto.3
+krb5/man/man3/krb5_anyaddr.3
+krb5/man/man3/krb5_append_addresses.3
+krb5/man/man3/krb5_auth.3
+krb5/man/man3/krb5_auth_getremoteseqnumber.3
+krb5/man/man3/krb5_build_principal.3
+krb5/man/man3/krb5_c_enctype_compare.3
+krb5/man/man3/krb5_cc_cache_end_seq_get.3
+krb5/man/man3/krb5_cc_cache_get_first.3
+krb5/man/man3/krb5_cc_cache_match.3
+krb5/man/man3/krb5_cc_cache_next.3
+krb5/man/man3/krb5_cc_clear_mcred.3
+krb5/man/man3/krb5_cc_close.3
+krb5/man/man3/krb5_cc_copy_cache.3
+krb5/man/man3/krb5_cc_copy_creds.3
+krb5/man/man3/krb5_cc_copy_match_f.3
+krb5/man/man3/krb5_cc_default.3
+krb5/man/man3/krb5_cc_default_name.3
+krb5/man/man3/krb5_cc_destroy.3
+krb5/man/man3/krb5_cc_end_seq_get.3
+krb5/man/man3/krb5_cc_gen_new.3
+krb5/man/man3/krb5_cc_get_config.3
+krb5/man/man3/krb5_cc_get_flags.3
+krb5/man/man3/krb5_cc_get_friendly_name.3
+krb5/man/man3/krb5_cc_get_full_name.3
+krb5/man/man3/krb5_cc_get_kdc_offset.3
+krb5/man/man3/krb5_cc_get_lifetime.3
+krb5/man/man3/krb5_cc_get_name.3
+krb5/man/man3/krb5_cc_get_ops.3
+krb5/man/man3/krb5_cc_get_prefix_ops.3
+krb5/man/man3/krb5_cc_get_principal.3
+krb5/man/man3/krb5_cc_get_type.3
+krb5/man/man3/krb5_cc_get_version.3
+krb5/man/man3/krb5_cc_initialize.3
+krb5/man/man3/krb5_cc_last_change_time.3
+krb5/man/man3/krb5_cc_move.3
+krb5/man/man3/krb5_cc_new_unique.3
+krb5/man/man3/krb5_cc_next_cred.3
+krb5/man/man3/krb5_cc_register.3
+krb5/man/man3/krb5_cc_remove_cred.3
+krb5/man/man3/krb5_cc_resolve.3
+krb5/man/man3/krb5_cc_retrieve_cred.3
+krb5/man/man3/krb5_cc_set_config.3
+krb5/man/man3/krb5_cc_set_default_name.3
+krb5/man/man3/krb5_cc_set_flags.3
+krb5/man/man3/krb5_cc_set_friendly_name.3
+krb5/man/man3/krb5_cc_set_kdc_offset.3
+krb5/man/man3/krb5_cc_start_seq_get.3
+krb5/man/man3/krb5_cc_store_cred.3
+krb5/man/man3/krb5_cc_support_switch.3
+krb5/man/man3/krb5_cc_switch.3
+krb5/man/man3/krb5_ccache.3
+krb5/man/man3/krb5_ccache_intro.3
+krb5/man/man3/krb5_cccol_cursor_free.3
+krb5/man/man3/krb5_cccol_cursor_new.3
+krb5/man/man3/krb5_cccol_cursor_next.3
+krb5/man/man3/krb5_cccol_last_change_time.3
+krb5/man/man3/krb5_change_password.3
+krb5/man/man3/krb5_cksumtype_to_enctype.3
+krb5/man/man3/krb5_clear_error_message.3
+krb5/man/man3/krb5_clear_error_string.3
+krb5/man/man3/krb5_compare_creds.3
+krb5/man/man3/krb5_config_file_free.3
+krb5/man/man3/krb5_config_free_strings.3
+krb5/man/man3/krb5_config_get_bool.3
+krb5/man/man3/krb5_config_get_bool_default.3
+krb5/man/man3/krb5_config_get_list.3
+krb5/man/man3/krb5_config_get_string.3
+krb5/man/man3/krb5_config_get_string_default.3
+krb5/man/man3/krb5_config_get_strings.3
+krb5/man/man3/krb5_config_get_time.3
+krb5/man/man3/krb5_config_get_time_default.3
+krb5/man/man3/krb5_config_parse_file_multi.3
+krb5/man/man3/krb5_config_parse_string_multi.3
+krb5/man/man3/krb5_config_vget_bool.3
+krb5/man/man3/krb5_config_vget_bool_default.3
+krb5/man/man3/krb5_config_vget_list.3
+krb5/man/man3/krb5_config_vget_string.3
+krb5/man/man3/krb5_config_vget_string_default.3
+krb5/man/man3/krb5_config_vget_strings.3
+krb5/man/man3/krb5_config_vget_time.3
+krb5/man/man3/krb5_config_vget_time_default.3
+krb5/man/man3/krb5_copy_address.3
+krb5/man/man3/krb5_copy_addresses.3
+krb5/man/man3/krb5_copy_context.3
+krb5/man/man3/krb5_copy_creds.3
+krb5/man/man3/krb5_copy_creds_contents.3
+krb5/man/man3/krb5_copy_data.3
+krb5/man/man3/krb5_copy_host_realm.3
+krb5/man/man3/krb5_copy_keyblock.3
+krb5/man/man3/krb5_copy_keyblock_contents.3
+krb5/man/man3/krb5_copy_principal.3
+krb5/man/man3/krb5_copy_ticket.3
+krb5/man/man3/krb5_create_checksum_iov.3
+krb5/man/man3/krb5_credential.3
+krb5/man/man3/krb5_creds_get_ticket_flags.3
+krb5/man/man3/krb5_crypto.3
+krb5/man/man3/krb5_crypto_destroy.3
+krb5/man/man3/krb5_crypto_fx_cf2.3
+krb5/man/man3/krb5_crypto_getblocksize.3
+krb5/man/man3/krb5_crypto_getconfoundersize.3
+krb5/man/man3/krb5_crypto_getenctype.3
+krb5/man/man3/krb5_crypto_getpadsize.3
+krb5/man/man3/krb5_crypto_init.3
+krb5/man/man3/krb5_crypto_iov.3
+krb5/man/man3/krb5_data_alloc.3
+krb5/man/man3/krb5_data_cmp.3
+krb5/man/man3/krb5_data_copy.3
+krb5/man/man3/krb5_data_ct_cmp.3
+krb5/man/man3/krb5_data_free.3
+krb5/man/man3/krb5_data_realloc.3
+krb5/man/man3/krb5_data_zero.3
+krb5/man/man3/krb5_decrypt_iov_ivec.3
+krb5/man/man3/krb5_deprecated.3
+krb5/man/man3/krb5_digest.3
+krb5/man/man3/krb5_digest_probe.3
+krb5/man/man3/krb5_eai_to_heim_errno.3
+krb5/man/man3/krb5_encrypt_iov_ivec.3
+krb5/man/man3/krb5_enctype_disable.3
+krb5/man/man3/krb5_enctype_enable.3
+krb5/man/man3/krb5_enctype_valid.3
+krb5/man/man3/krb5_enctypes_compatible_keys.3
+krb5/man/man3/krb5_error.3
+krb5/man/man3/krb5_expand_hostname.3
+krb5/man/man3/krb5_expand_hostname_realms.3
+krb5/man/man3/krb5_fcc_ops.3
+krb5/man/man3/krb5_fileformats.3
+krb5/man/man3/krb5_free_address.3
+krb5/man/man3/krb5_free_addresses.3
+krb5/man/man3/krb5_free_config_files.3
+krb5/man/man3/krb5_free_context.3
+krb5/man/man3/krb5_free_cred_contents.3
+krb5/man/man3/krb5_free_creds.3
+krb5/man/man3/krb5_free_creds_contents.3
+krb5/man/man3/krb5_free_data.3
+krb5/man/man3/krb5_free_data_contents.3
+krb5/man/man3/krb5_free_error_string.3
+krb5/man/man3/krb5_free_host_realm.3
+krb5/man/man3/krb5_free_keyblock.3
+krb5/man/man3/krb5_free_keyblock_contents.3
+krb5/man/man3/krb5_free_principal.3
+krb5/man/man3/krb5_free_ticket.3
+krb5/man/man3/krb5_free_unparsed_name.3
+krb5/man/man3/krb5_fwd_tgt_creds.3
+krb5/man/man3/krb5_generate_subkey.3
+krb5/man/man3/krb5_generate_subkey_extended.3
+krb5/man/man3/krb5_get_cred_from_kdc.3
+krb5/man/man3/krb5_get_cred_from_kdc_opt.3
+krb5/man/man3/krb5_get_default_config_files.3
+krb5/man/man3/krb5_get_default_in_tkt_etypes.3
+krb5/man/man3/krb5_get_dns_canonicalize_hostname.3
+krb5/man/man3/krb5_get_extra_addresses.3
+krb5/man/man3/krb5_get_fcache_version.3
+krb5/man/man3/krb5_get_forwarded_creds.3
+krb5/man/man3/krb5_get_ignore_addresses.3
+krb5/man/man3/krb5_get_in_tkt_with_keytab.3
+krb5/man/man3/krb5_get_in_tkt_with_password.3
+krb5/man/man3/krb5_get_in_tkt_with_skey.3
+krb5/man/man3/krb5_get_init_creds_keyblock.3
+krb5/man/man3/krb5_get_init_creds_keytab.3
+krb5/man/man3/krb5_get_init_creds_opt_alloc.3
+krb5/man/man3/krb5_get_init_creds_opt_free.3
+krb5/man/man3/krb5_get_init_creds_opt_get_error.3
+krb5/man/man3/krb5_get_init_creds_opt_init.3
+krb5/man/man3/krb5_get_init_creds_password.3
+krb5/man/man3/krb5_get_kdc_sec_offset.3
+krb5/man/man3/krb5_get_max_time_skew.3
+krb5/man/man3/krb5_get_use_admin_kdc.3
+krb5/man/man3/krb5_get_validated_creds.3
+krb5/man/man3/krb5_h_addr2addr.3
+krb5/man/man3/krb5_h_addr2sockaddr.3
+krb5/man/man3/krb5_h_errno_to_heim_errno.3
+krb5/man/man3/krb5_init_context.3
+krb5/man/man3/krb5_init_creds_free.3
+krb5/man/man3/krb5_init_creds_get.3
+krb5/man/man3/krb5_init_creds_get_error.3
+krb5/man/man3/krb5_init_creds_init.3
+krb5/man/man3/krb5_init_creds_intro.3
+krb5/man/man3/krb5_init_creds_set_keytab.3
+krb5/man/man3/krb5_init_creds_set_password.3
+krb5/man/man3/krb5_init_creds_set_service.3
+krb5/man/man3/krb5_init_creds_step.3
+krb5/man/man3/krb5_init_ets.3
+krb5/man/man3/krb5_introduction.3
+krb5/man/man3/krb5_is_config_principal.3
+krb5/man/man3/krb5_is_thread_safe.3
+krb5/man/man3/krb5_kerberos_enctypes.3
+krb5/man/man3/krb5_keyblock_get_enctype.3
+krb5/man/man3/krb5_keyblock_init.3
+krb5/man/man3/krb5_keyblock_zero.3
+krb5/man/man3/krb5_keytab.3
+krb5/man/man3/krb5_keytab_intro.3
+krb5/man/man3/krb5_keytab_key_proc.3
+krb5/man/man3/krb5_keytype_to_enctypes.3
+krb5/man/man3/krb5_keytype_to_enctypes_default.3
+krb5/man/man3/krb5_keytype_to_string.3
+krb5/man/man3/krb5_krbhst_get_addrinfo.3
+krb5/man/man3/krb5_kt_add_entry.3
+krb5/man/man3/krb5_kt_close.3
+krb5/man/man3/krb5_kt_compare.3
+krb5/man/man3/krb5_kt_copy_entry_contents.3
+krb5/man/man3/krb5_kt_default.3
+krb5/man/man3/krb5_kt_default_modify_name.3
+krb5/man/man3/krb5_kt_default_name.3
+krb5/man/man3/krb5_kt_destroy.3
+krb5/man/man3/krb5_kt_end_seq_get.3
+krb5/man/man3/krb5_kt_free_entry.3
+krb5/man/man3/krb5_kt_get_entry.3
+krb5/man/man3/krb5_kt_get_full_name.3
+krb5/man/man3/krb5_kt_get_name.3
+krb5/man/man3/krb5_kt_get_type.3
+krb5/man/man3/krb5_kt_have_content.3
+krb5/man/man3/krb5_kt_next_entry.3
+krb5/man/man3/krb5_kt_read_service_key.3
+krb5/man/man3/krb5_kt_register.3
+krb5/man/man3/krb5_kt_remove_entry.3
+krb5/man/man3/krb5_kt_resolve.3
+krb5/man/man3/krb5_kt_start_seq_get.3
+krb5/man/man3/krb5_kuserok.3
+krb5/man/man3/krb5_make_addrport.3
+krb5/man/man3/krb5_make_principal.3
+krb5/man/man3/krb5_max_sockaddr_size.3
+krb5/man/man3/krb5_mcc_ops.3
+krb5/man/man3/krb5_pac.3
+krb5/man/man3/krb5_pac_get_buffer.3
+krb5/man/man3/krb5_pac_verify.3
+krb5/man/man3/krb5_parse_address.3
+krb5/man/man3/krb5_parse_name.3
+krb5/man/man3/krb5_parse_name_flags.3
+krb5/man/man3/krb5_parse_nametype.3
+krb5/man/man3/krb5_password_key_proc.3
+krb5/man/man3/krb5_plugin_register.3
+krb5/man/man3/krb5_prepend_config_files_default.3
+krb5/man/man3/krb5_princ_realm.3
+krb5/man/man3/krb5_princ_set_realm.3
+krb5/man/man3/krb5_principal.3
+krb5/man/man3/krb5_principal_compare.3
+krb5/man/man3/krb5_principal_compare_any_realm.3
+krb5/man/man3/krb5_principal_get_num_comp.3
+krb5/man/man3/krb5_principal_get_realm.3
+krb5/man/man3/krb5_principal_get_type.3
+krb5/man/man3/krb5_principal_intro.3
+krb5/man/man3/krb5_principal_is_krbtgt.3
+krb5/man/man3/krb5_principal_match.3
+krb5/man/man3/krb5_principal_set_realm.3
+krb5/man/man3/krb5_principal_set_type.3
+krb5/man/man3/krb5_print_address.3
+krb5/man/man3/krb5_random_to_key.3
+krb5/man/man3/krb5_rd_req_ctx.3
+krb5/man/man3/krb5_rd_req_in_ctx_alloc.3
+krb5/man/man3/krb5_rd_req_in_set_keytab.3
+krb5/man/man3/krb5_rd_req_in_set_pac_check.3
+krb5/man/man3/krb5_rd_req_out_ctx_free.3
+krb5/man/man3/krb5_rd_req_out_get_server.3
+krb5/man/man3/krb5_realm_compare.3
+krb5/man/man3/krb5_ret_address.3
+krb5/man/man3/krb5_ret_addrs.3
+krb5/man/man3/krb5_ret_authdata.3
+krb5/man/man3/krb5_ret_creds.3
+krb5/man/man3/krb5_ret_creds_tag.3
+krb5/man/man3/krb5_ret_data.3
+krb5/man/man3/krb5_ret_int16.3
+krb5/man/man3/krb5_ret_int32.3
+krb5/man/man3/krb5_ret_int8.3
+krb5/man/man3/krb5_ret_keyblock.3
+krb5/man/man3/krb5_ret_principal.3
+krb5/man/man3/krb5_ret_string.3
+krb5/man/man3/krb5_ret_stringz.3
+krb5/man/man3/krb5_ret_times.3
+krb5/man/man3/krb5_ret_uint16.3
+krb5/man/man3/krb5_ret_uint32.3
+krb5/man/man3/krb5_ret_uint8.3
+krb5/man/man3/krb5_set_config_files.3
+krb5/man/man3/krb5_set_default_in_tkt_etypes.3
+krb5/man/man3/krb5_set_dns_canonicalize_hostname.3
+krb5/man/man3/krb5_set_error_message.3
+krb5/man/man3/krb5_set_error_string.3
+krb5/man/man3/krb5_set_extra_addresses.3
+krb5/man/man3/krb5_set_fcache_version.3
+krb5/man/man3/krb5_set_home_dir_access.3
+krb5/man/man3/krb5_set_ignore_addresses.3
+krb5/man/man3/krb5_set_kdc_sec_offset.3
+krb5/man/man3/krb5_set_max_time_skew.3
+krb5/man/man3/krb5_set_password.3
+krb5/man/man3/krb5_set_real_time.3
+krb5/man/man3/krb5_set_use_admin_kdc.3
+krb5/man/man3/krb5_sname_to_principal.3
+krb5/man/man3/krb5_sockaddr2address.3
+krb5/man/man3/krb5_sockaddr2port.3
+krb5/man/man3/krb5_sockaddr_uninteresting.3
+krb5/man/man3/krb5_storage.3
+krb5/man/man3/krb5_storage_clear_flags.3
+krb5/man/man3/krb5_storage_emem.3
+krb5/man/man3/krb5_storage_free.3
+krb5/man/man3/krb5_storage_from_data.3
+krb5/man/man3/krb5_storage_from_fd.3
+krb5/man/man3/krb5_storage_from_mem.3
+krb5/man/man3/krb5_storage_from_readonly_mem.3
+krb5/man/man3/krb5_storage_get_byteorder.3
+krb5/man/man3/krb5_storage_get_eof_code.3
+krb5/man/man3/krb5_storage_is_flags.3
+krb5/man/man3/krb5_storage_read.3
+krb5/man/man3/krb5_storage_seek.3
+krb5/man/man3/krb5_storage_set_byteorder.3
+krb5/man/man3/krb5_storage_set_eof_code.3
+krb5/man/man3/krb5_storage_set_flags.3
+krb5/man/man3/krb5_storage_set_max_alloc.3
+krb5/man/man3/krb5_storage_to_data.3
+krb5/man/man3/krb5_storage_truncate.3
+krb5/man/man3/krb5_storage_write.3
+krb5/man/man3/krb5_store_address.3
+krb5/man/man3/krb5_store_addrs.3
+krb5/man/man3/krb5_store_authdata.3
+krb5/man/man3/krb5_store_creds.3
+krb5/man/man3/krb5_store_creds_tag.3
+krb5/man/man3/krb5_store_data.3
+krb5/man/man3/krb5_store_int16.3
+krb5/man/man3/krb5_store_int32.3
+krb5/man/man3/krb5_store_int8.3
+krb5/man/man3/krb5_store_keyblock.3
+krb5/man/man3/krb5_store_principal.3
+krb5/man/man3/krb5_store_string.3
+krb5/man/man3/krb5_store_stringz.3
+krb5/man/man3/krb5_store_times.3
+krb5/man/man3/krb5_store_uint16.3
+krb5/man/man3/krb5_store_uint32.3
+krb5/man/man3/krb5_store_uint8.3
+krb5/man/man3/krb5_string_to_keytype.3
+krb5/man/man3/krb5_support.3
+krb5/man/man3/krb5_ticket.3
+krb5/man/man3/krb5_ticket_get_authorization_data_type.3
+krb5/man/man3/krb5_ticket_get_client.3
+krb5/man/man3/krb5_ticket_get_endtime.3
+krb5/man/man3/krb5_ticket_get_flags.3
+krb5/man/man3/krb5_ticket_get_server.3
+krb5/man/man3/krb5_unparse_name.3
+krb5/man/man3/krb5_unparse_name_fixed.3
+krb5/man/man3/krb5_unparse_name_fixed_flags.3
+krb5/man/man3/krb5_unparse_name_fixed_short.3
+krb5/man/man3/krb5_unparse_name_flags.3
+krb5/man/man3/krb5_unparse_name_short.3
+krb5/man/man3/krb5_v4compat.3
+krb5/man/man3/krb5_verify_checksum_iov.3
+krb5/man/man3/krb5_vset_error_string.3
+krb5/man/man3/krb5_vwarn.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/annotated.html b/crypto/heimdal/doc/doxyout/ntlm/html/annotated.html
new file mode 100644
index 000000000000..25571647c1a6
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/annotated.html
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalntlmlibrary: Data Structures</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Data Structures</h1>Here are the data structures with brief descriptions:<table>
+ <tr><td class="indexkey"><a class="el" href="structntlm__buf.html">ntlm_buf</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structntlm__type1.html">ntlm_type1</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structntlm__type2.html">ntlm_type2</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structntlm__type3.html">ntlm_type3</a></td><td class="indexvalue"></td></tr>
+</table>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for Heimdalntlmlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/doxygen.css b/crypto/heimdal/doc/doxyout/ntlm/html/doxygen.css
new file mode 100644
index 000000000000..22c484301dd1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/doxygen.css
@@ -0,0 +1,473 @@
+BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
+ font-family: Geneva, Arial, Helvetica, sans-serif;
+}
+BODY,TD {
+ font-size: 90%;
+}
+H1 {
+ text-align: center;
+ font-size: 160%;
+}
+H2 {
+ font-size: 120%;
+}
+H3 {
+ font-size: 100%;
+}
+CAPTION {
+ font-weight: bold
+}
+DIV.qindex {
+ width: 100%;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navpath {
+ width: 100%;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navtab {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+TD.navtab {
+ font-size: 70%;
+}
+A.qindex {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D;
+}
+A.qindex:visited {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D
+}
+A.qindex:hover {
+ text-decoration: none;
+ background-color: #ddddff;
+}
+A.qindexHL {
+ text-decoration: none;
+ font-weight: bold;
+ background-color: #6666cc;
+ color: #ffffff;
+ border: 1px double #9295C2;
+}
+A.qindexHL:hover {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff;
+}
+A.qindexHL:visited {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff
+}
+A.el {
+ text-decoration: none;
+ font-weight: bold
+}
+A.elRef {
+ font-weight: bold
+}
+A.code:link {
+ text-decoration: none;
+ font-weight: normal;
+ color: #0000FF
+}
+A.code:visited {
+ text-decoration: none;
+ font-weight: normal;
+ color: #0000FF
+}
+A.codeRef:link {
+ font-weight: normal;
+ color: #0000FF
+}
+A.codeRef:visited {
+ font-weight: normal;
+ color: #0000FF
+}
+A:hover {
+ text-decoration: none;
+ background-color: #f2f2ff
+}
+DL.el {
+ margin-left: -1cm
+}
+.fragment {
+ font-family: monospace, fixed;
+ font-size: 95%;
+}
+PRE.fragment {
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ margin-left: 2px;
+ margin-right: 8px;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+}
+DIV.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px
+}
+
+DIV.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ margin-bottom: 6px;
+ font-weight: bold;
+}
+DIV.groupText {
+ margin-left: 16px;
+ font-style: italic;
+ font-size: 90%
+}
+BODY {
+ background: white;
+ color: black;
+ margin-right: 20px;
+ margin-left: 20px;
+}
+TD.indexkey {
+ background-color: #e8eef2;
+ font-weight: bold;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TD.indexvalue {
+ background-color: #e8eef2;
+ font-style: italic;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TR.memlist {
+ background-color: #f0f0f0;
+}
+P.formulaDsp {
+ text-align: center;
+}
+IMG.formulaDsp {
+}
+IMG.formulaInl {
+ vertical-align: middle;
+}
+SPAN.keyword { color: #008000 }
+SPAN.keywordtype { color: #604020 }
+SPAN.keywordflow { color: #e08000 }
+SPAN.comment { color: #800000 }
+SPAN.preprocessor { color: #806020 }
+SPAN.stringliteral { color: #002080 }
+SPAN.charliteral { color: #008080 }
+SPAN.vhdldigit { color: #ff00ff }
+SPAN.vhdlchar { color: #000000 }
+SPAN.vhdlkeyword { color: #700070 }
+SPAN.vhdllogic { color: #ff0000 }
+
+.mdescLeft {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.mdescRight {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.memItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplParams {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ color: #606060;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+FORM.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+INPUT.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+TD.tiny {
+ font-size: 75%;
+}
+a {
+ color: #1A41A8;
+}
+a:visited {
+ color: #2A3798;
+}
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #84b0c7;
+}
+TH.dirtab {
+ background: #e8eef2;
+ font-weight: bold;
+}
+HR {
+ height: 1px;
+ border: none;
+ border-top: 1px solid black;
+}
+
+/* Style for detailed member documentation */
+.memtemplate {
+ font-size: 80%;
+ color: #606060;
+ font-weight: normal;
+ margin-left: 3px;
+}
+.memnav {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+.memitem {
+ padding: 4px;
+ background-color: #eef3f5;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #dedeee;
+ -moz-border-radius: 8px 8px 8px 8px;
+}
+.memname {
+ white-space: nowrap;
+ font-weight: bold;
+}
+.memdoc{
+ padding-left: 10px;
+}
+.memproto {
+ background-color: #d5e1e8;
+ width: 100%;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #84b0c7;
+ font-weight: bold;
+ -moz-border-radius: 8px 8px 8px 8px;
+}
+.paramkey {
+ text-align: right;
+}
+.paramtype {
+ white-space: nowrap;
+}
+.paramname {
+ color: #602020;
+ font-style: italic;
+ white-space: nowrap;
+}
+/* End Styling for detailed member documentation */
+
+/* for the tree view */
+.ftvtree {
+ font-family: sans-serif;
+ margin:0.5em;
+}
+/* these are for tree view when used as main index */
+.directory {
+ font-size: 9pt;
+ font-weight: bold;
+}
+.directory h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+
+/* The following two styles can be used to replace the root node title */
+/* with an image of your choice. Simply uncomment the next two styles, */
+/* specify the name of your image and be sure to set 'height' to the */
+/* proper pixel height of your image. */
+
+/* .directory h3.swap { */
+/* height: 61px; */
+/* background-repeat: no-repeat; */
+/* background-image: url("yourimage.gif"); */
+/* } */
+/* .directory h3.swap span { */
+/* display: none; */
+/* } */
+
+.directory > h3 {
+ margin-top: 0;
+}
+.directory p {
+ margin: 0px;
+ white-space: nowrap;
+}
+.directory div {
+ display: none;
+ margin: 0px;
+}
+.directory img {
+ vertical-align: -30%;
+}
+/* these are for tree view when not used as main index */
+.directory-alt {
+ font-size: 100%;
+ font-weight: bold;
+}
+.directory-alt h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+.directory-alt > h3 {
+ margin-top: 0;
+}
+.directory-alt p {
+ margin: 0px;
+ white-space: nowrap;
+}
+.directory-alt div {
+ display: none;
+ margin: 0px;
+}
+.directory-alt img {
+ vertical-align: -30%;
+}
+
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/doxygen.png b/crypto/heimdal/doc/doxyout/ntlm/html/doxygen.png
new file mode 100644
index 000000000000..f0a274bbaffd
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/doxygen.png
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/examples.html b/crypto/heimdal/doc/doxyout/ntlm/html/examples.html
new file mode 100644
index 000000000000..03f1863703b9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/examples.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalntlmlibrary: Examples</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Examples</h1>Here is a list of all examples:<ul>
+<li><a class="el" href="test__ntlm_8c-example.html">test_ntlm.c</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:20 2011 for Heimdalntlmlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/functions.html b/crypto/heimdal/doc/doxyout/ntlm/html/functions.html
new file mode 100644
index 000000000000..4e61376d1668
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/functions.html
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalntlmlibrary: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+<p>
+<ul>
+<li>challenge
+: <a class="el" href="structntlm__type2.html#12c5c7a960c60bbd54dbf49527856bab">ntlm_type2</a>
+<li>context
+: <a class="el" href="structntlm__type2.html#15b0b79e029be5a33d1e3813681024ae">ntlm_type2</a>
+<li>data
+: <a class="el" href="structntlm__buf.html#0cb7caf04f8f80326491b45edcdd2687">ntlm_buf</a>
+<li>domain
+: <a class="el" href="structntlm__type1.html#7d99f4da91742cd5bd94f1af1713c075">ntlm_type1</a>
+<li>flags
+: <a class="el" href="structntlm__type1.html#e2f4bbf968f7dde8f1cd2a71396a06fb">ntlm_type1</a>
+, <a class="el" href="structntlm__type3.html#65347e68a22b66fc65c299f2cda2cf2d">ntlm_type3</a>
+, <a class="el" href="structntlm__type2.html#7f52e5d5e1e31e369d88d1cfb738a9ff">ntlm_type2</a>
+<li>hostname
+: <a class="el" href="structntlm__type1.html#63e2c0e1d31b93802670e677b89ae7e8">ntlm_type1</a>
+<li>length
+: <a class="el" href="structntlm__buf.html#1ca1856fd5b4ac0197320d7723c73bd0">ntlm_buf</a>
+<li>lm
+: <a class="el" href="structntlm__type3.html#879e24340a26a3b8099d57767fbd0d30">ntlm_type3</a>
+<li>ntlm
+: <a class="el" href="structntlm__type3.html#7b496ad8682fbd4a5fe06c32da7621c7">ntlm_type3</a>
+<li>os
+: <a class="el" href="structntlm__type1.html#3f0a2c98b021a211c030b09b37d35fa3">ntlm_type1</a>
+, <a class="el" href="structntlm__type3.html#f95c920ddc2d3cccfc82b3c54cd7bba2">ntlm_type3</a>
+, <a class="el" href="structntlm__type2.html#16a0efdad1ba0d057a9c650e849b9321">ntlm_type2</a>
+<li>sessionkey
+: <a class="el" href="structntlm__type3.html#f94bd38360086ec7f8aa4f18966d0a12">ntlm_type3</a>
+<li>targetinfo
+: <a class="el" href="structntlm__type2.html#d468bf3c5f042a893f3d118a9cb50a34">ntlm_type2</a>
+<li>targetname
+: <a class="el" href="structntlm__type3.html#89d7688f04cb1362ffa5a81759d28716">ntlm_type3</a>
+, <a class="el" href="structntlm__type2.html#7ed7a5246d77d4358e6fa459c6263a10">ntlm_type2</a>
+<li>username
+: <a class="el" href="structntlm__type3.html#c6e99229102b238c4aad9b93fabe95b7">ntlm_type3</a>
+<li>ws
+: <a class="el" href="structntlm__type3.html#ffbe974b5c93e47e2c8bf6f5a767c82d">ntlm_type3</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for Heimdalntlmlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/functions_vars.html b/crypto/heimdal/doc/doxyout/ntlm/html/functions_vars.html
new file mode 100644
index 000000000000..378c553840d1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/functions_vars.html
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalntlmlibrary: Data Fields - Variables</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+<p>
+<ul>
+<li>challenge
+: <a class="el" href="structntlm__type2.html#12c5c7a960c60bbd54dbf49527856bab">ntlm_type2</a>
+<li>context
+: <a class="el" href="structntlm__type2.html#15b0b79e029be5a33d1e3813681024ae">ntlm_type2</a>
+<li>data
+: <a class="el" href="structntlm__buf.html#0cb7caf04f8f80326491b45edcdd2687">ntlm_buf</a>
+<li>domain
+: <a class="el" href="structntlm__type1.html#7d99f4da91742cd5bd94f1af1713c075">ntlm_type1</a>
+<li>flags
+: <a class="el" href="structntlm__type1.html#e2f4bbf968f7dde8f1cd2a71396a06fb">ntlm_type1</a>
+, <a class="el" href="structntlm__type3.html#65347e68a22b66fc65c299f2cda2cf2d">ntlm_type3</a>
+, <a class="el" href="structntlm__type2.html#7f52e5d5e1e31e369d88d1cfb738a9ff">ntlm_type2</a>
+<li>hostname
+: <a class="el" href="structntlm__type1.html#63e2c0e1d31b93802670e677b89ae7e8">ntlm_type1</a>
+<li>length
+: <a class="el" href="structntlm__buf.html#1ca1856fd5b4ac0197320d7723c73bd0">ntlm_buf</a>
+<li>lm
+: <a class="el" href="structntlm__type3.html#879e24340a26a3b8099d57767fbd0d30">ntlm_type3</a>
+<li>ntlm
+: <a class="el" href="structntlm__type3.html#7b496ad8682fbd4a5fe06c32da7621c7">ntlm_type3</a>
+<li>os
+: <a class="el" href="structntlm__type1.html#3f0a2c98b021a211c030b09b37d35fa3">ntlm_type1</a>
+, <a class="el" href="structntlm__type3.html#f95c920ddc2d3cccfc82b3c54cd7bba2">ntlm_type3</a>
+, <a class="el" href="structntlm__type2.html#16a0efdad1ba0d057a9c650e849b9321">ntlm_type2</a>
+<li>sessionkey
+: <a class="el" href="structntlm__type3.html#f94bd38360086ec7f8aa4f18966d0a12">ntlm_type3</a>
+<li>targetinfo
+: <a class="el" href="structntlm__type2.html#d468bf3c5f042a893f3d118a9cb50a34">ntlm_type2</a>
+<li>targetname
+: <a class="el" href="structntlm__type3.html#89d7688f04cb1362ffa5a81759d28716">ntlm_type3</a>
+, <a class="el" href="structntlm__type2.html#7ed7a5246d77d4358e6fa459c6263a10">ntlm_type2</a>
+<li>username
+: <a class="el" href="structntlm__type3.html#c6e99229102b238c4aad9b93fabe95b7">ntlm_type3</a>
+<li>ws
+: <a class="el" href="structntlm__type3.html#ffbe974b5c93e47e2c8bf6f5a767c82d">ntlm_type3</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for Heimdalntlmlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/graph_legend.dot b/crypto/heimdal/doc/doxyout/ntlm/html/graph_legend.dot
new file mode 100644
index 000000000000..4df0f1aa4864
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/graph_legend.dot
@@ -0,0 +1,22 @@
+digraph G
+{
+ edge [fontname="FreeSans",fontsize=10,labelfontname="FreeSans",labelfontsize=10];
+ node [fontname="FreeSans",fontsize=10,shape=record];
+ Node9 [shape="box",label="Inherited",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",fillcolor="grey75",style="filled" fontcolor="black"];
+ Node10 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node10 [shape="box",label="PublicBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPublicBase.html"];
+ Node11 -> Node10 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node11 [shape="box",label="Truncated",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="red",URL="$classTruncated.html"];
+ Node13 -> Node9 [dir=back,color="darkgreen",fontsize=10,style="solid",fontname="FreeSans"];
+ Node13 [shape="box",label="ProtectedBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classProtectedBase.html"];
+ Node14 -> Node9 [dir=back,color="firebrick4",fontsize=10,style="solid",fontname="FreeSans"];
+ Node14 [shape="box",label="PrivateBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPrivateBase.html"];
+ Node15 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node15 [shape="box",label="Undocumented",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="grey75"];
+ Node16 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node16 [shape="box",label="Templ< int >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+ Node17 -> Node16 [dir=back,color="orange",fontsize=10,style="dashed",label="< int >",fontname="FreeSans"];
+ Node17 [shape="box",label="Templ< T >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+ Node18 -> Node9 [dir=back,color="darkorchid3",fontsize=10,style="dashed",label="m_usedClass",fontname="FreeSans"];
+ Node18 [shape="box",label="Used",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classUsed.html"];
+}
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/graph_legend.html b/crypto/heimdal/doc/doxyout/ntlm/html/graph_legend.html
new file mode 100644
index 000000000000..6caf33814202
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/graph_legend.html
@@ -0,0 +1,89 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalntlmlibrary: Graph Legend</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Graph Legend</h1>This page explains how to interpret the graphs that are generated by doxygen.<p>
+Consider the following example: <div class="fragment"><pre class="fragment"><span class="comment">/*! Invisible class because of truncation */</span>
+<span class="keyword">class </span>Invisible { };
+<span class="comment"></span>
+<span class="comment">/*! Truncated class, inheritance relation is hidden */</span>
+<span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };
+
+<span class="comment">/* Class not documented with doxygen comments */</span>
+<span class="keyword">class </span>Undocumented { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using public inheritance */</span>
+<span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };
+<span class="comment"></span>
+<span class="comment">/*! A template class */</span>
+<span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>Templ { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using protected inheritance */</span>
+<span class="keyword">class </span>ProtectedBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using private inheritance */</span>
+<span class="keyword">class </span>PrivateBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is used by the Inherited class */</span>
+<span class="keyword">class </span>Used { };
+<span class="comment"></span>
+<span class="comment">/*! Super class that inherits a number of other classes */</span>
+<span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,
+ <span class="keyword">protected</span> ProtectedBase,
+ <span class="keyword">private</span> PrivateBase,
+ <span class="keyword">public</span> Undocumented,
+ <span class="keyword">public</span> Templ&lt;int&gt;
+{
+ <span class="keyword">private</span>:
+ Used *m_usedClass;
+};
+</pre></div> If the <code>MAX_DOT_GRAPH_HEIGHT</code> tag in the configuration file is set to 240 this will result in the following graph:<p>
+<center><div align="center">
+<img src="graph_legend.png" alt="graph_legend.png">
+</div>
+</center> <p>
+The boxes in the above graph have the following meaning: <ul>
+<li>
+A filled gray box represents the struct or class for which the graph is generated. </li>
+<li>
+A box with a black border denotes a documented struct or class. </li>
+<li>
+A box with a grey border denotes an undocumented struct or class. </li>
+<li>
+A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
+</ul>
+The arrows have the following meaning: <ul>
+<li>
+A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
+<li>
+A dark green arrow is used for protected inheritance. </li>
+<li>
+A dark red arrow is used for private inheritance. </li>
+<li>
+A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
+<li>
+A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:20 2011 for Heimdalntlmlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/graph_legend.png b/crypto/heimdal/doc/doxyout/ntlm/html/graph_legend.png
new file mode 100644
index 000000000000..9b96937bfd5f
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/graph_legend.png
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/group__ntlm__core.html b/crypto/heimdal/doc/doxyout/ntlm/html/group__ntlm__core.html
new file mode 100644
index 000000000000..d6776dfa5eed
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/group__ntlm__core.html
@@ -0,0 +1,936 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalntlmlibrary: Heimdal NTLM library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal NTLM library</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf</a> (struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g704ec8c5dba05ef57186d242ff165565">heim_ntlm_free_targetinfo</a> (struct ntlm_targetinfo *ti)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g2881747fad2ac2979a28d3bd050b0fa8">heim_ntlm_encode_targetinfo</a> (const struct ntlm_targetinfo *ti, int ucs2, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#gf1d4de2faec8b1c1070a55fd2e6e630f">heim_ntlm_decode_targetinfo</a> (const struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *data, int ucs2, struct ntlm_targetinfo *ti)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g76fa6caf3f539e24008e31613f5eb663">heim_ntlm_free_type1</a> (struct <a class="el" href="structntlm__type1.html">ntlm_type1</a> *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g0107727234287ac61a8801b0faff9dff">heim_ntlm_encode_type1</a> (const struct <a class="el" href="structntlm__type1.html">ntlm_type1</a> *type1, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g8fde84c86f1c7c9f730f7fb4acedcb43">heim_ntlm_free_type2</a> (struct <a class="el" href="structntlm__type2.html">ntlm_type2</a> *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g2860c6f6d497255eb433adc8cacc49dd">heim_ntlm_encode_type2</a> (const struct <a class="el" href="structntlm__type2.html">ntlm_type2</a> *type2, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#gc4e6d01e5247b8540d41ccbbf1031319">heim_ntlm_free_type3</a> (struct <a class="el" href="structntlm__type3.html">ntlm_type3</a> *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g9cf026be6e602c22d62aa9e47e85c7c2">heim_ntlm_encode_type3</a> (const struct <a class="el" href="structntlm__type3.html">ntlm_type3</a> *type3, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g254ee0a4d5a2594833e36697ad575d7e">heim_ntlm_nt_key</a> (const char *password, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *key)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#ge3b634802ef94233a175291abd2ea14d">heim_ntlm_calculate_ntlm1</a> (void *key, size_t len, unsigned char challenge[8], struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *answer)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#gd09935f9ccecb9fb2917d68fb82ec3d6">heim_ntlm_build_ntlm1_master</a> (void *key, size_t len, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *session, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *master)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#gd189a009fcac6cba44678b6a0aef81e0">heim_ntlm_build_ntlm2_master</a> (void *key, size_t len, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *blob, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *session, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *master)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g6ef0049af05a83d73b7a3d962e679c2a">heim_ntlm_keyex_unwrap</a> (struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *baseKey, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *encryptedSession, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *session)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g4c4c32652527acead6848052615ae284">heim_ntlm_ntlmv2_key</a> (const void *key, size_t len, const char *username, const char *target, unsigned char ntlmv2[16])</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g9bc09732da698d0f2d8c9d41e60d764d">heim_ntlm_calculate_lm2</a> (const void *key, size_t len, const char *username, const char *target, const unsigned char serverchallenge[8], unsigned char ntlmv2[16], struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *answer)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#ga8f07fb71a0d5f095cde3fb9fb40d10c">heim_ntlm_calculate_ntlm2</a> (const void *key, size_t len, const char *username, const char *target, const unsigned char serverchallenge[8], const struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *infotarget, unsigned char ntlmv2[16], struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *answer)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g3b3d6a5187cab6bfe656afa7a8273ca6">heim_ntlm_verify_ntlm2</a> (const void *key, size_t len, const char *username, const char *target, time_t now, const unsigned char serverchallenge[8], const struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *answer, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *infotarget, unsigned char ntlmv2[16])</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The NTLM core functions implement the string2key generation function, message encode and decode function, and the hash function functions. <hr><h2>Function Documentation</h2>
+<a class="anchor" name="gd09935f9ccecb9fb2917d68fb82ec3d6"></a><!-- doxytag: member="ntlm.c::heim_ntlm_build_ntlm1_master" ref="gd09935f9ccecb9fb2917d68fb82ec3d6" args="(void *key, size_t len, struct ntlm_buf *session, struct ntlm_buf *master)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int heim_ntlm_build_ntlm1_master </td>
+ <td>(</td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>session</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>master</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Generates an NTLMv1 session random with assosited session master key.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>the ntlm v1 key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>session</em>&nbsp;</td><td>generated session nonce, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>master</em>&nbsp;</td><td>calculated session master key, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd189a009fcac6cba44678b6a0aef81e0"></a><!-- doxytag: member="ntlm.c::heim_ntlm_build_ntlm2_master" ref="gd189a009fcac6cba44678b6a0aef81e0" args="(void *key, size_t len, struct ntlm_buf *blob, struct ntlm_buf *session, struct ntlm_buf *master)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int heim_ntlm_build_ntlm2_master </td>
+ <td>(</td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>blob</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>session</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>master</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Generates an NTLMv2 session random with associated session master key.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>the NTLMv2 key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>blob</em>&nbsp;</td><td>the NTLMv2 "blob" </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>session</em>&nbsp;</td><td>generated session nonce, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>master</em>&nbsp;</td><td>calculated session master key, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9bc09732da698d0f2d8c9d41e60d764d"></a><!-- doxytag: member="ntlm.c::heim_ntlm_calculate_lm2" ref="g9bc09732da698d0f2d8c9d41e60d764d" args="(const void *key, size_t len, const char *username, const char *target, const unsigned char serverchallenge[8], unsigned char ntlmv2[16], struct ntlm_buf *answer)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int heim_ntlm_calculate_lm2 </td>
+ <td>(</td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>username</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>target</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const unsigned char&nbsp;</td>
+ <td class="paramname"> <em>serverchallenge</em>[8], </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned char&nbsp;</td>
+ <td class="paramname"> <em>ntlmv2</em>[16], </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>answer</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Calculate LMv2 response<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>the ntlm key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>username</em>&nbsp;</td><td>name of the user, as sent in the message, assumed to be in UTF8. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td>the name of the target, assumed to be in UTF8. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>serverchallenge</em>&nbsp;</td><td>challenge as sent by the server in the type2 message. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ntlmv2</em>&nbsp;</td><td>calculated session key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>answer</em>&nbsp;</td><td>ntlm response answer, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ge3b634802ef94233a175291abd2ea14d"></a><!-- doxytag: member="ntlm.c::heim_ntlm_calculate_ntlm1" ref="ge3b634802ef94233a175291abd2ea14d" args="(void *key, size_t len, unsigned char challenge[8], struct ntlm_buf *answer)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int heim_ntlm_calculate_ntlm1 </td>
+ <td>(</td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned char&nbsp;</td>
+ <td class="paramname"> <em>challenge</em>[8], </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>answer</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Calculate NTLMv1 response hash<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>the ntlm v1 key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>challenge</em>&nbsp;</td><td>sent by the server </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>answer</em>&nbsp;</td><td>calculated answer, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ga8f07fb71a0d5f095cde3fb9fb40d10c"></a><!-- doxytag: member="ntlm.c::heim_ntlm_calculate_ntlm2" ref="ga8f07fb71a0d5f095cde3fb9fb40d10c" args="(const void *key, size_t len, const char *username, const char *target, const unsigned char serverchallenge[8], const struct ntlm_buf *infotarget, unsigned char ntlmv2[16], struct ntlm_buf *answer)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int heim_ntlm_calculate_ntlm2 </td>
+ <td>(</td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>username</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>target</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const unsigned char&nbsp;</td>
+ <td class="paramname"> <em>serverchallenge</em>[8], </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>infotarget</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned char&nbsp;</td>
+ <td class="paramname"> <em>ntlmv2</em>[16], </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>answer</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Calculate NTLMv2 response<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>the ntlm key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>username</em>&nbsp;</td><td>name of the user, as sent in the message, assumed to be in UTF8. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td>the name of the target, assumed to be in UTF8. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>serverchallenge</em>&nbsp;</td><td>challenge as sent by the server in the type2 message. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>infotarget</em>&nbsp;</td><td>infotarget as sent by the server in the type2 message. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ntlmv2</em>&nbsp;</td><td>calculated session key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>answer</em>&nbsp;</td><td>ntlm response answer, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gf1d4de2faec8b1c1070a55fd2e6e630f"></a><!-- doxytag: member="ntlm.c::heim_ntlm_decode_targetinfo" ref="gf1d4de2faec8b1c1070a55fd2e6e630f" args="(const struct ntlm_buf *data, int ucs2, struct ntlm_targetinfo *ti)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int heim_ntlm_decode_targetinfo </td>
+ <td>(</td>
+ <td class="paramtype">const struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>ucs2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct ntlm_targetinfo *&nbsp;</td>
+ <td class="paramname"> <em>ti</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Decodes an NTLM targetinfo message<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>input data buffer with the encode NTLM targetinfo message </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ucs2</em>&nbsp;</td><td>if the strings should be encoded with ucs2 (selected by flag in message). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ti</em>&nbsp;</td><td>the decoded target info, should be freed with <a class="el" href="group__ntlm__core.html#g704ec8c5dba05ef57186d242ff165565">heim_ntlm_free_targetinfo()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2881747fad2ac2979a28d3bd050b0fa8"></a><!-- doxytag: member="ntlm.c::heim_ntlm_encode_targetinfo" ref="g2881747fad2ac2979a28d3bd050b0fa8" args="(const struct ntlm_targetinfo *ti, int ucs2, struct ntlm_buf *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int heim_ntlm_encode_targetinfo </td>
+ <td>(</td>
+ <td class="paramtype">const struct ntlm_targetinfo *&nbsp;</td>
+ <td class="paramname"> <em>ti</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>ucs2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Encodes a ntlm_targetinfo message.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ti</em>&nbsp;</td><td>the ntlm_targetinfo message to encode. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ucs2</em>&nbsp;</td><td>ignored </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>is the return buffer with the encoded message, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g0107727234287ac61a8801b0faff9dff"></a><!-- doxytag: member="ntlm.c::heim_ntlm_encode_type1" ref="g0107727234287ac61a8801b0faff9dff" args="(const struct ntlm_type1 *type1, struct ntlm_buf *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int heim_ntlm_encode_type1 </td>
+ <td>(</td>
+ <td class="paramtype">const struct <a class="el" href="structntlm__type1.html">ntlm_type1</a> *&nbsp;</td>
+ <td class="paramname"> <em>type1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Encodes an <a class="el" href="structntlm__type1.html">ntlm_type1</a> message.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>type1</em>&nbsp;</td><td>the <a class="el" href="structntlm__type1.html">ntlm_type1</a> message to encode. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>is the return buffer with the encoded message, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2860c6f6d497255eb433adc8cacc49dd"></a><!-- doxytag: member="ntlm.c::heim_ntlm_encode_type2" ref="g2860c6f6d497255eb433adc8cacc49dd" args="(const struct ntlm_type2 *type2, struct ntlm_buf *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int heim_ntlm_encode_type2 </td>
+ <td>(</td>
+ <td class="paramtype">const struct <a class="el" href="structntlm__type2.html">ntlm_type2</a> *&nbsp;</td>
+ <td class="paramname"> <em>type2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Encodes an <a class="el" href="structntlm__type2.html">ntlm_type2</a> message.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>type2</em>&nbsp;</td><td>the <a class="el" href="structntlm__type2.html">ntlm_type2</a> message to encode. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>is the return buffer with the encoded message, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g9cf026be6e602c22d62aa9e47e85c7c2"></a><!-- doxytag: member="ntlm.c::heim_ntlm_encode_type3" ref="g9cf026be6e602c22d62aa9e47e85c7c2" args="(const struct ntlm_type3 *type3, struct ntlm_buf *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int heim_ntlm_encode_type3 </td>
+ <td>(</td>
+ <td class="paramtype">const struct <a class="el" href="structntlm__type3.html">ntlm_type3</a> *&nbsp;</td>
+ <td class="paramname"> <em>type3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Encodes an <a class="el" href="structntlm__type3.html">ntlm_type3</a> message.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>type3</em>&nbsp;</td><td>the <a class="el" href="structntlm__type3.html">ntlm_type3</a> message to encode. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>is the return buffer with the encoded message, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5f6c313a3a7258cda5f09bb44f8d1776"></a><!-- doxytag: member="ntlm.c::heim_ntlm_free_buf" ref="g5f6c313a3a7258cda5f09bb44f8d1776" args="(struct ntlm_buf *p)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void heim_ntlm_free_buf </td>
+ <td>(</td>
+ <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>p</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+heim_ntlm_free_buf frees the ntlm buffer<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>buffer to be freed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g704ec8c5dba05ef57186d242ff165565"></a><!-- doxytag: member="ntlm.c::heim_ntlm_free_targetinfo" ref="g704ec8c5dba05ef57186d242ff165565" args="(struct ntlm_targetinfo *ti)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void heim_ntlm_free_targetinfo </td>
+ <td>(</td>
+ <td class="paramtype">struct ntlm_targetinfo *&nbsp;</td>
+ <td class="paramname"> <em>ti</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Frees the ntlm_targetinfo message<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ti</em>&nbsp;</td><td>targetinfo to be freed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g76fa6caf3f539e24008e31613f5eb663"></a><!-- doxytag: member="ntlm.c::heim_ntlm_free_type1" ref="g76fa6caf3f539e24008e31613f5eb663" args="(struct ntlm_type1 *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void heim_ntlm_free_type1 </td>
+ <td>(</td>
+ <td class="paramtype">struct <a class="el" href="structntlm__type1.html">ntlm_type1</a> *&nbsp;</td>
+ <td class="paramname"> <em>data</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Frees the <a class="el" href="structntlm__type1.html">ntlm_type1</a> message<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>message to be freed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8fde84c86f1c7c9f730f7fb4acedcb43"></a><!-- doxytag: member="ntlm.c::heim_ntlm_free_type2" ref="g8fde84c86f1c7c9f730f7fb4acedcb43" args="(struct ntlm_type2 *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void heim_ntlm_free_type2 </td>
+ <td>(</td>
+ <td class="paramtype">struct <a class="el" href="structntlm__type2.html">ntlm_type2</a> *&nbsp;</td>
+ <td class="paramname"> <em>data</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Frees the <a class="el" href="structntlm__type2.html">ntlm_type2</a> message<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>message to be freed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gc4e6d01e5247b8540d41ccbbf1031319"></a><!-- doxytag: member="ntlm.c::heim_ntlm_free_type3" ref="gc4e6d01e5247b8540d41ccbbf1031319" args="(struct ntlm_type3 *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void heim_ntlm_free_type3 </td>
+ <td>(</td>
+ <td class="paramtype">struct <a class="el" href="structntlm__type3.html">ntlm_type3</a> *&nbsp;</td>
+ <td class="paramname"> <em>data</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Frees the <a class="el" href="structntlm__type3.html">ntlm_type3</a> message<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>message to be freed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g6ef0049af05a83d73b7a3d962e679c2a"></a><!-- doxytag: member="ntlm.c::heim_ntlm_keyex_unwrap" ref="g6ef0049af05a83d73b7a3d962e679c2a" args="(struct ntlm_buf *baseKey, struct ntlm_buf *encryptedSession, struct ntlm_buf *session)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int heim_ntlm_keyex_unwrap </td>
+ <td>(</td>
+ <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>baseKey</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>encryptedSession</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>session</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Given a key and encrypted session, unwrap the session key<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>baseKey</em>&nbsp;</td><td>the sessionBaseKey </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>encryptedSession</em>&nbsp;</td><td>encrypted session, type3.session field. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>session</em>&nbsp;</td><td>generated session nonce, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g254ee0a4d5a2594833e36697ad575d7e"></a><!-- doxytag: member="ntlm.c::heim_ntlm_nt_key" ref="g254ee0a4d5a2594833e36697ad575d7e" args="(const char *password, struct ntlm_buf *key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int heim_ntlm_nt_key </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>password</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Calculate the NTLM key, the password is assumed to be in UTF8.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>password</em>&nbsp;</td><td>password to calcute the key for. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>calcuted key, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4c4c32652527acead6848052615ae284"></a><!-- doxytag: member="ntlm.c::heim_ntlm_ntlmv2_key" ref="g4c4c32652527acead6848052615ae284" args="(const void *key, size_t len, const char *username, const char *target, unsigned char ntlmv2[16])" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int heim_ntlm_ntlmv2_key </td>
+ <td>(</td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>username</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>target</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned char&nbsp;</td>
+ <td class="paramname"> <em>ntlmv2</em>[16]</td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Generates an NTLMv2 session key.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>the ntlm key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>username</em>&nbsp;</td><td>name of the user, as sent in the message, assumed to be in UTF8. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td>the name of the target, assumed to be in UTF8. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ntlmv2</em>&nbsp;</td><td>the ntlmv2 session key</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, or an error code on failure. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g3b3d6a5187cab6bfe656afa7a8273ca6"></a><!-- doxytag: member="ntlm.c::heim_ntlm_verify_ntlm2" ref="g3b3d6a5187cab6bfe656afa7a8273ca6" args="(const void *key, size_t len, const char *username, const char *target, time_t now, const unsigned char serverchallenge[8], const struct ntlm_buf *answer, struct ntlm_buf *infotarget, unsigned char ntlmv2[16])" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int heim_ntlm_verify_ntlm2 </td>
+ <td>(</td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>username</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>target</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">time_t&nbsp;</td>
+ <td class="paramname"> <em>now</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const unsigned char&nbsp;</td>
+ <td class="paramname"> <em>serverchallenge</em>[8], </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>answer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *&nbsp;</td>
+ <td class="paramname"> <em>infotarget</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned char&nbsp;</td>
+ <td class="paramname"> <em>ntlmv2</em>[16]</td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Verify NTLMv2 response.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>the ntlm key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of key </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>username</em>&nbsp;</td><td>name of the user, as sent in the message, assumed to be in UTF8. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td>the name of the target, assumed to be in UTF8. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>now</em>&nbsp;</td><td>the time now (0 if the library should pick it up itself) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>serverchallenge</em>&nbsp;</td><td>challenge as sent by the server in the type2 message. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>answer</em>&nbsp;</td><td>ntlm response answer, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>infotarget</em>&nbsp;</td><td>infotarget as sent by the server in the type2 message. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ntlmv2</em>&nbsp;</td><td>calculated session key</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for Heimdalntlmlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/index.html b/crypto/heimdal/doc/doxyout/ntlm/html/index.html
new file mode 100644
index 000000000000..5f1b39a2fb76
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/index.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalntlmlibrary: Heimdal NTLM library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal NTLM library</h1>
+<p>
+<h3 align="center">1.5.1 </h3><h2><a class="anchor" name="intro">
+Introduction</a></h2>
+Heimdal libheimntlm library is a implementation of the NTLM protocol, both version 1 and 2. The GSS-API mech that uses this library adds support for transport encryption and integrity checking.<p>
+NTLM is a protocol for mutual authentication, its still used in many protocol where Kerberos is not support, one example is EAP/X802.1x mechanism LEAP from Microsoft and Cisco.<p>
+This is a support library for the core protocol, its used in Heimdal to implement and GSS-API mechanism. There is also support in the KDC to do remote digest authenticiation, this to allow services to authenticate users w/o direct access to the users ntlm hashes (same as Kerberos arcfour enctype keys).<p>
+More information about the NTLM protocol can found here <a href="http://davenport.sourceforge.net/ntlm.html">http://davenport.sourceforge.net/ntlm.html</a> .<p>
+The Heimdal projects web page: <a href="http://www.h5l.org/">http://www.h5l.org/</a><h2><a class="anchor" name="ntlm_example">
+NTLM Example</a></h2>
+Example to to use <a class="el" href="test__ntlm_8c-example.html">test_ntlm::c</a> . </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for Heimdalntlmlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/modules.html b/crypto/heimdal/doc/doxyout/ntlm/html/modules.html
new file mode 100644
index 000000000000..408e99cb77df
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/modules.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalntlmlibrary: Module Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Modules</h1>Here is a list of all modules:<ul>
+<li><a class="el" href="group__ntlm__core.html">Heimdal NTLM library</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for Heimdalntlmlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__buf.html b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__buf.html
new file mode 100644
index 000000000000..dca8f24a9718
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__buf.html
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalntlmlibrary: ntlm_buf Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ntlm_buf Struct Reference</h1><!-- doxytag: class="ntlm_buf" --><code>#include &lt;heimntlm.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__buf.html#1ca1856fd5b4ac0197320d7723c73bd0">length</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__buf.html#0cb7caf04f8f80326491b45edcdd2687">data</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Buffer for storing data in the NTLM library. When filled in by the library it should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>. <dl compact><dt><b>Examples: </b></dt><dd>
+
+<p>
+<a class="el" href="test__ntlm_8c-example.html#_a3">test_ntlm.c</a>.</dl><hr><h2>Field Documentation</h2>
+<a class="anchor" name="1ca1856fd5b4ac0197320d7723c73bd0"></a><!-- doxytag: member="ntlm_buf::length" ref="1ca1856fd5b4ac0197320d7723c73bd0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t <a class="el" href="structntlm__buf.html#1ca1856fd5b4ac0197320d7723c73bd0">ntlm_buf::length</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+length buffer data <dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="test__ntlm_8c-example.html#a15">test_ntlm.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="0cb7caf04f8f80326491b45edcdd2687"></a><!-- doxytag: member="ntlm_buf::data" ref="0cb7caf04f8f80326491b45edcdd2687" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void* <a class="el" href="structntlm__buf.html#0cb7caf04f8f80326491b45edcdd2687">ntlm_buf::data</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+pointer to the data itself <dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="test__ntlm_8c-example.html#a9">test_ntlm.c</a>.</dl>
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>/Users/lha/src/heimdal/heimdal-release/heimdal-1.5.1/lib/ntlm/heimntlm.h</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for Heimdalntlmlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type1.html b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type1.html
new file mode 100644
index 000000000000..7b3e8e6d383d
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type1.html
@@ -0,0 +1,118 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalntlmlibrary: ntlm_type1 Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ntlm_type1 Struct Reference</h1><!-- doxytag: class="ntlm_type1" --><code>#include &lt;heimntlm.h&gt;</code>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__type1.html#e2f4bbf968f7dde8f1cd2a71396a06fb">flags</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__type1.html#7d99f4da91742cd5bd94f1af1713c075">domain</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__type1.html#63e2c0e1d31b93802670e677b89ae7e8">hostname</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__type1.html#3f0a2c98b021a211c030b09b37d35fa3">os</a> [2]</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Struct for the NTLM type1 message info, the strings is assumed to be in UTF8. When filled in by the library it should be freed with <a class="el" href="group__ntlm__core.html#g76fa6caf3f539e24008e31613f5eb663">heim_ntlm_free_type1()</a>. <dl compact><dt><b>Examples: </b></dt><dd>
+
+<p>
+<a class="el" href="test__ntlm_8c-example.html#_a0">test_ntlm.c</a>.</dl><hr><h2>Field Documentation</h2>
+<a class="anchor" name="e2f4bbf968f7dde8f1cd2a71396a06fb"></a><!-- doxytag: member="ntlm_type1::flags" ref="e2f4bbf968f7dde8f1cd2a71396a06fb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint32_t <a class="el" href="structntlm__type1.html#e2f4bbf968f7dde8f1cd2a71396a06fb">ntlm_type1::flags</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="test__ntlm_8c-example.html#a4">test_ntlm.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="7d99f4da91742cd5bd94f1af1713c075"></a><!-- doxytag: member="ntlm_type1::domain" ref="7d99f4da91742cd5bd94f1af1713c075" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">char* <a class="el" href="structntlm__type1.html#7d99f4da91742cd5bd94f1af1713c075">ntlm_type1::domain</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="test__ntlm_8c-example.html#a5">test_ntlm.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="63e2c0e1d31b93802670e677b89ae7e8"></a><!-- doxytag: member="ntlm_type1::hostname" ref="63e2c0e1d31b93802670e677b89ae7e8" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">char* <a class="el" href="structntlm__type1.html#63e2c0e1d31b93802670e677b89ae7e8">ntlm_type1::hostname</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="test__ntlm_8c-example.html#a6">test_ntlm.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="3f0a2c98b021a211c030b09b37d35fa3"></a><!-- doxytag: member="ntlm_type1::os" ref="3f0a2c98b021a211c030b09b37d35fa3" args="[2]" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint32_t <a class="el" href="structntlm__type1.html#3f0a2c98b021a211c030b09b37d35fa3">ntlm_type1::os</a>[2] </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="test__ntlm_8c-example.html#a7">test_ntlm.c</a>.</dl>
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>/Users/lha/src/heimdal/heimdal-release/heimdal-1.5.1/lib/ntlm/heimntlm.h</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for Heimdalntlmlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type2.html b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type2.html
new file mode 100644
index 000000000000..959405923b91
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type2.html
@@ -0,0 +1,159 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalntlmlibrary: ntlm_type2 Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ntlm_type2 Struct Reference</h1><!-- doxytag: class="ntlm_type2" --><code>#include &lt;heimntlm.h&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for ntlm_type2:</div>
+<div class="dynsection">
+<p><center><img src="structntlm__type2__coll__graph.png" border="0" usemap="#ntlm__type2__coll__map" alt="Collaboration graph"></center>
+<map name="ntlm__type2__coll__map">
+<area shape="rect" href="structntlm__buf.html" title="ntlm_buf" alt="" coords="12,5,87,32"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__type2.html#7f52e5d5e1e31e369d88d1cfb738a9ff">flags</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__type2.html#7ed7a5246d77d4358e6fa459c6263a10">targetname</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__type2.html#d468bf3c5f042a893f3d118a9cb50a34">targetinfo</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__type2.html#12c5c7a960c60bbd54dbf49527856bab">challenge</a> [8]</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__type2.html#15b0b79e029be5a33d1e3813681024ae">context</a> [2]</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__type2.html#16a0efdad1ba0d057a9c650e849b9321">os</a> [2]</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Struct for the NTLM type2 message info, the strings is assumed to be in UTF8. When filled in by the library it should be freed with <a class="el" href="group__ntlm__core.html#g8fde84c86f1c7c9f730f7fb4acedcb43">heim_ntlm_free_type2()</a>. <dl compact><dt><b>Examples: </b></dt><dd>
+
+<p>
+<a class="el" href="test__ntlm_8c-example.html#_a1">test_ntlm.c</a>.</dl><hr><h2>Field Documentation</h2>
+<a class="anchor" name="7f52e5d5e1e31e369d88d1cfb738a9ff"></a><!-- doxytag: member="ntlm_type2::flags" ref="7f52e5d5e1e31e369d88d1cfb738a9ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint32_t <a class="el" href="structntlm__type2.html#7f52e5d5e1e31e369d88d1cfb738a9ff">ntlm_type2::flags</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="test__ntlm_8c-example.html#a11">test_ntlm.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="7ed7a5246d77d4358e6fa459c6263a10"></a><!-- doxytag: member="ntlm_type2::targetname" ref="7ed7a5246d77d4358e6fa459c6263a10" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">char* <a class="el" href="structntlm__type2.html#7ed7a5246d77d4358e6fa459c6263a10">ntlm_type2::targetname</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="test__ntlm_8c-example.html#a13">test_ntlm.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="d468bf3c5f042a893f3d118a9cb50a34"></a><!-- doxytag: member="ntlm_type2::targetinfo" ref="d468bf3c5f042a893f3d118a9cb50a34" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> <a class="el" href="structntlm__type2.html#d468bf3c5f042a893f3d118a9cb50a34">ntlm_type2::targetinfo</a><code> [read]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="test__ntlm_8c-example.html#a14">test_ntlm.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="12c5c7a960c60bbd54dbf49527856bab"></a><!-- doxytag: member="ntlm_type2::challenge" ref="12c5c7a960c60bbd54dbf49527856bab" args="[8]" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned char <a class="el" href="structntlm__type2.html#12c5c7a960c60bbd54dbf49527856bab">ntlm_type2::challenge</a>[8] </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="test__ntlm_8c-example.html#a12">test_ntlm.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="15b0b79e029be5a33d1e3813681024ae"></a><!-- doxytag: member="ntlm_type2::context" ref="15b0b79e029be5a33d1e3813681024ae" args="[2]" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint32_t <a class="el" href="structntlm__type2.html#15b0b79e029be5a33d1e3813681024ae">ntlm_type2::context</a>[2] </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="16a0efdad1ba0d057a9c650e849b9321"></a><!-- doxytag: member="ntlm_type2::os" ref="16a0efdad1ba0d057a9c650e849b9321" args="[2]" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint32_t <a class="el" href="structntlm__type2.html#16a0efdad1ba0d057a9c650e849b9321">ntlm_type2::os</a>[2] </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>/Users/lha/src/heimdal/heimdal-release/heimdal-1.5.1/lib/ntlm/heimntlm.h</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:20 2011 for Heimdalntlmlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type2__coll__graph.map b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type2__coll__graph.map
new file mode 100644
index 000000000000..9e6cd72b444e
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type2__coll__graph.map
@@ -0,0 +1 @@
+<area shape="rect" href="$structntlm__buf.html" title="ntlm_buf" alt="" coords="12,5,87,32">
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type2__coll__graph.md5 b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type2__coll__graph.md5
new file mode 100644
index 000000000000..4340819135c3
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type2__coll__graph.md5
@@ -0,0 +1 @@
+b5989391473842dda9191d0175c17177 \ No newline at end of file
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type2__coll__graph.png b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type2__coll__graph.png
new file mode 100644
index 000000000000..14c79b434fb7
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type2__coll__graph.png
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type3.html b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type3.html
new file mode 100644
index 000000000000..2edea39efede
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type3.html
@@ -0,0 +1,194 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalntlmlibrary: ntlm_type3 Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ntlm_type3 Struct Reference</h1><!-- doxytag: class="ntlm_type3" --><code>#include &lt;heimntlm.h&gt;</code>
+<p>
+<div class="dynheader">
+Collaboration diagram for ntlm_type3:</div>
+<div class="dynsection">
+<p><center><img src="structntlm__type3__coll__graph.png" border="0" usemap="#ntlm__type3__coll__map" alt="Collaboration graph"></center>
+<map name="ntlm__type3__coll__map">
+<area shape="rect" href="structntlm__buf.html" title="ntlm_buf" alt="" coords="12,5,87,32"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__type3.html#65347e68a22b66fc65c299f2cda2cf2d">flags</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__type3.html#c6e99229102b238c4aad9b93fabe95b7">username</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__type3.html#89d7688f04cb1362ffa5a81759d28716">targetname</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__type3.html#879e24340a26a3b8099d57767fbd0d30">lm</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__type3.html#7b496ad8682fbd4a5fe06c32da7621c7">ntlm</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__type3.html#f94bd38360086ec7f8aa4f18966d0a12">sessionkey</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__type3.html#ffbe974b5c93e47e2c8bf6f5a767c82d">ws</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structntlm__type3.html#f95c920ddc2d3cccfc82b3c54cd7bba2">os</a> [2]</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Struct for the NTLM type3 message info, the strings is assumed to be in UTF8. When filled in by the library it should be freed with <a class="el" href="group__ntlm__core.html#gc4e6d01e5247b8540d41ccbbf1031319">heim_ntlm_free_type3()</a>. <dl compact><dt><b>Examples: </b></dt><dd>
+
+<p>
+<a class="el" href="test__ntlm_8c-example.html#_a2">test_ntlm.c</a>.</dl><hr><h2>Field Documentation</h2>
+<a class="anchor" name="65347e68a22b66fc65c299f2cda2cf2d"></a><!-- doxytag: member="ntlm_type3::flags" ref="65347e68a22b66fc65c299f2cda2cf2d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint32_t <a class="el" href="structntlm__type3.html#65347e68a22b66fc65c299f2cda2cf2d">ntlm_type3::flags</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="test__ntlm_8c-example.html#a18">test_ntlm.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="c6e99229102b238c4aad9b93fabe95b7"></a><!-- doxytag: member="ntlm_type3::username" ref="c6e99229102b238c4aad9b93fabe95b7" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">char* <a class="el" href="structntlm__type3.html#c6e99229102b238c4aad9b93fabe95b7">ntlm_type3::username</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="test__ntlm_8c-example.html#a19">test_ntlm.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="89d7688f04cb1362ffa5a81759d28716"></a><!-- doxytag: member="ntlm_type3::targetname" ref="89d7688f04cb1362ffa5a81759d28716" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">char* <a class="el" href="structntlm__type3.html#89d7688f04cb1362ffa5a81759d28716">ntlm_type3::targetname</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="test__ntlm_8c-example.html#a20">test_ntlm.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="879e24340a26a3b8099d57767fbd0d30"></a><!-- doxytag: member="ntlm_type3::lm" ref="879e24340a26a3b8099d57767fbd0d30" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> <a class="el" href="structntlm__type3.html#879e24340a26a3b8099d57767fbd0d30">ntlm_type3::lm</a><code> [read]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="7b496ad8682fbd4a5fe06c32da7621c7"></a><!-- doxytag: member="ntlm_type3::ntlm" ref="7b496ad8682fbd4a5fe06c32da7621c7" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> <a class="el" href="structntlm__type3.html#7b496ad8682fbd4a5fe06c32da7621c7">ntlm_type3::ntlm</a><code> [read]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="test__ntlm_8c-example.html#a24">test_ntlm.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="f94bd38360086ec7f8aa4f18966d0a12"></a><!-- doxytag: member="ntlm_type3::sessionkey" ref="f94bd38360086ec7f8aa4f18966d0a12" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> <a class="el" href="structntlm__type3.html#f94bd38360086ec7f8aa4f18966d0a12">ntlm_type3::sessionkey</a><code> [read]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="ffbe974b5c93e47e2c8bf6f5a767c82d"></a><!-- doxytag: member="ntlm_type3::ws" ref="ffbe974b5c93e47e2c8bf6f5a767c82d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">char* <a class="el" href="structntlm__type3.html#ffbe974b5c93e47e2c8bf6f5a767c82d">ntlm_type3::ws</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Examples: </b></dt><dd>
+<a class="el" href="test__ntlm_8c-example.html#a21">test_ntlm.c</a>.</dl>
+</div>
+</div><p>
+<a class="anchor" name="f95c920ddc2d3cccfc82b3c54cd7bba2"></a><!-- doxytag: member="ntlm_type3::os" ref="f95c920ddc2d3cccfc82b3c54cd7bba2" args="[2]" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint32_t <a class="el" href="structntlm__type3.html#f95c920ddc2d3cccfc82b3c54cd7bba2">ntlm_type3::os</a>[2] </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>/Users/lha/src/heimdal/heimdal-release/heimdal-1.5.1/lib/ntlm/heimntlm.h</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:20 2011 for Heimdalntlmlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type3__coll__graph.map b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type3__coll__graph.map
new file mode 100644
index 000000000000..9e6cd72b444e
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type3__coll__graph.map
@@ -0,0 +1 @@
+<area shape="rect" href="$structntlm__buf.html" title="ntlm_buf" alt="" coords="12,5,87,32">
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type3__coll__graph.md5 b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type3__coll__graph.md5
new file mode 100644
index 000000000000..1c9e7239dc0c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type3__coll__graph.md5
@@ -0,0 +1 @@
+e51b24543271b5e19333877ec8086fcd \ No newline at end of file
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type3__coll__graph.png b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type3__coll__graph.png
new file mode 100644
index 000000000000..6553470777e8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/structntlm__type3__coll__graph.png
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/tab_b.gif b/crypto/heimdal/doc/doxyout/ntlm/html/tab_b.gif
new file mode 100644
index 000000000000..0d623483ffdf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/tab_b.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/tab_l.gif b/crypto/heimdal/doc/doxyout/ntlm/html/tab_l.gif
new file mode 100644
index 000000000000..9b1e6337c929
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/tab_l.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/tab_r.gif b/crypto/heimdal/doc/doxyout/ntlm/html/tab_r.gif
new file mode 100644
index 000000000000..ce9dd9f533cb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/tab_r.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/tabs.css b/crypto/heimdal/doc/doxyout/ntlm/html/tabs.css
new file mode 100644
index 000000000000..95f00a91da30
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/tabs.css
@@ -0,0 +1,102 @@
+/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
+
+DIV.tabs
+{
+ float : left;
+ width : 100%;
+ background : url("tab_b.gif") repeat-x bottom;
+ margin-bottom : 4px;
+}
+
+DIV.tabs UL
+{
+ margin : 0px;
+ padding-left : 10px;
+ list-style : none;
+}
+
+DIV.tabs LI, DIV.tabs FORM
+{
+ display : inline;
+ margin : 0px;
+ padding : 0px;
+}
+
+DIV.tabs FORM
+{
+ float : right;
+}
+
+DIV.tabs A
+{
+ float : left;
+ background : url("tab_r.gif") no-repeat right top;
+ border-bottom : 1px solid #84B0C7;
+ font-size : x-small;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+DIV.tabs A:hover
+{
+ background-position: 100% -150px;
+}
+
+DIV.tabs A:link, DIV.tabs A:visited,
+DIV.tabs A:active, DIV.tabs A:hover
+{
+ color: #1A419D;
+}
+
+DIV.tabs SPAN
+{
+ float : left;
+ display : block;
+ background : url("tab_l.gif") no-repeat left top;
+ padding : 5px 9px;
+ white-space : nowrap;
+}
+
+DIV.tabs INPUT
+{
+ float : right;
+ display : inline;
+ font-size : 1em;
+}
+
+DIV.tabs TD
+{
+ font-size : x-small;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+DIV.tabs SPAN {float : none;}
+/* End IE5-Mac hack */
+
+DIV.tabs A:hover SPAN
+{
+ background-position: 0% -150px;
+}
+
+DIV.tabs LI.current A
+{
+ background-position: 100% -150px;
+ border-width : 0px;
+}
+
+DIV.tabs LI.current SPAN
+{
+ background-position: 0% -150px;
+ padding-bottom : 6px;
+}
+
+DIV.navpath
+{
+ background : none;
+ border : none;
+ border-bottom : 1px solid #84B0C7;
+}
diff --git a/crypto/heimdal/doc/doxyout/ntlm/html/test__ntlm_8c-example.html b/crypto/heimdal/doc/doxyout/ntlm/html/test__ntlm_8c-example.html
new file mode 100644
index 000000000000..b90877966806
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/html/test__ntlm_8c-example.html
@@ -0,0 +1,408 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalntlmlibrary: test_ntlm.c</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="examples.html"><span>Examples</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>test_ntlm.c</h1>Example how to use the NTLM primitives.<p>
+<div class="fragment"><pre class="fragment"><span class="comment">/*</span>
+<span class="comment"> * Copyright (c) 2006 - 2007 Kungliga Tekniska Högskolan</span>
+<span class="comment"> * (Royal Institute of Technology, Stockholm, Sweden).</span>
+<span class="comment"> * All rights reserved.</span>
+<span class="comment"> *</span>
+<span class="comment"> * Redistribution and use in source and binary forms, with or without</span>
+<span class="comment"> * modification, are permitted provided that the following conditions</span>
+<span class="comment"> * are met:</span>
+<span class="comment"> *</span>
+<span class="comment"> * 1. Redistributions of source code must retain the above copyright</span>
+<span class="comment"> * notice, this list of conditions and the following disclaimer.</span>
+<span class="comment"> *</span>
+<span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span>
+<span class="comment"> * notice, this list of conditions and the following disclaimer in the</span>
+<span class="comment"> * documentation and/or other materials provided with the distribution.</span>
+<span class="comment"> *</span>
+<span class="comment"> * 3. Neither the name of KTH nor the names of its contributors may be</span>
+<span class="comment"> * used to endorse or promote products derived from this software without</span>
+<span class="comment"> * specific prior written permission.</span>
+<span class="comment"> *</span>
+<span class="comment"> * THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY</span>
+<span class="comment"> * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
+<span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR</span>
+<span class="comment"> * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE</span>
+<span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span>
+<span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span>
+<span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR</span>
+<span class="comment"> * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,</span>
+<span class="comment"> * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR</span>
+<span class="comment"> * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
+<span class="comment"> * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
+<span class="comment"> */</span>
+
+<span class="preprocessor">#include "config.h"</span>
+
+<span class="preprocessor">#include &lt;stdio.h&gt;</span>
+<span class="preprocessor">#include &lt;err.h&gt;</span>
+<span class="preprocessor">#include &lt;roken.h&gt;</span>
+<span class="preprocessor">#include &lt;getarg.h&gt;</span>
+
+<span class="preprocessor">#include &lt;krb5-types.h&gt;</span> <span class="comment">/* or &lt;inttypes.h&gt; */</span>
+<span class="preprocessor">#include &lt;heimntlm.h&gt;</span>
+
+<span class="keyword">static</span> <span class="keywordtype">int</span>
+test_parse(<span class="keywordtype">void</span>)
+{
+ <span class="keyword">const</span> <span class="keywordtype">char</span> *user = <span class="stringliteral">"foo"</span>,
+ *domain = <span class="stringliteral">"mydomain"</span>,
+ *password = <span class="stringliteral">"digestpassword"</span>,
+ *target = <span class="stringliteral">"DOMAIN"</span>;
+ <span class="keyword">struct </span><a name="_a0"></a><a class="code" href="structntlm__type1.html">ntlm_type1</a> type1;
+ <span class="keyword">struct </span><a name="_a1"></a><a class="code" href="structntlm__type2.html">ntlm_type2</a> type2;
+ <span class="keyword">struct </span><a name="_a2"></a><a class="code" href="structntlm__type3.html">ntlm_type3</a> type3;
+ <span class="keyword">struct </span><a name="_a3"></a><a class="code" href="structntlm__buf.html">ntlm_buf</a> data;
+ <span class="keywordtype">int</span> ret, flags;
+
+ memset(&amp;type1, 0, <span class="keyword">sizeof</span>(type1));
+
+ type1.<a name="a4"></a><a class="code" href="structntlm__type1.html#e2f4bbf968f7dde8f1cd2a71396a06fb">flags</a> = NTLM_NEG_UNICODE|NTLM_NEG_TARGET|NTLM_NEG_NTLM;
+ type1.<a name="a5"></a><a class="code" href="structntlm__type1.html#7d99f4da91742cd5bd94f1af1713c075">domain</a> = rk_UNCONST(domain);
+ type1.<a name="a6"></a><a class="code" href="structntlm__type1.html#63e2c0e1d31b93802670e677b89ae7e8">hostname</a> = NULL;
+ type1.<a name="a7"></a><a class="code" href="structntlm__type1.html#3f0a2c98b021a211c030b09b37d35fa3">os</a>[0] = 0;
+ type1.<a class="code" href="structntlm__type1.html#3f0a2c98b021a211c030b09b37d35fa3">os</a>[1] = 0;
+
+ ret = <a name="a8"></a><a class="code" href="group__ntlm__core.html#g0107727234287ac61a8801b0faff9dff">heim_ntlm_encode_type1</a>(&amp;type1, &amp;data);
+ <span class="keywordflow">if</span> (ret)
+ errx(1, <span class="stringliteral">"heim_ntlm_encode_type1"</span>);
+
+ memset(&amp;type1, 0, <span class="keyword">sizeof</span>(type1));
+
+ ret = heim_ntlm_decode_type1(&amp;data, &amp;type1);
+ free(data.<a name="a9"></a><a class="code" href="structntlm__buf.html#0cb7caf04f8f80326491b45edcdd2687">data</a>);
+ <span class="keywordflow">if</span> (ret)
+ errx(1, <span class="stringliteral">"heim_ntlm_encode_type1"</span>);
+
+ <a name="a10"></a><a class="code" href="group__ntlm__core.html#g76fa6caf3f539e24008e31613f5eb663">heim_ntlm_free_type1</a>(&amp;type1);
+
+ <span class="comment">/*</span>
+<span class="comment"> *</span>
+<span class="comment"> */</span>
+
+ memset(&amp;type2, 0, <span class="keyword">sizeof</span>(type2));
+
+ flags = NTLM_NEG_UNICODE | NTLM_NEG_NTLM | NTLM_TARGET_DOMAIN;
+ type2.<a name="a11"></a><a class="code" href="structntlm__type2.html#7f52e5d5e1e31e369d88d1cfb738a9ff">flags</a> = flags;
+
+ memset(type2.<a name="a12"></a><a class="code" href="structntlm__type2.html#12c5c7a960c60bbd54dbf49527856bab">challenge</a>, 0x7f, <span class="keyword">sizeof</span>(type2.<a class="code" href="structntlm__type2.html#12c5c7a960c60bbd54dbf49527856bab">challenge</a>));
+ type2.<a name="a13"></a><a class="code" href="structntlm__type2.html#7ed7a5246d77d4358e6fa459c6263a10">targetname</a> = rk_UNCONST(target);
+ type2.<a name="a14"></a><a class="code" href="structntlm__type2.html#d468bf3c5f042a893f3d118a9cb50a34">targetinfo</a>.<a class="code" href="structntlm__buf.html#0cb7caf04f8f80326491b45edcdd2687">data</a> = NULL;
+ type2.<a class="code" href="structntlm__type2.html#d468bf3c5f042a893f3d118a9cb50a34">targetinfo</a>.<a name="a15"></a><a class="code" href="structntlm__buf.html#1ca1856fd5b4ac0197320d7723c73bd0">length</a> = 0;
+
+ ret = <a name="a16"></a><a class="code" href="group__ntlm__core.html#g2860c6f6d497255eb433adc8cacc49dd">heim_ntlm_encode_type2</a>(&amp;type2, &amp;data);
+ <span class="keywordflow">if</span> (ret)
+ errx(1, <span class="stringliteral">"heim_ntlm_encode_type2"</span>);
+
+ memset(&amp;type2, 0, <span class="keyword">sizeof</span>(type2));
+
+ ret = heim_ntlm_decode_type2(&amp;data, &amp;type2);
+ free(data.<a class="code" href="structntlm__buf.html#0cb7caf04f8f80326491b45edcdd2687">data</a>);
+ <span class="keywordflow">if</span> (ret)
+ errx(1, <span class="stringliteral">"heim_ntlm_decode_type2"</span>);
+
+ <a name="a17"></a><a class="code" href="group__ntlm__core.html#g8fde84c86f1c7c9f730f7fb4acedcb43">heim_ntlm_free_type2</a>(&amp;type2);
+
+ <span class="comment">/*</span>
+<span class="comment"> *</span>
+<span class="comment"> */</span>
+
+ memset(&amp;type3, 0, <span class="keyword">sizeof</span>(type3));
+
+ type3.<a name="a18"></a><a class="code" href="structntlm__type3.html#65347e68a22b66fc65c299f2cda2cf2d">flags</a> = flags;
+ type3.<a name="a19"></a><a class="code" href="structntlm__type3.html#c6e99229102b238c4aad9b93fabe95b7">username</a> = rk_UNCONST(user);
+ type3.<a name="a20"></a><a class="code" href="structntlm__type3.html#89d7688f04cb1362ffa5a81759d28716">targetname</a> = rk_UNCONST(target);
+ type3.<a name="a21"></a><a class="code" href="structntlm__type3.html#ffbe974b5c93e47e2c8bf6f5a767c82d">ws</a> = rk_UNCONST(<span class="stringliteral">"workstation"</span>);
+
+ {
+ <span class="keyword">struct </span><a class="code" href="structntlm__buf.html">ntlm_buf</a> key;
+ <a name="a22"></a><a class="code" href="group__ntlm__core.html#g254ee0a4d5a2594833e36697ad575d7e">heim_ntlm_nt_key</a>(password, &amp;key);
+
+ <a name="a23"></a><a class="code" href="group__ntlm__core.html#ge3b634802ef94233a175291abd2ea14d">heim_ntlm_calculate_ntlm1</a>(key.<a class="code" href="structntlm__buf.html#0cb7caf04f8f80326491b45edcdd2687">data</a>, key.<a class="code" href="structntlm__buf.html#1ca1856fd5b4ac0197320d7723c73bd0">length</a>,
+ type2.<a class="code" href="structntlm__type2.html#12c5c7a960c60bbd54dbf49527856bab">challenge</a>,
+ &amp;type3.<a name="a24"></a><a class="code" href="structntlm__type3.html#7b496ad8682fbd4a5fe06c32da7621c7">ntlm</a>);
+ free(key.<a class="code" href="structntlm__buf.html#0cb7caf04f8f80326491b45edcdd2687">data</a>);
+ }
+
+ ret = <a name="a25"></a><a class="code" href="group__ntlm__core.html#g9cf026be6e602c22d62aa9e47e85c7c2">heim_ntlm_encode_type3</a>(&amp;type3, &amp;data);
+ <span class="keywordflow">if</span> (ret)
+ errx(1, <span class="stringliteral">"heim_ntlm_encode_type3"</span>);
+
+ free(type3.<a class="code" href="structntlm__type3.html#7b496ad8682fbd4a5fe06c32da7621c7">ntlm</a>.<a class="code" href="structntlm__buf.html#0cb7caf04f8f80326491b45edcdd2687">data</a>);
+
+ memset(&amp;type3, 0, <span class="keyword">sizeof</span>(type3));
+
+ ret = heim_ntlm_decode_type3(&amp;data, 1, &amp;type3);
+ free(data.<a class="code" href="structntlm__buf.html#0cb7caf04f8f80326491b45edcdd2687">data</a>);
+ <span class="keywordflow">if</span> (ret)
+ errx(1, <span class="stringliteral">"heim_ntlm_decode_type3"</span>);
+
+ <span class="keywordflow">if</span> (strcmp(<span class="stringliteral">"workstation"</span>, type3.<a class="code" href="structntlm__type3.html#ffbe974b5c93e47e2c8bf6f5a767c82d">ws</a>) != 0)
+ errx(1, <span class="stringliteral">"type3 ws wrong"</span>);
+
+ <span class="keywordflow">if</span> (strcmp(target, type3.<a class="code" href="structntlm__type3.html#89d7688f04cb1362ffa5a81759d28716">targetname</a>) != 0)
+ errx(1, <span class="stringliteral">"type3 targetname wrong"</span>);
+
+ <span class="keywordflow">if</span> (strcmp(user, type3.<a class="code" href="structntlm__type3.html#c6e99229102b238c4aad9b93fabe95b7">username</a>) != 0)
+ errx(1, <span class="stringliteral">"type3 username wrong"</span>);
+
+
+ <a name="a26"></a><a class="code" href="group__ntlm__core.html#gc4e6d01e5247b8540d41ccbbf1031319">heim_ntlm_free_type3</a>(&amp;type3);
+
+ <span class="comment">/*</span>
+<span class="comment"> * NTLMv2</span>
+<span class="comment"> */</span>
+
+ memset(&amp;type2, 0, <span class="keyword">sizeof</span>(type2));
+
+ flags = NTLM_NEG_UNICODE | NTLM_NEG_NTLM | NTLM_TARGET_DOMAIN;
+ type2.<a class="code" href="structntlm__type2.html#7f52e5d5e1e31e369d88d1cfb738a9ff">flags</a> = flags;
+
+ memset(type2.<a class="code" href="structntlm__type2.html#12c5c7a960c60bbd54dbf49527856bab">challenge</a>, 0x7f, <span class="keyword">sizeof</span>(type2.<a class="code" href="structntlm__type2.html#12c5c7a960c60bbd54dbf49527856bab">challenge</a>));
+ type2.<a class="code" href="structntlm__type2.html#7ed7a5246d77d4358e6fa459c6263a10">targetname</a> = rk_UNCONST(target);
+ type2.<a class="code" href="structntlm__type2.html#d468bf3c5f042a893f3d118a9cb50a34">targetinfo</a>.<a class="code" href="structntlm__buf.html#0cb7caf04f8f80326491b45edcdd2687">data</a> = <span class="stringliteral">"\x00\x00"</span>;
+ type2.<a class="code" href="structntlm__type2.html#d468bf3c5f042a893f3d118a9cb50a34">targetinfo</a>.<a class="code" href="structntlm__buf.html#1ca1856fd5b4ac0197320d7723c73bd0">length</a> = 2;
+
+ ret = <a class="code" href="group__ntlm__core.html#g2860c6f6d497255eb433adc8cacc49dd">heim_ntlm_encode_type2</a>(&amp;type2, &amp;data);
+ <span class="keywordflow">if</span> (ret)
+ errx(1, <span class="stringliteral">"heim_ntlm_encode_type2"</span>);
+
+ memset(&amp;type2, 0, <span class="keyword">sizeof</span>(type2));
+
+ ret = heim_ntlm_decode_type2(&amp;data, &amp;type2);
+ free(data.<a class="code" href="structntlm__buf.html#0cb7caf04f8f80326491b45edcdd2687">data</a>);
+ <span class="keywordflow">if</span> (ret)
+ errx(1, <span class="stringliteral">"heim_ntlm_decode_type2"</span>);
+
+ <a class="code" href="group__ntlm__core.html#g8fde84c86f1c7c9f730f7fb4acedcb43">heim_ntlm_free_type2</a>(&amp;type2);
+
+ <span class="keywordflow">return</span> 0;
+}
+
+<span class="keyword">static</span> <span class="keywordtype">int</span>
+test_keys(<span class="keywordtype">void</span>)
+{
+ <span class="keyword">const</span> <span class="keywordtype">char</span>
+ *username = <span class="stringliteral">"test"</span>,
+ *password = <span class="stringliteral">"test1234"</span>,
+ *target = <span class="stringliteral">"TESTNT"</span>;
+ <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>
+ serverchallenge[8] = <span class="stringliteral">"\x67\x7f\x1c\x55\x7a\x5e\xe9\x6c"</span>;
+ <span class="keyword">struct </span><a class="code" href="structntlm__buf.html">ntlm_buf</a> infotarget, infotarget2, answer, key;
+ <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> ntlmv2[16], ntlmv2_1[16];
+ <span class="keywordtype">int</span> ret;
+
+ infotarget.length = 70;
+ infotarget.data =
+ <span class="stringliteral">"\x02\x00\x0c\x00\x54\x00\x45\x00\x53\x00\x54\x00\x4e\x00\x54\x00"</span>
+ <span class="stringliteral">"\x01\x00\x0c\x00\x4d\x00\x45\x00\x4d\x00\x42\x00\x45\x00\x52\x00"</span>
+ <span class="stringliteral">"\x03\x00\x1e\x00\x6d\x00\x65\x00\x6d\x00\x62\x00\x65\x00\x72\x00"</span>
+ <span class="stringliteral">"\x2e\x00\x74\x00\x65\x00\x73\x00\x74\x00\x2e\x00\x63\x00\x6f"</span>
+ <span class="stringliteral">"\x00\x6d\x00"</span>
+ <span class="stringliteral">"\x00\x00\x00\x00"</span>;
+
+ answer.length = 0;
+ answer.data = NULL;
+
+ <a class="code" href="group__ntlm__core.html#g254ee0a4d5a2594833e36697ad575d7e">heim_ntlm_nt_key</a>(password, &amp;key);
+
+ ret = <a name="a27"></a><a class="code" href="group__ntlm__core.html#ga8f07fb71a0d5f095cde3fb9fb40d10c">heim_ntlm_calculate_ntlm2</a>(key.data,
+ key.length,
+ username,
+ target,
+ serverchallenge,
+ &amp;infotarget,
+ ntlmv2,
+ &amp;answer);
+ <span class="keywordflow">if</span> (ret)
+ errx(1, <span class="stringliteral">"heim_ntlm_calculate_ntlm2"</span>);
+
+ ret = <a name="a28"></a><a class="code" href="group__ntlm__core.html#g3b3d6a5187cab6bfe656afa7a8273ca6">heim_ntlm_verify_ntlm2</a>(key.data,
+ key.length,
+ username,
+ target,
+ 0,
+ serverchallenge,
+ &amp;answer,
+ &amp;infotarget2,
+ ntlmv2_1);
+ <span class="keywordflow">if</span> (ret)
+ errx(1, <span class="stringliteral">"heim_ntlm_verify_ntlm2"</span>);
+
+ <span class="keywordflow">if</span> (memcmp(ntlmv2, ntlmv2_1, <span class="keyword">sizeof</span>(ntlmv2)) != 0)
+ errx(1, <span class="stringliteral">"ntlm master key not same"</span>);
+
+ <span class="keywordflow">if</span> (infotarget.length &gt; infotarget2.length)
+ errx(1, <span class="stringliteral">"infotarget length"</span>);
+
+ <span class="keywordflow">if</span> (memcmp(infotarget.data, infotarget2.data, infotarget.length) != 0)
+ errx(1, <span class="stringliteral">"infotarget not the same"</span>);
+
+ free(key.data);
+ free(answer.data);
+ free(infotarget2.data);
+
+ <span class="keywordflow">return</span> 0;
+}
+
+<span class="keyword">static</span> <span class="keywordtype">int</span>
+test_ntlm2_session_resp(<span class="keywordtype">void</span>)
+{
+ <span class="keywordtype">int</span> ret;
+ <span class="keyword">struct </span><a class="code" href="structntlm__buf.html">ntlm_buf</a> lm, ntlm;
+
+ <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lm_resp[24] =
+ <span class="stringliteral">"\xff\xff\xff\x00\x11\x22\x33\x44"</span>
+ <span class="stringliteral">"\x00\x00\x00\x00\x00\x00\x00\x00"</span>
+ <span class="stringliteral">"\x00\x00\x00\x00\x00\x00\x00\x00"</span>;
+ <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> ntlm2_sess_resp[24] =
+ <span class="stringliteral">"\x10\xd5\x50\x83\x2d\x12\xb2\xcc"</span>
+ <span class="stringliteral">"\xb7\x9d\x5a\xd1\xf4\xee\xd3\xdf"</span>
+ <span class="stringliteral">"\x82\xac\xa4\xc3\x68\x1d\xd4\x55"</span>;
+
+ <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> client_nonce[8] =
+ <span class="stringliteral">"\xff\xff\xff\x00\x11\x22\x33\x44"</span>;
+ <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> server_challenge[8] =
+ <span class="stringliteral">"\x01\x23\x45\x67\x89\xab\xcd\xef"</span>;
+
+ <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> ntlm_hash[16] =
+ <span class="stringliteral">"\xcd\x06\xca\x7c\x7e\x10\xc9\x9b"</span>
+ <span class="stringliteral">"\x1d\x33\xb7\x48\x5a\x2e\xd8\x08"</span>;
+
+ ret = heim_ntlm_calculate_ntlm2_sess(client_nonce,
+ server_challenge,
+ ntlm_hash,
+ &amp;lm,
+ &amp;ntlm);
+ <span class="keywordflow">if</span> (ret)
+ errx(1, <span class="stringliteral">"heim_ntlm_calculate_ntlm2_sess_resp"</span>);
+
+ <span class="keywordflow">if</span> (lm.length != 24 || memcmp(lm.data, lm_resp, 24) != 0)
+ errx(1, <span class="stringliteral">"lm_resp wrong"</span>);
+ <span class="keywordflow">if</span> (ntlm.length != 24 || memcmp(ntlm.data, ntlm2_sess_resp, 24) != 0)
+ errx(1, <span class="stringliteral">"ntlm2_sess_resp wrong"</span>);
+
+ free(lm.data);
+ free(ntlm.data);
+
+
+ <span class="keywordflow">return</span> 0;
+}
+
+<span class="keyword">static</span> <span class="keywordtype">int</span>
+test_targetinfo(<span class="keywordtype">void</span>)
+{
+ <span class="keyword">struct </span>ntlm_targetinfo ti;
+ <span class="keyword">struct </span><a class="code" href="structntlm__buf.html">ntlm_buf</a> buf;
+ <span class="keyword">const</span> <span class="keywordtype">char</span> *dnsservername = <span class="stringliteral">"dnsservername"</span>;
+ <span class="keywordtype">int</span> ret;
+
+ memset(&amp;ti, 0, <span class="keyword">sizeof</span>(ti));
+
+ ti.dnsservername = rk_UNCONST(dnsservername);
+ ti.avflags = 1;
+ ret = <a name="a29"></a><a class="code" href="group__ntlm__core.html#g2881747fad2ac2979a28d3bd050b0fa8">heim_ntlm_encode_targetinfo</a>(&amp;ti, 1, &amp;buf);
+ <span class="keywordflow">if</span> (ret)
+ <span class="keywordflow">return</span> ret;
+
+ memset(&amp;ti, 0, <span class="keyword">sizeof</span>(ti));
+
+ ret = <a name="a30"></a><a class="code" href="group__ntlm__core.html#gf1d4de2faec8b1c1070a55fd2e6e630f">heim_ntlm_decode_targetinfo</a>(&amp;buf, 1, &amp;ti);
+ <span class="keywordflow">if</span> (ret)
+ <span class="keywordflow">return</span> ret;
+
+ <span class="keywordflow">if</span> (ti.dnsservername == NULL ||
+ strcmp(ti.dnsservername, dnsservername) != 0)
+ errx(1, <span class="stringliteral">"ti.dnshostname != %s"</span>, dnsservername);
+ <span class="keywordflow">if</span> (ti.avflags != 1)
+ errx(1, <span class="stringliteral">"ti.avflags != 1"</span>);
+
+ <a name="a31"></a><a class="code" href="group__ntlm__core.html#g704ec8c5dba05ef57186d242ff165565">heim_ntlm_free_targetinfo</a>(&amp;ti);
+
+ <span class="keywordflow">return</span> 0;
+}
+
+<span class="keyword">static</span> <span class="keywordtype">int</span> verbose_flag = 0;
+<span class="keyword">static</span> <span class="keywordtype">int</span> version_flag = 0;
+<span class="keyword">static</span> <span class="keywordtype">int</span> help_flag = 0;
+
+<span class="keyword">static</span> <span class="keyword">struct </span>getargs args[] = {
+ {<span class="stringliteral">"verbose"</span>, 0, arg_flag, &amp;verbose_flag, <span class="stringliteral">"verbose printing"</span>, NULL },
+ {<span class="stringliteral">"version"</span>, 0, arg_flag, &amp;version_flag, <span class="stringliteral">"print version"</span>, NULL },
+ {<span class="stringliteral">"help"</span>, 0, arg_flag, &amp;help_flag, NULL, NULL }
+};
+
+<span class="keyword">static</span> <span class="keywordtype">void</span>
+usage (<span class="keywordtype">int</span> ret)
+{
+ arg_printusage (args, <span class="keyword">sizeof</span>(args)/<span class="keyword">sizeof</span>(*args),
+ NULL, <span class="stringliteral">""</span>);
+ exit (ret);
+}
+
+<span class="keywordtype">int</span>
+main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv)
+{
+ <span class="keywordtype">int</span> ret = 0, optind = 0;
+
+ setprogname(argv[0]);
+
+ <span class="keywordflow">if</span>(getarg(args, <span class="keyword">sizeof</span>(args) / <span class="keyword">sizeof</span>(args[0]), argc, argv, &amp;optind))
+ usage(1);
+
+ <span class="keywordflow">if</span> (help_flag)
+ usage (0);
+
+ <span class="keywordflow">if</span>(version_flag){
+ print_version(NULL);
+ exit(0);
+ }
+
+ argc -= optind;
+ argv += optind;
+
+ <span class="keywordflow">if</span> (verbose_flag)
+ printf(<span class="stringliteral">"test_parse\n"</span>);
+
+ ret += test_parse();
+ <span class="keywordflow">if</span> (verbose_flag)
+ printf(<span class="stringliteral">"test_keys\n"</span>);
+
+ ret += test_keys();
+ <span class="keywordflow">if</span> (verbose_flag)
+ printf(<span class="stringliteral">"test_ntlm2_session_resp\n"</span>);
+ ret += test_ntlm2_session_resp();
+
+ <span class="keywordflow">if</span> (verbose_flag)
+ printf(<span class="stringliteral">"test_targetinfo\n"</span>);
+ ret += test_targetinfo();
+
+ <span class="keywordflow">return</span> ret;
+}
+</pre></div> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:19 2011 for Heimdalntlmlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/challenge.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/challenge.3
new file mode 100644
index 000000000000..a7659b3d1feb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/challenge.3
@@ -0,0 +1 @@
+.so man3/ntlm_type2.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/context.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/context.3
new file mode 100644
index 000000000000..a7659b3d1feb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/context.3
@@ -0,0 +1 @@
+.so man3/ntlm_type2.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/data.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/data.3
new file mode 100644
index 000000000000..340108f66d7b
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/data.3
@@ -0,0 +1 @@
+.so man3/ntlm_buf.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/domain.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/domain.3
new file mode 100644
index 000000000000..d1020b43b40d
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/domain.3
@@ -0,0 +1 @@
+.so man3/ntlm_type1.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/flags.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/flags.3
new file mode 100644
index 000000000000..d1020b43b40d
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/flags.3
@@ -0,0 +1 @@
+.so man3/ntlm_type1.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_build_ntlm1_master.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_build_ntlm1_master.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_build_ntlm1_master.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_build_ntlm2_master.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_build_ntlm2_master.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_build_ntlm2_master.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_calculate_lm2.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_calculate_lm2.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_calculate_lm2.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_calculate_ntlm1.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_calculate_ntlm1.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_calculate_ntlm1.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_calculate_ntlm2.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_calculate_ntlm2.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_calculate_ntlm2.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_decode_targetinfo.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_decode_targetinfo.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_decode_targetinfo.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_encode_targetinfo.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_encode_targetinfo.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_encode_targetinfo.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_encode_type1.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_encode_type1.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_encode_type1.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_encode_type2.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_encode_type2.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_encode_type2.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_encode_type3.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_encode_type3.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_encode_type3.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_buf.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_buf.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_buf.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_targetinfo.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_targetinfo.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_targetinfo.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_type1.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_type1.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_type1.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_type2.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_type2.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_type2.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_type3.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_type3.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_free_type3.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_keyex_unwrap.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_keyex_unwrap.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_keyex_unwrap.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_nt_key.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_nt_key.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_nt_key.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_ntlmv2_key.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_ntlmv2_key.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_ntlmv2_key.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_verify_ntlm2.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_verify_ntlm2.3
new file mode 100644
index 000000000000..c44afffe65ef
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/heim_ntlm_verify_ntlm2.3
@@ -0,0 +1 @@
+.so man3/ntlm_core.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/hostname.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/hostname.3
new file mode 100644
index 000000000000..d1020b43b40d
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/hostname.3
@@ -0,0 +1 @@
+.so man3/ntlm_type1.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/length.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/length.3
new file mode 100644
index 000000000000..340108f66d7b
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/length.3
@@ -0,0 +1 @@
+.so man3/ntlm_buf.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/lm.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/lm.3
new file mode 100644
index 000000000000..de392aede5fd
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/lm.3
@@ -0,0 +1 @@
+.so man3/ntlm_type3.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm.3
new file mode 100644
index 000000000000..de392aede5fd
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm.3
@@ -0,0 +1 @@
+.so man3/ntlm_type3.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_buf.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_buf.3
new file mode 100644
index 000000000000..52fdc03f8792
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_buf.3
@@ -0,0 +1,48 @@
+.TH "ntlm_buf" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalntlmlibrary" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+ntlm_buf \-
+.SH SYNOPSIS
+.br
+.PP
+\fC#include <heimntlm.h>\fP
+.PP
+.SS "Data Fields"
+
+.in +1c
+.ti -1c
+.RI "size_t \fBlength\fP"
+.br
+.ti -1c
+.RI "void * \fBdata\fP"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+Buffer for storing data in the NTLM library. When filled in by the library it should be freed with \fBheim_ntlm_free_buf()\fP.
+.PP
+\fBExamples: \fP
+.in +1c
+.PP
+\fBtest_ntlm.c\fP.
+.SH "Field Documentation"
+.PP
+.SS "size_t \fBntlm_buf::length\fP"
+.PP
+length buffer data
+.PP
+\fBExamples: \fP
+.in +1c
+\fBtest_ntlm.c\fP.
+.SS "void* \fBntlm_buf::data\fP"
+.PP
+pointer to the data itself
+.PP
+\fBExamples: \fP
+.in +1c
+\fBtest_ntlm.c\fP.
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Heimdalntlmlibrary from the source code.
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_core.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_core.3
new file mode 100644
index 000000000000..50599af98e80
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_core.3
@@ -0,0 +1,421 @@
+.TH "Heimdal NTLM library" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalntlmlibrary" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal NTLM library \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBheim_ntlm_free_buf\fP (struct \fBntlm_buf\fP *p)"
+.br
+.ti -1c
+.RI "void \fBheim_ntlm_free_targetinfo\fP (struct ntlm_targetinfo *ti)"
+.br
+.ti -1c
+.RI "int \fBheim_ntlm_encode_targetinfo\fP (const struct ntlm_targetinfo *ti, int ucs2, struct \fBntlm_buf\fP *data)"
+.br
+.ti -1c
+.RI "int \fBheim_ntlm_decode_targetinfo\fP (const struct \fBntlm_buf\fP *data, int ucs2, struct ntlm_targetinfo *ti)"
+.br
+.ti -1c
+.RI "void \fBheim_ntlm_free_type1\fP (struct \fBntlm_type1\fP *data)"
+.br
+.ti -1c
+.RI "int \fBheim_ntlm_encode_type1\fP (const struct \fBntlm_type1\fP *type1, struct \fBntlm_buf\fP *data)"
+.br
+.ti -1c
+.RI "void \fBheim_ntlm_free_type2\fP (struct \fBntlm_type2\fP *data)"
+.br
+.ti -1c
+.RI "int \fBheim_ntlm_encode_type2\fP (const struct \fBntlm_type2\fP *type2, struct \fBntlm_buf\fP *data)"
+.br
+.ti -1c
+.RI "void \fBheim_ntlm_free_type3\fP (struct \fBntlm_type3\fP *data)"
+.br
+.ti -1c
+.RI "int \fBheim_ntlm_encode_type3\fP (const struct \fBntlm_type3\fP *type3, struct \fBntlm_buf\fP *data)"
+.br
+.ti -1c
+.RI "int \fBheim_ntlm_nt_key\fP (const char *password, struct \fBntlm_buf\fP *key)"
+.br
+.ti -1c
+.RI "int \fBheim_ntlm_calculate_ntlm1\fP (void *key, size_t len, unsigned char challenge[8], struct \fBntlm_buf\fP *answer)"
+.br
+.ti -1c
+.RI "int \fBheim_ntlm_build_ntlm1_master\fP (void *key, size_t len, struct \fBntlm_buf\fP *session, struct \fBntlm_buf\fP *master)"
+.br
+.ti -1c
+.RI "int \fBheim_ntlm_build_ntlm2_master\fP (void *key, size_t len, struct \fBntlm_buf\fP *blob, struct \fBntlm_buf\fP *session, struct \fBntlm_buf\fP *master)"
+.br
+.ti -1c
+.RI "int \fBheim_ntlm_keyex_unwrap\fP (struct \fBntlm_buf\fP *baseKey, struct \fBntlm_buf\fP *encryptedSession, struct \fBntlm_buf\fP *session)"
+.br
+.ti -1c
+.RI "int \fBheim_ntlm_ntlmv2_key\fP (const void *key, size_t len, const char *username, const char *target, unsigned char ntlmv2[16])"
+.br
+.ti -1c
+.RI "int \fBheim_ntlm_calculate_lm2\fP (const void *key, size_t len, const char *username, const char *target, const unsigned char serverchallenge[8], unsigned char ntlmv2[16], struct \fBntlm_buf\fP *answer)"
+.br
+.ti -1c
+.RI "int \fBheim_ntlm_calculate_ntlm2\fP (const void *key, size_t len, const char *username, const char *target, const unsigned char serverchallenge[8], const struct \fBntlm_buf\fP *infotarget, unsigned char ntlmv2[16], struct \fBntlm_buf\fP *answer)"
+.br
+.ti -1c
+.RI "int \fBheim_ntlm_verify_ntlm2\fP (const void *key, size_t len, const char *username, const char *target, time_t now, const unsigned char serverchallenge[8], const struct \fBntlm_buf\fP *answer, struct \fBntlm_buf\fP *infotarget, unsigned char ntlmv2[16])"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+The NTLM core functions implement the string2key generation function, message encode and decode function, and the hash function functions.
+.SH "Function Documentation"
+.PP
+.SS "int heim_ntlm_build_ntlm1_master (void * key, size_t len, struct \fBntlm_buf\fP * session, struct \fBntlm_buf\fP * master)"
+.PP
+Generates an NTLMv1 session random with assosited session master key.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIkey\fP the ntlm v1 key
+.br
+\fIlen\fP length of key
+.br
+\fIsession\fP generated session nonce, should be freed with \fBheim_ntlm_free_buf()\fP.
+.br
+\fImaster\fP calculated session master key, should be freed with \fBheim_ntlm_free_buf()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+In case of success 0 is return, an errors, a errno in what went wrong.
+.RE
+.PP
+
+.SS "int heim_ntlm_build_ntlm2_master (void * key, size_t len, struct \fBntlm_buf\fP * blob, struct \fBntlm_buf\fP * session, struct \fBntlm_buf\fP * master)"
+.PP
+Generates an NTLMv2 session random with associated session master key.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIkey\fP the NTLMv2 key
+.br
+\fIlen\fP length of key
+.br
+\fIblob\fP the NTLMv2 'blob'
+.br
+\fIsession\fP generated session nonce, should be freed with \fBheim_ntlm_free_buf()\fP.
+.br
+\fImaster\fP calculated session master key, should be freed with \fBheim_ntlm_free_buf()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+In case of success 0 is return, an errors, a errno in what went wrong.
+.RE
+.PP
+
+.SS "int heim_ntlm_calculate_lm2 (const void * key, size_t len, const char * username, const char * target, const unsigned char serverchallenge[8], unsigned char ntlmv2[16], struct \fBntlm_buf\fP * answer)"
+.PP
+Calculate LMv2 response
+.PP
+\fBParameters:\fP
+.RS 4
+\fIkey\fP the ntlm key
+.br
+\fIlen\fP length of key
+.br
+\fIusername\fP name of the user, as sent in the message, assumed to be in UTF8.
+.br
+\fItarget\fP the name of the target, assumed to be in UTF8.
+.br
+\fIserverchallenge\fP challenge as sent by the server in the type2 message.
+.br
+\fIntlmv2\fP calculated session key
+.br
+\fIanswer\fP ntlm response answer, should be freed with \fBheim_ntlm_free_buf()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+In case of success 0 is return, an errors, a errno in what went wrong.
+.RE
+.PP
+
+.SS "int heim_ntlm_calculate_ntlm1 (void * key, size_t len, unsigned char challenge[8], struct \fBntlm_buf\fP * answer)"
+.PP
+Calculate NTLMv1 response hash
+.PP
+\fBParameters:\fP
+.RS 4
+\fIkey\fP the ntlm v1 key
+.br
+\fIlen\fP length of key
+.br
+\fIchallenge\fP sent by the server
+.br
+\fIanswer\fP calculated answer, should be freed with \fBheim_ntlm_free_buf()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+In case of success 0 is return, an errors, a errno in what went wrong.
+.RE
+.PP
+
+.SS "int heim_ntlm_calculate_ntlm2 (const void * key, size_t len, const char * username, const char * target, const unsigned char serverchallenge[8], const struct \fBntlm_buf\fP * infotarget, unsigned char ntlmv2[16], struct \fBntlm_buf\fP * answer)"
+.PP
+Calculate NTLMv2 response
+.PP
+\fBParameters:\fP
+.RS 4
+\fIkey\fP the ntlm key
+.br
+\fIlen\fP length of key
+.br
+\fIusername\fP name of the user, as sent in the message, assumed to be in UTF8.
+.br
+\fItarget\fP the name of the target, assumed to be in UTF8.
+.br
+\fIserverchallenge\fP challenge as sent by the server in the type2 message.
+.br
+\fIinfotarget\fP infotarget as sent by the server in the type2 message.
+.br
+\fIntlmv2\fP calculated session key
+.br
+\fIanswer\fP ntlm response answer, should be freed with \fBheim_ntlm_free_buf()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+In case of success 0 is return, an errors, a errno in what went wrong.
+.RE
+.PP
+
+.SS "int heim_ntlm_decode_targetinfo (const struct \fBntlm_buf\fP * data, int ucs2, struct ntlm_targetinfo * ti)"
+.PP
+Decodes an NTLM targetinfo message
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdata\fP input data buffer with the encode NTLM targetinfo message
+.br
+\fIucs2\fP if the strings should be encoded with ucs2 (selected by flag in message).
+.br
+\fIti\fP the decoded target info, should be freed with \fBheim_ntlm_free_targetinfo()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+In case of success 0 is return, an errors, a errno in what went wrong.
+.RE
+.PP
+
+.SS "int heim_ntlm_encode_targetinfo (const struct ntlm_targetinfo * ti, int ucs2, struct \fBntlm_buf\fP * data)"
+.PP
+Encodes a ntlm_targetinfo message.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIti\fP the ntlm_targetinfo message to encode.
+.br
+\fIucs2\fP ignored
+.br
+\fIdata\fP is the return buffer with the encoded message, should be freed with \fBheim_ntlm_free_buf()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+In case of success 0 is return, an errors, a errno in what went wrong.
+.RE
+.PP
+
+.SS "int heim_ntlm_encode_type1 (const struct \fBntlm_type1\fP * type1, struct \fBntlm_buf\fP * data)"
+.PP
+Encodes an \fBntlm_type1\fP message.
+.PP
+\fBParameters:\fP
+.RS 4
+\fItype1\fP the \fBntlm_type1\fP message to encode.
+.br
+\fIdata\fP is the return buffer with the encoded message, should be freed with \fBheim_ntlm_free_buf()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+In case of success 0 is return, an errors, a errno in what went wrong.
+.RE
+.PP
+
+.SS "int heim_ntlm_encode_type2 (const struct \fBntlm_type2\fP * type2, struct \fBntlm_buf\fP * data)"
+.PP
+Encodes an \fBntlm_type2\fP message.
+.PP
+\fBParameters:\fP
+.RS 4
+\fItype2\fP the \fBntlm_type2\fP message to encode.
+.br
+\fIdata\fP is the return buffer with the encoded message, should be freed with \fBheim_ntlm_free_buf()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+In case of success 0 is return, an errors, a errno in what went wrong.
+.RE
+.PP
+
+.SS "int heim_ntlm_encode_type3 (const struct \fBntlm_type3\fP * type3, struct \fBntlm_buf\fP * data)"
+.PP
+Encodes an \fBntlm_type3\fP message.
+.PP
+\fBParameters:\fP
+.RS 4
+\fItype3\fP the \fBntlm_type3\fP message to encode.
+.br
+\fIdata\fP is the return buffer with the encoded message, should be freed with \fBheim_ntlm_free_buf()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+In case of success 0 is return, an errors, a errno in what went wrong.
+.RE
+.PP
+
+.SS "void heim_ntlm_free_buf (struct \fBntlm_buf\fP * p)"
+.PP
+heim_ntlm_free_buf frees the ntlm buffer
+.PP
+\fBParameters:\fP
+.RS 4
+\fIp\fP buffer to be freed
+.RE
+.PP
+
+.SS "void heim_ntlm_free_targetinfo (struct ntlm_targetinfo * ti)"
+.PP
+Frees the ntlm_targetinfo message
+.PP
+\fBParameters:\fP
+.RS 4
+\fIti\fP targetinfo to be freed
+.RE
+.PP
+
+.SS "void heim_ntlm_free_type1 (struct \fBntlm_type1\fP * data)"
+.PP
+Frees the \fBntlm_type1\fP message
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdata\fP message to be freed
+.RE
+.PP
+
+.SS "void heim_ntlm_free_type2 (struct \fBntlm_type2\fP * data)"
+.PP
+Frees the \fBntlm_type2\fP message
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdata\fP message to be freed
+.RE
+.PP
+
+.SS "void heim_ntlm_free_type3 (struct \fBntlm_type3\fP * data)"
+.PP
+Frees the \fBntlm_type3\fP message
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdata\fP message to be freed
+.RE
+.PP
+
+.SS "int heim_ntlm_keyex_unwrap (struct \fBntlm_buf\fP * baseKey, struct \fBntlm_buf\fP * encryptedSession, struct \fBntlm_buf\fP * session)"
+.PP
+Given a key and encrypted session, unwrap the session key
+.PP
+\fBParameters:\fP
+.RS 4
+\fIbaseKey\fP the sessionBaseKey
+.br
+\fIencryptedSession\fP encrypted session, type3.session field.
+.br
+\fIsession\fP generated session nonce, should be freed with \fBheim_ntlm_free_buf()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+In case of success 0 is return, an errors, a errno in what went wrong.
+.RE
+.PP
+
+.SS "int heim_ntlm_nt_key (const char * password, struct \fBntlm_buf\fP * key)"
+.PP
+Calculate the NTLM key, the password is assumed to be in UTF8.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpassword\fP password to calcute the key for.
+.br
+\fIkey\fP calcuted key, should be freed with \fBheim_ntlm_free_buf()\fP.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+In case of success 0 is return, an errors, a errno in what went wrong.
+.RE
+.PP
+
+.SS "int heim_ntlm_ntlmv2_key (const void * key, size_t len, const char * username, const char * target, unsigned char ntlmv2[16])"
+.PP
+Generates an NTLMv2 session key.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIkey\fP the ntlm key
+.br
+\fIlen\fP length of key
+.br
+\fIusername\fP name of the user, as sent in the message, assumed to be in UTF8.
+.br
+\fItarget\fP the name of the target, assumed to be in UTF8.
+.br
+\fIntlmv2\fP the ntlmv2 session key
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+0 on success, or an error code on failure.
+.RE
+.PP
+
+.SS "int heim_ntlm_verify_ntlm2 (const void * key, size_t len, const char * username, const char * target, time_t now, const unsigned char serverchallenge[8], const struct \fBntlm_buf\fP * answer, struct \fBntlm_buf\fP * infotarget, unsigned char ntlmv2[16])"
+.PP
+Verify NTLMv2 response.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIkey\fP the ntlm key
+.br
+\fIlen\fP length of key
+.br
+\fIusername\fP name of the user, as sent in the message, assumed to be in UTF8.
+.br
+\fItarget\fP the name of the target, assumed to be in UTF8.
+.br
+\fInow\fP the time now (0 if the library should pick it up itself)
+.br
+\fIserverchallenge\fP challenge as sent by the server in the type2 message.
+.br
+\fIanswer\fP ntlm response answer, should be freed with \fBheim_ntlm_free_buf()\fP.
+.br
+\fIinfotarget\fP infotarget as sent by the server in the type2 message.
+.br
+\fIntlmv2\fP calculated session key
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+In case of success 0 is return, an errors, a errno in what went wrong.
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_type1.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_type1.3
new file mode 100644
index 000000000000..3b4f2afa1162
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_type1.3
@@ -0,0 +1,68 @@
+.TH "ntlm_type1" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalntlmlibrary" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+ntlm_type1 \-
+.SH SYNOPSIS
+.br
+.PP
+\fC#include <heimntlm.h>\fP
+.PP
+.SS "Data Fields"
+
+.in +1c
+.ti -1c
+.RI "uint32_t \fBflags\fP"
+.br
+.ti -1c
+.RI "char * \fBdomain\fP"
+.br
+.ti -1c
+.RI "char * \fBhostname\fP"
+.br
+.ti -1c
+.RI "uint32_t \fBos\fP [2]"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+Struct for the NTLM type1 message info, the strings is assumed to be in UTF8. When filled in by the library it should be freed with \fBheim_ntlm_free_type1()\fP.
+.PP
+\fBExamples: \fP
+.in +1c
+.PP
+\fBtest_ntlm.c\fP.
+.SH "Field Documentation"
+.PP
+.SS "uint32_t \fBntlm_type1::flags\fP"
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBtest_ntlm.c\fP.
+.SS "char* \fBntlm_type1::domain\fP"
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBtest_ntlm.c\fP.
+.SS "char* \fBntlm_type1::hostname\fP"
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBtest_ntlm.c\fP.
+.SS "uint32_t \fBntlm_type1::os\fP[2]"
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBtest_ntlm.c\fP.
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Heimdalntlmlibrary from the source code.
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_type2.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_type2.3
new file mode 100644
index 000000000000..e46eeb37e6d1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_type2.3
@@ -0,0 +1,80 @@
+.TH "ntlm_type2" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalntlmlibrary" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+ntlm_type2 \-
+.SH SYNOPSIS
+.br
+.PP
+\fC#include <heimntlm.h>\fP
+.PP
+.SS "Data Fields"
+
+.in +1c
+.ti -1c
+.RI "uint32_t \fBflags\fP"
+.br
+.ti -1c
+.RI "char * \fBtargetname\fP"
+.br
+.ti -1c
+.RI "struct \fBntlm_buf\fP \fBtargetinfo\fP"
+.br
+.ti -1c
+.RI "unsigned char \fBchallenge\fP [8]"
+.br
+.ti -1c
+.RI "uint32_t \fBcontext\fP [2]"
+.br
+.ti -1c
+.RI "uint32_t \fBos\fP [2]"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+Struct for the NTLM type2 message info, the strings is assumed to be in UTF8. When filled in by the library it should be freed with \fBheim_ntlm_free_type2()\fP.
+.PP
+\fBExamples: \fP
+.in +1c
+.PP
+\fBtest_ntlm.c\fP.
+.SH "Field Documentation"
+.PP
+.SS "uint32_t \fBntlm_type2::flags\fP"
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBtest_ntlm.c\fP.
+.SS "char* \fBntlm_type2::targetname\fP"
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBtest_ntlm.c\fP.
+.SS "struct \fBntlm_buf\fP \fBntlm_type2::targetinfo\fP\fC [read]\fP"
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBtest_ntlm.c\fP.
+.SS "unsigned char \fBntlm_type2::challenge\fP[8]"
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBtest_ntlm.c\fP.
+.SS "uint32_t \fBntlm_type2::context\fP[2]"
+.PP
+
+.SS "uint32_t \fBntlm_type2::os\fP[2]"
+.PP
+
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Heimdalntlmlibrary from the source code.
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_type3.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_type3.3
new file mode 100644
index 000000000000..6f20c58b7a9c
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/ntlm_type3.3
@@ -0,0 +1,96 @@
+.TH "ntlm_type3" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalntlmlibrary" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+ntlm_type3 \-
+.SH SYNOPSIS
+.br
+.PP
+\fC#include <heimntlm.h>\fP
+.PP
+.SS "Data Fields"
+
+.in +1c
+.ti -1c
+.RI "uint32_t \fBflags\fP"
+.br
+.ti -1c
+.RI "char * \fBusername\fP"
+.br
+.ti -1c
+.RI "char * \fBtargetname\fP"
+.br
+.ti -1c
+.RI "struct \fBntlm_buf\fP \fBlm\fP"
+.br
+.ti -1c
+.RI "struct \fBntlm_buf\fP \fBntlm\fP"
+.br
+.ti -1c
+.RI "struct \fBntlm_buf\fP \fBsessionkey\fP"
+.br
+.ti -1c
+.RI "char * \fBws\fP"
+.br
+.ti -1c
+.RI "uint32_t \fBos\fP [2]"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+Struct for the NTLM type3 message info, the strings is assumed to be in UTF8. When filled in by the library it should be freed with \fBheim_ntlm_free_type3()\fP.
+.PP
+\fBExamples: \fP
+.in +1c
+.PP
+\fBtest_ntlm.c\fP.
+.SH "Field Documentation"
+.PP
+.SS "uint32_t \fBntlm_type3::flags\fP"
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBtest_ntlm.c\fP.
+.SS "char* \fBntlm_type3::username\fP"
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBtest_ntlm.c\fP.
+.SS "char* \fBntlm_type3::targetname\fP"
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBtest_ntlm.c\fP.
+.SS "struct \fBntlm_buf\fP \fBntlm_type3::lm\fP\fC [read]\fP"
+.PP
+
+.SS "struct \fBntlm_buf\fP \fBntlm_type3::ntlm\fP\fC [read]\fP"
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBtest_ntlm.c\fP.
+.SS "struct \fBntlm_buf\fP \fBntlm_type3::sessionkey\fP\fC [read]\fP"
+.PP
+
+.SS "char* \fBntlm_type3::ws\fP"
+.PP
+
+.PP
+\fBExamples: \fP
+.in +1c
+\fBtest_ntlm.c\fP.
+.SS "uint32_t \fBntlm_type3::os\fP[2]"
+.PP
+
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Heimdalntlmlibrary from the source code.
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/os.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/os.3
new file mode 100644
index 000000000000..d1020b43b40d
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/os.3
@@ -0,0 +1 @@
+.so man3/ntlm_type1.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/sessionkey.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/sessionkey.3
new file mode 100644
index 000000000000..de392aede5fd
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/sessionkey.3
@@ -0,0 +1 @@
+.so man3/ntlm_type3.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/targetinfo.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/targetinfo.3
new file mode 100644
index 000000000000..a7659b3d1feb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/targetinfo.3
@@ -0,0 +1 @@
+.so man3/ntlm_type2.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/targetname.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/targetname.3
new file mode 100644
index 000000000000..a7659b3d1feb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/targetname.3
@@ -0,0 +1 @@
+.so man3/ntlm_type2.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/username.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/username.3
new file mode 100644
index 000000000000..de392aede5fd
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/username.3
@@ -0,0 +1 @@
+.so man3/ntlm_type3.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/man/man3/ws.3 b/crypto/heimdal/doc/doxyout/ntlm/man/man3/ws.3
new file mode 100644
index 000000000000..de392aede5fd
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/man/man3/ws.3
@@ -0,0 +1 @@
+.so man3/ntlm_type3.3
diff --git a/crypto/heimdal/doc/doxyout/ntlm/manpages b/crypto/heimdal/doc/doxyout/ntlm/manpages
new file mode 100644
index 000000000000..d79b6dd9a43a
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/ntlm/manpages
@@ -0,0 +1,39 @@
+ntlm/man/man3/challenge.3
+ntlm/man/man3/context.3
+ntlm/man/man3/data.3
+ntlm/man/man3/domain.3
+ntlm/man/man3/flags.3
+ntlm/man/man3/heim_ntlm_build_ntlm1_master.3
+ntlm/man/man3/heim_ntlm_build_ntlm2_master.3
+ntlm/man/man3/heim_ntlm_calculate_lm2.3
+ntlm/man/man3/heim_ntlm_calculate_ntlm1.3
+ntlm/man/man3/heim_ntlm_calculate_ntlm2.3
+ntlm/man/man3/heim_ntlm_decode_targetinfo.3
+ntlm/man/man3/heim_ntlm_encode_targetinfo.3
+ntlm/man/man3/heim_ntlm_encode_type1.3
+ntlm/man/man3/heim_ntlm_encode_type2.3
+ntlm/man/man3/heim_ntlm_encode_type3.3
+ntlm/man/man3/heim_ntlm_free_buf.3
+ntlm/man/man3/heim_ntlm_free_targetinfo.3
+ntlm/man/man3/heim_ntlm_free_type1.3
+ntlm/man/man3/heim_ntlm_free_type2.3
+ntlm/man/man3/heim_ntlm_free_type3.3
+ntlm/man/man3/heim_ntlm_keyex_unwrap.3
+ntlm/man/man3/heim_ntlm_nt_key.3
+ntlm/man/man3/heim_ntlm_ntlmv2_key.3
+ntlm/man/man3/heim_ntlm_verify_ntlm2.3
+ntlm/man/man3/hostname.3
+ntlm/man/man3/length.3
+ntlm/man/man3/lm.3
+ntlm/man/man3/ntlm.3
+ntlm/man/man3/ntlm_buf.3
+ntlm/man/man3/ntlm_core.3
+ntlm/man/man3/ntlm_type1.3
+ntlm/man/man3/ntlm_type2.3
+ntlm/man/man3/ntlm_type3.3
+ntlm/man/man3/os.3
+ntlm/man/man3/sessionkey.3
+ntlm/man/man3/targetinfo.3
+ntlm/man/man3/targetname.3
+ntlm/man/man3/username.3
+ntlm/man/man3/ws.3
diff --git a/crypto/heimdal/doc/doxyout/wind/html/doxygen.css b/crypto/heimdal/doc/doxyout/wind/html/doxygen.css
new file mode 100644
index 000000000000..22c484301dd1
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/html/doxygen.css
@@ -0,0 +1,473 @@
+BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
+ font-family: Geneva, Arial, Helvetica, sans-serif;
+}
+BODY,TD {
+ font-size: 90%;
+}
+H1 {
+ text-align: center;
+ font-size: 160%;
+}
+H2 {
+ font-size: 120%;
+}
+H3 {
+ font-size: 100%;
+}
+CAPTION {
+ font-weight: bold
+}
+DIV.qindex {
+ width: 100%;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navpath {
+ width: 100%;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navtab {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+TD.navtab {
+ font-size: 70%;
+}
+A.qindex {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D;
+}
+A.qindex:visited {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D
+}
+A.qindex:hover {
+ text-decoration: none;
+ background-color: #ddddff;
+}
+A.qindexHL {
+ text-decoration: none;
+ font-weight: bold;
+ background-color: #6666cc;
+ color: #ffffff;
+ border: 1px double #9295C2;
+}
+A.qindexHL:hover {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff;
+}
+A.qindexHL:visited {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff
+}
+A.el {
+ text-decoration: none;
+ font-weight: bold
+}
+A.elRef {
+ font-weight: bold
+}
+A.code:link {
+ text-decoration: none;
+ font-weight: normal;
+ color: #0000FF
+}
+A.code:visited {
+ text-decoration: none;
+ font-weight: normal;
+ color: #0000FF
+}
+A.codeRef:link {
+ font-weight: normal;
+ color: #0000FF
+}
+A.codeRef:visited {
+ font-weight: normal;
+ color: #0000FF
+}
+A:hover {
+ text-decoration: none;
+ background-color: #f2f2ff
+}
+DL.el {
+ margin-left: -1cm
+}
+.fragment {
+ font-family: monospace, fixed;
+ font-size: 95%;
+}
+PRE.fragment {
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ margin-left: 2px;
+ margin-right: 8px;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+}
+DIV.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px
+}
+
+DIV.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ margin-bottom: 6px;
+ font-weight: bold;
+}
+DIV.groupText {
+ margin-left: 16px;
+ font-style: italic;
+ font-size: 90%
+}
+BODY {
+ background: white;
+ color: black;
+ margin-right: 20px;
+ margin-left: 20px;
+}
+TD.indexkey {
+ background-color: #e8eef2;
+ font-weight: bold;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TD.indexvalue {
+ background-color: #e8eef2;
+ font-style: italic;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TR.memlist {
+ background-color: #f0f0f0;
+}
+P.formulaDsp {
+ text-align: center;
+}
+IMG.formulaDsp {
+}
+IMG.formulaInl {
+ vertical-align: middle;
+}
+SPAN.keyword { color: #008000 }
+SPAN.keywordtype { color: #604020 }
+SPAN.keywordflow { color: #e08000 }
+SPAN.comment { color: #800000 }
+SPAN.preprocessor { color: #806020 }
+SPAN.stringliteral { color: #002080 }
+SPAN.charliteral { color: #008080 }
+SPAN.vhdldigit { color: #ff00ff }
+SPAN.vhdlchar { color: #000000 }
+SPAN.vhdlkeyword { color: #700070 }
+SPAN.vhdllogic { color: #ff0000 }
+
+.mdescLeft {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.mdescRight {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.memItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplParams {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ color: #606060;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+FORM.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+INPUT.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+TD.tiny {
+ font-size: 75%;
+}
+a {
+ color: #1A41A8;
+}
+a:visited {
+ color: #2A3798;
+}
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #84b0c7;
+}
+TH.dirtab {
+ background: #e8eef2;
+ font-weight: bold;
+}
+HR {
+ height: 1px;
+ border: none;
+ border-top: 1px solid black;
+}
+
+/* Style for detailed member documentation */
+.memtemplate {
+ font-size: 80%;
+ color: #606060;
+ font-weight: normal;
+ margin-left: 3px;
+}
+.memnav {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+.memitem {
+ padding: 4px;
+ background-color: #eef3f5;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #dedeee;
+ -moz-border-radius: 8px 8px 8px 8px;
+}
+.memname {
+ white-space: nowrap;
+ font-weight: bold;
+}
+.memdoc{
+ padding-left: 10px;
+}
+.memproto {
+ background-color: #d5e1e8;
+ width: 100%;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #84b0c7;
+ font-weight: bold;
+ -moz-border-radius: 8px 8px 8px 8px;
+}
+.paramkey {
+ text-align: right;
+}
+.paramtype {
+ white-space: nowrap;
+}
+.paramname {
+ color: #602020;
+ font-style: italic;
+ white-space: nowrap;
+}
+/* End Styling for detailed member documentation */
+
+/* for the tree view */
+.ftvtree {
+ font-family: sans-serif;
+ margin:0.5em;
+}
+/* these are for tree view when used as main index */
+.directory {
+ font-size: 9pt;
+ font-weight: bold;
+}
+.directory h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+
+/* The following two styles can be used to replace the root node title */
+/* with an image of your choice. Simply uncomment the next two styles, */
+/* specify the name of your image and be sure to set 'height' to the */
+/* proper pixel height of your image. */
+
+/* .directory h3.swap { */
+/* height: 61px; */
+/* background-repeat: no-repeat; */
+/* background-image: url("yourimage.gif"); */
+/* } */
+/* .directory h3.swap span { */
+/* display: none; */
+/* } */
+
+.directory > h3 {
+ margin-top: 0;
+}
+.directory p {
+ margin: 0px;
+ white-space: nowrap;
+}
+.directory div {
+ display: none;
+ margin: 0px;
+}
+.directory img {
+ vertical-align: -30%;
+}
+/* these are for tree view when not used as main index */
+.directory-alt {
+ font-size: 100%;
+ font-weight: bold;
+}
+.directory-alt h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+.directory-alt > h3 {
+ margin-top: 0;
+}
+.directory-alt p {
+ margin: 0px;
+ white-space: nowrap;
+}
+.directory-alt div {
+ display: none;
+ margin: 0px;
+}
+.directory-alt img {
+ vertical-align: -30%;
+}
+
diff --git a/crypto/heimdal/doc/doxyout/wind/html/doxygen.png b/crypto/heimdal/doc/doxyout/wind/html/doxygen.png
new file mode 100644
index 000000000000..f0a274bbaffd
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/html/doxygen.png
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/wind/html/graph_legend.dot b/crypto/heimdal/doc/doxyout/wind/html/graph_legend.dot
new file mode 100644
index 000000000000..4df0f1aa4864
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/html/graph_legend.dot
@@ -0,0 +1,22 @@
+digraph G
+{
+ edge [fontname="FreeSans",fontsize=10,labelfontname="FreeSans",labelfontsize=10];
+ node [fontname="FreeSans",fontsize=10,shape=record];
+ Node9 [shape="box",label="Inherited",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",fillcolor="grey75",style="filled" fontcolor="black"];
+ Node10 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node10 [shape="box",label="PublicBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPublicBase.html"];
+ Node11 -> Node10 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node11 [shape="box",label="Truncated",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="red",URL="$classTruncated.html"];
+ Node13 -> Node9 [dir=back,color="darkgreen",fontsize=10,style="solid",fontname="FreeSans"];
+ Node13 [shape="box",label="ProtectedBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classProtectedBase.html"];
+ Node14 -> Node9 [dir=back,color="firebrick4",fontsize=10,style="solid",fontname="FreeSans"];
+ Node14 [shape="box",label="PrivateBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPrivateBase.html"];
+ Node15 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node15 [shape="box",label="Undocumented",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="grey75"];
+ Node16 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node16 [shape="box",label="Templ< int >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+ Node17 -> Node16 [dir=back,color="orange",fontsize=10,style="dashed",label="< int >",fontname="FreeSans"];
+ Node17 [shape="box",label="Templ< T >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+ Node18 -> Node9 [dir=back,color="darkorchid3",fontsize=10,style="dashed",label="m_usedClass",fontname="FreeSans"];
+ Node18 [shape="box",label="Used",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classUsed.html"];
+}
diff --git a/crypto/heimdal/doc/doxyout/wind/html/graph_legend.html b/crypto/heimdal/doc/doxyout/wind/html/graph_legend.html
new file mode 100644
index 000000000000..78e1121b257d
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/html/graph_legend.html
@@ -0,0 +1,87 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalwindlibrary: Graph Legend</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Graph Legend</h1>This page explains how to interpret the graphs that are generated by doxygen.<p>
+Consider the following example: <div class="fragment"><pre class="fragment"><span class="comment">/*! Invisible class because of truncation */</span>
+<span class="keyword">class </span>Invisible { };
+<span class="comment"></span>
+<span class="comment">/*! Truncated class, inheritance relation is hidden */</span>
+<span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };
+
+<span class="comment">/* Class not documented with doxygen comments */</span>
+<span class="keyword">class </span>Undocumented { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using public inheritance */</span>
+<span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };
+<span class="comment"></span>
+<span class="comment">/*! A template class */</span>
+<span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>Templ { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using protected inheritance */</span>
+<span class="keyword">class </span>ProtectedBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using private inheritance */</span>
+<span class="keyword">class </span>PrivateBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is used by the Inherited class */</span>
+<span class="keyword">class </span>Used { };
+<span class="comment"></span>
+<span class="comment">/*! Super class that inherits a number of other classes */</span>
+<span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,
+ <span class="keyword">protected</span> ProtectedBase,
+ <span class="keyword">private</span> PrivateBase,
+ <span class="keyword">public</span> Undocumented,
+ <span class="keyword">public</span> Templ&lt;int&gt;
+{
+ <span class="keyword">private</span>:
+ Used *m_usedClass;
+};
+</pre></div> If the <code>MAX_DOT_GRAPH_HEIGHT</code> tag in the configuration file is set to 240 this will result in the following graph:<p>
+<center><div align="center">
+<img src="graph_legend.png" alt="graph_legend.png">
+</div>
+</center> <p>
+The boxes in the above graph have the following meaning: <ul>
+<li>
+A filled gray box represents the struct or class for which the graph is generated. </li>
+<li>
+A box with a black border denotes a documented struct or class. </li>
+<li>
+A box with a grey border denotes an undocumented struct or class. </li>
+<li>
+A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
+</ul>
+The arrows have the following meaning: <ul>
+<li>
+A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
+<li>
+A dark green arrow is used for protected inheritance. </li>
+<li>
+A dark red arrow is used for private inheritance. </li>
+<li>
+A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
+<li>
+A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:20 2011 for Heimdalwindlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/wind/html/graph_legend.png b/crypto/heimdal/doc/doxyout/wind/html/graph_legend.png
new file mode 100644
index 000000000000..9b96937bfd5f
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/html/graph_legend.png
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/wind/html/group__wind.html b/crypto/heimdal/doc/doxyout/wind/html/group__wind.html
new file mode 100644
index 000000000000..5bd5752d0666
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/html/group__wind.html
@@ -0,0 +1,680 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalwindlibrary: Heimdal wind library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal wind library</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#gcd005d89adeb764c77c97f1c4d2e1d82">wind_punycode_label_toascii</a> (const uint32_t *in, size_t in_len, char *out, size_t *out_len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#gdc7260aad792625f5e4d59f5d645bfaa">wind_stringprep</a> (const uint32_t *in, size_t in_len, uint32_t *out, size_t *out_len, wind_profile_flags flags)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#ga4d80a988cf7d0cc8c15c1652516ec72">wind_profile</a> (const char *name, wind_profile_flags *flags)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#g31f62f5e3ca885bd8afce415c9e83c4c">wind_utf8ucs4</a> (const char *in, uint32_t *out, size_t *out_len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#gbeccc02ed5f1f90684b10a6f892e89d3">wind_utf8ucs4_length</a> (const char *in, size_t *out_len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#g502199d8981249373095da43bb5d256d">wind_ucs4utf8</a> (const uint32_t *in, size_t in_len, char *out, size_t *out_len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#g44d8951aee3e12f1812ef193bad738ef">wind_ucs4utf8_length</a> (const uint32_t *in, size_t in_len, size_t *out_len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#g15a41f929d8b1be8528e3ecbdf8264f0">wind_ucs2read</a> (const void *ptr, size_t len, unsigned int *flags, uint16_t *out, size_t *out_len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#g20668242d9ab39011edbcae295ee9348">wind_ucs2write</a> (const uint16_t *in, size_t in_len, unsigned int *flags, void *ptr, size_t *out_len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#g736f8b06adc2b70bd32ce2ed2397b5f5">wind_utf8ucs2</a> (const char *in, uint16_t *out, size_t *out_len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#g4d94c57c6fc46b7af71d37d507bcdbf8">wind_utf8ucs2_length</a> (const char *in, size_t *out_len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#g2e43e4a99781db965162b9a9c6333307">wind_ucs2utf8</a> (const uint16_t *in, size_t in_len, char *out, size_t *out_len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wind.html#g53b8caa6437d7f903d819c76450be3c1">wind_ucs2utf8_length</a> (const uint16_t *in, size_t in_len, size_t *out_len)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="ga4d80a988cf7d0cc8c15c1652516ec72"></a><!-- doxytag: member="stringprep.c::wind_profile" ref="ga4d80a988cf7d0cc8c15c1652516ec72" args="(const char *name, wind_profile_flags *flags)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int wind_profile </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">wind_profile_flags *&nbsp;</td>
+ <td class="paramname"> <em>flags</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Try to find the profile given a name.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>name of the profile. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>the resulting profile.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gcd005d89adeb764c77c97f1c4d2e1d82"></a><!-- doxytag: member="punycode.c::wind_punycode_label_toascii" ref="gcd005d89adeb764c77c97f1c4d2e1d82" args="(const uint32_t *in, size_t in_len, char *out, size_t *out_len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int wind_punycode_label_toascii </td>
+ <td>(</td>
+ <td class="paramtype">const uint32_t *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>in_len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t *&nbsp;</td>
+ <td class="paramname"> <em>out_len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Convert an UCS4 string to a puny-coded DNS label string suitable when combined with delimiters and other labels for DNS lookup.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>an UCS4 string to convert </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>in_len</em>&nbsp;</td><td>the length of in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>the resulting puny-coded string. The string is not NUL terminatied. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out_len</em>&nbsp;</td><td>before processing out_len should be the length of the out variable, after processing it will be the length of the out string.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gdc7260aad792625f5e4d59f5d645bfaa"></a><!-- doxytag: member="stringprep.c::wind_stringprep" ref="gdc7260aad792625f5e4d59f5d645bfaa" args="(const uint32_t *in, size_t in_len, uint32_t *out, size_t *out_len, wind_profile_flags flags)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int wind_stringprep </td>
+ <td>(</td>
+ <td class="paramtype">const uint32_t *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>in_len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint32_t *&nbsp;</td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t *&nbsp;</td>
+ <td class="paramname"> <em>out_len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">wind_profile_flags&nbsp;</td>
+ <td class="paramname"> <em>flags</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Process a input UCS4 string according a string-prep profile.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>input UCS4 string to process </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>in_len</em>&nbsp;</td><td>length of the input string </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>output UCS4 string </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out_len</em>&nbsp;</td><td>length of the output string. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>stringprep profile.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g15a41f929d8b1be8528e3ecbdf8264f0"></a><!-- doxytag: member="utf8.c::wind_ucs2read" ref="g15a41f929d8b1be8528e3ecbdf8264f0" args="(const void *ptr, size_t len, unsigned int *flags, uint16_t *out, size_t *out_len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int wind_ucs2read </td>
+ <td>(</td>
+ <td class="paramtype">const void *&nbsp;</td>
+ <td class="paramname"> <em>ptr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int *&nbsp;</td>
+ <td class="paramname"> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint16_t *&nbsp;</td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t *&nbsp;</td>
+ <td class="paramname"> <em>out_len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Read in an UCS2 from a buffer.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ptr</em>&nbsp;</td><td>The input buffer to read from. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>the length of the input buffer. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>Flags to control the behavior of the function. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>the output UCS2, the array must be at least out/2 long. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out_len</em>&nbsp;</td><td>the output length</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns 0 on success, an wind error code otherwise. </dd></dl>
+
+<p>
+if len is zero, flags are unchanged<p>
+if len is odd, WIND_ERR_LENGTH_NOT_MOD2 is returned<p>
+If the flags WIND_RW_BOM is set, check for BOM. If not BOM is found, check is LE/BE flag is already and use that otherwise fail with WIND_ERR_NO_BOM. When done, clear WIND_RW_BOM and the LE/BE flag and set the resulting LE/BE flag.
+</div>
+</div><p>
+<a class="anchor" name="g2e43e4a99781db965162b9a9c6333307"></a><!-- doxytag: member="utf8.c::wind_ucs2utf8" ref="g2e43e4a99781db965162b9a9c6333307" args="(const uint16_t *in, size_t in_len, char *out, size_t *out_len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int wind_ucs2utf8 </td>
+ <td>(</td>
+ <td class="paramtype">const uint16_t *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>in_len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t *&nbsp;</td>
+ <td class="paramname"> <em>out_len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Convert an UCS2 string to a UTF-8 string.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>an UCS2 string to convert. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>in_len</em>&nbsp;</td><td>the length of the in UCS2 string. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>the resulting UTF-8 strint, must be at least <a class="el" href="group__wind.html#g53b8caa6437d7f903d819c76450be3c1">wind_ucs2utf8_length()</a> long. If out is NULL, the function will calculate the needed space for the out variable (just like <a class="el" href="group__wind.html#g53b8caa6437d7f903d819c76450be3c1">wind_ucs2utf8_length()</a>). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out_len</em>&nbsp;</td><td>before processing out_len should be the length of the out variable, after processing it will be the length of the out string.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g53b8caa6437d7f903d819c76450be3c1"></a><!-- doxytag: member="utf8.c::wind_ucs2utf8_length" ref="g53b8caa6437d7f903d819c76450be3c1" args="(const uint16_t *in, size_t in_len, size_t *out_len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int wind_ucs2utf8_length </td>
+ <td>(</td>
+ <td class="paramtype">const uint16_t *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>in_len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t *&nbsp;</td>
+ <td class="paramname"> <em>out_len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Calculate the length of from converting a UCS2 string to an UTF-8 string.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>an UCS2 string to convert. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>in_len</em>&nbsp;</td><td>an UCS2 string length to convert. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out_len</em>&nbsp;</td><td>the length of the resulting UTF-8 string.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g20668242d9ab39011edbcae295ee9348"></a><!-- doxytag: member="utf8.c::wind_ucs2write" ref="g20668242d9ab39011edbcae295ee9348" args="(const uint16_t *in, size_t in_len, unsigned int *flags, void *ptr, size_t *out_len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int wind_ucs2write </td>
+ <td>(</td>
+ <td class="paramtype">const uint16_t *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>in_len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int *&nbsp;</td>
+ <td class="paramname"> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>ptr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t *&nbsp;</td>
+ <td class="paramname"> <em>out_len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Write an UCS2 string to a buffer.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>The input UCS2 string. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>in_len</em>&nbsp;</td><td>the length of the input buffer. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>Flags to control the behavior of the function. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ptr</em>&nbsp;</td><td>The input buffer to write to, the array must be at least (in + 1) * 2 bytes long. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out_len</em>&nbsp;</td><td>the output length</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns 0 on success, an wind error code otherwise. </dd></dl>
+
+<p>
+If in buffer is not of length be mod 2, WIND_ERR_LENGTH_NOT_MOD2 is returned<p>
+On zero input length, flags are preserved<p>
+If flags have WIND_RW_BOM set, the byte order mark is written first to the output data<p>
+If the output wont fit into out_len, WIND_ERR_OVERRUN is returned
+</div>
+</div><p>
+<a class="anchor" name="g502199d8981249373095da43bb5d256d"></a><!-- doxytag: member="utf8.c::wind_ucs4utf8" ref="g502199d8981249373095da43bb5d256d" args="(const uint32_t *in, size_t in_len, char *out, size_t *out_len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int wind_ucs4utf8 </td>
+ <td>(</td>
+ <td class="paramtype">const uint32_t *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>in_len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t *&nbsp;</td>
+ <td class="paramname"> <em>out_len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Convert an UCS4 string to a UTF-8 string.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>an UCS4 string to convert. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>in_len</em>&nbsp;</td><td>the length input array.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>the resulting UTF-8 strint, must be at least <a class="el" href="group__wind.html#g44d8951aee3e12f1812ef193bad738ef">wind_ucs4utf8_length()</a> + 1 long (the extra char for the NUL). If out is NULL, the function will calculate the needed space for the out variable (just like <a class="el" href="group__wind.html#g44d8951aee3e12f1812ef193bad738ef">wind_ucs4utf8_length()</a>).</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out_len</em>&nbsp;</td><td>before processing out_len should be the length of the out variable, after processing it will be the length of the out string.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g44d8951aee3e12f1812ef193bad738ef"></a><!-- doxytag: member="utf8.c::wind_ucs4utf8_length" ref="g44d8951aee3e12f1812ef193bad738ef" args="(const uint32_t *in, size_t in_len, size_t *out_len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int wind_ucs4utf8_length </td>
+ <td>(</td>
+ <td class="paramtype">const uint32_t *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>in_len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t *&nbsp;</td>
+ <td class="paramname"> <em>out_len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Calculate the length of from converting a UCS4 string to an UTF-8 string.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>an UCS4 string to convert. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>in_len</em>&nbsp;</td><td>the length of UCS4 string to convert. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out_len</em>&nbsp;</td><td>the length of the resulting UTF-8 string.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g736f8b06adc2b70bd32ce2ed2397b5f5"></a><!-- doxytag: member="utf8.c::wind_utf8ucs2" ref="g736f8b06adc2b70bd32ce2ed2397b5f5" args="(const char *in, uint16_t *out, size_t *out_len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int wind_utf8ucs2 </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint16_t *&nbsp;</td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t *&nbsp;</td>
+ <td class="paramname"> <em>out_len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Convert an UTF-8 string to an UCS2 string.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>an UTF-8 string to convert. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>the resulting UCS2 strint, must be at least <a class="el" href="group__wind.html#g4d94c57c6fc46b7af71d37d507bcdbf8">wind_utf8ucs2_length()</a> long. If out is NULL, the function will calculate the needed space for the out variable (just like <a class="el" href="group__wind.html#g4d94c57c6fc46b7af71d37d507bcdbf8">wind_utf8ucs2_length()</a>). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out_len</em>&nbsp;</td><td>before processing out_len should be the length of the out variable, after processing it will be the length of the out string.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g4d94c57c6fc46b7af71d37d507bcdbf8"></a><!-- doxytag: member="utf8.c::wind_utf8ucs2_length" ref="g4d94c57c6fc46b7af71d37d507bcdbf8" args="(const char *in, size_t *out_len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int wind_utf8ucs2_length </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t *&nbsp;</td>
+ <td class="paramname"> <em>out_len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Calculate the length of from converting a UTF-8 string to a UCS2 string.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>an UTF-8 string to convert. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out_len</em>&nbsp;</td><td>the length of the resulting UCS4 string.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g31f62f5e3ca885bd8afce415c9e83c4c"></a><!-- doxytag: member="utf8.c::wind_utf8ucs4" ref="g31f62f5e3ca885bd8afce415c9e83c4c" args="(const char *in, uint32_t *out, size_t *out_len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int wind_utf8ucs4 </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint32_t *&nbsp;</td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t *&nbsp;</td>
+ <td class="paramname"> <em>out_len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Convert an UTF-8 string to an UCS4 string.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>an UTF-8 string to convert. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>the resulting UCS4 strint, must be at least <a class="el" href="group__wind.html#gbeccc02ed5f1f90684b10a6f892e89d3">wind_utf8ucs4_length()</a> long. If out is NULL, the function will calculate the needed space for the out variable (just like <a class="el" href="group__wind.html#gbeccc02ed5f1f90684b10a6f892e89d3">wind_utf8ucs4_length()</a>). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out_len</em>&nbsp;</td><td>before processing out_len should be the length of the out variable, after processing it will be the length of the out string.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gbeccc02ed5f1f90684b10a6f892e89d3"></a><!-- doxytag: member="utf8.c::wind_utf8ucs4_length" ref="gbeccc02ed5f1f90684b10a6f892e89d3" args="(const char *in, size_t *out_len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int wind_utf8ucs4_length </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t *&nbsp;</td>
+ <td class="paramname"> <em>out_len</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Calculate the length of from converting a UTF-8 string to a UCS4 string.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>an UTF-8 string to convert. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>out_len</em>&nbsp;</td><td>the length of the resulting UCS4 string.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns 0 on success, an wind error code otherwise </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:20 2011 for Heimdalwindlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/wind/html/index.html b/crypto/heimdal/doc/doxyout/wind/html/index.html
new file mode 100644
index 000000000000..1bef61c2e3b8
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/html/index.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalwindlibrary: Heimdal wind library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Heimdal wind library</h1>
+<p>
+<h3 align="center">1.5.1 </h3><h2><a class="anchor" name="intro">
+Introduction</a></h2>
+Heimdal wind library is a implementation of stringprep and some of its profiles.<p>
+The project web page: <a href="http://www.h5l.org/">http://www.h5l.org/</a> </div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:20 2011 for Heimdalwindlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/wind/html/modules.html b/crypto/heimdal/doc/doxyout/wind/html/modules.html
new file mode 100644
index 000000000000..25dc32ee98d9
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/html/modules.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Heimdalwindlibrary: Module Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<p>
+<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
+</p>
+<!-- end of header marker -->
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="modules.html"><span>Modules</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Modules</h1>Here is a list of all modules:<ul>
+<li><a class="el" href="group__wind.html">Heimdal wind library</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+Generated on Fri Sep 30 15:26:20 2011 for Heimdalwindlibrary by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
+</body>
+</html>
diff --git a/crypto/heimdal/doc/doxyout/wind/html/tab_b.gif b/crypto/heimdal/doc/doxyout/wind/html/tab_b.gif
new file mode 100644
index 000000000000..0d623483ffdf
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/html/tab_b.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/wind/html/tab_l.gif b/crypto/heimdal/doc/doxyout/wind/html/tab_l.gif
new file mode 100644
index 000000000000..9b1e6337c929
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/html/tab_l.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/wind/html/tab_r.gif b/crypto/heimdal/doc/doxyout/wind/html/tab_r.gif
new file mode 100644
index 000000000000..ce9dd9f533cb
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/html/tab_r.gif
Binary files differ
diff --git a/crypto/heimdal/doc/doxyout/wind/html/tabs.css b/crypto/heimdal/doc/doxyout/wind/html/tabs.css
new file mode 100644
index 000000000000..95f00a91da30
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/html/tabs.css
@@ -0,0 +1,102 @@
+/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
+
+DIV.tabs
+{
+ float : left;
+ width : 100%;
+ background : url("tab_b.gif") repeat-x bottom;
+ margin-bottom : 4px;
+}
+
+DIV.tabs UL
+{
+ margin : 0px;
+ padding-left : 10px;
+ list-style : none;
+}
+
+DIV.tabs LI, DIV.tabs FORM
+{
+ display : inline;
+ margin : 0px;
+ padding : 0px;
+}
+
+DIV.tabs FORM
+{
+ float : right;
+}
+
+DIV.tabs A
+{
+ float : left;
+ background : url("tab_r.gif") no-repeat right top;
+ border-bottom : 1px solid #84B0C7;
+ font-size : x-small;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+DIV.tabs A:hover
+{
+ background-position: 100% -150px;
+}
+
+DIV.tabs A:link, DIV.tabs A:visited,
+DIV.tabs A:active, DIV.tabs A:hover
+{
+ color: #1A419D;
+}
+
+DIV.tabs SPAN
+{
+ float : left;
+ display : block;
+ background : url("tab_l.gif") no-repeat left top;
+ padding : 5px 9px;
+ white-space : nowrap;
+}
+
+DIV.tabs INPUT
+{
+ float : right;
+ display : inline;
+ font-size : 1em;
+}
+
+DIV.tabs TD
+{
+ font-size : x-small;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+DIV.tabs SPAN {float : none;}
+/* End IE5-Mac hack */
+
+DIV.tabs A:hover SPAN
+{
+ background-position: 0% -150px;
+}
+
+DIV.tabs LI.current A
+{
+ background-position: 100% -150px;
+ border-width : 0px;
+}
+
+DIV.tabs LI.current SPAN
+{
+ background-position: 0% -150px;
+ padding-bottom : 6px;
+}
+
+DIV.navpath
+{
+ background : none;
+ border : none;
+ border-bottom : 1px solid #84B0C7;
+}
diff --git a/crypto/heimdal/doc/doxyout/wind/man/man3/wind.3 b/crypto/heimdal/doc/doxyout/wind/man/man3/wind.3
new file mode 100644
index 000000000000..f95461b9718b
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/man/man3/wind.3
@@ -0,0 +1,326 @@
+.TH "Heimdal wind library" 3 "30 Sep 2011" "Version 1.5.1" "Heimdalwindlibrary" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Heimdal wind library \-
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "int \fBwind_punycode_label_toascii\fP (const uint32_t *in, size_t in_len, char *out, size_t *out_len)"
+.br
+.ti -1c
+.RI "int \fBwind_stringprep\fP (const uint32_t *in, size_t in_len, uint32_t *out, size_t *out_len, wind_profile_flags flags)"
+.br
+.ti -1c
+.RI "int \fBwind_profile\fP (const char *name, wind_profile_flags *flags)"
+.br
+.ti -1c
+.RI "int \fBwind_utf8ucs4\fP (const char *in, uint32_t *out, size_t *out_len)"
+.br
+.ti -1c
+.RI "int \fBwind_utf8ucs4_length\fP (const char *in, size_t *out_len)"
+.br
+.ti -1c
+.RI "int \fBwind_ucs4utf8\fP (const uint32_t *in, size_t in_len, char *out, size_t *out_len)"
+.br
+.ti -1c
+.RI "int \fBwind_ucs4utf8_length\fP (const uint32_t *in, size_t in_len, size_t *out_len)"
+.br
+.ti -1c
+.RI "int \fBwind_ucs2read\fP (const void *ptr, size_t len, unsigned int *flags, uint16_t *out, size_t *out_len)"
+.br
+.ti -1c
+.RI "int \fBwind_ucs2write\fP (const uint16_t *in, size_t in_len, unsigned int *flags, void *ptr, size_t *out_len)"
+.br
+.ti -1c
+.RI "int \fBwind_utf8ucs2\fP (const char *in, uint16_t *out, size_t *out_len)"
+.br
+.ti -1c
+.RI "int \fBwind_utf8ucs2_length\fP (const char *in, size_t *out_len)"
+.br
+.ti -1c
+.RI "int \fBwind_ucs2utf8\fP (const uint16_t *in, size_t in_len, char *out, size_t *out_len)"
+.br
+.ti -1c
+.RI "int \fBwind_ucs2utf8_length\fP (const uint16_t *in, size_t in_len, size_t *out_len)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "int wind_profile (const char * name, wind_profile_flags * flags)"
+.PP
+Try to find the profile given a name.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIname\fP name of the profile.
+.br
+\fIflags\fP the resulting profile.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns 0 on success, an wind error code otherwise
+.RE
+.PP
+
+.SS "int wind_punycode_label_toascii (const uint32_t * in, size_t in_len, char * out, size_t * out_len)"
+.PP
+Convert an UCS4 string to a puny-coded DNS label string suitable when combined with delimiters and other labels for DNS lookup.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIin\fP an UCS4 string to convert
+.br
+\fIin_len\fP the length of in.
+.br
+\fIout\fP the resulting puny-coded string. The string is not NUL terminatied.
+.br
+\fIout_len\fP before processing out_len should be the length of the out variable, after processing it will be the length of the out string.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns 0 on success, an wind error code otherwise
+.RE
+.PP
+
+.SS "int wind_stringprep (const uint32_t * in, size_t in_len, uint32_t * out, size_t * out_len, wind_profile_flags flags)"
+.PP
+Process a input UCS4 string according a string-prep profile.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIin\fP input UCS4 string to process
+.br
+\fIin_len\fP length of the input string
+.br
+\fIout\fP output UCS4 string
+.br
+\fIout_len\fP length of the output string.
+.br
+\fIflags\fP stringprep profile.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns 0 on success, an wind error code otherwise
+.RE
+.PP
+
+.SS "int wind_ucs2read (const void * ptr, size_t len, unsigned int * flags, uint16_t * out, size_t * out_len)"
+.PP
+Read in an UCS2 from a buffer.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIptr\fP The input buffer to read from.
+.br
+\fIlen\fP the length of the input buffer.
+.br
+\fIflags\fP Flags to control the behavior of the function.
+.br
+\fIout\fP the output UCS2, the array must be at least out/2 long.
+.br
+\fIout_len\fP the output length
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns 0 on success, an wind error code otherwise.
+.RE
+.PP
+
+.PP
+if len is zero, flags are unchanged
+.PP
+if len is odd, WIND_ERR_LENGTH_NOT_MOD2 is returned
+.PP
+If the flags WIND_RW_BOM is set, check for BOM. If not BOM is found, check is LE/BE flag is already and use that otherwise fail with WIND_ERR_NO_BOM. When done, clear WIND_RW_BOM and the LE/BE flag and set the resulting LE/BE flag.
+.SS "int wind_ucs2utf8 (const uint16_t * in, size_t in_len, char * out, size_t * out_len)"
+.PP
+Convert an UCS2 string to a UTF-8 string.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIin\fP an UCS2 string to convert.
+.br
+\fIin_len\fP the length of the in UCS2 string.
+.br
+\fIout\fP the resulting UTF-8 strint, must be at least \fBwind_ucs2utf8_length()\fP long. If out is NULL, the function will calculate the needed space for the out variable (just like \fBwind_ucs2utf8_length()\fP).
+.br
+\fIout_len\fP before processing out_len should be the length of the out variable, after processing it will be the length of the out string.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns 0 on success, an wind error code otherwise
+.RE
+.PP
+
+.SS "int wind_ucs2utf8_length (const uint16_t * in, size_t in_len, size_t * out_len)"
+.PP
+Calculate the length of from converting a UCS2 string to an UTF-8 string.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIin\fP an UCS2 string to convert.
+.br
+\fIin_len\fP an UCS2 string length to convert.
+.br
+\fIout_len\fP the length of the resulting UTF-8 string.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns 0 on success, an wind error code otherwise
+.RE
+.PP
+
+.SS "int wind_ucs2write (const uint16_t * in, size_t in_len, unsigned int * flags, void * ptr, size_t * out_len)"
+.PP
+Write an UCS2 string to a buffer.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIin\fP The input UCS2 string.
+.br
+\fIin_len\fP the length of the input buffer.
+.br
+\fIflags\fP Flags to control the behavior of the function.
+.br
+\fIptr\fP The input buffer to write to, the array must be at least (in + 1) * 2 bytes long.
+.br
+\fIout_len\fP the output length
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns 0 on success, an wind error code otherwise.
+.RE
+.PP
+
+.PP
+If in buffer is not of length be mod 2, WIND_ERR_LENGTH_NOT_MOD2 is returned
+.PP
+On zero input length, flags are preserved
+.PP
+If flags have WIND_RW_BOM set, the byte order mark is written first to the output data
+.PP
+If the output wont fit into out_len, WIND_ERR_OVERRUN is returned
+.SS "int wind_ucs4utf8 (const uint32_t * in, size_t in_len, char * out, size_t * out_len)"
+.PP
+Convert an UCS4 string to a UTF-8 string.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIin\fP an UCS4 string to convert.
+.br
+\fIin_len\fP the length input array.
+.br
+\fIout\fP the resulting UTF-8 strint, must be at least \fBwind_ucs4utf8_length()\fP + 1 long (the extra char for the NUL). If out is NULL, the function will calculate the needed space for the out variable (just like \fBwind_ucs4utf8_length()\fP).
+.br
+\fIout_len\fP before processing out_len should be the length of the out variable, after processing it will be the length of the out string.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns 0 on success, an wind error code otherwise
+.RE
+.PP
+
+.SS "int wind_ucs4utf8_length (const uint32_t * in, size_t in_len, size_t * out_len)"
+.PP
+Calculate the length of from converting a UCS4 string to an UTF-8 string.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIin\fP an UCS4 string to convert.
+.br
+\fIin_len\fP the length of UCS4 string to convert.
+.br
+\fIout_len\fP the length of the resulting UTF-8 string.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns 0 on success, an wind error code otherwise
+.RE
+.PP
+
+.SS "int wind_utf8ucs2 (const char * in, uint16_t * out, size_t * out_len)"
+.PP
+Convert an UTF-8 string to an UCS2 string.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIin\fP an UTF-8 string to convert.
+.br
+\fIout\fP the resulting UCS2 strint, must be at least \fBwind_utf8ucs2_length()\fP long. If out is NULL, the function will calculate the needed space for the out variable (just like \fBwind_utf8ucs2_length()\fP).
+.br
+\fIout_len\fP before processing out_len should be the length of the out variable, after processing it will be the length of the out string.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns 0 on success, an wind error code otherwise
+.RE
+.PP
+
+.SS "int wind_utf8ucs2_length (const char * in, size_t * out_len)"
+.PP
+Calculate the length of from converting a UTF-8 string to a UCS2 string.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIin\fP an UTF-8 string to convert.
+.br
+\fIout_len\fP the length of the resulting UCS4 string.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns 0 on success, an wind error code otherwise
+.RE
+.PP
+
+.SS "int wind_utf8ucs4 (const char * in, uint32_t * out, size_t * out_len)"
+.PP
+Convert an UTF-8 string to an UCS4 string.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIin\fP an UTF-8 string to convert.
+.br
+\fIout\fP the resulting UCS4 strint, must be at least \fBwind_utf8ucs4_length()\fP long. If out is NULL, the function will calculate the needed space for the out variable (just like \fBwind_utf8ucs4_length()\fP).
+.br
+\fIout_len\fP before processing out_len should be the length of the out variable, after processing it will be the length of the out string.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns 0 on success, an wind error code otherwise
+.RE
+.PP
+
+.SS "int wind_utf8ucs4_length (const char * in, size_t * out_len)"
+.PP
+Calculate the length of from converting a UTF-8 string to a UCS4 string.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIin\fP an UTF-8 string to convert.
+.br
+\fIout_len\fP the length of the resulting UCS4 string.
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+returns 0 on success, an wind error code otherwise
+.RE
+.PP
+
diff --git a/crypto/heimdal/doc/doxyout/wind/man/man3/wind_profile.3 b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_profile.3
new file mode 100644
index 000000000000..ea2c29233a61
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_profile.3
@@ -0,0 +1 @@
+.so man3/wind.3
diff --git a/crypto/heimdal/doc/doxyout/wind/man/man3/wind_punycode_label_toascii.3 b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_punycode_label_toascii.3
new file mode 100644
index 000000000000..ea2c29233a61
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_punycode_label_toascii.3
@@ -0,0 +1 @@
+.so man3/wind.3
diff --git a/crypto/heimdal/doc/doxyout/wind/man/man3/wind_stringprep.3 b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_stringprep.3
new file mode 100644
index 000000000000..ea2c29233a61
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_stringprep.3
@@ -0,0 +1 @@
+.so man3/wind.3
diff --git a/crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs2read.3 b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs2read.3
new file mode 100644
index 000000000000..ea2c29233a61
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs2read.3
@@ -0,0 +1 @@
+.so man3/wind.3
diff --git a/crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs2utf8.3 b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs2utf8.3
new file mode 100644
index 000000000000..ea2c29233a61
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs2utf8.3
@@ -0,0 +1 @@
+.so man3/wind.3
diff --git a/crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs2utf8_length.3 b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs2utf8_length.3
new file mode 100644
index 000000000000..ea2c29233a61
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs2utf8_length.3
@@ -0,0 +1 @@
+.so man3/wind.3
diff --git a/crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs2write.3 b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs2write.3
new file mode 100644
index 000000000000..ea2c29233a61
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs2write.3
@@ -0,0 +1 @@
+.so man3/wind.3
diff --git a/crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs4utf8.3 b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs4utf8.3
new file mode 100644
index 000000000000..ea2c29233a61
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs4utf8.3
@@ -0,0 +1 @@
+.so man3/wind.3
diff --git a/crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs4utf8_length.3 b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs4utf8_length.3
new file mode 100644
index 000000000000..ea2c29233a61
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_ucs4utf8_length.3
@@ -0,0 +1 @@
+.so man3/wind.3
diff --git a/crypto/heimdal/doc/doxyout/wind/man/man3/wind_utf8ucs2.3 b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_utf8ucs2.3
new file mode 100644
index 000000000000..ea2c29233a61
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_utf8ucs2.3
@@ -0,0 +1 @@
+.so man3/wind.3
diff --git a/crypto/heimdal/doc/doxyout/wind/man/man3/wind_utf8ucs2_length.3 b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_utf8ucs2_length.3
new file mode 100644
index 000000000000..ea2c29233a61
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_utf8ucs2_length.3
@@ -0,0 +1 @@
+.so man3/wind.3
diff --git a/crypto/heimdal/doc/doxyout/wind/man/man3/wind_utf8ucs4.3 b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_utf8ucs4.3
new file mode 100644
index 000000000000..ea2c29233a61
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_utf8ucs4.3
@@ -0,0 +1 @@
+.so man3/wind.3
diff --git a/crypto/heimdal/doc/doxyout/wind/man/man3/wind_utf8ucs4_length.3 b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_utf8ucs4_length.3
new file mode 100644
index 000000000000..ea2c29233a61
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/man/man3/wind_utf8ucs4_length.3
@@ -0,0 +1 @@
+.so man3/wind.3
diff --git a/crypto/heimdal/doc/doxyout/wind/manpages b/crypto/heimdal/doc/doxyout/wind/manpages
new file mode 100644
index 000000000000..a6269d12ade7
--- /dev/null
+++ b/crypto/heimdal/doc/doxyout/wind/manpages
@@ -0,0 +1,14 @@
+wind/man/man3/wind.3
+wind/man/man3/wind_profile.3
+wind/man/man3/wind_punycode_label_toascii.3
+wind/man/man3/wind_stringprep.3
+wind/man/man3/wind_ucs2read.3
+wind/man/man3/wind_ucs2utf8.3
+wind/man/man3/wind_ucs2utf8_length.3
+wind/man/man3/wind_ucs2write.3
+wind/man/man3/wind_ucs4utf8.3
+wind/man/man3/wind_ucs4utf8_length.3
+wind/man/man3/wind_utf8ucs2.3
+wind/man/man3/wind_utf8ucs2_length.3
+wind/man/man3/wind_utf8ucs4.3
+wind/man/man3/wind_utf8ucs4_length.3