diff options
| -rw-r--r-- | Makefile.inc1 | 18 | ||||
| -rw-r--r-- | ObsoleteFiles.inc | 1 | ||||
| -rw-r--r-- | etc/Makefile | 5 | ||||
| -rw-r--r-- | etc/mtree/BSD.usr.dist | 4 | ||||
| -rw-r--r-- | include/unistd.h | 2 | ||||
| -rw-r--r-- | lib/libbe/be.c | 1 | ||||
| -rw-r--r-- | lib/libbe/be.h | 1 | ||||
| -rw-r--r-- | lib/libbe/be_access.c | 1 | ||||
| -rw-r--r-- | lib/libbe/be_error.c | 1 | ||||
| -rw-r--r-- | lib/libbe/be_impl.h | 1 | ||||
| -rw-r--r-- | lib/libbe/be_info.c | 1 | ||||
| -rw-r--r-- | lib/libbe/libbe.3 | 1 | ||||
| -rw-r--r-- | lib/libbe/tests/target_prog.c | 1 | ||||
| -rw-r--r-- | lib/libc/gen/auxv.c | 102 | ||||
| -rw-r--r-- | lib/libc/gen/posix_spawn.c | 2 | ||||
| -rw-r--r-- | lib/libc/gen/ualarm.c | 3 | ||||
| -rw-r--r-- | lib/libc/stdlib/rand.c | 34 | ||||
| -rw-r--r-- | lib/libc/stdlib/random.3 | 81 | ||||
| -rw-r--r-- | lib/libc/stdlib/random.c | 311 | ||||
| -rw-r--r-- | lib/libc/stdlib/random.h | 46 | ||||
| -rwxr-xr-x | libexec/rc/rc.d/ipfw | 6 | ||||
| -rw-r--r-- | sbin/bectl/bectl.8 | 1 | ||||
| -rw-r--r-- | sbin/bectl/bectl.c | 1 | ||||
| -rw-r--r-- | sbin/ipfw/ipfw.8 | 5 | ||||
| -rw-r--r-- | sbin/ipfw/ipfw2.h | 1 | ||||
| -rw-r--r-- | sbin/ipfw/main.c | 4 | ||||
| -rw-r--r-- | sbin/ipfw/nat.c | 4 | ||||
| -rw-r--r-- | secure/caroot/Makefile | 3 | ||||
| -rw-r--r-- | secure/lib/libcrypto/Makefile | 5 | ||||
| -rw-r--r-- | secure/lib/libcrypto/Makefile.man | 3809 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ADMISSIONS.3 (renamed from secure/lib/libcrypto/man/ADMISSIONS.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ASN1_INTEGER_get_int64.3 (renamed from secure/lib/libcrypto/man/ASN1_INTEGER_get_int64.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ASN1_ITEM_lookup.3 (renamed from secure/lib/libcrypto/man/ASN1_ITEM_lookup.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ASN1_OBJECT_new.3 (renamed from secure/lib/libcrypto/man/ASN1_OBJECT_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ASN1_STRING_TABLE_add.3 (renamed from secure/lib/libcrypto/man/ASN1_STRING_TABLE_add.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ASN1_STRING_length.3 (renamed from secure/lib/libcrypto/man/ASN1_STRING_length.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ASN1_STRING_new.3 (renamed from secure/lib/libcrypto/man/ASN1_STRING_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ASN1_STRING_print_ex.3 (renamed from secure/lib/libcrypto/man/ASN1_STRING_print_ex.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ASN1_TIME_set.3 (renamed from secure/lib/libcrypto/man/ASN1_TIME_set.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ASN1_TYPE_get.3 (renamed from secure/lib/libcrypto/man/ASN1_TYPE_get.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ASN1_generate_nconf.3 (renamed from secure/lib/libcrypto/man/ASN1_generate_nconf.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ASYNC_WAIT_CTX_new.3 (renamed from secure/lib/libcrypto/man/ASYNC_WAIT_CTX_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ASYNC_start_job.3 (renamed from secure/lib/libcrypto/man/ASYNC_start_job.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BF_encrypt.3 (renamed from secure/lib/libcrypto/man/BF_encrypt.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_ADDR.3 (renamed from secure/lib/libcrypto/man/BIO_ADDR.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_ADDRINFO.3 (renamed from secure/lib/libcrypto/man/BIO_ADDRINFO.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_connect.3 (renamed from secure/lib/libcrypto/man/BIO_connect.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_ctrl.3 (renamed from secure/lib/libcrypto/man/BIO_ctrl.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_f_base64.3 (renamed from secure/lib/libcrypto/man/BIO_f_base64.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_f_buffer.3 (renamed from secure/lib/libcrypto/man/BIO_f_buffer.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_f_cipher.3 (renamed from secure/lib/libcrypto/man/BIO_f_cipher.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_f_md.3 (renamed from secure/lib/libcrypto/man/BIO_f_md.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_f_null.3 (renamed from secure/lib/libcrypto/man/BIO_f_null.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_f_ssl.3 (renamed from secure/lib/libcrypto/man/BIO_f_ssl.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_find_type.3 (renamed from secure/lib/libcrypto/man/BIO_find_type.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_get_data.3 (renamed from secure/lib/libcrypto/man/BIO_get_data.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_get_ex_new_index.3 (renamed from secure/lib/libcrypto/man/BIO_get_ex_new_index.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_meth_new.3 (renamed from secure/lib/libcrypto/man/BIO_meth_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_new.3 (renamed from secure/lib/libcrypto/man/BIO_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_new_CMS.3 (renamed from secure/lib/libcrypto/man/BIO_new_CMS.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_parse_hostserv.3 (renamed from secure/lib/libcrypto/man/BIO_parse_hostserv.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_printf.3 (renamed from secure/lib/libcrypto/man/BIO_printf.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_push.3 (renamed from secure/lib/libcrypto/man/BIO_push.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_read.3 (renamed from secure/lib/libcrypto/man/BIO_read.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_s_accept.3 (renamed from secure/lib/libcrypto/man/BIO_s_accept.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_s_bio.3 (renamed from secure/lib/libcrypto/man/BIO_s_bio.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_s_connect.3 (renamed from secure/lib/libcrypto/man/BIO_s_connect.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_s_fd.3 (renamed from secure/lib/libcrypto/man/BIO_s_fd.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_s_file.3 (renamed from secure/lib/libcrypto/man/BIO_s_file.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_s_mem.3 (renamed from secure/lib/libcrypto/man/BIO_s_mem.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_s_null.3 (renamed from secure/lib/libcrypto/man/BIO_s_null.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_s_socket.3 (renamed from secure/lib/libcrypto/man/BIO_s_socket.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_set_callback.3 (renamed from secure/lib/libcrypto/man/BIO_set_callback.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BIO_should_retry.3 (renamed from secure/lib/libcrypto/man/BIO_should_retry.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_BLINDING_new.3 (renamed from secure/lib/libcrypto/man/BN_BLINDING_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_CTX_new.3 (renamed from secure/lib/libcrypto/man/BN_CTX_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_CTX_start.3 (renamed from secure/lib/libcrypto/man/BN_CTX_start.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_add.3 (renamed from secure/lib/libcrypto/man/BN_add.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_add_word.3 (renamed from secure/lib/libcrypto/man/BN_add_word.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_bn2bin.3 (renamed from secure/lib/libcrypto/man/BN_bn2bin.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_cmp.3 (renamed from secure/lib/libcrypto/man/BN_cmp.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_copy.3 (renamed from secure/lib/libcrypto/man/BN_copy.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_generate_prime.3 (renamed from secure/lib/libcrypto/man/BN_generate_prime.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_mod_inverse.3 (renamed from secure/lib/libcrypto/man/BN_mod_inverse.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_mod_mul_montgomery.3 (renamed from secure/lib/libcrypto/man/BN_mod_mul_montgomery.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_mod_mul_reciprocal.3 (renamed from secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_new.3 (renamed from secure/lib/libcrypto/man/BN_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_num_bytes.3 (renamed from secure/lib/libcrypto/man/BN_num_bytes.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_rand.3 (renamed from secure/lib/libcrypto/man/BN_rand.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_security_bits.3 (renamed from secure/lib/libcrypto/man/BN_security_bits.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_set_bit.3 (renamed from secure/lib/libcrypto/man/BN_set_bit.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_swap.3 (renamed from secure/lib/libcrypto/man/BN_swap.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BN_zero.3 (renamed from secure/lib/libcrypto/man/BN_zero.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/BUF_MEM_new.3 (renamed from secure/lib/libcrypto/man/BUF_MEM_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CMS_add0_cert.3 (renamed from secure/lib/libcrypto/man/CMS_add0_cert.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CMS_add1_recipient_cert.3 (renamed from secure/lib/libcrypto/man/CMS_add1_recipient_cert.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CMS_add1_signer.3 (renamed from secure/lib/libcrypto/man/CMS_add1_signer.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CMS_compress.3 (renamed from secure/lib/libcrypto/man/CMS_compress.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CMS_decrypt.3 (renamed from secure/lib/libcrypto/man/CMS_decrypt.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CMS_encrypt.3 (renamed from secure/lib/libcrypto/man/CMS_encrypt.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CMS_final.3 (renamed from secure/lib/libcrypto/man/CMS_final.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CMS_get0_RecipientInfos.3 (renamed from secure/lib/libcrypto/man/CMS_get0_RecipientInfos.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CMS_get0_SignerInfos.3 (renamed from secure/lib/libcrypto/man/CMS_get0_SignerInfos.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CMS_get0_type.3 (renamed from secure/lib/libcrypto/man/CMS_get0_type.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CMS_get1_ReceiptRequest.3 (renamed from secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CMS_sign.3 (renamed from secure/lib/libcrypto/man/CMS_sign.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CMS_sign_receipt.3 (renamed from secure/lib/libcrypto/man/CMS_sign_receipt.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CMS_uncompress.3 (renamed from secure/lib/libcrypto/man/CMS_uncompress.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CMS_verify.3 (renamed from secure/lib/libcrypto/man/CMS_verify.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CMS_verify_receipt.3 (renamed from secure/lib/libcrypto/man/CMS_verify_receipt.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CONF_modules_free.3 (renamed from secure/lib/libcrypto/man/CONF_modules_free.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CONF_modules_load_file.3 (renamed from secure/lib/libcrypto/man/CONF_modules_load_file.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CRYPTO_THREAD_run_once.3 (renamed from secure/lib/libcrypto/man/CRYPTO_THREAD_run_once.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CRYPTO_get_ex_new_index.3 (renamed from secure/lib/libcrypto/man/CRYPTO_get_ex_new_index.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CRYPTO_memcmp.3 (renamed from secure/lib/libcrypto/man/CRYPTO_memcmp.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CTLOG_STORE_get0_log_by_id.3 (renamed from secure/lib/libcrypto/man/CTLOG_STORE_get0_log_by_id.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CTLOG_STORE_new.3 (renamed from secure/lib/libcrypto/man/CTLOG_STORE_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CTLOG_new.3 (renamed from secure/lib/libcrypto/man/CTLOG_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/CT_POLICY_EVAL_CTX_new.3 (renamed from secure/lib/libcrypto/man/CT_POLICY_EVAL_CTX_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DEFINE_STACK_OF.3 (renamed from secure/lib/libcrypto/man/DEFINE_STACK_OF.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DES_random_key.3 (renamed from secure/lib/libcrypto/man/DES_random_key.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DH_generate_key.3 (renamed from secure/lib/libcrypto/man/DH_generate_key.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DH_generate_parameters.3 (renamed from secure/lib/libcrypto/man/DH_generate_parameters.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DH_get0_pqg.3 (renamed from secure/lib/libcrypto/man/DH_get0_pqg.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DH_get_1024_160.3 (renamed from secure/lib/libcrypto/man/DH_get_1024_160.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DH_meth_new.3 (renamed from secure/lib/libcrypto/man/DH_meth_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DH_new.3 (renamed from secure/lib/libcrypto/man/DH_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DH_new_by_nid.3 (renamed from secure/lib/libcrypto/man/DH_new_by_nid.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DH_set_method.3 (renamed from secure/lib/libcrypto/man/DH_set_method.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DH_size.3 (renamed from secure/lib/libcrypto/man/DH_size.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DSA_SIG_new.3 (renamed from secure/lib/libcrypto/man/DSA_SIG_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DSA_do_sign.3 (renamed from secure/lib/libcrypto/man/DSA_do_sign.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DSA_dup_DH.3 (renamed from secure/lib/libcrypto/man/DSA_dup_DH.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DSA_generate_key.3 (renamed from secure/lib/libcrypto/man/DSA_generate_key.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DSA_generate_parameters.3 (renamed from secure/lib/libcrypto/man/DSA_generate_parameters.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DSA_get0_pqg.3 (renamed from secure/lib/libcrypto/man/DSA_get0_pqg.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DSA_meth_new.3 (renamed from secure/lib/libcrypto/man/DSA_meth_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DSA_new.3 (renamed from secure/lib/libcrypto/man/DSA_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DSA_set_method.3 (renamed from secure/lib/libcrypto/man/DSA_set_method.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DSA_sign.3 (renamed from secure/lib/libcrypto/man/DSA_sign.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DSA_size.3 (renamed from secure/lib/libcrypto/man/DSA_size.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DTLS_get_data_mtu.3 (renamed from secure/lib/libcrypto/man/DTLS_get_data_mtu.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DTLS_set_timer_cb.3 (renamed from secure/lib/libcrypto/man/DTLS_set_timer_cb.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/DTLSv1_listen.3 (renamed from secure/lib/libcrypto/man/DTLSv1_listen.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ECDSA_SIG_new.3 (renamed from secure/lib/libcrypto/man/ECDSA_SIG_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ECPKParameters_print.3 (renamed from secure/lib/libcrypto/man/ECPKParameters_print.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EC_GFp_simple_method.3 (renamed from secure/lib/libcrypto/man/EC_GFp_simple_method.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EC_GROUP_copy.3 (renamed from secure/lib/libcrypto/man/EC_GROUP_copy.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EC_GROUP_new.3 (renamed from secure/lib/libcrypto/man/EC_GROUP_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EC_KEY_get_enc_flags.3 (renamed from secure/lib/libcrypto/man/EC_KEY_get_enc_flags.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EC_KEY_new.3 (renamed from secure/lib/libcrypto/man/EC_KEY_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EC_POINT_add.3 (renamed from secure/lib/libcrypto/man/EC_POINT_add.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EC_POINT_new.3 (renamed from secure/lib/libcrypto/man/EC_POINT_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ENGINE_add.3 (renamed from secure/lib/libcrypto/man/ENGINE_add.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ERR_GET_LIB.3 (renamed from secure/lib/libcrypto/man/ERR_GET_LIB.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ERR_clear_error.3 (renamed from secure/lib/libcrypto/man/ERR_clear_error.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ERR_error_string.3 (renamed from secure/lib/libcrypto/man/ERR_error_string.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ERR_get_error.3 (renamed from secure/lib/libcrypto/man/ERR_get_error.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ERR_load_crypto_strings.3 (renamed from secure/lib/libcrypto/man/ERR_load_crypto_strings.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ERR_load_strings.3 (renamed from secure/lib/libcrypto/man/ERR_load_strings.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ERR_print_errors.3 (renamed from secure/lib/libcrypto/man/ERR_print_errors.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ERR_put_error.3 (renamed from secure/lib/libcrypto/man/ERR_put_error.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ERR_remove_state.3 (renamed from secure/lib/libcrypto/man/ERR_remove_state.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/ERR_set_mark.3 (renamed from secure/lib/libcrypto/man/ERR_set_mark.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_BytesToKey.3 (renamed from secure/lib/libcrypto/man/EVP_BytesToKey.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_CIPHER_CTX_get_cipher_data.3 (renamed from secure/lib/libcrypto/man/EVP_CIPHER_CTX_get_cipher_data.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_CIPHER_meth_new.3 (renamed from secure/lib/libcrypto/man/EVP_CIPHER_meth_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_DigestInit.3 (renamed from secure/lib/libcrypto/man/EVP_DigestInit.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_DigestSignInit.3 (renamed from secure/lib/libcrypto/man/EVP_DigestSignInit.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_DigestVerifyInit.3 (renamed from secure/lib/libcrypto/man/EVP_DigestVerifyInit.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_EncodeInit.3 (renamed from secure/lib/libcrypto/man/EVP_EncodeInit.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_EncryptInit.3 (renamed from secure/lib/libcrypto/man/EVP_EncryptInit.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_MD_meth_new.3 (renamed from secure/lib/libcrypto/man/EVP_MD_meth_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_OpenInit.3 (renamed from secure/lib/libcrypto/man/EVP_OpenInit.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_ASN1_METHOD.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_ASN1_METHOD.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_ctrl.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_new.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_CTX_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_CTX_set1_pbe_pass.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_set_hkdf_md.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_CTX_set_hkdf_md.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_set_scrypt_N.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_CTX_set_scrypt_N.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_CTX_set_tls1_prf_md.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_asn1_get_count.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_asn1_get_count.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_cmp.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_cmp.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_decrypt.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_decrypt.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_derive.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_derive.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_encrypt.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_encrypt.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_get_default_digest_nid.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_get_default_digest_nid.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_keygen.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_keygen.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_meth_get_count.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_meth_get_count.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_meth_new.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_meth_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_new.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_print_private.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_print_private.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_set1_RSA.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_sign.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_sign.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_verify.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_verify.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_PKEY_verify_recover.3 (renamed from secure/lib/libcrypto/man/EVP_PKEY_verify_recover.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_SealInit.3 (renamed from secure/lib/libcrypto/man/EVP_SealInit.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_SignInit.3 (renamed from secure/lib/libcrypto/man/EVP_SignInit.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_VerifyInit.3 (renamed from secure/lib/libcrypto/man/EVP_VerifyInit.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_aes.3 (renamed from secure/lib/libcrypto/man/EVP_aes.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_aria.3 (renamed from secure/lib/libcrypto/man/EVP_aria.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_bf_cbc.3 (renamed from secure/lib/libcrypto/man/EVP_bf_cbc.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_blake2b512.3 (renamed from secure/lib/libcrypto/man/EVP_blake2b512.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_camellia.3 (renamed from secure/lib/libcrypto/man/EVP_camellia.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_cast5_cbc.3 (renamed from secure/lib/libcrypto/man/EVP_cast5_cbc.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_chacha20.3 (renamed from secure/lib/libcrypto/man/EVP_chacha20.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_des.3 (renamed from secure/lib/libcrypto/man/EVP_des.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_desx_cbc.3 (renamed from secure/lib/libcrypto/man/EVP_desx_cbc.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_idea_cbc.3 (renamed from secure/lib/libcrypto/man/EVP_idea_cbc.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_md2.3 (renamed from secure/lib/libcrypto/man/EVP_md2.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_md4.3 (renamed from secure/lib/libcrypto/man/EVP_md4.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_md5.3 (renamed from secure/lib/libcrypto/man/EVP_md5.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_mdc2.3 (renamed from secure/lib/libcrypto/man/EVP_mdc2.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_rc2_cbc.3 (renamed from secure/lib/libcrypto/man/EVP_rc2_cbc.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_rc4.3 (renamed from secure/lib/libcrypto/man/EVP_rc4.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_rc5_32_12_16_cbc.3 (renamed from secure/lib/libcrypto/man/EVP_rc5_32_12_16_cbc.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_ripemd160.3 (renamed from secure/lib/libcrypto/man/EVP_ripemd160.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_seed_cbc.3 (renamed from secure/lib/libcrypto/man/EVP_seed_cbc.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_sha1.3 (renamed from secure/lib/libcrypto/man/EVP_sha1.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_sha224.3 (renamed from secure/lib/libcrypto/man/EVP_sha224.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_sha3_224.3 (renamed from secure/lib/libcrypto/man/EVP_sha3_224.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_sm3.3 (renamed from secure/lib/libcrypto/man/EVP_sm3.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_sm4_cbc.3 (renamed from secure/lib/libcrypto/man/EVP_sm4_cbc.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/EVP_whirlpool.3 (renamed from secure/lib/libcrypto/man/EVP_whirlpool.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/HMAC.3 (renamed from secure/lib/libcrypto/man/HMAC.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/MD5.3 (renamed from secure/lib/libcrypto/man/MD5.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/MDC2_Init.3 (renamed from secure/lib/libcrypto/man/MDC2_Init.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/Makefile | 3806 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OBJ_nid2obj.3 (renamed from secure/lib/libcrypto/man/OBJ_nid2obj.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OCSP_REQUEST_new.3 (renamed from secure/lib/libcrypto/man/OCSP_REQUEST_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OCSP_cert_to_id.3 (renamed from secure/lib/libcrypto/man/OCSP_cert_to_id.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OCSP_request_add1_nonce.3 (renamed from secure/lib/libcrypto/man/OCSP_request_add1_nonce.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OCSP_resp_find_status.3 (renamed from secure/lib/libcrypto/man/OCSP_resp_find_status.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OCSP_response_status.3 (renamed from secure/lib/libcrypto/man/OCSP_response_status.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OCSP_sendreq_new.3 (renamed from secure/lib/libcrypto/man/OCSP_sendreq_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OPENSSL_Applink.3 (renamed from secure/lib/libcrypto/man/OPENSSL_Applink.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OPENSSL_LH_COMPFUNC.3 (renamed from secure/lib/libcrypto/man/OPENSSL_LH_COMPFUNC.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OPENSSL_LH_stats.3 (renamed from secure/lib/libcrypto/man/OPENSSL_LH_stats.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OPENSSL_VERSION_NUMBER.3 (renamed from secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OPENSSL_config.3 (renamed from secure/lib/libcrypto/man/OPENSSL_config.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OPENSSL_fork_prepare.3 (renamed from secure/lib/libcrypto/man/OPENSSL_fork_prepare.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OPENSSL_ia32cap.3 (renamed from secure/lib/libcrypto/man/OPENSSL_ia32cap.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OPENSSL_init_crypto.3 (renamed from secure/lib/libcrypto/man/OPENSSL_init_crypto.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OPENSSL_init_ssl.3 (renamed from secure/lib/libcrypto/man/OPENSSL_init_ssl.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OPENSSL_instrument_bus.3 (renamed from secure/lib/libcrypto/man/OPENSSL_instrument_bus.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OPENSSL_load_builtin_modules.3 (renamed from secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OPENSSL_malloc.3 (renamed from secure/lib/libcrypto/man/OPENSSL_malloc.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OPENSSL_secure_malloc.3 (renamed from secure/lib/libcrypto/man/OPENSSL_secure_malloc.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OSSL_STORE_INFO.3 (renamed from secure/lib/libcrypto/man/OSSL_STORE_INFO.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OSSL_STORE_LOADER.3 (renamed from secure/lib/libcrypto/man/OSSL_STORE_LOADER.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OSSL_STORE_SEARCH.3 (renamed from secure/lib/libcrypto/man/OSSL_STORE_SEARCH.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OSSL_STORE_expect.3 (renamed from secure/lib/libcrypto/man/OSSL_STORE_expect.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OSSL_STORE_open.3 (renamed from secure/lib/libcrypto/man/OSSL_STORE_open.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/OpenSSL_add_all_algorithms.3 (renamed from secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/PEM_bytes_read_bio.3 (renamed from secure/lib/libcrypto/man/PEM_bytes_read_bio.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/PEM_read.3 (renamed from secure/lib/libcrypto/man/PEM_read.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/PEM_read_CMS.3 (renamed from secure/lib/libcrypto/man/PEM_read_CMS.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/PEM_read_bio_PrivateKey.3 (renamed from secure/lib/libcrypto/man/PEM_read_bio_PrivateKey.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/PEM_read_bio_ex.3 (renamed from secure/lib/libcrypto/man/PEM_read_bio_ex.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/PEM_write_bio_CMS_stream.3 (renamed from secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/PEM_write_bio_PKCS7_stream.3 (renamed from secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/PKCS12_create.3 (renamed from secure/lib/libcrypto/man/PKCS12_create.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/PKCS12_newpass.3 (renamed from secure/lib/libcrypto/man/PKCS12_newpass.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/PKCS12_parse.3 (renamed from secure/lib/libcrypto/man/PKCS12_parse.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/PKCS5_PBKDF2_HMAC.3 (renamed from secure/lib/libcrypto/man/PKCS5_PBKDF2_HMAC.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/PKCS7_decrypt.3 (renamed from secure/lib/libcrypto/man/PKCS7_decrypt.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/PKCS7_encrypt.3 (renamed from secure/lib/libcrypto/man/PKCS7_encrypt.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/PKCS7_sign.3 (renamed from secure/lib/libcrypto/man/PKCS7_sign.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/PKCS7_sign_add_signer.3 (renamed from secure/lib/libcrypto/man/PKCS7_sign_add_signer.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/PKCS7_verify.3 (renamed from secure/lib/libcrypto/man/PKCS7_verify.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RAND_DRBG_generate.3 (renamed from secure/lib/libcrypto/man/RAND_DRBG_generate.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RAND_DRBG_get0_master.3 (renamed from secure/lib/libcrypto/man/RAND_DRBG_get0_master.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RAND_DRBG_new.3 (renamed from secure/lib/libcrypto/man/RAND_DRBG_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RAND_DRBG_reseed.3 (renamed from secure/lib/libcrypto/man/RAND_DRBG_reseed.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RAND_DRBG_set_callbacks.3 (renamed from secure/lib/libcrypto/man/RAND_DRBG_set_callbacks.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RAND_DRBG_set_ex_data.3 (renamed from secure/lib/libcrypto/man/RAND_DRBG_set_ex_data.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RAND_add.3 (renamed from secure/lib/libcrypto/man/RAND_add.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RAND_bytes.3 (renamed from secure/lib/libcrypto/man/RAND_bytes.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RAND_cleanup.3 (renamed from secure/lib/libcrypto/man/RAND_cleanup.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RAND_egd.3 (renamed from secure/lib/libcrypto/man/RAND_egd.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RAND_load_file.3 (renamed from secure/lib/libcrypto/man/RAND_load_file.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RAND_set_rand_method.3 (renamed from secure/lib/libcrypto/man/RAND_set_rand_method.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RC4_set_key.3 (renamed from secure/lib/libcrypto/man/RC4_set_key.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RIPEMD160_Init.3 (renamed from secure/lib/libcrypto/man/RIPEMD160_Init.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RSA_blinding_on.3 (renamed from secure/lib/libcrypto/man/RSA_blinding_on.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RSA_check_key.3 (renamed from secure/lib/libcrypto/man/RSA_check_key.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RSA_generate_key.3 (renamed from secure/lib/libcrypto/man/RSA_generate_key.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RSA_get0_key.3 (renamed from secure/lib/libcrypto/man/RSA_get0_key.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RSA_meth_new.3 (renamed from secure/lib/libcrypto/man/RSA_meth_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RSA_new.3 (renamed from secure/lib/libcrypto/man/RSA_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RSA_padding_add_PKCS1_type_1.3 (renamed from secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RSA_print.3 (renamed from secure/lib/libcrypto/man/RSA_print.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RSA_private_encrypt.3 (renamed from secure/lib/libcrypto/man/RSA_private_encrypt.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RSA_public_encrypt.3 (renamed from secure/lib/libcrypto/man/RSA_public_encrypt.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RSA_set_method.3 (renamed from secure/lib/libcrypto/man/RSA_set_method.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RSA_sign.3 (renamed from secure/lib/libcrypto/man/RSA_sign.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RSA_sign_ASN1_OCTET_STRING.3 (renamed from secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/RSA_size.3 (renamed from secure/lib/libcrypto/man/RSA_size.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SCT_new.3 (renamed from secure/lib/libcrypto/man/SCT_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SCT_print.3 (renamed from secure/lib/libcrypto/man/SCT_print.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SCT_validate.3 (renamed from secure/lib/libcrypto/man/SCT_validate.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SHA256_Init.3 (renamed from secure/lib/libcrypto/man/SHA256_Init.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SMIME_read_CMS.3 (renamed from secure/lib/libcrypto/man/SMIME_read_CMS.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SMIME_read_PKCS7.3 (renamed from secure/lib/libcrypto/man/SMIME_read_PKCS7.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SMIME_write_CMS.3 (renamed from secure/lib/libcrypto/man/SMIME_write_CMS.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SMIME_write_PKCS7.3 (renamed from secure/lib/libcrypto/man/SMIME_write_PKCS7.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CIPHER_get_name.3 (renamed from secure/lib/libcrypto/man/SSL_CIPHER_get_name.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_COMP_add_compression_method.3 (renamed from secure/lib/libcrypto/man/SSL_COMP_add_compression_method.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CONF_CTX_new.3 (renamed from secure/lib/libcrypto/man/SSL_CONF_CTX_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CONF_CTX_set1_prefix.3 (renamed from secure/lib/libcrypto/man/SSL_CONF_CTX_set1_prefix.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CONF_CTX_set_flags.3 (renamed from secure/lib/libcrypto/man/SSL_CONF_CTX_set_flags.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CONF_CTX_set_ssl_ctx.3 (renamed from secure/lib/libcrypto/man/SSL_CONF_CTX_set_ssl_ctx.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CONF_cmd.3 (renamed from secure/lib/libcrypto/man/SSL_CONF_cmd.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CONF_cmd_argv.3 (renamed from secure/lib/libcrypto/man/SSL_CONF_cmd_argv.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_add1_chain_cert.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_add1_chain_cert.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_add_extra_chain_cert.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_add_extra_chain_cert.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_add_session.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_add_session.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_config.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_config.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_ctrl.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_ctrl.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_dane_enable.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_dane_enable.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_flush_sessions.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_flush_sessions.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_free.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_free.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_get0_param.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_get0_param.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_get_verify_mode.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_get_verify_mode.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_has_client_custom_ext.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_has_client_custom_ext.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_load_verify_locations.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_load_verify_locations.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_new.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_sess_number.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_sess_number.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_sess_set_cache_size.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_sess_set_cache_size.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_sess_set_get_cb.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_sess_set_get_cb.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_sessions.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_sessions.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set0_CA_list.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set0_CA_list.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set1_curves.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set1_curves.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set1_sigalgs.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set1_sigalgs.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set1_verify_cert_store.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set1_verify_cert_store.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_alpn_select_cb.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_alpn_select_cb.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_cert_cb.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_cert_cb.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_cert_store.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_cert_store.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_cert_verify_callback.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_cert_verify_callback.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_cipher_list.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_cipher_list.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_client_cert_cb.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_client_cert_cb.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_client_hello_cb.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_client_hello_cb.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_ct_validation_callback.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_ct_validation_callback.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_ctlog_list_file.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_ctlog_list_file.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_default_passwd_cb.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_default_passwd_cb.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_ex_data.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_ex_data.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_generate_session_id.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_generate_session_id.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_info_callback.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_info_callback.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_keylog_callback.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_keylog_callback.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_max_cert_list.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_max_cert_list.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_min_proto_version.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_min_proto_version.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_mode.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_mode.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_msg_callback.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_msg_callback.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_num_tickets.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_num_tickets.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_options.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_options.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_psk_client_callback.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_psk_client_callback.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_quiet_shutdown.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_quiet_shutdown.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_read_ahead.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_read_ahead.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_record_padding_callback.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_record_padding_callback.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_security_level.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_security_level.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_session_cache_mode.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_session_cache_mode.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_session_id_context.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_session_id_context.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_session_ticket_cb.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_session_ticket_cb.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_split_send_fragment.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_split_send_fragment.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_ssl_version.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_ssl_version.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_stateless_cookie_generate_cb.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_stateless_cookie_generate_cb.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_timeout.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_timeout.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_tlsext_servername_callback.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_tlsext_servername_callback.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_tlsext_status_cb.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_tlsext_status_cb.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_tlsext_ticket_key_cb.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_tlsext_use_srtp.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_tlsext_use_srtp.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_tmp_dh_callback.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_tmp_dh_callback.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_set_verify.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_set_verify.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_use_certificate.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_use_certificate.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_use_psk_identity_hint.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_use_psk_identity_hint.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_CTX_use_serverinfo.3 (renamed from secure/lib/libcrypto/man/SSL_CTX_use_serverinfo.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_SESSION_free.3 (renamed from secure/lib/libcrypto/man/SSL_SESSION_free.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_SESSION_get0_cipher.3 (renamed from secure/lib/libcrypto/man/SSL_SESSION_get0_cipher.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_SESSION_get0_hostname.3 (renamed from secure/lib/libcrypto/man/SSL_SESSION_get0_hostname.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_SESSION_get0_id_context.3 (renamed from secure/lib/libcrypto/man/SSL_SESSION_get0_id_context.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_SESSION_get0_peer.3 (renamed from secure/lib/libcrypto/man/SSL_SESSION_get0_peer.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_SESSION_get_compress_id.3 (renamed from secure/lib/libcrypto/man/SSL_SESSION_get_compress_id.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_SESSION_get_ex_data.3 (renamed from secure/lib/libcrypto/man/SSL_SESSION_get_ex_data.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_SESSION_get_protocol_version.3 (renamed from secure/lib/libcrypto/man/SSL_SESSION_get_protocol_version.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_SESSION_get_time.3 (renamed from secure/lib/libcrypto/man/SSL_SESSION_get_time.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_SESSION_has_ticket.3 (renamed from secure/lib/libcrypto/man/SSL_SESSION_has_ticket.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_SESSION_is_resumable.3 (renamed from secure/lib/libcrypto/man/SSL_SESSION_is_resumable.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_SESSION_print.3 (renamed from secure/lib/libcrypto/man/SSL_SESSION_print.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_SESSION_set1_id.3 (renamed from secure/lib/libcrypto/man/SSL_SESSION_set1_id.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_accept.3 (renamed from secure/lib/libcrypto/man/SSL_accept.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_alert_type_string.3 (renamed from secure/lib/libcrypto/man/SSL_alert_type_string.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_alloc_buffers.3 (renamed from secure/lib/libcrypto/man/SSL_alloc_buffers.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_check_chain.3 (renamed from secure/lib/libcrypto/man/SSL_check_chain.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_clear.3 (renamed from secure/lib/libcrypto/man/SSL_clear.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_connect.3 (renamed from secure/lib/libcrypto/man/SSL_connect.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_do_handshake.3 (renamed from secure/lib/libcrypto/man/SSL_do_handshake.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_export_keying_material.3 (renamed from secure/lib/libcrypto/man/SSL_export_keying_material.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_extension_supported.3 (renamed from secure/lib/libcrypto/man/SSL_extension_supported.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_free.3 (renamed from secure/lib/libcrypto/man/SSL_free.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get0_peer_scts.3 (renamed from secure/lib/libcrypto/man/SSL_get0_peer_scts.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_SSL_CTX.3 (renamed from secure/lib/libcrypto/man/SSL_get_SSL_CTX.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_all_async_fds.3 (renamed from secure/lib/libcrypto/man/SSL_get_all_async_fds.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_ciphers.3 (renamed from secure/lib/libcrypto/man/SSL_get_ciphers.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_client_random.3 (renamed from secure/lib/libcrypto/man/SSL_get_client_random.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_current_cipher.3 (renamed from secure/lib/libcrypto/man/SSL_get_current_cipher.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_default_timeout.3 (renamed from secure/lib/libcrypto/man/SSL_get_default_timeout.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_error.3 (renamed from secure/lib/libcrypto/man/SSL_get_error.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_extms_support.3 (renamed from secure/lib/libcrypto/man/SSL_get_extms_support.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_fd.3 (renamed from secure/lib/libcrypto/man/SSL_get_fd.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_peer_cert_chain.3 (renamed from secure/lib/libcrypto/man/SSL_get_peer_cert_chain.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_peer_certificate.3 (renamed from secure/lib/libcrypto/man/SSL_get_peer_certificate.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_peer_signature_nid.3 (renamed from secure/lib/libcrypto/man/SSL_get_peer_signature_nid.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_peer_tmp_key.3 (renamed from secure/lib/libcrypto/man/SSL_get_peer_tmp_key.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_psk_identity.3 (renamed from secure/lib/libcrypto/man/SSL_get_psk_identity.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_rbio.3 (renamed from secure/lib/libcrypto/man/SSL_get_rbio.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_session.3 (renamed from secure/lib/libcrypto/man/SSL_get_session.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_shared_sigalgs.3 (renamed from secure/lib/libcrypto/man/SSL_get_shared_sigalgs.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_verify_result.3 (renamed from secure/lib/libcrypto/man/SSL_get_verify_result.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_get_version.3 (renamed from secure/lib/libcrypto/man/SSL_get_version.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_in_init.3 (renamed from secure/lib/libcrypto/man/SSL_in_init.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_key_update.3 (renamed from secure/lib/libcrypto/man/SSL_key_update.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_library_init.3 (renamed from secure/lib/libcrypto/man/SSL_library_init.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_load_client_CA_file.3 (renamed from secure/lib/libcrypto/man/SSL_load_client_CA_file.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_new.3 (renamed from secure/lib/libcrypto/man/SSL_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_pending.3 (renamed from secure/lib/libcrypto/man/SSL_pending.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_read.3 (renamed from secure/lib/libcrypto/man/SSL_read.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_read_early_data.3 (renamed from secure/lib/libcrypto/man/SSL_read_early_data.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_rstate_string.3 (renamed from secure/lib/libcrypto/man/SSL_rstate_string.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_session_reused.3 (renamed from secure/lib/libcrypto/man/SSL_session_reused.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_set1_host.3 (renamed from secure/lib/libcrypto/man/SSL_set1_host.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_set_bio.3 (renamed from secure/lib/libcrypto/man/SSL_set_bio.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_set_connect_state.3 (renamed from secure/lib/libcrypto/man/SSL_set_connect_state.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_set_fd.3 (renamed from secure/lib/libcrypto/man/SSL_set_fd.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_set_session.3 (renamed from secure/lib/libcrypto/man/SSL_set_session.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_set_shutdown.3 (renamed from secure/lib/libcrypto/man/SSL_set_shutdown.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_set_verify_result.3 (renamed from secure/lib/libcrypto/man/SSL_set_verify_result.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_shutdown.3 (renamed from secure/lib/libcrypto/man/SSL_shutdown.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_state_string.3 (renamed from secure/lib/libcrypto/man/SSL_state_string.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_want.3 (renamed from secure/lib/libcrypto/man/SSL_want.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/SSL_write.3 (renamed from secure/lib/libcrypto/man/SSL_write.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/UI_STRING.3 (renamed from secure/lib/libcrypto/man/UI_STRING.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/UI_UTIL_read_pw.3 (renamed from secure/lib/libcrypto/man/UI_UTIL_read_pw.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/UI_create_method.3 (renamed from secure/lib/libcrypto/man/UI_create_method.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/UI_new.3 (renamed from secure/lib/libcrypto/man/UI_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509V3_get_d2i.3 (renamed from secure/lib/libcrypto/man/X509V3_get_d2i.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_ALGOR_dup.3 (renamed from secure/lib/libcrypto/man/X509_ALGOR_dup.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_CRL_get0_by_serial.3 (renamed from secure/lib/libcrypto/man/X509_CRL_get0_by_serial.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_EXTENSION_set_object.3 (renamed from secure/lib/libcrypto/man/X509_EXTENSION_set_object.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_LOOKUP_hash_dir.3 (renamed from secure/lib/libcrypto/man/X509_LOOKUP_hash_dir.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_LOOKUP_meth_new.3 (renamed from secure/lib/libcrypto/man/X509_LOOKUP_meth_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_NAME_ENTRY_get_object.3 (renamed from secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_NAME_add_entry_by_txt.3 (renamed from secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_NAME_get0_der.3 (renamed from secure/lib/libcrypto/man/X509_NAME_get0_der.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_NAME_get_index_by_NID.3 (renamed from secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_NAME_print_ex.3 (renamed from secure/lib/libcrypto/man/X509_NAME_print_ex.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_PUBKEY_new.3 (renamed from secure/lib/libcrypto/man/X509_PUBKEY_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_SIG_get0.3 (renamed from secure/lib/libcrypto/man/X509_SIG_get0.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_STORE_CTX_get_error.3 (renamed from secure/lib/libcrypto/man/X509_STORE_CTX_get_error.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_STORE_CTX_new.3 (renamed from secure/lib/libcrypto/man/X509_STORE_CTX_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_STORE_CTX_set_verify_cb.3 (renamed from secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_STORE_add_cert.3 (renamed from secure/lib/libcrypto/man/X509_STORE_add_cert.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_STORE_get0_param.3 (renamed from secure/lib/libcrypto/man/X509_STORE_get0_param.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_STORE_new.3 (renamed from secure/lib/libcrypto/man/X509_STORE_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_STORE_set_verify_cb_func.3 (renamed from secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_VERIFY_PARAM_set_flags.3 (renamed from secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_check_ca.3 (renamed from secure/lib/libcrypto/man/X509_check_ca.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_check_host.3 (renamed from secure/lib/libcrypto/man/X509_check_host.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_check_issued.3 (renamed from secure/lib/libcrypto/man/X509_check_issued.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_check_private_key.3 (renamed from secure/lib/libcrypto/man/X509_check_private_key.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_cmp.3 (renamed from secure/lib/libcrypto/man/X509_cmp.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_cmp_time.3 (renamed from secure/lib/libcrypto/man/X509_cmp_time.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_digest.3 (renamed from secure/lib/libcrypto/man/X509_digest.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_dup.3 (renamed from secure/lib/libcrypto/man/X509_dup.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_get0_notBefore.3 (renamed from secure/lib/libcrypto/man/X509_get0_notBefore.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_get0_signature.3 (renamed from secure/lib/libcrypto/man/X509_get0_signature.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_get0_uids.3 (renamed from secure/lib/libcrypto/man/X509_get0_uids.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_get_extension_flags.3 (renamed from secure/lib/libcrypto/man/X509_get_extension_flags.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_get_pubkey.3 (renamed from secure/lib/libcrypto/man/X509_get_pubkey.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_get_serialNumber.3 (renamed from secure/lib/libcrypto/man/X509_get_serialNumber.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_get_subject_name.3 (renamed from secure/lib/libcrypto/man/X509_get_subject_name.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_get_version.3 (renamed from secure/lib/libcrypto/man/X509_get_version.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_new.3 (renamed from secure/lib/libcrypto/man/X509_new.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_sign.3 (renamed from secure/lib/libcrypto/man/X509_sign.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509_verify_cert.3 (renamed from secure/lib/libcrypto/man/X509_verify_cert.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/X509v3_get_ext_by_NID.3 (renamed from secure/lib/libcrypto/man/X509v3_get_ext_by_NID.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/d2i_DHparams.3 (renamed from secure/lib/libcrypto/man/d2i_DHparams.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/d2i_PKCS8PrivateKey_bio.3 (renamed from secure/lib/libcrypto/man/d2i_PKCS8PrivateKey_bio.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/d2i_PrivateKey.3 (renamed from secure/lib/libcrypto/man/d2i_PrivateKey.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/d2i_SSL_SESSION.3 (renamed from secure/lib/libcrypto/man/d2i_SSL_SESSION.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/d2i_X509.3 (renamed from secure/lib/libcrypto/man/d2i_X509.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/i2d_CMS_bio_stream.3 (renamed from secure/lib/libcrypto/man/i2d_CMS_bio_stream.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/i2d_PKCS7_bio_stream.3 (renamed from secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/i2d_re_X509_tbs.3 (renamed from secure/lib/libcrypto/man/i2d_re_X509_tbs.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man3/o2i_SCT_LIST.3 (renamed from secure/lib/libcrypto/man/o2i_SCT_LIST.3) | 0 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man5/Makefile | 3 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man5/x509v3_config.5 | 704 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man7/Ed25519.7 | 221 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man7/Makefile | 20 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man7/RAND.7 | 210 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man7/RAND_DRBG.7 | 396 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man7/RSA-PSS.7 | 189 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man7/SM2.7 | 217 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man7/X25519.7 | 208 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man7/bio.7 | 217 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man7/ct.7 | 185 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man7/des_modes.7 | 295 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man7/evp.7 | 236 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man7/ossl_store-file.7 | 191 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man7/ossl_store.7 | 215 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man7/passphrase-encoding.7 | 287 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man7/scrypt.7 | 248 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man7/ssl.7 | 914 | ||||
| -rw-r--r-- | secure/lib/libcrypto/man/man7/x509.7 | 206 | ||||
| -rw-r--r-- | share/man/man4/cpufreq.4 | 6 | ||||
| -rw-r--r-- | share/man/man4/hwpstate_intel.4 | 89 | ||||
| -rw-r--r-- | share/man/man4/netmap.4 | 6 | ||||
| -rw-r--r-- | share/man/man4/ng_nat.4 | 2 | ||||
| -rw-r--r-- | share/man/man9/Makefile | 1 | ||||
| -rw-r--r-- | share/man/man9/callout.9 | 6 | ||||
| -rw-r--r-- | share/man/man9/epoch.9 | 7 | ||||
| -rw-r--r-- | share/man/man9/fetch.9 | 8 | ||||
| -rw-r--r-- | share/termcap/Makefile | 3 | ||||
| -rw-r--r-- | stand/i386/libi386/bootinfo64.c | 1 | ||||
| -rw-r--r-- | stand/lua/config.lua | 7 | ||||
| -rw-r--r-- | stand/lua/loader.lua | 4 | ||||
| -rw-r--r-- | stand/usb/usbcore.mk | 4 | ||||
| -rw-r--r-- | sys/amd64/amd64/initcpu.c | 4 | ||||
| -rw-r--r-- | sys/amd64/linux32/linux32_machdep.c | 7 | ||||
| -rw-r--r-- | sys/amd64/linux32/linux32_proto.h | 33 | ||||
| -rw-r--r-- | sys/amd64/linux32/linux32_systrace_args.c | 114 | ||||
| -rw-r--r-- | sys/amd64/linux32/syscalls.master | 21 | ||||
| -rw-r--r-- | sys/arm64/arm64/elf_machdep.c | 42 | ||||
| -rw-r--r-- | sys/arm64/arm64/identcpu.c | 71 | ||||
| -rw-r--r-- | sys/arm64/arm64/mp_machdep.c | 6 | ||||
| -rw-r--r-- | sys/arm64/include/armreg.h | 56 | ||||
| -rw-r--r-- | sys/cam/cam_compat.h | 2 | ||||
| -rw-r--r-- | sys/compat/linux/linux_file.c | 116 | ||||
| -rw-r--r-- | sys/compat/linux/linux_mmap.c | 9 | ||||
| -rw-r--r-- | sys/compat/linux/linux_mmap.h | 1 | ||||
| -rw-r--r-- | sys/compat/linuxkpi/common/include/linux/mm_types.h | 6 | ||||
| -rw-r--r-- | sys/compat/ndis/ntoskrnl_var.h | 13 | ||||
| -rw-r--r-- | sys/conf/files | 1 | ||||
| -rw-r--r-- | sys/conf/files.riscv | 3 | ||||
| -rw-r--r-- | sys/conf/files.x86 | 3 | ||||
| -rw-r--r-- | sys/conf/kern.post.mk | 3 | ||||
| -rw-r--r-- | sys/conf/sysent.mk | 9 | ||||
| -rw-r--r-- | sys/conf/systags.sh | 4 | ||||
| -rw-r--r-- | sys/dev/altera/atse/if_atse.c | 3 | ||||
| -rw-r--r-- | sys/dev/ath/if_ath_rx.c | 3 | ||||
| -rw-r--r-- | sys/dev/beri/virtio/network/if_vtbe.c | 2 | ||||
| -rw-r--r-- | sys/dev/bge/if_bge.c | 3 | ||||
| -rw-r--r-- | sys/dev/dpaa/if_dtsec.c | 2 | ||||
| -rw-r--r-- | sys/dev/hyperv/netvsc/if_hn.c | 3 | ||||
| -rw-r--r-- | sys/dev/if_ndis/if_ndis.c | 3 | ||||
| -rw-r--r-- | sys/dev/mlx4/mlx4_en/mlx4_en_rx.c | 3 | ||||
| -rw-r--r-- | sys/dev/netmap/netmap.c | 5 | ||||
| -rw-r--r-- | sys/dev/ntb/if_ntb/if_ntb.c | 3 | ||||
| -rw-r--r-- | sys/dev/otus/if_otus.c | 3 | ||||
| -rw-r--r-- | sys/dev/pci/pci_host_generic.c | 17 | ||||
| -rw-r--r-- | sys/dev/pci/pci_host_generic.h | 17 | ||||
| -rw-r--r-- | sys/dev/pci/pci_host_generic_acpi.c | 8 | ||||
| -rw-r--r-- | sys/dev/pci/pci_host_generic_acpi.h | 47 | ||||
| -rw-r--r-- | sys/dev/re/if_re.c | 6 | ||||
| -rw-r--r-- | sys/dev/rtwn/usb/rtwn_usb_rx.c | 3 | ||||
| -rw-r--r-- | sys/dev/sbni/if_sbni.c | 3 | ||||
| -rw-r--r-- | sys/dev/spibus/spigen.c | 5 | ||||
| -rw-r--r-- | sys/dev/usb/serial/uslcom.c | 1 | ||||
| -rw-r--r-- | sys/dev/usb/usbdevs | 1 | ||||
| -rw-r--r-- | sys/dev/usb/wlan/if_rsu.c | 3 | ||||
| -rw-r--r-- | sys/dev/virtio/scsi/virtio_scsi.c | 2 | ||||
| -rw-r--r-- | sys/dev/virtio/scsi/virtio_scsivar.h | 5 | ||||
| -rw-r--r-- | sys/dev/vmware/vmxnet3/if_vmx.c | 100 | ||||
| -rw-r--r-- | sys/dev/vmware/vmxnet3/if_vmxvar.h | 2 | ||||
| -rw-r--r-- | sys/dev/xen/netback/netback.c | 2 | ||||
| -rw-r--r-- | sys/i386/i386/machdep.c | 5 | ||||
| -rw-r--r-- | sys/i386/linux/linux_machdep.c | 7 | ||||
| -rw-r--r-- | sys/kern/kern_cpu.c | 297 | ||||
| -rw-r--r-- | sys/kern/kern_intr.c | 39 | ||||
| -rw-r--r-- | sys/kern/kern_kcov.c | 5 | ||||
| -rw-r--r-- | sys/kern/kern_lock.c | 30 | ||||
| -rw-r--r-- | sys/kern/kern_poll.c | 6 | ||||
| -rw-r--r-- | sys/kern/kern_sendfile.c | 2 | ||||
| -rw-r--r-- | sys/kern/sched_ule.c | 9 | ||||
| -rw-r--r-- | sys/kern/uipc_ktls.c | 2 | ||||
| -rw-r--r-- | sys/kern/uipc_usrreq.c | 164 | ||||
| -rw-r--r-- | sys/kern/vfs_mount.c | 17 | ||||
| -rw-r--r-- | sys/kern/vfs_subr.c | 290 | ||||
| -rw-r--r-- | sys/mips/nlm/dev/net/xlpge.c | 3 | ||||
| -rw-r--r-- | sys/modules/cpufreq/Makefile | 2 | ||||
| -rw-r--r-- | sys/modules/usb/template/Makefile | 7 | ||||
| -rw-r--r-- | sys/modules/vmware/vmxnet3/Makefile | 2 | ||||
| -rw-r--r-- | sys/net/if.h | 2 | ||||
| -rw-r--r-- | sys/net/if_bridge.c | 22 | ||||
| -rw-r--r-- | sys/net/if_ethersubr.c | 6 | ||||
| -rw-r--r-- | sys/net/if_lagg.c | 24 | ||||
| -rw-r--r-- | sys/net/if_tuntap.c | 3 | ||||
| -rw-r--r-- | sys/net/if_vlan.c | 24 | ||||
| -rw-r--r-- | sys/net/iflib.c | 8 | ||||
| -rw-r--r-- | sys/net/netisr.c | 5 | ||||
| -rw-r--r-- | sys/net/pfil.c | 19 | ||||
| -rw-r--r-- | sys/net/route.c | 276 | ||||
| -rw-r--r-- | sys/net/route.h | 7 | ||||
| -rw-r--r-- | sys/net/route_temporal.c | 161 | ||||
| -rw-r--r-- | sys/net/route_var.h | 29 | ||||
| -rw-r--r-- | sys/netgraph/ng_nat.c | 1 | ||||
| -rw-r--r-- | sys/netinet/cc/cc_dctcp.c | 1 | ||||
| -rw-r--r-- | sys/netinet/in_pcb.c | 28 | ||||
| -rw-r--r-- | sys/netinet/in_rmx.c | 11 | ||||
| -rw-r--r-- | sys/netinet/in_var.h | 2 | ||||
| -rw-r--r-- | sys/netinet/ip_carp.c | 5 | ||||
| -rw-r--r-- | sys/netinet/ip_divert.c | 305 | ||||
| -rw-r--r-- | sys/netinet/ip_icmp.c | 98 | ||||
| -rw-r--r-- | sys/netinet/ip_output.c | 4 | ||||
| -rw-r--r-- | sys/netinet/libalias/alias.c | 10 | ||||
| -rw-r--r-- | sys/netinet/libalias/alias.h | 8 | ||||
| -rw-r--r-- | sys/netinet/libalias/libalias.3 | 5 | ||||
| -rw-r--r-- | sys/netinet/raw_ip.c | 9 | ||||
| -rw-r--r-- | sys/netinet/sctp_os_bsd.h | 6 | ||||
| -rw-r--r-- | sys/netinet/tcp_input.c | 10 | ||||
| -rw-r--r-- | sys/netinet/tcp_output.c | 2 | ||||
| -rw-r--r-- | sys/netinet/tcp_stacks/bbr.c | 2 | ||||
| -rw-r--r-- | sys/netinet/tcp_stacks/rack.c | 16 | ||||
| -rw-r--r-- | sys/netinet/tcp_stacks/rack_bbr_common.c | 2 | ||||
| -rw-r--r-- | sys/netinet/tcp_subr.c | 2 | ||||
| -rw-r--r-- | sys/netinet/tcp_syncache.c | 6 | ||||
| -rw-r--r-- | sys/netinet/tcp_timer.c | 11 | ||||
| -rw-r--r-- | sys/netinet/tcp_usrreq.c | 190 | ||||
| -rw-r--r-- | sys/netinet/toecore.c | 2 | ||||
| -rw-r--r-- | sys/netinet/udp_usrreq.c | 3 | ||||
| -rw-r--r-- | sys/netinet6/icmp6.c | 8 | ||||
| -rw-r--r-- | sys/netinet6/in6_fib.c | 2 | ||||
| -rw-r--r-- | sys/netinet6/in6_proto.c | 2 | ||||
| -rw-r--r-- | sys/netinet6/in6_rmx.c | 8 | ||||
| -rw-r--r-- | sys/netinet6/in6_var.h | 2 | ||||
| -rw-r--r-- | sys/netinet6/ip6_mroute.c | 21 | ||||
| -rw-r--r-- | sys/netinet6/ip6_output.c | 4 | ||||
| -rw-r--r-- | sys/netinet6/mld6.c | 1 | ||||
| -rw-r--r-- | sys/netinet6/raw_ip6.c | 3 | ||||
| -rw-r--r-- | sys/netinet6/udp6_usrreq.c | 3 | ||||
| -rw-r--r-- | sys/netpfil/pf/if_pfsync.c | 6 | ||||
| -rw-r--r-- | sys/netpfil/pf/pf_if.c | 14 | ||||
| -rw-r--r-- | sys/powerpc/pseries/phyp_llan.c | 2 | ||||
| -rw-r--r-- | sys/riscv/conf/DEFAULTS | 2 | ||||
| -rw-r--r-- | sys/riscv/conf/GENERIC | 3 | ||||
| -rw-r--r-- | sys/riscv/include/resource.h | 3 | ||||
| -rw-r--r-- | sys/sparc64/sparc64/machdep.c | 7 | ||||
| -rw-r--r-- | sys/sparc64/sparc64/pmap.c | 1 | ||||
| -rw-r--r-- | sys/sys/callout.h | 4 | ||||
| -rw-r--r-- | sys/sys/cpu.h | 5 | ||||
| -rw-r--r-- | sys/sys/elf_common.h | 4 | ||||
| -rw-r--r-- | sys/sys/interrupt.h | 3 | ||||
| -rw-r--r-- | sys/sys/syscallsubr.h | 1 | ||||
| -rw-r--r-- | sys/sys/unpcb.h | 8 | ||||
| -rw-r--r-- | sys/ufs/ffs/ffs_snapshot.c | 8 | ||||
| -rw-r--r-- | sys/vm/uma_core.c | 9 | ||||
| -rw-r--r-- | sys/vm/vm_fault.c | 1201 | ||||
| -rw-r--r-- | sys/vm/vm_glue.c | 10 | ||||
| -rw-r--r-- | sys/vm/vm_kern.c | 15 | ||||
| -rw-r--r-- | sys/vm/vm_map.c | 105 | ||||
| -rw-r--r-- | sys/vm/vm_object.c | 48 | ||||
| -rw-r--r-- | sys/vm/vm_param.h | 1 | ||||
| -rw-r--r-- | sys/x86/cpufreq/est.c | 12 | ||||
| -rw-r--r-- | sys/x86/cpufreq/hwpstate_amd.c (renamed from sys/x86/cpufreq/hwpstate.c) | 10 | ||||
| -rw-r--r-- | sys/x86/cpufreq/hwpstate_intel.c | 517 | ||||
| -rw-r--r-- | sys/x86/cpufreq/hwpstate_intel_internal.h | 35 | ||||
| -rw-r--r-- | sys/x86/include/cputypes.h | 1 | ||||
| -rw-r--r-- | sys/x86/include/specialreg.h | 1 | ||||
| -rw-r--r-- | sys/x86/x86/identcpu.c | 25 | ||||
| -rw-r--r-- | sys/x86/x86/local_apic.c | 3 | ||||
| -rw-r--r-- | sys/x86/x86/mca.c | 3 | ||||
| -rw-r--r-- | sys/x86/x86/mp_x86.c | 10 | ||||
| -rw-r--r-- | sys/x86/x86/msi.c | 1 | ||||
| -rw-r--r-- | sys/x86/x86/tsc.c | 5 | ||||
| -rw-r--r-- | tests/Makefile | 3 | ||||
| -rw-r--r-- | tests/sys/net/routing/Makefile | 2 | ||||
| -rw-r--r-- | tests/sys/net/routing/test_rtsock_l3.c | 10 | ||||
| -rw-r--r-- | tests/sys/netinet/Makefile | 6 | ||||
| -rwxr-xr-x | tests/sys/netinet/redirect.py | 85 | ||||
| -rwxr-xr-x | tests/sys/netinet/redirect.sh | 112 | ||||
| -rw-r--r-- | tests/sys/netinet6/Makefile | 5 | ||||
| -rw-r--r-- | tests/sys/netinet6/redirect.py | 84 | ||||
| -rw-r--r-- | tests/sys/netinet6/redirect.sh | 114 | ||||
| -rw-r--r-- | usr.sbin/ntp/libntpevent/Makefile | 8 | ||||
| -rw-r--r-- | usr.sbin/wpa/wpa_supplicant/Makefile | 34 |
685 files changed, 13366 insertions, 5793 deletions
diff --git a/Makefile.inc1 b/Makefile.inc1 index c7346cc8d5800..b35a9db01739c 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -180,24 +180,6 @@ MK_SYSTEM_LINKER= no .if defined(CROSS_TOOLCHAIN_PREFIX) CROSS_BINUTILS_PREFIX?=${CROSS_TOOLCHAIN_PREFIX} .endif -# If we do not have a bootstrap binutils (because the in-tree one does not -# support the target architecture), provide a default cross-binutils prefix. -# This allows riscv64 builds, for example, to automatically use the -# riscv64-binutils port or package. -.if !make(showconfig) && !defined(_NO_INCLUDE_COMPILERMK) -.if !empty(BROKEN_OPTIONS:MBINUTILS_BOOTSTRAP) && \ - ${MK_LLD_BOOTSTRAP} == "no" && \ - !defined(CROSS_BINUTILS_PREFIX) -CROSS_BINUTILS_PREFIX=/usr/local/${TARGET_TRIPLE}/bin/ -.if !exists(${CROSS_BINUTILS_PREFIX}) -.if !empty(BROKEN_OPTIONS:MGCC_BOOTSTRAP) && ${MK_CLANG_BOOTSTRAP} == "no" -.error In-tree toolchain does not support the ${TARGET_ARCH} architecture. Install the ${TARGET_ARCH}-xtoolchain-gcc port or package or set CROSS_TOOLCHAIN_PREFIX. -.else -.error In-tree binutils does not support the ${TARGET_ARCH} architecture. Install the ${TARGET_ARCH}-binutils port or package or set CROSS_BINUTILS_PREFIX. -.endif -.endif -.endif -.endif XBINUTILS= AS AR LD NM OBJCOPY RANLIB SIZE STRINGS .for BINUTIL in ${XBINUTILS} .if defined(CROSS_BINUTILS_PREFIX) && \ diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 40bcf403ad431..b961b53ab0924 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -282,6 +282,7 @@ OLD_DIRS+=usr/lib/clang/9.0.0 # 20191214: Removal of sranddev(3) OLD_FILES+=usr/share/man/man3/sranddev.3.gz # 20191213: remove timeout(9) +OLD_FILES+=usr/share/man/man9/callout_handle_init.9.gz OLD_FILES+=usr/share/man/man9/timeout.9.gz OLD_FILES+=usr/share/man/man9/untimeout.9.gz # 20191128: Removal of trm(4) diff --git a/etc/Makefile b/etc/Makefile index 8cef7c89c19c6..dbb53309dca69 100644 --- a/etc/Makefile +++ b/etc/Makefile @@ -57,7 +57,7 @@ distribution: ${_+_}cd ${.CURDIR}/mtree; ${MAKE} install ${_+_}cd ${SRCTOP}/share/termcap; ${MAKE} etc-termcap ${_+_}cd ${SRCTOP}/usr.sbin/rmt; ${MAKE} etc-rmt - ${INSTALL_SYMLINK} ../var/run/os-release \ + ${INSTALL_SYMLINK} -T "package=runtime" ../var/run/os-release \ ${DESTDIR}/etc/os-release .if ${MK_UNBOUND} != "no" if [ ! -e ${DESTDIR}/etc/unbound ]; then \ @@ -164,7 +164,8 @@ distrib-dirs: ${MTREES:N/*} distrib-cleanup .PHONY .endif .if ${MK_NLS} != "no" .for alias nls in ${NLS_ALIASES} - ${INSTALL_SYMLINK} "${nls}" "${DESTDIR}${SHAREDIR}/nls/${alias}" + ${INSTALL_SYMLINK} -T "package=utilities" \ + "${nls}" "${DESTDIR}${SHAREDIR}/nls/${alias}" .endfor .endif diff --git a/etc/mtree/BSD.usr.dist b/etc/mtree/BSD.usr.dist index 46ff374c1d42c..522bf1cd59037 100644 --- a/etc/mtree/BSD.usr.dist +++ b/etc/mtree/BSD.usr.dist @@ -1176,6 +1176,10 @@ .. man3 .. + man5 + .. + man7 + .. .. .. security diff --git a/include/unistd.h b/include/unistd.h index 1f1f8a7cebd47..5a4991ef9fe1d 100644 --- a/include/unistd.h +++ b/include/unistd.h @@ -552,7 +552,7 @@ char *re_comp(const char *); int re_exec(const char *); int reboot(int); int revoke(const char *); -pid_t rfork(int); +pid_t rfork(int) __returns_twice; pid_t rfork_thread(int, void *, int (*)(void *), void *); int rresvport(int *); int rresvport_af(int *, int); diff --git a/lib/libbe/be.c b/lib/libbe/be.c index 804809db7a554..a5c112c238e57 100644 --- a/lib/libbe/be.c +++ b/lib/libbe/be.c @@ -2,7 +2,6 @@ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2017 Kyle J. Kneitinger <kyle@kneit.in> - * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/lib/libbe/be.h b/lib/libbe/be.h index 1752b1fb4b43f..3a99c177e4bd7 100644 --- a/lib/libbe/be.h +++ b/lib/libbe/be.h @@ -2,7 +2,6 @@ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2017 Kyle J. Kneitinger <kyle@kneit.in> - * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/lib/libbe/be_access.c b/lib/libbe/be_access.c index 47fbd63c87b0a..60375d0cbc12c 100644 --- a/lib/libbe/be_access.c +++ b/lib/libbe/be_access.c @@ -4,7 +4,6 @@ * Copyright (c) 2017 Kyle J. Kneitinger <kyle@kneit.in> * Copyright (c) 2018 Kyle Evans <kevans@FreeBSD.org> * Copyright (c) 2019 Wes Maag <wes@jwmaag.org> - * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/lib/libbe/be_error.c b/lib/libbe/be_error.c index e7f7607c6ba01..b625092addaca 100644 --- a/lib/libbe/be_error.c +++ b/lib/libbe/be_error.c @@ -2,7 +2,6 @@ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2017 Kyle J. Kneitinger <kyle@kneit.in> - * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/lib/libbe/be_impl.h b/lib/libbe/be_impl.h index a28981ba0f324..98fd3b29f9320 100644 --- a/lib/libbe/be_impl.h +++ b/lib/libbe/be_impl.h @@ -2,7 +2,6 @@ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2017 Kyle J. Kneitinger <kyle@kneit.in> - * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/lib/libbe/be_info.c b/lib/libbe/be_info.c index b1625e68fc15d..7f1b58a071ca4 100644 --- a/lib/libbe/be_info.c +++ b/lib/libbe/be_info.c @@ -3,7 +3,6 @@ * * Copyright (c) 2017 Kyle J. Kneitinger <kyle@kneit.in> * Copyright (c) 2018 Kyle Evans <kevans@FreeBSD.org> - * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/lib/libbe/libbe.3 b/lib/libbe/libbe.3 index 8a63fd52d2ca8..0a93b30dbcbc3 100644 --- a/lib/libbe/libbe.3 +++ b/lib/libbe/libbe.3 @@ -2,7 +2,6 @@ .\" SPDX-License-Identifier: BSD-2-Clause-FreeBSD .\" .\" Copyright (c) 2017 Kyle Kneitinger -.\" All rights reserved. .\" Copyright (c) 2018 Kyle Evans <kevans@FreeBSD.org> .\" .\" Redistribution and use in source and binary forms, with or without diff --git a/lib/libbe/tests/target_prog.c b/lib/libbe/tests/target_prog.c index 71184c6ba3964..f51768a253da5 100644 --- a/lib/libbe/tests/target_prog.c +++ b/lib/libbe/tests/target_prog.c @@ -2,7 +2,6 @@ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2019 Rob Wing - * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/lib/libc/gen/auxv.c b/lib/libc/gen/auxv.c index 61dac29e53270..cd161c9e0a8ca 100644 --- a/lib/libc/gen/auxv.c +++ b/lib/libc/gen/auxv.c @@ -73,6 +73,12 @@ static char *canary, *pagesizes, *execpath; static void *timekeep; static u_long hwcap, hwcap2; +#ifdef __powerpc__ +static int powerpc_new_auxv_format = 0; +static void _init_aux_powerpc_fixup(void); +int _powerpc_elf_aux_info(int, void *, int); +#endif + static void init_aux(void) { @@ -125,11 +131,107 @@ init_aux(void) case AT_TIMEKEEP: timekeep = aux->a_un.a_ptr; break; +#ifdef __powerpc__ + /* + * Since AT_STACKPROT is always set, and the common + * value 23 is mutually exclusive with the legacy powerpc + * value 21, the existence of AT_STACKPROT proves we are + * on the common format. + */ + case AT_STACKPROT: /* 23 */ + powerpc_new_auxv_format = 1; + break; +#endif + } + } +#ifdef __powerpc__ + if (!powerpc_new_auxv_format) + _init_aux_powerpc_fixup(); +#endif +} + +#ifdef __powerpc__ +static void +_init_aux_powerpc_fixup(void) +{ + Elf_Auxinfo *aux; + + /* + * Before 1300070, PowerPC platforms had nonstandard numbering for + * the aux vector. When running old binaries, the kernel will pass + * the vector using the old numbering. Reload affected variables. + */ + for (aux = __elf_aux_vector; aux->a_type != AT_NULL; aux++) { + switch (aux->a_type) { + case AT_OLD_CANARY: + canary = (char *)(aux->a_un.a_ptr); + break; + case AT_OLD_CANARYLEN: + canary_len = aux->a_un.a_val; + break; + case AT_OLD_EXECPATH: + execpath = (char *)(aux->a_un.a_ptr); + break; + case AT_OLD_PAGESIZES: + pagesizes = (char *)(aux->a_un.a_ptr); + break; + case AT_OLD_PAGESIZESLEN: + pagesizes_len = aux->a_un.a_val; + break; + case AT_OLD_OSRELDATE: + osreldate = aux->a_un.a_val; + break; + case AT_OLD_NCPUS: + ncpus = aux->a_un.a_val; + break; } } } +int +_powerpc_elf_aux_info(int aux, void *buf, int buflen) +{ + + /* + * If we are in the old auxv format, we need to translate the aux + * parameter of elf_aux_info() calls into the common auxv format. + * Internal libc calls always use the common format, and they + * directly call _elf_aux_info instead of using the weak symbol. + */ + if (!powerpc_new_auxv_format) { + switch (aux) { + case AT_OLD_EXECPATH: + aux = AT_EXECPATH; + break; + case AT_OLD_CANARY: + aux = AT_CANARY; + break; + case AT_OLD_CANARYLEN: + aux = AT_CANARYLEN; + break; + case AT_OLD_OSRELDATE: + aux = AT_OSRELDATE; + break; + case AT_OLD_NCPUS: + aux = AT_NCPUS; + break; + case AT_OLD_PAGESIZES: + aux = AT_PAGESIZES; + break; + case AT_OLD_PAGESIZESLEN: + aux = AT_PAGESIZESLEN; + break; + case AT_OLD_STACKPROT: + aux = AT_STACKPROT; + break; + } + } + return _elf_aux_info(aux, buf, buflen); +} +__weak_reference(_powerpc_elf_aux_info, elf_aux_info); +#else __weak_reference(_elf_aux_info, elf_aux_info); +#endif int _elf_aux_info(int aux, void *buf, int buflen) diff --git a/lib/libc/gen/posix_spawn.c b/lib/libc/gen/posix_spawn.c index fb83bbebe85cc..02b13dc190e57 100644 --- a/lib/libc/gen/posix_spawn.c +++ b/lib/libc/gen/posix_spawn.c @@ -201,7 +201,7 @@ struct posix_spawn_args { char * const * argv; char * const * envp; int use_env_path; - int error; + volatile int error; }; #if defined(__i386__) || defined(__amd64__) diff --git a/lib/libc/gen/ualarm.c b/lib/libc/gen/ualarm.c index a0b149547573f..e1353176845f0 100644 --- a/lib/libc/gen/ualarm.c +++ b/lib/libc/gen/ualarm.c @@ -56,6 +56,5 @@ ualarm(useconds_t usecs, useconds_t reload) if (setitimer(ITIMER_REAL, &new, &old) == 0) return (old.it_value.tv_sec * USPS + old.it_value.tv_usec); - /* else */ - return (-1); + return (-1); } diff --git a/lib/libc/stdlib/rand.c b/lib/libc/stdlib/rand.c index 3722e850549c4..0d38a579b168c 100644 --- a/lib/libc/stdlib/rand.c +++ b/lib/libc/stdlib/rand.c @@ -45,10 +45,6 @@ __FBSDID("$FreeBSD$"); #include <syslog.h> #include "un-namespace.h" -#ifdef TEST -#include <stdio.h> -#endif /* TEST */ - static int do_rand(unsigned long *ctx) { @@ -116,33 +112,3 @@ __sranddev_fbsd12(void) } } __sym_compat(sranddev, __sranddev_fbsd12, FBSD_1.0); - - -#ifdef TEST - -main() -{ - int i; - unsigned myseed; - - printf("seeding rand with 0x19610910: \n"); - srand(0x19610910); - - printf("generating three pseudo-random numbers:\n"); - for (i = 0; i < 3; i++) - { - printf("next random number = %d\n", rand()); - } - - printf("generating the same sequence with rand_r:\n"); - myseed = 0x19610910; - for (i = 0; i < 3; i++) - { - printf("next random number = %d\n", rand_r(&myseed)); - } - - return 0; -} - -#endif /* TEST */ - diff --git a/lib/libc/stdlib/random.3 b/lib/libc/stdlib/random.3 index b42e5d3d2a2e9..82d21d1b048bd 100644 --- a/lib/libc/stdlib/random.3 +++ b/lib/libc/stdlib/random.3 @@ -28,7 +28,7 @@ .\" @(#)random.3 8.1 (Berkeley) 6/4/93 .\" $FreeBSD$ .\" -.Dd April 22, 2019 +.Dd January 20, 2020 .Dt RANDOM 3 .Os .Sh NAME @@ -60,7 +60,7 @@ Applications which require unpredictable random numbers should use instead. .Ef .Pp -The +Unless initialized with less than 32 bytes of state, the .Fn random function uses a non-linear additive feedback random number generator employing a @@ -72,53 +72,51 @@ The period of this random number generator is very large, approximately .if t 16\(mu(2\u\s731\s10\d\(mi1). .if n 16*((2**31)\(mi1). .Pp +If initialized with less than 32 bytes of state, +.Fn random +uses the same poor-quality Park-Miller LCG as +.Xr rand 3 . +.Pp The .Fn random and .Fn srandom -functions have (almost) the same calling sequence and initialization properties as the +functions are analagous to .Xr rand 3 and -.Xr srand 3 -functions. +.Xr srand 3 . The difference is that .Xr rand 3 -produces a much less random sequence \(em in fact, the low dozen bits -generated by rand go through a cyclic pattern. -All the bits generated by -.Fn random -are usable. -For example, -.Sq Li random()&01 -will produce a random binary -value. +is a worse pseudo-random number generator. .Pp Like .Xr rand 3 , .Fn random -will by default produce a sequence of numbers that can be duplicated -by calling -.Fn srandom -with -.Ql 1 -as the seed. +is implicitly initialized as if +.Fn srandom "1" +had been invoked explicitly. .Pp The .Fn srandomdev -routine initializes a state array using -pseudo-random numbers obtained from the kernel. -Note that this particular seeding -procedure can generate states which are impossible to reproduce by -calling -.Fn srandom -with any value, since the succeeding terms in the -state buffer are no longer derived from the LC algorithm applied to -a fixed seed. +routine initializes the state array using random numbers obtained from the +kernel. +This can generate states which are impossible to reproduce by calling +.Fn srandom , +because the succeeding terms in the state buffer are no longer derived from the +Park-Miller LCG algorithm applied to a fixed seed. .Pp The .Fn initstate -routine allows a state array, passed in as an argument, to be initialized -for future use. +routine initializes the provided state array of +.Vt uint32_t +values and uses it in future +.Fn random +invocations. +(Despite the +.Vt char * +type of +.Fa state , +the underlying object must be a naturally aligned array of 32-bit values.) The size of the state array (in bytes) is used by .Fn initstate to decide how sophisticated a random number generator it should use \(em the @@ -127,26 +125,21 @@ more state, the better the random numbers will be. 8, 32, 64, 128, and 256 bytes; other amounts will be rounded down to the nearest known amount. Using less than 8 bytes will cause an error.) -The seed for the initialization (which specifies a starting point for -the random number sequence, and provides for restarting at the same -point) is also an argument. +The +.Fa seed +is used as in +.Fn srandom . The .Fn initstate function returns a pointer to the previous state information array. .Pp -Once a state has been initialized, the -.Fn setstate -routine provides for rapid switching between states. The .Fn setstate -function -returns a pointer to the previous state array; its -argument state array is used for further random number generation -until the next call to -.Fn initstate -or -.Fn setstate . +routine switches +.Fn random +to using the provided state. +It returns a pointer to the previous state. .Pp Once a state array has been initialized, it may be restarted at a different point either by calling diff --git a/lib/libc/stdlib/random.c b/lib/libc/stdlib/random.c index 5e8a1ceaf2546..d24e4c32a56da 100644 --- a/lib/libc/stdlib/random.c +++ b/lib/libc/stdlib/random.c @@ -38,10 +38,13 @@ __FBSDID("$FreeBSD$"); #include "namespace.h" #include <sys/param.h> #include <sys/sysctl.h> +#include <errno.h> #include <stdint.h> #include <stdlib.h> #include "un-namespace.h" +#include "random.h" + /* * random.c: * @@ -157,52 +160,58 @@ static const int seps [MAX_TYPES] = { SEP_0, SEP_1, SEP_2, SEP_3, SEP_4 }; * * MAX_TYPES * (rptr - state) + TYPE_3 == TYPE_3. */ +static struct __random_state implicit = { + .rst_randtbl = { + TYPE_3, + 0x2cf41758, 0x27bb3711, 0x4916d4d1, 0x7b02f59f, 0x9b8e28eb, 0xc0e80269, + 0x696f5c16, 0x878f1ff5, 0x52d9c07f, 0x916a06cd, 0xb50b3a20, 0x2776970a, + 0xee4eb2a6, 0xe94640ec, 0xb1d65612, 0x9d1ed968, 0x1043f6b7, 0xa3432a76, + 0x17eacbb9, 0x3c09e2eb, 0x4f8c2b3, 0x708a1f57, 0xee341814, 0x95d0e4d2, + 0xb06f216c, 0x8bd2e72e, 0x8f7c38d7, 0xcfc6a8fc, 0x2a59495, 0xa20d2a69, + 0xe29d12d1 + }, -static uint32_t randtbl[DEG_3 + 1] = { - TYPE_3, - 0x2cf41758, 0x27bb3711, 0x4916d4d1, 0x7b02f59f, 0x9b8e28eb, 0xc0e80269, - 0x696f5c16, 0x878f1ff5, 0x52d9c07f, 0x916a06cd, 0xb50b3a20, 0x2776970a, - 0xee4eb2a6, 0xe94640ec, 0xb1d65612, 0x9d1ed968, 0x1043f6b7, 0xa3432a76, - 0x17eacbb9, 0x3c09e2eb, 0x4f8c2b3, 0x708a1f57, 0xee341814, 0x95d0e4d2, - 0xb06f216c, 0x8bd2e72e, 0x8f7c38d7, 0xcfc6a8fc, 0x2a59495, 0xa20d2a69, - 0xe29d12d1 -}; + /* + * fptr and rptr are two pointers into the state info, a front and a rear + * pointer. These two pointers are always rand_sep places aparts, as they + * cycle cyclically through the state information. (Yes, this does mean we + * could get away with just one pointer, but the code for random() is more + * efficient this way). The pointers are left positioned as they would be + * from the call + * + * initstate(1, randtbl, 128); + * + * (The position of the rear pointer, rptr, is really 0 (as explained above + * in the initialization of randtbl) because the state table pointer is set + * to point to randtbl[1] (as explained below). + */ + .rst_fptr = &implicit.rst_randtbl[SEP_3 + 1], + .rst_rptr = &implicit.rst_randtbl[1], -/* - * fptr and rptr are two pointers into the state info, a front and a rear - * pointer. These two pointers are always rand_sep places aparts, as they - * cycle cyclically through the state information. (Yes, this does mean we - * could get away with just one pointer, but the code for random() is more - * efficient this way). The pointers are left positioned as they would be - * from the call - * - * initstate(1, randtbl, 128); - * - * (The position of the rear pointer, rptr, is really 0 (as explained above - * in the initialization of randtbl) because the state table pointer is set - * to point to randtbl[1] (as explained below). - */ -static uint32_t *fptr = &randtbl[SEP_3 + 1]; -static uint32_t *rptr = &randtbl[1]; + /* + * The following things are the pointer to the state information table, the + * type of the current generator, the degree of the current polynomial being + * used, and the separation between the two pointers. Note that for efficiency + * of random(), we remember the first location of the state information, not + * the zeroeth. Hence it is valid to access state[-1], which is used to + * store the type of the R.N.G. Also, we remember the last location, since + * this is more efficient than indexing every time to find the address of + * the last element to see if the front and rear pointers have wrapped. + */ + .rst_state = &implicit.rst_randtbl[1], + .rst_type = TYPE_3, + .rst_deg = DEG_3, + .rst_sep = SEP_3, + .rst_end_ptr = &implicit.rst_randtbl[DEG_3 + 1], +}; /* - * The following things are the pointer to the state information table, the - * type of the current generator, the degree of the current polynomial being - * used, and the separation between the two pointers. Note that for efficiency - * of random(), we remember the first location of the state information, not - * the zeroeth. Hence it is valid to access state[-1], which is used to - * store the type of the R.N.G. Also, we remember the last location, since - * this is more efficient than indexing every time to find the address of - * the last element to see if the front and rear pointers have wrapped. + * This is the same low quality PRNG used in rand(3) in FreeBSD 12 and prior. + * It may be sufficient for distributing bits and expanding a small seed + * integer into a larger state. */ -static uint32_t *state = &randtbl[1]; -static int rand_type = TYPE_3; -static int rand_deg = DEG_3; -static int rand_sep = SEP_3; -static uint32_t *end_ptr = &randtbl[DEG_3 + 1]; - static inline uint32_t -good_rand(uint32_t ctx) +parkmiller32(uint32_t ctx) { /* * Compute x = (7^5 * x) mod (2^31 - 1) @@ -238,22 +247,29 @@ good_rand(uint32_t ctx) * for default usage relies on values produced by this routine. */ void -srandom(unsigned int x) +srandom_r(struct __random_state *estate, unsigned x) { int i, lim; - state[0] = (uint32_t)x; - if (rand_type == TYPE_0) + estate->rst_state[0] = (uint32_t)x; + if (estate->rst_type == TYPE_0) lim = NSHUFF; else { - for (i = 1; i < rand_deg; i++) - state[i] = good_rand(state[i - 1]); - fptr = &state[rand_sep]; - rptr = &state[0]; - lim = 10 * rand_deg; + for (i = 1; i < estate->rst_deg; i++) + estate->rst_state[i] = + parkmiller32(estate->rst_state[i - 1]); + estate->rst_fptr = &estate->rst_state[estate->rst_sep]; + estate->rst_rptr = &estate->rst_state[0]; + lim = 10 * estate->rst_deg; } for (i = 0; i < lim; i++) - (void)random(); + (void)random_r(estate); +} + +void +srandom(unsigned x) +{ + srandom_r(&implicit, x); } /* @@ -269,19 +285,21 @@ srandom(unsigned int x) * derived from the LC algorithm applied to a fixed seed. */ void -srandomdev(void) +srandomdev_r(struct __random_state *estate) { int mib[2]; size_t expected, len; - if (rand_type == TYPE_0) - expected = len = sizeof(state[0]); + if (estate->rst_type == TYPE_0) + len = sizeof(estate->rst_state[0]); else - expected = len = rand_deg * sizeof(state[0]); + len = estate->rst_deg * sizeof(estate->rst_state[0]); + expected = len; mib[0] = CTL_KERN; mib[1] = KERN_ARND; - if (sysctl(mib, 2, state, &len, NULL, 0) == -1 || len != expected) { + if (sysctl(mib, 2, estate->rst_state, &len, NULL, 0) == -1 || + len != expected) { /* * The sysctl cannot fail. If it does fail on some FreeBSD * derivative or after some future change, just abort so that @@ -291,14 +309,20 @@ srandomdev(void) abort(); } - if (rand_type != TYPE_0) { - fptr = &state[rand_sep]; - rptr = &state[0]; + if (estate->rst_type != TYPE_0) { + estate->rst_fptr = &estate->rst_state[estate->rst_sep]; + estate->rst_rptr = &estate->rst_state[0]; } } +void +srandomdev(void) +{ + srandomdev_r(&implicit); +} + /* - * initstate: + * initstate_r: * * Initialize the state information in the given array of n bytes for future * random number generation. Based on the number of bytes we are given, and @@ -306,60 +330,95 @@ srandomdev(void) * one we can and set things up for it. srandom() is then called to * initialize the state information. * - * Note that on return from srandom(), we set state[-1] to be the type - * multiplexed with the current value of the rear pointer; this is so - * successive calls to initstate() won't lose this information and will be - * able to restart with setstate(). + * Returns zero on success, or an error number on failure. + * + * Note: There is no need for a setstate_r(); just use a new context. + */ +int +initstate_r(struct __random_state *estate, unsigned seed, uint32_t *arg_state, + size_t sz) +{ + if (sz < BREAK_0) + return (EINVAL); + + if (sz < BREAK_1) { + estate->rst_type = TYPE_0; + estate->rst_deg = DEG_0; + estate->rst_sep = SEP_0; + } else if (sz < BREAK_2) { + estate->rst_type = TYPE_1; + estate->rst_deg = DEG_1; + estate->rst_sep = SEP_1; + } else if (sz < BREAK_3) { + estate->rst_type = TYPE_2; + estate->rst_deg = DEG_2; + estate->rst_sep = SEP_2; + } else if (sz < BREAK_4) { + estate->rst_type = TYPE_3; + estate->rst_deg = DEG_3; + estate->rst_sep = SEP_3; + } else { + estate->rst_type = TYPE_4; + estate->rst_deg = DEG_4; + estate->rst_sep = SEP_4; + } + estate->rst_state = arg_state + 1; + estate->rst_end_ptr = &estate->rst_state[estate->rst_deg]; + srandom_r(estate, seed); + return (0); +} + +/* + * initstate: * * Note: the first thing we do is save the current state, if any, just like * setstate() so that it doesn't matter when initstate is called. * + * Note that on return from initstate_r(), we set state[-1] to be the type + * multiplexed with the current value of the rear pointer; this is so + * successive calls to initstate() won't lose this information and will be able + * to restart with setstate(). + * * Returns a pointer to the old state. * - * Note: The Sparc platform requires that arg_state begin on an int - * word boundary; otherwise a bus error will occur. Even so, lint will - * complain about mis-alignment, but you should disregard these messages. + * Despite the misleading "char *" type, arg_state must alias an array of + * 32-bit unsigned integer values. Naturally, such an array is 32-bit aligned. + * Usually objects are naturally aligned to at least 32-bits on all platforms, + * but if you treat the provided 'state' as char* you may inadvertently + * misalign it. Don't do that. */ char * initstate(unsigned int seed, char *arg_state, size_t n) { - char *ostate = (char *)(&state[-1]); + char *ostate = (char *)(&implicit.rst_state[-1]); uint32_t *int_arg_state = (uint32_t *)arg_state; + int error; - if (n < BREAK_0) - return (NULL); - if (rand_type == TYPE_0) - state[-1] = rand_type; + /* + * Persist rptr offset and rst_type in the first word of the prior + * state we are replacing. + */ + if (implicit.rst_type == TYPE_0) + implicit.rst_state[-1] = implicit.rst_type; else - state[-1] = MAX_TYPES * (rptr - state) + rand_type; - if (n < BREAK_1) { - rand_type = TYPE_0; - rand_deg = DEG_0; - rand_sep = SEP_0; - } else if (n < BREAK_2) { - rand_type = TYPE_1; - rand_deg = DEG_1; - rand_sep = SEP_1; - } else if (n < BREAK_3) { - rand_type = TYPE_2; - rand_deg = DEG_2; - rand_sep = SEP_2; - } else if (n < BREAK_4) { - rand_type = TYPE_3; - rand_deg = DEG_3; - rand_sep = SEP_3; - } else { - rand_type = TYPE_4; - rand_deg = DEG_4; - rand_sep = SEP_4; - } - state = int_arg_state + 1; /* first location */ - end_ptr = &state[rand_deg]; /* must set end_ptr before srandom */ - srandom(seed); - if (rand_type == TYPE_0) - int_arg_state[0] = rand_type; + implicit.rst_state[-1] = MAX_TYPES * + (implicit.rst_rptr - implicit.rst_state) + + implicit.rst_type; + + error = initstate_r(&implicit, seed, int_arg_state, n); + if (error != 0) + return (NULL); + + /* + * Persist rptr offset and rst_type of the new state in its first word. + */ + if (implicit.rst_type == TYPE_0) + int_arg_state[0] = implicit.rst_type; else - int_arg_state[0] = MAX_TYPES * (rptr - state) + rand_type; + int_arg_state[0] = MAX_TYPES * + (implicit.rst_rptr - implicit.rst_state) + + implicit.rst_type; + return (ostate); } @@ -388,23 +447,26 @@ setstate(char *arg_state) uint32_t *new_state = (uint32_t *)arg_state; uint32_t type = new_state[0] % MAX_TYPES; uint32_t rear = new_state[0] / MAX_TYPES; - char *ostate = (char *)(&state[-1]); + char *ostate = (char *)(&implicit.rst_state[-1]); if (type != TYPE_0 && rear >= degrees[type]) return (NULL); - if (rand_type == TYPE_0) - state[-1] = rand_type; + if (implicit.rst_type == TYPE_0) + implicit.rst_state[-1] = implicit.rst_type; else - state[-1] = MAX_TYPES * (rptr - state) + rand_type; - rand_type = type; - rand_deg = degrees[type]; - rand_sep = seps[type]; - state = new_state + 1; - if (rand_type != TYPE_0) { - rptr = &state[rear]; - fptr = &state[(rear + rand_sep) % rand_deg]; + implicit.rst_state[-1] = MAX_TYPES * + (implicit.rst_rptr - implicit.rst_state) + + implicit.rst_type; + implicit.rst_type = type; + implicit.rst_deg = degrees[type]; + implicit.rst_sep = seps[type]; + implicit.rst_state = new_state + 1; + if (implicit.rst_type != TYPE_0) { + implicit.rst_rptr = &implicit.rst_state[rear]; + implicit.rst_fptr = &implicit.rst_state[ + (rear + implicit.rst_sep) % implicit.rst_deg]; } - end_ptr = &state[rand_deg]; /* set end_ptr too */ + implicit.rst_end_ptr = &implicit.rst_state[implicit.rst_deg]; return (ostate); } @@ -426,30 +488,39 @@ setstate(char *arg_state) * Returns a 31-bit random number. */ long -random(void) +random_r(struct __random_state *estate) { uint32_t i; uint32_t *f, *r; - if (rand_type == TYPE_0) { - i = state[0]; - state[0] = i = good_rand(i); + if (estate->rst_type == TYPE_0) { + i = estate->rst_state[0]; + i = parkmiller32(i); + estate->rst_state[0] = i; } else { /* * Use local variables rather than static variables for speed. */ - f = fptr; r = rptr; + f = estate->rst_fptr; + r = estate->rst_rptr; *f += *r; i = *f >> 1; /* chucking least random bit */ - if (++f >= end_ptr) { - f = state; + if (++f >= estate->rst_end_ptr) { + f = estate->rst_state; ++r; } - else if (++r >= end_ptr) { - r = state; + else if (++r >= estate->rst_end_ptr) { + r = estate->rst_state; } - fptr = f; rptr = r; + estate->rst_fptr = f; + estate->rst_rptr = r; } return ((long)i); } + +long +random(void) +{ + return (random_r(&implicit)); +} diff --git a/lib/libc/stdlib/random.h b/lib/libc/stdlib/random.h new file mode 100644 index 0000000000000..ae5f662dfde28 --- /dev/null +++ b/lib/libc/stdlib/random.h @@ -0,0 +1,46 @@ +/*- + * Copyright 2020 Conrad Meyer <cem@FreeBSD.org>. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#pragma once + +/* A full instance of the random(3) generator. */ +struct __random_state { + uint32_t *rst_fptr; + uint32_t *rst_rptr; + uint32_t *rst_state; + int rst_type; + int rst_deg; + int rst_sep; + uint32_t *rst_end_ptr; + /* Flexible array member must be last. */ + uint32_t rst_randtbl[]; +}; + +int initstate_r(struct __random_state *, unsigned, uint32_t *, size_t); +long random_r(struct __random_state *); +void srandom_r(struct __random_state *, unsigned); +void srandomdev_r(struct __random_state *); diff --git a/libexec/rc/rc.d/ipfw b/libexec/rc/rc.d/ipfw index 64643f0438e22..df14b7eaa0d41 100755 --- a/libexec/rc/rc.d/ipfw +++ b/libexec/rc/rc.d/ipfw @@ -127,7 +127,11 @@ ipfw_stop() ipfw_status() { status=$(sysctl -i -n net.inet.ip.fw.enable) - if [ ${status:-0} -eq 0 ]; then + : ${status:=0} + if afexists inet6; then + status=$((${status} + $(sysctl -i -n net.inet6.ip6.fw.enable))) + fi + if [ ${status} -eq 0 ]; then echo "ipfw is not enabled" exit 1 else diff --git a/sbin/bectl/bectl.8 b/sbin/bectl/bectl.8 index 99116e22982fc..1315fa71d97f0 100644 --- a/sbin/bectl/bectl.8 +++ b/sbin/bectl/bectl.8 @@ -2,7 +2,6 @@ .\" SPDX-License-Identifier: BSD-2-Clause-FreeBSD .\" .\" Copyright (c) 2017 Kyle J. Kneitinger <kyle@kneit.in> -.\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions diff --git a/sbin/bectl/bectl.c b/sbin/bectl/bectl.c index 3ce385221a928..71108b9c08552 100644 --- a/sbin/bectl/bectl.c +++ b/sbin/bectl/bectl.c @@ -2,7 +2,6 @@ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2017 Kyle J. Kneitinger <kyle@kneit.in> - * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/sbin/ipfw/ipfw.8 b/sbin/ipfw/ipfw.8 index bcc8017a571b2..ea35a27678450 100644 --- a/sbin/ipfw/ipfw.8 +++ b/sbin/ipfw/ipfw.8 @@ -3233,8 +3233,11 @@ Deny any incoming connection from outside world. Try to leave the alias port numbers unchanged from the actual local port numbers. .It Cm unreg_only -Traffic on the local network not originating from an +Traffic on the local network not originating from a RFC 1918 unregistered address spaces will be ignored. +.It Cm unreg_cgn +Like unreg_only, but includes the RFC 6598 (Carrier Grade NAT) +address range. .It Cm reset Reset table of the packet aliasing engine on address change. .It Cm reverse diff --git a/sbin/ipfw/ipfw2.h b/sbin/ipfw/ipfw2.h index 215416eecc8ad..2579dc5f51ae3 100644 --- a/sbin/ipfw/ipfw2.h +++ b/sbin/ipfw/ipfw2.h @@ -220,6 +220,7 @@ enum tokens { TOK_DENY_INC, TOK_SAME_PORTS, TOK_UNREG_ONLY, + TOK_UNREG_CGN, TOK_SKIP_GLOBAL, TOK_RESET_ADDR, TOK_ALIAS_REV, diff --git a/sbin/ipfw/main.c b/sbin/ipfw/main.c index b1a410a8412e0..9688952ec39c6 100644 --- a/sbin/ipfw/main.c +++ b/sbin/ipfw/main.c @@ -43,8 +43,8 @@ help(void) "add [num] [set N] [prob x] RULE-BODY\n" "{pipe|queue} N config PIPE-BODY\n" "[pipe|queue] {zero|delete|show} [N{,N}]\n" -"nat N config {ip IPADDR|if IFNAME|log|deny_in|same_ports|unreg_only|reset|\n" -" reverse|proxy_only|redirect_addr linkspec|\n" +"nat N config {ip IPADDR|if IFNAME|log|deny_in|same_ports|unreg_only|unreg_cgn|\n" +" reset|reverse|proxy_only|redirect_addr linkspec|\n" " redirect_port linkspec|redirect_proto linkspec}\n" "set [disable N... enable N...] | move [rule] X to Y | swap X Y | show\n" "set N {show|list|zero|resetlog|delete} [N{,N}] | flush\n" diff --git a/sbin/ipfw/nat.c b/sbin/ipfw/nat.c index aced8ea10ecb5..6c861e7c2c27c 100644 --- a/sbin/ipfw/nat.c +++ b/sbin/ipfw/nat.c @@ -60,6 +60,7 @@ static struct _s_x nat_params[] = { { "deny_in", TOK_DENY_INC }, { "same_ports", TOK_SAME_PORTS }, { "unreg_only", TOK_UNREG_ONLY }, + { "unreg_cgn", TOK_UNREG_CGN }, { "skip_global", TOK_SKIP_GLOBAL }, { "reset", TOK_RESET_ADDR }, { "reverse", TOK_ALIAS_REV }, @@ -663,6 +664,9 @@ nat_show_cfg(struct nat44_cfg_nat *n, void *arg) } else if (n->mode & PKT_ALIAS_UNREGISTERED_ONLY) { printf(" unreg_only"); n->mode &= ~PKT_ALIAS_UNREGISTERED_ONLY; + } else if (n->mode & PKT_ALIAS_UNREGISTERED_CGN) { + printf(" unreg_cgn"); + n->mode &= ~PKT_ALIAS_UNREGISTERED_CGN; } else if (n->mode & PKT_ALIAS_RESET_ON_ADDR_CHANGE) { printf(" reset"); n->mode &= ~PKT_ALIAS_RESET_ON_ADDR_CHANGE; diff --git a/secure/caroot/Makefile b/secure/caroot/Makefile index c9d39d71bad9c..7c0831d2ac2f0 100644 --- a/secure/caroot/Makefile +++ b/secure/caroot/Makefile @@ -7,10 +7,9 @@ CLEANFILES+= certdata.txt SUBDIR+= trusted SUBDIR+= blacklisted -.include <bsd.prog.mk> +.include <bsd.obj.mk> # To be used by secteam@ to update the trusted certificates - fetchcerts: .PHONY fetch --no-sslv3 --no-tlsv1 -o certdata.txt 'https://hg.mozilla.org/projects/nss/raw-file/tip/lib/ckfw/builtins/certdata.txt' diff --git a/secure/lib/libcrypto/Makefile b/secure/lib/libcrypto/Makefile index 5a3b847a8414c..f8325332d6db5 100644 --- a/secure/lib/libcrypto/Makefile +++ b/secure/lib/libcrypto/Makefile @@ -12,9 +12,7 @@ VERSION_MAP= ${.CURDIR}/Version.map NO_LINT= -.if exists(Makefile.man) .include "Makefile.man" -.endif .include "Makefile.inc" SRCS= cpt_err.c cryptlib.c ctype.c cversion.c ex_data.c getenv.c init.c @@ -531,5 +529,4 @@ PICFLAG+= -DOPENSSL_PIC ${LCRYPTO_SRC}/crypto/whrlpool \ ${LCRYPTO_SRC}/crypto/x509 \ ${LCRYPTO_SRC}/crypto/x509v3 \ - ${LCRYPTO_SRC}/include/openssl \ - ${.CURDIR}/man + ${LCRYPTO_SRC}/include/openssl diff --git a/secure/lib/libcrypto/Makefile.man b/secure/lib/libcrypto/Makefile.man index da6c0c8a8e881..827d6be51b92b 100644 --- a/secure/lib/libcrypto/Makefile.man +++ b/secure/lib/libcrypto/Makefile.man @@ -1,3806 +1,5 @@ # $FreeBSD$ -MAN+= ADMISSIONS.3 -MAN+= ASN1_INTEGER_get_int64.3 -MAN+= ASN1_ITEM_lookup.3 -MAN+= ASN1_OBJECT_new.3 -MAN+= ASN1_STRING_TABLE_add.3 -MAN+= ASN1_STRING_length.3 -MAN+= ASN1_STRING_new.3 -MAN+= ASN1_STRING_print_ex.3 -MAN+= ASN1_TIME_set.3 -MAN+= ASN1_TYPE_get.3 -MAN+= ASN1_generate_nconf.3 -MAN+= ASYNC_WAIT_CTX_new.3 -MAN+= ASYNC_start_job.3 -MAN+= BF_encrypt.3 -MAN+= BIO_ADDR.3 -MAN+= BIO_ADDRINFO.3 -MAN+= BIO_connect.3 -MAN+= BIO_ctrl.3 -MAN+= BIO_f_base64.3 -MAN+= BIO_f_buffer.3 -MAN+= BIO_f_cipher.3 -MAN+= BIO_f_md.3 -MAN+= BIO_f_null.3 -MAN+= BIO_f_ssl.3 -MAN+= BIO_find_type.3 -MAN+= BIO_get_data.3 -MAN+= BIO_get_ex_new_index.3 -MAN+= BIO_meth_new.3 -MAN+= BIO_new.3 -MAN+= BIO_new_CMS.3 -MAN+= BIO_parse_hostserv.3 -MAN+= BIO_printf.3 -MAN+= BIO_push.3 -MAN+= BIO_read.3 -MAN+= BIO_s_accept.3 -MAN+= BIO_s_bio.3 -MAN+= BIO_s_connect.3 -MAN+= BIO_s_fd.3 -MAN+= BIO_s_file.3 -MAN+= BIO_s_mem.3 -MAN+= BIO_s_null.3 -MAN+= BIO_s_socket.3 -MAN+= BIO_set_callback.3 -MAN+= BIO_should_retry.3 -MAN+= BN_BLINDING_new.3 -MAN+= BN_CTX_new.3 -MAN+= BN_CTX_start.3 -MAN+= BN_add.3 -MAN+= BN_add_word.3 -MAN+= BN_bn2bin.3 -MAN+= BN_cmp.3 -MAN+= BN_copy.3 -MAN+= BN_generate_prime.3 -MAN+= BN_mod_inverse.3 -MAN+= BN_mod_mul_montgomery.3 -MAN+= BN_mod_mul_reciprocal.3 -MAN+= BN_new.3 -MAN+= BN_num_bytes.3 -MAN+= BN_rand.3 -MAN+= BN_security_bits.3 -MAN+= BN_set_bit.3 -MAN+= BN_swap.3 -MAN+= BN_zero.3 -MAN+= BUF_MEM_new.3 -MAN+= CMS_add0_cert.3 -MAN+= CMS_add1_recipient_cert.3 -MAN+= CMS_add1_signer.3 -MAN+= CMS_compress.3 -MAN+= CMS_decrypt.3 -MAN+= CMS_encrypt.3 -MAN+= CMS_final.3 -MAN+= CMS_get0_RecipientInfos.3 -MAN+= CMS_get0_SignerInfos.3 -MAN+= CMS_get0_type.3 -MAN+= CMS_get1_ReceiptRequest.3 -MAN+= CMS_sign.3 -MAN+= CMS_sign_receipt.3 -MAN+= CMS_uncompress.3 -MAN+= CMS_verify.3 -MAN+= CMS_verify_receipt.3 -MAN+= CONF_modules_free.3 -MAN+= CONF_modules_load_file.3 -MAN+= CRYPTO_THREAD_run_once.3 -MAN+= CRYPTO_get_ex_new_index.3 -MAN+= CRYPTO_memcmp.3 -MAN+= CTLOG_STORE_get0_log_by_id.3 -MAN+= CTLOG_STORE_new.3 -MAN+= CTLOG_new.3 -MAN+= CT_POLICY_EVAL_CTX_new.3 -MAN+= DEFINE_STACK_OF.3 -MAN+= DES_random_key.3 -MAN+= DH_generate_key.3 -MAN+= DH_generate_parameters.3 -MAN+= DH_get0_pqg.3 -MAN+= DH_get_1024_160.3 -MAN+= DH_meth_new.3 -MAN+= DH_new.3 -MAN+= DH_new_by_nid.3 -MAN+= DH_set_method.3 -MAN+= DH_size.3 -MAN+= DSA_SIG_new.3 -MAN+= DSA_do_sign.3 -MAN+= DSA_dup_DH.3 -MAN+= DSA_generate_key.3 -MAN+= DSA_generate_parameters.3 -MAN+= DSA_get0_pqg.3 -MAN+= DSA_meth_new.3 -MAN+= DSA_new.3 -MAN+= DSA_set_method.3 -MAN+= DSA_sign.3 -MAN+= DSA_size.3 -MAN+= DTLS_get_data_mtu.3 -MAN+= DTLS_set_timer_cb.3 -MAN+= DTLSv1_listen.3 -MAN+= ECDSA_SIG_new.3 -MAN+= ECPKParameters_print.3 -MAN+= EC_GFp_simple_method.3 -MAN+= EC_GROUP_copy.3 -MAN+= EC_GROUP_new.3 -MAN+= EC_KEY_get_enc_flags.3 -MAN+= EC_KEY_new.3 -MAN+= EC_POINT_add.3 -MAN+= EC_POINT_new.3 -MAN+= ENGINE_add.3 -MAN+= ERR_GET_LIB.3 -MAN+= ERR_clear_error.3 -MAN+= ERR_error_string.3 -MAN+= ERR_get_error.3 -MAN+= ERR_load_crypto_strings.3 -MAN+= ERR_load_strings.3 -MAN+= ERR_print_errors.3 -MAN+= ERR_put_error.3 -MAN+= ERR_remove_state.3 -MAN+= ERR_set_mark.3 -MAN+= EVP_BytesToKey.3 -MAN+= EVP_CIPHER_CTX_get_cipher_data.3 -MAN+= EVP_CIPHER_meth_new.3 -MAN+= EVP_DigestInit.3 -MAN+= EVP_DigestSignInit.3 -MAN+= EVP_DigestVerifyInit.3 -MAN+= EVP_EncodeInit.3 -MAN+= EVP_EncryptInit.3 -MAN+= EVP_MD_meth_new.3 -MAN+= EVP_OpenInit.3 -MAN+= EVP_PKEY_ASN1_METHOD.3 -MAN+= EVP_PKEY_CTX_ctrl.3 -MAN+= EVP_PKEY_CTX_new.3 -MAN+= EVP_PKEY_CTX_set1_pbe_pass.3 -MAN+= EVP_PKEY_CTX_set_hkdf_md.3 -MAN+= EVP_PKEY_CTX_set_rsa_pss_keygen_md.3 -MAN+= EVP_PKEY_CTX_set_scrypt_N.3 -MAN+= EVP_PKEY_CTX_set_tls1_prf_md.3 -MAN+= EVP_PKEY_asn1_get_count.3 -MAN+= EVP_PKEY_cmp.3 -MAN+= EVP_PKEY_decrypt.3 -MAN+= EVP_PKEY_derive.3 -MAN+= EVP_PKEY_encrypt.3 -MAN+= EVP_PKEY_get_default_digest_nid.3 -MAN+= EVP_PKEY_keygen.3 -MAN+= EVP_PKEY_meth_get_count.3 -MAN+= EVP_PKEY_meth_new.3 -MAN+= EVP_PKEY_new.3 -MAN+= EVP_PKEY_print_private.3 -MAN+= EVP_PKEY_set1_RSA.3 -MAN+= EVP_PKEY_sign.3 -MAN+= EVP_PKEY_verify.3 -MAN+= EVP_PKEY_verify_recover.3 -MAN+= EVP_SealInit.3 -MAN+= EVP_SignInit.3 -MAN+= EVP_VerifyInit.3 -MAN+= EVP_aes.3 -MAN+= EVP_aria.3 -MAN+= EVP_bf_cbc.3 -MAN+= EVP_blake2b512.3 -MAN+= EVP_camellia.3 -MAN+= EVP_cast5_cbc.3 -MAN+= EVP_chacha20.3 -MAN+= EVP_des.3 -MAN+= EVP_desx_cbc.3 -MAN+= EVP_idea_cbc.3 -MAN+= EVP_md2.3 -MAN+= EVP_md4.3 -MAN+= EVP_md5.3 -MAN+= EVP_mdc2.3 -MAN+= EVP_rc2_cbc.3 -MAN+= EVP_rc4.3 -MAN+= EVP_rc5_32_12_16_cbc.3 -MAN+= EVP_ripemd160.3 -MAN+= EVP_seed_cbc.3 -MAN+= EVP_sha1.3 -MAN+= EVP_sha224.3 -MAN+= EVP_sha3_224.3 -MAN+= EVP_sm3.3 -MAN+= EVP_sm4_cbc.3 -MAN+= EVP_whirlpool.3 -MAN+= HMAC.3 -MAN+= MD5.3 -MAN+= MDC2_Init.3 -MAN+= OBJ_nid2obj.3 -MAN+= OCSP_REQUEST_new.3 -MAN+= OCSP_cert_to_id.3 -MAN+= OCSP_request_add1_nonce.3 -MAN+= OCSP_resp_find_status.3 -MAN+= OCSP_response_status.3 -MAN+= OCSP_sendreq_new.3 -MAN+= OPENSSL_Applink.3 -MAN+= OPENSSL_LH_COMPFUNC.3 -MAN+= OPENSSL_LH_stats.3 -MAN+= OPENSSL_VERSION_NUMBER.3 -MAN+= OPENSSL_config.3 -MAN+= OPENSSL_fork_prepare.3 -MAN+= OPENSSL_ia32cap.3 -MAN+= OPENSSL_init_crypto.3 -MAN+= OPENSSL_init_ssl.3 -MAN+= OPENSSL_instrument_bus.3 -MAN+= OPENSSL_load_builtin_modules.3 -MAN+= OPENSSL_malloc.3 -MAN+= OPENSSL_secure_malloc.3 -MAN+= OSSL_STORE_INFO.3 -MAN+= OSSL_STORE_LOADER.3 -MAN+= OSSL_STORE_SEARCH.3 -MAN+= OSSL_STORE_expect.3 -MAN+= OSSL_STORE_open.3 -MAN+= OpenSSL_add_all_algorithms.3 -MAN+= PEM_bytes_read_bio.3 -MAN+= PEM_read.3 -MAN+= PEM_read_CMS.3 -MAN+= PEM_read_bio_PrivateKey.3 -MAN+= PEM_read_bio_ex.3 -MAN+= PEM_write_bio_CMS_stream.3 -MAN+= PEM_write_bio_PKCS7_stream.3 -MAN+= PKCS12_create.3 -MAN+= PKCS12_newpass.3 -MAN+= PKCS12_parse.3 -MAN+= PKCS5_PBKDF2_HMAC.3 -MAN+= PKCS7_decrypt.3 -MAN+= PKCS7_encrypt.3 -MAN+= PKCS7_sign.3 -MAN+= PKCS7_sign_add_signer.3 -MAN+= PKCS7_verify.3 -MAN+= RAND_DRBG_generate.3 -MAN+= RAND_DRBG_get0_master.3 -MAN+= RAND_DRBG_new.3 -MAN+= RAND_DRBG_reseed.3 -MAN+= RAND_DRBG_set_callbacks.3 -MAN+= RAND_DRBG_set_ex_data.3 -MAN+= RAND_add.3 -MAN+= RAND_bytes.3 -MAN+= RAND_cleanup.3 -MAN+= RAND_egd.3 -MAN+= RAND_load_file.3 -MAN+= RAND_set_rand_method.3 -MAN+= RC4_set_key.3 -MAN+= RIPEMD160_Init.3 -MAN+= RSA_blinding_on.3 -MAN+= RSA_check_key.3 -MAN+= RSA_generate_key.3 -MAN+= RSA_get0_key.3 -MAN+= RSA_meth_new.3 -MAN+= RSA_new.3 -MAN+= RSA_padding_add_PKCS1_type_1.3 -MAN+= RSA_print.3 -MAN+= RSA_private_encrypt.3 -MAN+= RSA_public_encrypt.3 -MAN+= RSA_set_method.3 -MAN+= RSA_sign.3 -MAN+= RSA_sign_ASN1_OCTET_STRING.3 -MAN+= RSA_size.3 -MAN+= SCT_new.3 -MAN+= SCT_print.3 -MAN+= SCT_validate.3 -MAN+= SHA256_Init.3 -MAN+= SMIME_read_CMS.3 -MAN+= SMIME_read_PKCS7.3 -MAN+= SMIME_write_CMS.3 -MAN+= SMIME_write_PKCS7.3 -MAN+= SSL_CIPHER_get_name.3 -MAN+= SSL_COMP_add_compression_method.3 -MAN+= SSL_CONF_CTX_new.3 -MAN+= SSL_CONF_CTX_set1_prefix.3 -MAN+= SSL_CONF_CTX_set_flags.3 -MAN+= SSL_CONF_CTX_set_ssl_ctx.3 -MAN+= SSL_CONF_cmd.3 -MAN+= SSL_CONF_cmd_argv.3 -MAN+= SSL_CTX_add1_chain_cert.3 -MAN+= SSL_CTX_add_extra_chain_cert.3 -MAN+= SSL_CTX_add_session.3 -MAN+= SSL_CTX_config.3 -MAN+= SSL_CTX_ctrl.3 -MAN+= SSL_CTX_dane_enable.3 -MAN+= SSL_CTX_flush_sessions.3 -MAN+= SSL_CTX_free.3 -MAN+= SSL_CTX_get0_param.3 -MAN+= SSL_CTX_get_verify_mode.3 -MAN+= SSL_CTX_has_client_custom_ext.3 -MAN+= SSL_CTX_load_verify_locations.3 -MAN+= SSL_CTX_new.3 -MAN+= SSL_CTX_sess_number.3 -MAN+= SSL_CTX_sess_set_cache_size.3 -MAN+= SSL_CTX_sess_set_get_cb.3 -MAN+= SSL_CTX_sessions.3 -MAN+= SSL_CTX_set0_CA_list.3 -MAN+= SSL_CTX_set1_curves.3 -MAN+= SSL_CTX_set1_sigalgs.3 -MAN+= SSL_CTX_set1_verify_cert_store.3 -MAN+= SSL_CTX_set_alpn_select_cb.3 -MAN+= SSL_CTX_set_cert_cb.3 -MAN+= SSL_CTX_set_cert_store.3 -MAN+= SSL_CTX_set_cert_verify_callback.3 -MAN+= SSL_CTX_set_cipher_list.3 -MAN+= SSL_CTX_set_client_cert_cb.3 -MAN+= SSL_CTX_set_client_hello_cb.3 -MAN+= SSL_CTX_set_ct_validation_callback.3 -MAN+= SSL_CTX_set_ctlog_list_file.3 -MAN+= SSL_CTX_set_default_passwd_cb.3 -MAN+= SSL_CTX_set_ex_data.3 -MAN+= SSL_CTX_set_generate_session_id.3 -MAN+= SSL_CTX_set_info_callback.3 -MAN+= SSL_CTX_set_keylog_callback.3 -MAN+= SSL_CTX_set_max_cert_list.3 -MAN+= SSL_CTX_set_min_proto_version.3 -MAN+= SSL_CTX_set_mode.3 -MAN+= SSL_CTX_set_msg_callback.3 -MAN+= SSL_CTX_set_num_tickets.3 -MAN+= SSL_CTX_set_options.3 -MAN+= SSL_CTX_set_psk_client_callback.3 -MAN+= SSL_CTX_set_quiet_shutdown.3 -MAN+= SSL_CTX_set_read_ahead.3 -MAN+= SSL_CTX_set_record_padding_callback.3 -MAN+= SSL_CTX_set_security_level.3 -MAN+= SSL_CTX_set_session_cache_mode.3 -MAN+= SSL_CTX_set_session_id_context.3 -MAN+= SSL_CTX_set_session_ticket_cb.3 -MAN+= SSL_CTX_set_split_send_fragment.3 -MAN+= SSL_CTX_set_ssl_version.3 -MAN+= SSL_CTX_set_stateless_cookie_generate_cb.3 -MAN+= SSL_CTX_set_timeout.3 -MAN+= SSL_CTX_set_tlsext_servername_callback.3 -MAN+= SSL_CTX_set_tlsext_status_cb.3 -MAN+= SSL_CTX_set_tlsext_ticket_key_cb.3 -MAN+= SSL_CTX_set_tlsext_use_srtp.3 -MAN+= SSL_CTX_set_tmp_dh_callback.3 -MAN+= SSL_CTX_set_verify.3 -MAN+= SSL_CTX_use_certificate.3 -MAN+= SSL_CTX_use_psk_identity_hint.3 -MAN+= SSL_CTX_use_serverinfo.3 -MAN+= SSL_SESSION_free.3 -MAN+= SSL_SESSION_get0_cipher.3 -MAN+= SSL_SESSION_get0_hostname.3 -MAN+= SSL_SESSION_get0_id_context.3 -MAN+= SSL_SESSION_get0_peer.3 -MAN+= SSL_SESSION_get_compress_id.3 -MAN+= SSL_SESSION_get_ex_data.3 -MAN+= SSL_SESSION_get_protocol_version.3 -MAN+= SSL_SESSION_get_time.3 -MAN+= SSL_SESSION_has_ticket.3 -MAN+= SSL_SESSION_is_resumable.3 -MAN+= SSL_SESSION_print.3 -MAN+= SSL_SESSION_set1_id.3 -MAN+= SSL_accept.3 -MAN+= SSL_alert_type_string.3 -MAN+= SSL_alloc_buffers.3 -MAN+= SSL_check_chain.3 -MAN+= SSL_clear.3 -MAN+= SSL_connect.3 -MAN+= SSL_do_handshake.3 -MAN+= SSL_export_keying_material.3 -MAN+= SSL_extension_supported.3 -MAN+= SSL_free.3 -MAN+= SSL_get0_peer_scts.3 -MAN+= SSL_get_SSL_CTX.3 -MAN+= SSL_get_all_async_fds.3 -MAN+= SSL_get_ciphers.3 -MAN+= SSL_get_client_random.3 -MAN+= SSL_get_current_cipher.3 -MAN+= SSL_get_default_timeout.3 -MAN+= SSL_get_error.3 -MAN+= SSL_get_extms_support.3 -MAN+= SSL_get_fd.3 -MAN+= SSL_get_peer_cert_chain.3 -MAN+= SSL_get_peer_certificate.3 -MAN+= SSL_get_peer_signature_nid.3 -MAN+= SSL_get_peer_tmp_key.3 -MAN+= SSL_get_psk_identity.3 -MAN+= SSL_get_rbio.3 -MAN+= SSL_get_session.3 -MAN+= SSL_get_shared_sigalgs.3 -MAN+= SSL_get_verify_result.3 -MAN+= SSL_get_version.3 -MAN+= SSL_in_init.3 -MAN+= SSL_key_update.3 -MAN+= SSL_library_init.3 -MAN+= SSL_load_client_CA_file.3 -MAN+= SSL_new.3 -MAN+= SSL_pending.3 -MAN+= SSL_read.3 -MAN+= SSL_read_early_data.3 -MAN+= SSL_rstate_string.3 -MAN+= SSL_session_reused.3 -MAN+= SSL_set1_host.3 -MAN+= SSL_set_bio.3 -MAN+= SSL_set_connect_state.3 -MAN+= SSL_set_fd.3 -MAN+= SSL_set_session.3 -MAN+= SSL_set_shutdown.3 -MAN+= SSL_set_verify_result.3 -MAN+= SSL_shutdown.3 -MAN+= SSL_state_string.3 -MAN+= SSL_want.3 -MAN+= SSL_write.3 -MAN+= UI_STRING.3 -MAN+= UI_UTIL_read_pw.3 -MAN+= UI_create_method.3 -MAN+= UI_new.3 -MAN+= X509V3_get_d2i.3 -MAN+= X509_ALGOR_dup.3 -MAN+= X509_CRL_get0_by_serial.3 -MAN+= X509_EXTENSION_set_object.3 -MAN+= X509_LOOKUP_hash_dir.3 -MAN+= X509_LOOKUP_meth_new.3 -MAN+= X509_NAME_ENTRY_get_object.3 -MAN+= X509_NAME_add_entry_by_txt.3 -MAN+= X509_NAME_get0_der.3 -MAN+= X509_NAME_get_index_by_NID.3 -MAN+= X509_NAME_print_ex.3 -MAN+= X509_PUBKEY_new.3 -MAN+= X509_SIG_get0.3 -MAN+= X509_STORE_CTX_get_error.3 -MAN+= X509_STORE_CTX_new.3 -MAN+= X509_STORE_CTX_set_verify_cb.3 -MAN+= X509_STORE_add_cert.3 -MAN+= X509_STORE_get0_param.3 -MAN+= X509_STORE_new.3 -MAN+= X509_STORE_set_verify_cb_func.3 -MAN+= X509_VERIFY_PARAM_set_flags.3 -MAN+= X509_check_ca.3 -MAN+= X509_check_host.3 -MAN+= X509_check_issued.3 -MAN+= X509_check_private_key.3 -MAN+= X509_cmp.3 -MAN+= X509_cmp_time.3 -MAN+= X509_digest.3 -MAN+= X509_dup.3 -MAN+= X509_get0_notBefore.3 -MAN+= X509_get0_signature.3 -MAN+= X509_get0_uids.3 -MAN+= X509_get_extension_flags.3 -MAN+= X509_get_pubkey.3 -MAN+= X509_get_serialNumber.3 -MAN+= X509_get_subject_name.3 -MAN+= X509_get_version.3 -MAN+= X509_new.3 -MAN+= X509_sign.3 -MAN+= X509_verify_cert.3 -MAN+= X509v3_get_ext_by_NID.3 -MAN+= d2i_DHparams.3 -MAN+= d2i_PKCS8PrivateKey_bio.3 -MAN+= d2i_PrivateKey.3 -MAN+= d2i_SSL_SESSION.3 -MAN+= d2i_X509.3 -MAN+= i2d_CMS_bio_stream.3 -MAN+= i2d_PKCS7_bio_stream.3 -MAN+= i2d_re_X509_tbs.3 -MAN+= o2i_SCT_LIST.3 -MLINKS+= ADMISSIONS.3 ADMISSIONS_get0_admissionAuthority.3 -MLINKS+= ADMISSIONS.3 ADMISSIONS_get0_namingAuthority.3 -MLINKS+= ADMISSIONS.3 ADMISSIONS_get0_professionInfos.3 -MLINKS+= ADMISSIONS.3 ADMISSIONS_set0_admissionAuthority.3 -MLINKS+= ADMISSIONS.3 ADMISSIONS_set0_namingAuthority.3 -MLINKS+= ADMISSIONS.3 ADMISSIONS_set0_professionInfos.3 -MLINKS+= ADMISSIONS.3 ADMISSION_SYNTAX.3 -MLINKS+= ADMISSIONS.3 ADMISSION_SYNTAX_get0_admissionAuthority.3 -MLINKS+= ADMISSIONS.3 ADMISSION_SYNTAX_get0_contentsOfAdmissions.3 -MLINKS+= ADMISSIONS.3 ADMISSION_SYNTAX_set0_admissionAuthority.3 -MLINKS+= ADMISSIONS.3 ADMISSION_SYNTAX_set0_contentsOfAdmissions.3 -MLINKS+= ADMISSIONS.3 NAMING_AUTHORITY.3 -MLINKS+= ADMISSIONS.3 NAMING_AUTHORITY_get0_authorityId.3 -MLINKS+= ADMISSIONS.3 NAMING_AUTHORITY_get0_authorityText.3 -MLINKS+= ADMISSIONS.3 NAMING_AUTHORITY_get0_authorityURL.3 -MLINKS+= ADMISSIONS.3 NAMING_AUTHORITY_set0_authorityId.3 -MLINKS+= ADMISSIONS.3 NAMING_AUTHORITY_set0_authorityText.3 -MLINKS+= ADMISSIONS.3 NAMING_AUTHORITY_set0_authorityURL.3 -MLINKS+= ADMISSIONS.3 PROFESSION_INFO.3 -MLINKS+= ADMISSIONS.3 PROFESSION_INFOS.3 -MLINKS+= ADMISSIONS.3 PROFESSION_INFO_get0_addProfessionInfo.3 -MLINKS+= ADMISSIONS.3 PROFESSION_INFO_get0_namingAuthority.3 -MLINKS+= ADMISSIONS.3 PROFESSION_INFO_get0_professionItems.3 -MLINKS+= ADMISSIONS.3 PROFESSION_INFO_get0_professionOIDs.3 -MLINKS+= ADMISSIONS.3 PROFESSION_INFO_get0_registrationNumber.3 -MLINKS+= ADMISSIONS.3 PROFESSION_INFO_set0_addProfessionInfo.3 -MLINKS+= ADMISSIONS.3 PROFESSION_INFO_set0_namingAuthority.3 -MLINKS+= ADMISSIONS.3 PROFESSION_INFO_set0_professionItems.3 -MLINKS+= ADMISSIONS.3 PROFESSION_INFO_set0_professionOIDs.3 -MLINKS+= ADMISSIONS.3 PROFESSION_INFO_set0_registrationNumber.3 -MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_ENUMERATED_get.3 -MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_ENUMERATED_get_int64.3 -MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_ENUMERATED_set.3 -MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_ENUMERATED_set_int64.3 -MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_ENUMERATED_to_BN.3 -MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_INTEGER_get.3 -MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_INTEGER_get_uint64.3 -MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_INTEGER_set.3 -MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_INTEGER_set_int64.3 -MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_INTEGER_set_uint64.3 -MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_INTEGER_to_BN.3 -MLINKS+= ASN1_INTEGER_get_int64.3 BN_to_ASN1_ENUMERATED.3 -MLINKS+= ASN1_INTEGER_get_int64.3 BN_to_ASN1_INTEGER.3 -MLINKS+= ASN1_ITEM_lookup.3 ASN1_ITEM_get.3 -MLINKS+= ASN1_OBJECT_new.3 ASN1_OBJECT_free.3 -MLINKS+= ASN1_STRING_TABLE_add.3 ASN1_STRING_TABLE.3 -MLINKS+= ASN1_STRING_TABLE_add.3 ASN1_STRING_TABLE_cleanup.3 -MLINKS+= ASN1_STRING_TABLE_add.3 ASN1_STRING_TABLE_get.3 -MLINKS+= ASN1_STRING_length.3 ASN1_STRING_cmp.3 -MLINKS+= ASN1_STRING_length.3 ASN1_STRING_data.3 -MLINKS+= ASN1_STRING_length.3 ASN1_STRING_dup.3 -MLINKS+= ASN1_STRING_length.3 ASN1_STRING_get0_data.3 -MLINKS+= ASN1_STRING_length.3 ASN1_STRING_set.3 -MLINKS+= ASN1_STRING_length.3 ASN1_STRING_to_UTF8.3 -MLINKS+= ASN1_STRING_length.3 ASN1_STRING_type.3 -MLINKS+= ASN1_STRING_new.3 ASN1_STRING_free.3 -MLINKS+= ASN1_STRING_new.3 ASN1_STRING_type_new.3 -MLINKS+= ASN1_STRING_print_ex.3 ASN1_STRING_print.3 -MLINKS+= ASN1_STRING_print_ex.3 ASN1_STRING_print_ex_fp.3 -MLINKS+= ASN1_STRING_print_ex.3 ASN1_tag2str.3 -MLINKS+= ASN1_TIME_set.3 ASN1_GENERALIZEDTIME_adj.3 -MLINKS+= ASN1_TIME_set.3 ASN1_GENERALIZEDTIME_check.3 -MLINKS+= ASN1_TIME_set.3 ASN1_GENERALIZEDTIME_print.3 -MLINKS+= ASN1_TIME_set.3 ASN1_GENERALIZEDTIME_set.3 -MLINKS+= ASN1_TIME_set.3 ASN1_GENERALIZEDTIME_set_string.3 -MLINKS+= ASN1_TIME_set.3 ASN1_TIME_adj.3 -MLINKS+= ASN1_TIME_set.3 ASN1_TIME_check.3 -MLINKS+= ASN1_TIME_set.3 ASN1_TIME_cmp_time_t.3 -MLINKS+= ASN1_TIME_set.3 ASN1_TIME_compare.3 -MLINKS+= ASN1_TIME_set.3 ASN1_TIME_diff.3 -MLINKS+= ASN1_TIME_set.3 ASN1_TIME_normalize.3 -MLINKS+= ASN1_TIME_set.3 ASN1_TIME_print.3 -MLINKS+= ASN1_TIME_set.3 ASN1_TIME_set_string.3 -MLINKS+= ASN1_TIME_set.3 ASN1_TIME_set_string_X509.3 -MLINKS+= ASN1_TIME_set.3 ASN1_TIME_to_generalizedtime.3 -MLINKS+= ASN1_TIME_set.3 ASN1_TIME_to_tm.3 -MLINKS+= ASN1_TIME_set.3 ASN1_UTCTIME_adj.3 -MLINKS+= ASN1_TIME_set.3 ASN1_UTCTIME_check.3 -MLINKS+= ASN1_TIME_set.3 ASN1_UTCTIME_cmp_time_t.3 -MLINKS+= ASN1_TIME_set.3 ASN1_UTCTIME_print.3 -MLINKS+= ASN1_TIME_set.3 ASN1_UTCTIME_set.3 -MLINKS+= ASN1_TIME_set.3 ASN1_UTCTIME_set_string.3 -MLINKS+= ASN1_TYPE_get.3 ASN1_TYPE_cmp.3 -MLINKS+= ASN1_TYPE_get.3 ASN1_TYPE_pack_sequence.3 -MLINKS+= ASN1_TYPE_get.3 ASN1_TYPE_set.3 -MLINKS+= ASN1_TYPE_get.3 ASN1_TYPE_set1.3 -MLINKS+= ASN1_TYPE_get.3 ASN1_TYPE_unpack_sequence.3 -MLINKS+= ASN1_generate_nconf.3 ASN1_generate_v3.3 -MLINKS+= ASYNC_WAIT_CTX_new.3 ASYNC_WAIT_CTX_clear_fd.3 -MLINKS+= ASYNC_WAIT_CTX_new.3 ASYNC_WAIT_CTX_free.3 -MLINKS+= ASYNC_WAIT_CTX_new.3 ASYNC_WAIT_CTX_get_all_fds.3 -MLINKS+= ASYNC_WAIT_CTX_new.3 ASYNC_WAIT_CTX_get_changed_fds.3 -MLINKS+= ASYNC_WAIT_CTX_new.3 ASYNC_WAIT_CTX_get_fd.3 -MLINKS+= ASYNC_WAIT_CTX_new.3 ASYNC_WAIT_CTX_set_wait_fd.3 -MLINKS+= ASYNC_start_job.3 ASYNC_block_pause.3 -MLINKS+= ASYNC_start_job.3 ASYNC_cleanup_thread.3 -MLINKS+= ASYNC_start_job.3 ASYNC_get_current_job.3 -MLINKS+= ASYNC_start_job.3 ASYNC_get_wait_ctx.3 -MLINKS+= ASYNC_start_job.3 ASYNC_init_thread.3 -MLINKS+= ASYNC_start_job.3 ASYNC_is_capable.3 -MLINKS+= ASYNC_start_job.3 ASYNC_pause_job.3 -MLINKS+= ASYNC_start_job.3 ASYNC_unblock_pause.3 -MLINKS+= BF_encrypt.3 BF_cbc_encrypt.3 -MLINKS+= BF_encrypt.3 BF_cfb64_encrypt.3 -MLINKS+= BF_encrypt.3 BF_decrypt.3 -MLINKS+= BF_encrypt.3 BF_ecb_encrypt.3 -MLINKS+= BF_encrypt.3 BF_ofb64_encrypt.3 -MLINKS+= BF_encrypt.3 BF_options.3 -MLINKS+= BF_encrypt.3 BF_set_key.3 -MLINKS+= BIO_ADDR.3 BIO_ADDR_clear.3 -MLINKS+= BIO_ADDR.3 BIO_ADDR_family.3 -MLINKS+= BIO_ADDR.3 BIO_ADDR_free.3 -MLINKS+= BIO_ADDR.3 BIO_ADDR_hostname_string.3 -MLINKS+= BIO_ADDR.3 BIO_ADDR_new.3 -MLINKS+= BIO_ADDR.3 BIO_ADDR_path_string.3 -MLINKS+= BIO_ADDR.3 BIO_ADDR_rawaddress.3 -MLINKS+= BIO_ADDR.3 BIO_ADDR_rawmake.3 -MLINKS+= BIO_ADDR.3 BIO_ADDR_rawport.3 -MLINKS+= BIO_ADDR.3 BIO_ADDR_service_string.3 -MLINKS+= BIO_ADDRINFO.3 BIO_ADDRINFO_address.3 -MLINKS+= BIO_ADDRINFO.3 BIO_ADDRINFO_family.3 -MLINKS+= BIO_ADDRINFO.3 BIO_ADDRINFO_free.3 -MLINKS+= BIO_ADDRINFO.3 BIO_ADDRINFO_next.3 -MLINKS+= BIO_ADDRINFO.3 BIO_ADDRINFO_protocol.3 -MLINKS+= BIO_ADDRINFO.3 BIO_ADDRINFO_socktype.3 -MLINKS+= BIO_ADDRINFO.3 BIO_lookup.3 -MLINKS+= BIO_ADDRINFO.3 BIO_lookup_ex.3 -MLINKS+= BIO_ADDRINFO.3 BIO_lookup_type.3 -MLINKS+= BIO_connect.3 BIO_accept_ex.3 -MLINKS+= BIO_connect.3 BIO_bind.3 -MLINKS+= BIO_connect.3 BIO_closesocket.3 -MLINKS+= BIO_connect.3 BIO_listen.3 -MLINKS+= BIO_connect.3 BIO_socket.3 -MLINKS+= BIO_ctrl.3 BIO_callback_ctrl.3 -MLINKS+= BIO_ctrl.3 BIO_ctrl_pending.3 -MLINKS+= BIO_ctrl.3 BIO_ctrl_wpending.3 -MLINKS+= BIO_ctrl.3 BIO_eof.3 -MLINKS+= BIO_ctrl.3 BIO_flush.3 -MLINKS+= BIO_ctrl.3 BIO_get_close.3 -MLINKS+= BIO_ctrl.3 BIO_get_info_callback.3 -MLINKS+= BIO_ctrl.3 BIO_info_cb.3 -MLINKS+= BIO_ctrl.3 BIO_int_ctrl.3 -MLINKS+= BIO_ctrl.3 BIO_pending.3 -MLINKS+= BIO_ctrl.3 BIO_ptr_ctrl.3 -MLINKS+= BIO_ctrl.3 BIO_reset.3 -MLINKS+= BIO_ctrl.3 BIO_seek.3 -MLINKS+= BIO_ctrl.3 BIO_set_close.3 -MLINKS+= BIO_ctrl.3 BIO_set_info_callback.3 -MLINKS+= BIO_ctrl.3 BIO_tell.3 -MLINKS+= BIO_ctrl.3 BIO_wpending.3 -MLINKS+= BIO_f_buffer.3 BIO_get_buffer_num_lines.3 -MLINKS+= BIO_f_buffer.3 BIO_set_buffer_read_data.3 -MLINKS+= BIO_f_buffer.3 BIO_set_buffer_size.3 -MLINKS+= BIO_f_buffer.3 BIO_set_read_buffer_size.3 -MLINKS+= BIO_f_buffer.3 BIO_set_write_buffer_size.3 -MLINKS+= BIO_f_cipher.3 BIO_get_cipher_ctx.3 -MLINKS+= BIO_f_cipher.3 BIO_get_cipher_status.3 -MLINKS+= BIO_f_cipher.3 BIO_set_cipher.3 -MLINKS+= BIO_f_md.3 BIO_get_md.3 -MLINKS+= BIO_f_md.3 BIO_get_md_ctx.3 -MLINKS+= BIO_f_md.3 BIO_set_md.3 -MLINKS+= BIO_f_ssl.3 BIO_do_handshake.3 -MLINKS+= BIO_f_ssl.3 BIO_get_num_renegotiates.3 -MLINKS+= BIO_f_ssl.3 BIO_get_ssl.3 -MLINKS+= BIO_f_ssl.3 BIO_new_buffer_ssl_connect.3 -MLINKS+= BIO_f_ssl.3 BIO_new_ssl.3 -MLINKS+= BIO_f_ssl.3 BIO_new_ssl_connect.3 -MLINKS+= BIO_f_ssl.3 BIO_set_ssl.3 -MLINKS+= BIO_f_ssl.3 BIO_set_ssl_mode.3 -MLINKS+= BIO_f_ssl.3 BIO_set_ssl_renegotiate_bytes.3 -MLINKS+= BIO_f_ssl.3 BIO_set_ssl_renegotiate_timeout.3 -MLINKS+= BIO_f_ssl.3 BIO_ssl_copy_session_id.3 -MLINKS+= BIO_f_ssl.3 BIO_ssl_shutdown.3 -MLINKS+= BIO_find_type.3 BIO_method_type.3 -MLINKS+= BIO_find_type.3 BIO_next.3 -MLINKS+= BIO_get_data.3 BIO_get_init.3 -MLINKS+= BIO_get_data.3 BIO_get_shutdown.3 -MLINKS+= BIO_get_data.3 BIO_set_data.3 -MLINKS+= BIO_get_data.3 BIO_set_init.3 -MLINKS+= BIO_get_data.3 BIO_set_shutdown.3 -MLINKS+= BIO_get_ex_new_index.3 BIO_get_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 BIO_set_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 DH_get_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 DH_get_ex_new_index.3 -MLINKS+= BIO_get_ex_new_index.3 DH_set_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 DSA_get_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 DSA_get_ex_new_index.3 -MLINKS+= BIO_get_ex_new_index.3 DSA_set_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 ECDH_get_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 ECDH_get_ex_new_index.3 -MLINKS+= BIO_get_ex_new_index.3 ECDH_set_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 EC_KEY_get_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 EC_KEY_get_ex_new_index.3 -MLINKS+= BIO_get_ex_new_index.3 EC_KEY_set_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 ENGINE_get_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 ENGINE_get_ex_new_index.3 -MLINKS+= BIO_get_ex_new_index.3 ENGINE_set_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 RSA_get_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 RSA_get_ex_new_index.3 -MLINKS+= BIO_get_ex_new_index.3 RSA_set_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 UI_get_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 UI_get_ex_new_index.3 -MLINKS+= BIO_get_ex_new_index.3 UI_set_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 X509_STORE_CTX_get_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 X509_STORE_CTX_get_ex_new_index.3 -MLINKS+= BIO_get_ex_new_index.3 X509_STORE_CTX_set_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 X509_STORE_get_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 X509_STORE_get_ex_new_index.3 -MLINKS+= BIO_get_ex_new_index.3 X509_STORE_set_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 X509_get_ex_data.3 -MLINKS+= BIO_get_ex_new_index.3 X509_get_ex_new_index.3 -MLINKS+= BIO_get_ex_new_index.3 X509_set_ex_data.3 -MLINKS+= BIO_meth_new.3 BIO_get_new_index.3 -MLINKS+= BIO_meth_new.3 BIO_meth_free.3 -MLINKS+= BIO_meth_new.3 BIO_meth_get_callback_ctrl.3 -MLINKS+= BIO_meth_new.3 BIO_meth_get_create.3 -MLINKS+= BIO_meth_new.3 BIO_meth_get_ctrl.3 -MLINKS+= BIO_meth_new.3 BIO_meth_get_destroy.3 -MLINKS+= BIO_meth_new.3 BIO_meth_get_gets.3 -MLINKS+= BIO_meth_new.3 BIO_meth_get_puts.3 -MLINKS+= BIO_meth_new.3 BIO_meth_get_read.3 -MLINKS+= BIO_meth_new.3 BIO_meth_get_read_ex.3 -MLINKS+= BIO_meth_new.3 BIO_meth_get_write.3 -MLINKS+= BIO_meth_new.3 BIO_meth_get_write_ex.3 -MLINKS+= BIO_meth_new.3 BIO_meth_set_callback_ctrl.3 -MLINKS+= BIO_meth_new.3 BIO_meth_set_create.3 -MLINKS+= BIO_meth_new.3 BIO_meth_set_ctrl.3 -MLINKS+= BIO_meth_new.3 BIO_meth_set_destroy.3 -MLINKS+= BIO_meth_new.3 BIO_meth_set_gets.3 -MLINKS+= BIO_meth_new.3 BIO_meth_set_puts.3 -MLINKS+= BIO_meth_new.3 BIO_meth_set_read.3 -MLINKS+= BIO_meth_new.3 BIO_meth_set_read_ex.3 -MLINKS+= BIO_meth_new.3 BIO_meth_set_write.3 -MLINKS+= BIO_meth_new.3 BIO_meth_set_write_ex.3 -MLINKS+= BIO_new.3 BIO_free.3 -MLINKS+= BIO_new.3 BIO_free_all.3 -MLINKS+= BIO_new.3 BIO_up_ref.3 -MLINKS+= BIO_new.3 BIO_vfree.3 -MLINKS+= BIO_parse_hostserv.3 BIO_hostserv_priorities.3 -MLINKS+= BIO_printf.3 BIO_snprintf.3 -MLINKS+= BIO_printf.3 BIO_vprintf.3 -MLINKS+= BIO_printf.3 BIO_vsnprintf.3 -MLINKS+= BIO_push.3 BIO_pop.3 -MLINKS+= BIO_push.3 BIO_set_next.3 -MLINKS+= BIO_read.3 BIO_gets.3 -MLINKS+= BIO_read.3 BIO_puts.3 -MLINKS+= BIO_read.3 BIO_read_ex.3 -MLINKS+= BIO_read.3 BIO_write.3 -MLINKS+= BIO_read.3 BIO_write_ex.3 -MLINKS+= BIO_s_accept.3 BIO_do_accept.3 -MLINKS+= BIO_s_accept.3 BIO_get_accept_ip_family.3 -MLINKS+= BIO_s_accept.3 BIO_get_accept_name.3 -MLINKS+= BIO_s_accept.3 BIO_get_accept_port.3 -MLINKS+= BIO_s_accept.3 BIO_get_bind_mode.3 -MLINKS+= BIO_s_accept.3 BIO_get_peer_name.3 -MLINKS+= BIO_s_accept.3 BIO_get_peer_port.3 -MLINKS+= BIO_s_accept.3 BIO_new_accept.3 -MLINKS+= BIO_s_accept.3 BIO_set_accept_bios.3 -MLINKS+= BIO_s_accept.3 BIO_set_accept_ip_family.3 -MLINKS+= BIO_s_accept.3 BIO_set_accept_name.3 -MLINKS+= BIO_s_accept.3 BIO_set_accept_port.3 -MLINKS+= BIO_s_accept.3 BIO_set_bind_mode.3 -MLINKS+= BIO_s_accept.3 BIO_set_nbio_accept.3 -MLINKS+= BIO_s_bio.3 BIO_ctrl_get_read_request.3 -MLINKS+= BIO_s_bio.3 BIO_ctrl_get_write_guarantee.3 -MLINKS+= BIO_s_bio.3 BIO_ctrl_reset_read_request.3 -MLINKS+= BIO_s_bio.3 BIO_destroy_bio_pair.3 -MLINKS+= BIO_s_bio.3 BIO_get_read_request.3 -MLINKS+= BIO_s_bio.3 BIO_get_write_buf_size.3 -MLINKS+= BIO_s_bio.3 BIO_get_write_guarantee.3 -MLINKS+= BIO_s_bio.3 BIO_make_bio_pair.3 -MLINKS+= BIO_s_bio.3 BIO_new_bio_pair.3 -MLINKS+= BIO_s_bio.3 BIO_set_write_buf_size.3 -MLINKS+= BIO_s_bio.3 BIO_shutdown_wr.3 -MLINKS+= BIO_s_connect.3 BIO_do_connect.3 -MLINKS+= BIO_s_connect.3 BIO_get_conn_address.3 -MLINKS+= BIO_s_connect.3 BIO_get_conn_hostname.3 -MLINKS+= BIO_s_connect.3 BIO_get_conn_ip_family.3 -MLINKS+= BIO_s_connect.3 BIO_get_conn_port.3 -MLINKS+= BIO_s_connect.3 BIO_new_connect.3 -MLINKS+= BIO_s_connect.3 BIO_set_conn_address.3 -MLINKS+= BIO_s_connect.3 BIO_set_conn_hostname.3 -MLINKS+= BIO_s_connect.3 BIO_set_conn_ip_family.3 -MLINKS+= BIO_s_connect.3 BIO_set_conn_port.3 -MLINKS+= BIO_s_connect.3 BIO_set_nbio.3 -MLINKS+= BIO_s_fd.3 BIO_get_fd.3 -MLINKS+= BIO_s_fd.3 BIO_new_fd.3 -MLINKS+= BIO_s_fd.3 BIO_set_fd.3 -MLINKS+= BIO_s_file.3 BIO_append_filename.3 -MLINKS+= BIO_s_file.3 BIO_get_fp.3 -MLINKS+= BIO_s_file.3 BIO_new_file.3 -MLINKS+= BIO_s_file.3 BIO_new_fp.3 -MLINKS+= BIO_s_file.3 BIO_read_filename.3 -MLINKS+= BIO_s_file.3 BIO_rw_filename.3 -MLINKS+= BIO_s_file.3 BIO_set_fp.3 -MLINKS+= BIO_s_file.3 BIO_write_filename.3 -MLINKS+= BIO_s_mem.3 BIO_get_mem_data.3 -MLINKS+= BIO_s_mem.3 BIO_get_mem_ptr.3 -MLINKS+= BIO_s_mem.3 BIO_new_mem_buf.3 -MLINKS+= BIO_s_mem.3 BIO_s_secmem.3 -MLINKS+= BIO_s_mem.3 BIO_set_mem_buf.3 -MLINKS+= BIO_s_mem.3 BIO_set_mem_eof_return.3 -MLINKS+= BIO_s_socket.3 BIO_new_socket.3 -MLINKS+= BIO_set_callback.3 BIO_callback_fn.3 -MLINKS+= BIO_set_callback.3 BIO_callback_fn_ex.3 -MLINKS+= BIO_set_callback.3 BIO_debug_callback.3 -MLINKS+= BIO_set_callback.3 BIO_get_callback.3 -MLINKS+= BIO_set_callback.3 BIO_get_callback_arg.3 -MLINKS+= BIO_set_callback.3 BIO_get_callback_ex.3 -MLINKS+= BIO_set_callback.3 BIO_set_callback_arg.3 -MLINKS+= BIO_set_callback.3 BIO_set_callback_ex.3 -MLINKS+= BIO_should_retry.3 BIO_get_retry_BIO.3 -MLINKS+= BIO_should_retry.3 BIO_get_retry_reason.3 -MLINKS+= BIO_should_retry.3 BIO_retry_type.3 -MLINKS+= BIO_should_retry.3 BIO_set_retry_reason.3 -MLINKS+= BIO_should_retry.3 BIO_should_io_special.3 -MLINKS+= BIO_should_retry.3 BIO_should_read.3 -MLINKS+= BIO_should_retry.3 BIO_should_write.3 -MLINKS+= BN_BLINDING_new.3 BN_BLINDING_convert.3 -MLINKS+= BN_BLINDING_new.3 BN_BLINDING_convert_ex.3 -MLINKS+= BN_BLINDING_new.3 BN_BLINDING_create_param.3 -MLINKS+= BN_BLINDING_new.3 BN_BLINDING_free.3 -MLINKS+= BN_BLINDING_new.3 BN_BLINDING_get_flags.3 -MLINKS+= BN_BLINDING_new.3 BN_BLINDING_invert.3 -MLINKS+= BN_BLINDING_new.3 BN_BLINDING_invert_ex.3 -MLINKS+= BN_BLINDING_new.3 BN_BLINDING_is_current_thread.3 -MLINKS+= BN_BLINDING_new.3 BN_BLINDING_lock.3 -MLINKS+= BN_BLINDING_new.3 BN_BLINDING_set_current_thread.3 -MLINKS+= BN_BLINDING_new.3 BN_BLINDING_set_flags.3 -MLINKS+= BN_BLINDING_new.3 BN_BLINDING_unlock.3 -MLINKS+= BN_BLINDING_new.3 BN_BLINDING_update.3 -MLINKS+= BN_CTX_new.3 BN_CTX_free.3 -MLINKS+= BN_CTX_new.3 BN_CTX_secure_new.3 -MLINKS+= BN_CTX_start.3 BN_CTX_end.3 -MLINKS+= BN_CTX_start.3 BN_CTX_get.3 -MLINKS+= BN_add.3 BN_div.3 -MLINKS+= BN_add.3 BN_exp.3 -MLINKS+= BN_add.3 BN_gcd.3 -MLINKS+= BN_add.3 BN_mod.3 -MLINKS+= BN_add.3 BN_mod_add.3 -MLINKS+= BN_add.3 BN_mod_exp.3 -MLINKS+= BN_add.3 BN_mod_mul.3 -MLINKS+= BN_add.3 BN_mod_sqr.3 -MLINKS+= BN_add.3 BN_mod_sub.3 -MLINKS+= BN_add.3 BN_mul.3 -MLINKS+= BN_add.3 BN_nnmod.3 -MLINKS+= BN_add.3 BN_sqr.3 -MLINKS+= BN_add.3 BN_sub.3 -MLINKS+= BN_add_word.3 BN_div_word.3 -MLINKS+= BN_add_word.3 BN_mod_word.3 -MLINKS+= BN_add_word.3 BN_mul_word.3 -MLINKS+= BN_add_word.3 BN_sub_word.3 -MLINKS+= BN_bn2bin.3 BN_bin2bn.3 -MLINKS+= BN_bn2bin.3 BN_bn2binpad.3 -MLINKS+= BN_bn2bin.3 BN_bn2dec.3 -MLINKS+= BN_bn2bin.3 BN_bn2hex.3 -MLINKS+= BN_bn2bin.3 BN_bn2lebinpad.3 -MLINKS+= BN_bn2bin.3 BN_bn2mpi.3 -MLINKS+= BN_bn2bin.3 BN_dec2bn.3 -MLINKS+= BN_bn2bin.3 BN_hex2bn.3 -MLINKS+= BN_bn2bin.3 BN_lebin2bn.3 -MLINKS+= BN_bn2bin.3 BN_mpi2bn.3 -MLINKS+= BN_bn2bin.3 BN_print.3 -MLINKS+= BN_bn2bin.3 BN_print_fp.3 -MLINKS+= BN_cmp.3 BN_is_odd.3 -MLINKS+= BN_cmp.3 BN_is_one.3 -MLINKS+= BN_cmp.3 BN_is_word.3 -MLINKS+= BN_cmp.3 BN_is_zero.3 -MLINKS+= BN_cmp.3 BN_ucmp.3 -MLINKS+= BN_copy.3 BN_dup.3 -MLINKS+= BN_copy.3 BN_with_flags.3 -MLINKS+= BN_generate_prime.3 BN_GENCB_call.3 -MLINKS+= BN_generate_prime.3 BN_GENCB_free.3 -MLINKS+= BN_generate_prime.3 BN_GENCB_get_arg.3 -MLINKS+= BN_generate_prime.3 BN_GENCB_new.3 -MLINKS+= BN_generate_prime.3 BN_GENCB_set.3 -MLINKS+= BN_generate_prime.3 BN_GENCB_set_old.3 -MLINKS+= BN_generate_prime.3 BN_generate_prime_ex.3 -MLINKS+= BN_generate_prime.3 BN_is_prime.3 -MLINKS+= BN_generate_prime.3 BN_is_prime_ex.3 -MLINKS+= BN_generate_prime.3 BN_is_prime_fasttest.3 -MLINKS+= BN_generate_prime.3 BN_is_prime_fasttest_ex.3 -MLINKS+= BN_mod_mul_montgomery.3 BN_MONT_CTX_copy.3 -MLINKS+= BN_mod_mul_montgomery.3 BN_MONT_CTX_free.3 -MLINKS+= BN_mod_mul_montgomery.3 BN_MONT_CTX_new.3 -MLINKS+= BN_mod_mul_montgomery.3 BN_MONT_CTX_set.3 -MLINKS+= BN_mod_mul_montgomery.3 BN_from_montgomery.3 -MLINKS+= BN_mod_mul_montgomery.3 BN_to_montgomery.3 -MLINKS+= BN_mod_mul_reciprocal.3 BN_RECP_CTX_free.3 -MLINKS+= BN_mod_mul_reciprocal.3 BN_RECP_CTX_new.3 -MLINKS+= BN_mod_mul_reciprocal.3 BN_RECP_CTX_set.3 -MLINKS+= BN_mod_mul_reciprocal.3 BN_div_recp.3 -MLINKS+= BN_new.3 BN_clear.3 -MLINKS+= BN_new.3 BN_clear_free.3 -MLINKS+= BN_new.3 BN_free.3 -MLINKS+= BN_new.3 BN_secure_new.3 -MLINKS+= BN_num_bytes.3 BN_num_bits.3 -MLINKS+= BN_num_bytes.3 BN_num_bits_word.3 -MLINKS+= BN_rand.3 BN_priv_rand.3 -MLINKS+= BN_rand.3 BN_priv_rand_range.3 -MLINKS+= BN_rand.3 BN_pseudo_rand.3 -MLINKS+= BN_rand.3 BN_pseudo_rand_range.3 -MLINKS+= BN_rand.3 BN_rand_range.3 -MLINKS+= BN_set_bit.3 BN_clear_bit.3 -MLINKS+= BN_set_bit.3 BN_is_bit_set.3 -MLINKS+= BN_set_bit.3 BN_lshift.3 -MLINKS+= BN_set_bit.3 BN_lshift1.3 -MLINKS+= BN_set_bit.3 BN_mask_bits.3 -MLINKS+= BN_set_bit.3 BN_rshift.3 -MLINKS+= BN_set_bit.3 BN_rshift1.3 -MLINKS+= BN_zero.3 BN_get_word.3 -MLINKS+= BN_zero.3 BN_one.3 -MLINKS+= BN_zero.3 BN_set_word.3 -MLINKS+= BN_zero.3 BN_value_one.3 -MLINKS+= BUF_MEM_new.3 BUF_MEM_free.3 -MLINKS+= BUF_MEM_new.3 BUF_MEM_grow.3 -MLINKS+= BUF_MEM_new.3 BUF_MEM_grow_clean.3 -MLINKS+= BUF_MEM_new.3 BUF_MEM_new_ex.3 -MLINKS+= BUF_MEM_new.3 BUF_reverse.3 -MLINKS+= CMS_add0_cert.3 CMS_add0_crl.3 -MLINKS+= CMS_add0_cert.3 CMS_add1_cert.3 -MLINKS+= CMS_add0_cert.3 CMS_add1_crl.3 -MLINKS+= CMS_add0_cert.3 CMS_get1_certs.3 -MLINKS+= CMS_add0_cert.3 CMS_get1_crls.3 -MLINKS+= CMS_add1_recipient_cert.3 CMS_add0_recipient_key.3 -MLINKS+= CMS_add1_signer.3 CMS_SignerInfo_sign.3 -MLINKS+= CMS_get0_RecipientInfos.3 CMS_RecipientInfo_decrypt.3 -MLINKS+= CMS_get0_RecipientInfos.3 CMS_RecipientInfo_encrypt.3 -MLINKS+= CMS_get0_RecipientInfos.3 CMS_RecipientInfo_kekri_get0_id.3 -MLINKS+= CMS_get0_RecipientInfos.3 CMS_RecipientInfo_kekri_id_cmp.3 -MLINKS+= CMS_get0_RecipientInfos.3 CMS_RecipientInfo_ktri_cert_cmp.3 -MLINKS+= CMS_get0_RecipientInfos.3 CMS_RecipientInfo_ktri_get0_signer_id.3 -MLINKS+= CMS_get0_RecipientInfos.3 CMS_RecipientInfo_set0_key.3 -MLINKS+= CMS_get0_RecipientInfos.3 CMS_RecipientInfo_set0_pkey.3 -MLINKS+= CMS_get0_RecipientInfos.3 CMS_RecipientInfo_type.3 -MLINKS+= CMS_get0_SignerInfos.3 CMS_SignerInfo_cert_cmp.3 -MLINKS+= CMS_get0_SignerInfos.3 CMS_SignerInfo_get0_signature.3 -MLINKS+= CMS_get0_SignerInfos.3 CMS_SignerInfo_get0_signer_id.3 -MLINKS+= CMS_get0_SignerInfos.3 CMS_SignerInfo_set1_signer_cert.3 -MLINKS+= CMS_get0_type.3 CMS_get0_content.3 -MLINKS+= CMS_get0_type.3 CMS_get0_eContentType.3 -MLINKS+= CMS_get0_type.3 CMS_set1_eContentType.3 -MLINKS+= CMS_get1_ReceiptRequest.3 CMS_ReceiptRequest_create0.3 -MLINKS+= CMS_get1_ReceiptRequest.3 CMS_ReceiptRequest_get0_values.3 -MLINKS+= CMS_get1_ReceiptRequest.3 CMS_add1_ReceiptRequest.3 -MLINKS+= CMS_verify.3 CMS_get0_signers.3 -MLINKS+= CONF_modules_free.3 CONF_modules_finish.3 -MLINKS+= CONF_modules_free.3 CONF_modules_unload.3 -MLINKS+= CONF_modules_load_file.3 CONF_modules_load.3 -MLINKS+= CRYPTO_THREAD_run_once.3 CRYPTO_THREAD_lock_free.3 -MLINKS+= CRYPTO_THREAD_run_once.3 CRYPTO_THREAD_lock_new.3 -MLINKS+= CRYPTO_THREAD_run_once.3 CRYPTO_THREAD_read_lock.3 -MLINKS+= CRYPTO_THREAD_run_once.3 CRYPTO_THREAD_unlock.3 -MLINKS+= CRYPTO_THREAD_run_once.3 CRYPTO_THREAD_write_lock.3 -MLINKS+= CRYPTO_THREAD_run_once.3 CRYPTO_atomic_add.3 -MLINKS+= CRYPTO_get_ex_new_index.3 CRYPTO_EX_dup.3 -MLINKS+= CRYPTO_get_ex_new_index.3 CRYPTO_EX_free.3 -MLINKS+= CRYPTO_get_ex_new_index.3 CRYPTO_EX_new.3 -MLINKS+= CRYPTO_get_ex_new_index.3 CRYPTO_free_ex_data.3 -MLINKS+= CRYPTO_get_ex_new_index.3 CRYPTO_free_ex_index.3 -MLINKS+= CRYPTO_get_ex_new_index.3 CRYPTO_get_ex_data.3 -MLINKS+= CRYPTO_get_ex_new_index.3 CRYPTO_new_ex_data.3 -MLINKS+= CRYPTO_get_ex_new_index.3 CRYPTO_set_ex_data.3 -MLINKS+= CTLOG_STORE_new.3 CTLOG_STORE_free.3 -MLINKS+= CTLOG_STORE_new.3 CTLOG_STORE_load_default_file.3 -MLINKS+= CTLOG_STORE_new.3 CTLOG_STORE_load_file.3 -MLINKS+= CTLOG_new.3 CTLOG_free.3 -MLINKS+= CTLOG_new.3 CTLOG_get0_log_id.3 -MLINKS+= CTLOG_new.3 CTLOG_get0_name.3 -MLINKS+= CTLOG_new.3 CTLOG_get0_public_key.3 -MLINKS+= CTLOG_new.3 CTLOG_new_from_base64.3 -MLINKS+= CT_POLICY_EVAL_CTX_new.3 CT_POLICY_EVAL_CTX_free.3 -MLINKS+= CT_POLICY_EVAL_CTX_new.3 CT_POLICY_EVAL_CTX_get0_cert.3 -MLINKS+= CT_POLICY_EVAL_CTX_new.3 CT_POLICY_EVAL_CTX_get0_issuer.3 -MLINKS+= CT_POLICY_EVAL_CTX_new.3 CT_POLICY_EVAL_CTX_get0_log_store.3 -MLINKS+= CT_POLICY_EVAL_CTX_new.3 CT_POLICY_EVAL_CTX_get_time.3 -MLINKS+= CT_POLICY_EVAL_CTX_new.3 CT_POLICY_EVAL_CTX_set1_cert.3 -MLINKS+= CT_POLICY_EVAL_CTX_new.3 CT_POLICY_EVAL_CTX_set1_issuer.3 -MLINKS+= CT_POLICY_EVAL_CTX_new.3 CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE.3 -MLINKS+= CT_POLICY_EVAL_CTX_new.3 CT_POLICY_EVAL_CTX_set_time.3 -MLINKS+= DEFINE_STACK_OF.3 DEFINE_SPECIAL_STACK_OF.3 -MLINKS+= DEFINE_STACK_OF.3 DEFINE_SPECIAL_STACK_OF_CONST.3 -MLINKS+= DEFINE_STACK_OF.3 DEFINE_STACK_OF_CONST.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_deep_copy.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_delete.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_delete_ptr.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_dup.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_find.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_find_ex.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_free.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_insert.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_is_sorted.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_new.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_new_null.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_new_reserve.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_num.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_pop.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_pop_free.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_push.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_reserve.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_set.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_set_cmp_func.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_shift.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_sort.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_unshift.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_value.3 -MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_zero.3 -MLINKS+= DES_random_key.3 DES_cbc_cksum.3 -MLINKS+= DES_random_key.3 DES_cfb64_encrypt.3 -MLINKS+= DES_random_key.3 DES_cfb_encrypt.3 -MLINKS+= DES_random_key.3 DES_crypt.3 -MLINKS+= DES_random_key.3 DES_ecb2_encrypt.3 -MLINKS+= DES_random_key.3 DES_ecb3_encrypt.3 -MLINKS+= DES_random_key.3 DES_ecb_encrypt.3 -MLINKS+= DES_random_key.3 DES_ede2_cbc_encrypt.3 -MLINKS+= DES_random_key.3 DES_ede2_cfb64_encrypt.3 -MLINKS+= DES_random_key.3 DES_ede2_ofb64_encrypt.3 -MLINKS+= DES_random_key.3 DES_ede3_cbc_encrypt.3 -MLINKS+= DES_random_key.3 DES_ede3_cfb64_encrypt.3 -MLINKS+= DES_random_key.3 DES_ede3_ofb64_encrypt.3 -MLINKS+= DES_random_key.3 DES_fcrypt.3 -MLINKS+= DES_random_key.3 DES_is_weak_key.3 -MLINKS+= DES_random_key.3 DES_key_sched.3 -MLINKS+= DES_random_key.3 DES_ncbc_encrypt.3 -MLINKS+= DES_random_key.3 DES_ofb64_encrypt.3 -MLINKS+= DES_random_key.3 DES_ofb_encrypt.3 -MLINKS+= DES_random_key.3 DES_pcbc_encrypt.3 -MLINKS+= DES_random_key.3 DES_quad_cksum.3 -MLINKS+= DES_random_key.3 DES_set_key.3 -MLINKS+= DES_random_key.3 DES_set_key_checked.3 -MLINKS+= DES_random_key.3 DES_set_key_unchecked.3 -MLINKS+= DES_random_key.3 DES_set_odd_parity.3 -MLINKS+= DES_random_key.3 DES_string_to_2keys.3 -MLINKS+= DES_random_key.3 DES_string_to_key.3 -MLINKS+= DES_random_key.3 DES_xcbc_encrypt.3 -MLINKS+= DH_generate_key.3 DH_compute_key.3 -MLINKS+= DH_generate_parameters.3 DH_check.3 -MLINKS+= DH_generate_parameters.3 DH_check_ex.3 -MLINKS+= DH_generate_parameters.3 DH_check_params.3 -MLINKS+= DH_generate_parameters.3 DH_check_params_ex.3 -MLINKS+= DH_generate_parameters.3 DH_check_pub_key_ex.3 -MLINKS+= DH_generate_parameters.3 DH_generate_parameters_ex.3 -MLINKS+= DH_get0_pqg.3 DH_clear_flags.3 -MLINKS+= DH_get0_pqg.3 DH_get0_engine.3 -MLINKS+= DH_get0_pqg.3 DH_get0_g.3 -MLINKS+= DH_get0_pqg.3 DH_get0_key.3 -MLINKS+= DH_get0_pqg.3 DH_get0_p.3 -MLINKS+= DH_get0_pqg.3 DH_get0_priv_key.3 -MLINKS+= DH_get0_pqg.3 DH_get0_pub_key.3 -MLINKS+= DH_get0_pqg.3 DH_get0_q.3 -MLINKS+= DH_get0_pqg.3 DH_get_length.3 -MLINKS+= DH_get0_pqg.3 DH_set0_key.3 -MLINKS+= DH_get0_pqg.3 DH_set0_pqg.3 -MLINKS+= DH_get0_pqg.3 DH_set_flags.3 -MLINKS+= DH_get0_pqg.3 DH_set_length.3 -MLINKS+= DH_get0_pqg.3 DH_test_flags.3 -MLINKS+= DH_get_1024_160.3 BN_get0_nist_prime_192.3 -MLINKS+= DH_get_1024_160.3 BN_get0_nist_prime_224.3 -MLINKS+= DH_get_1024_160.3 BN_get0_nist_prime_256.3 -MLINKS+= DH_get_1024_160.3 BN_get0_nist_prime_384.3 -MLINKS+= DH_get_1024_160.3 BN_get0_nist_prime_521.3 -MLINKS+= DH_get_1024_160.3 BN_get_rfc2409_prime_1024.3 -MLINKS+= DH_get_1024_160.3 BN_get_rfc2409_prime_768.3 -MLINKS+= DH_get_1024_160.3 BN_get_rfc3526_prime_1536.3 -MLINKS+= DH_get_1024_160.3 BN_get_rfc3526_prime_2048.3 -MLINKS+= DH_get_1024_160.3 BN_get_rfc3526_prime_3072.3 -MLINKS+= DH_get_1024_160.3 BN_get_rfc3526_prime_4096.3 -MLINKS+= DH_get_1024_160.3 BN_get_rfc3526_prime_6144.3 -MLINKS+= DH_get_1024_160.3 BN_get_rfc3526_prime_8192.3 -MLINKS+= DH_get_1024_160.3 DH_get_2048_224.3 -MLINKS+= DH_get_1024_160.3 DH_get_2048_256.3 -MLINKS+= DH_meth_new.3 DH_meth_dup.3 -MLINKS+= DH_meth_new.3 DH_meth_free.3 -MLINKS+= DH_meth_new.3 DH_meth_get0_app_data.3 -MLINKS+= DH_meth_new.3 DH_meth_get0_name.3 -MLINKS+= DH_meth_new.3 DH_meth_get_bn_mod_exp.3 -MLINKS+= DH_meth_new.3 DH_meth_get_compute_key.3 -MLINKS+= DH_meth_new.3 DH_meth_get_finish.3 -MLINKS+= DH_meth_new.3 DH_meth_get_flags.3 -MLINKS+= DH_meth_new.3 DH_meth_get_generate_key.3 -MLINKS+= DH_meth_new.3 DH_meth_get_generate_params.3 -MLINKS+= DH_meth_new.3 DH_meth_get_init.3 -MLINKS+= DH_meth_new.3 DH_meth_set0_app_data.3 -MLINKS+= DH_meth_new.3 DH_meth_set1_name.3 -MLINKS+= DH_meth_new.3 DH_meth_set_bn_mod_exp.3 -MLINKS+= DH_meth_new.3 DH_meth_set_compute_key.3 -MLINKS+= DH_meth_new.3 DH_meth_set_finish.3 -MLINKS+= DH_meth_new.3 DH_meth_set_flags.3 -MLINKS+= DH_meth_new.3 DH_meth_set_generate_key.3 -MLINKS+= DH_meth_new.3 DH_meth_set_generate_params.3 -MLINKS+= DH_meth_new.3 DH_meth_set_init.3 -MLINKS+= DH_new.3 DH_free.3 -MLINKS+= DH_new_by_nid.3 DH_get_nid.3 -MLINKS+= DH_set_method.3 DH_OpenSSL.3 -MLINKS+= DH_set_method.3 DH_get_default_method.3 -MLINKS+= DH_set_method.3 DH_new_method.3 -MLINKS+= DH_set_method.3 DH_set_default_method.3 -MLINKS+= DH_size.3 DH_bits.3 -MLINKS+= DH_size.3 DH_security_bits.3 -MLINKS+= DSA_SIG_new.3 DSA_SIG_free.3 -MLINKS+= DSA_SIG_new.3 DSA_SIG_get0.3 -MLINKS+= DSA_SIG_new.3 DSA_SIG_set0.3 -MLINKS+= DSA_do_sign.3 DSA_do_verify.3 -MLINKS+= DSA_generate_parameters.3 DSA_generate_parameters_ex.3 -MLINKS+= DSA_get0_pqg.3 DSA_clear_flags.3 -MLINKS+= DSA_get0_pqg.3 DSA_get0_engine.3 -MLINKS+= DSA_get0_pqg.3 DSA_get0_g.3 -MLINKS+= DSA_get0_pqg.3 DSA_get0_key.3 -MLINKS+= DSA_get0_pqg.3 DSA_get0_p.3 -MLINKS+= DSA_get0_pqg.3 DSA_get0_priv_key.3 -MLINKS+= DSA_get0_pqg.3 DSA_get0_pub_key.3 -MLINKS+= DSA_get0_pqg.3 DSA_get0_q.3 -MLINKS+= DSA_get0_pqg.3 DSA_set0_key.3 -MLINKS+= DSA_get0_pqg.3 DSA_set0_pqg.3 -MLINKS+= DSA_get0_pqg.3 DSA_set_flags.3 -MLINKS+= DSA_get0_pqg.3 DSA_test_flags.3 -MLINKS+= DSA_meth_new.3 DSA_meth_dup.3 -MLINKS+= DSA_meth_new.3 DSA_meth_free.3 -MLINKS+= DSA_meth_new.3 DSA_meth_get0_app_data.3 -MLINKS+= DSA_meth_new.3 DSA_meth_get0_name.3 -MLINKS+= DSA_meth_new.3 DSA_meth_get_bn_mod_exp.3 -MLINKS+= DSA_meth_new.3 DSA_meth_get_finish.3 -MLINKS+= DSA_meth_new.3 DSA_meth_get_flags.3 -MLINKS+= DSA_meth_new.3 DSA_meth_get_init.3 -MLINKS+= DSA_meth_new.3 DSA_meth_get_keygen.3 -MLINKS+= DSA_meth_new.3 DSA_meth_get_mod_exp.3 -MLINKS+= DSA_meth_new.3 DSA_meth_get_paramgen.3 -MLINKS+= DSA_meth_new.3 DSA_meth_get_sign.3 -MLINKS+= DSA_meth_new.3 DSA_meth_get_sign_setup.3 -MLINKS+= DSA_meth_new.3 DSA_meth_get_verify.3 -MLINKS+= DSA_meth_new.3 DSA_meth_set0_app_data.3 -MLINKS+= DSA_meth_new.3 DSA_meth_set1_name.3 -MLINKS+= DSA_meth_new.3 DSA_meth_set_bn_mod_exp.3 -MLINKS+= DSA_meth_new.3 DSA_meth_set_finish.3 -MLINKS+= DSA_meth_new.3 DSA_meth_set_flags.3 -MLINKS+= DSA_meth_new.3 DSA_meth_set_init.3 -MLINKS+= DSA_meth_new.3 DSA_meth_set_keygen.3 -MLINKS+= DSA_meth_new.3 DSA_meth_set_mod_exp.3 -MLINKS+= DSA_meth_new.3 DSA_meth_set_paramgen.3 -MLINKS+= DSA_meth_new.3 DSA_meth_set_sign.3 -MLINKS+= DSA_meth_new.3 DSA_meth_set_sign_setup.3 -MLINKS+= DSA_meth_new.3 DSA_meth_set_verify.3 -MLINKS+= DSA_new.3 DSA_free.3 -MLINKS+= DSA_set_method.3 DSA_OpenSSL.3 -MLINKS+= DSA_set_method.3 DSA_get_default_method.3 -MLINKS+= DSA_set_method.3 DSA_new_method.3 -MLINKS+= DSA_set_method.3 DSA_set_default_method.3 -MLINKS+= DSA_sign.3 DSA_sign_setup.3 -MLINKS+= DSA_sign.3 DSA_verify.3 -MLINKS+= DSA_size.3 DSA_bits.3 -MLINKS+= DSA_size.3 DSA_security_bits.3 -MLINKS+= DTLS_set_timer_cb.3 DTLS_timer_cb.3 -MLINKS+= DTLSv1_listen.3 SSL_stateless.3 -MLINKS+= ECDSA_SIG_new.3 ECDSA_SIG_free.3 -MLINKS+= ECDSA_SIG_new.3 ECDSA_SIG_get0.3 -MLINKS+= ECDSA_SIG_new.3 ECDSA_SIG_get0_r.3 -MLINKS+= ECDSA_SIG_new.3 ECDSA_SIG_get0_s.3 -MLINKS+= ECDSA_SIG_new.3 ECDSA_SIG_set0.3 -MLINKS+= ECDSA_SIG_new.3 ECDSA_do_sign.3 -MLINKS+= ECDSA_SIG_new.3 ECDSA_do_sign_ex.3 -MLINKS+= ECDSA_SIG_new.3 ECDSA_do_verify.3 -MLINKS+= ECDSA_SIG_new.3 ECDSA_sign.3 -MLINKS+= ECDSA_SIG_new.3 ECDSA_sign_ex.3 -MLINKS+= ECDSA_SIG_new.3 ECDSA_sign_setup.3 -MLINKS+= ECDSA_SIG_new.3 ECDSA_size.3 -MLINKS+= ECDSA_SIG_new.3 ECDSA_verify.3 -MLINKS+= ECPKParameters_print.3 ECPKParameters_print_fp.3 -MLINKS+= EC_GFp_simple_method.3 EC_GF2m_simple_method.3 -MLINKS+= EC_GFp_simple_method.3 EC_GFp_mont_method.3 -MLINKS+= EC_GFp_simple_method.3 EC_GFp_nist_method.3 -MLINKS+= EC_GFp_simple_method.3 EC_GFp_nistp224_method.3 -MLINKS+= EC_GFp_simple_method.3 EC_GFp_nistp256_method.3 -MLINKS+= EC_GFp_simple_method.3 EC_GFp_nistp521_method.3 -MLINKS+= EC_GFp_simple_method.3 EC_METHOD_get_field_type.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_check.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_check_discriminant.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_cmp.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_dup.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_get0_cofactor.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_get0_generator.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_get0_order.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_get0_seed.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_asn1_flag.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_basis_type.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_cofactor.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_curve_name.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_degree.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_order.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_pentanomial_basis.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_point_conversion_form.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_seed_len.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_trinomial_basis.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_method_of.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_order_bits.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_set_asn1_flag.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_set_curve_name.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_set_generator.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_set_point_conversion_form.3 -MLINKS+= EC_GROUP_copy.3 EC_GROUP_set_seed.3 -MLINKS+= EC_GROUP_new.3 EC_GROUP_clear_free.3 -MLINKS+= EC_GROUP_new.3 EC_GROUP_free.3 -MLINKS+= EC_GROUP_new.3 EC_GROUP_get_curve.3 -MLINKS+= EC_GROUP_new.3 EC_GROUP_get_curve_GF2m.3 -MLINKS+= EC_GROUP_new.3 EC_GROUP_get_curve_GFp.3 -MLINKS+= EC_GROUP_new.3 EC_GROUP_get_ecparameters.3 -MLINKS+= EC_GROUP_new.3 EC_GROUP_get_ecpkparameters.3 -MLINKS+= EC_GROUP_new.3 EC_GROUP_new_by_curve_name.3 -MLINKS+= EC_GROUP_new.3 EC_GROUP_new_curve_GF2m.3 -MLINKS+= EC_GROUP_new.3 EC_GROUP_new_curve_GFp.3 -MLINKS+= EC_GROUP_new.3 EC_GROUP_new_from_ecparameters.3 -MLINKS+= EC_GROUP_new.3 EC_GROUP_new_from_ecpkparameters.3 -MLINKS+= EC_GROUP_new.3 EC_GROUP_set_curve.3 -MLINKS+= EC_GROUP_new.3 EC_GROUP_set_curve_GF2m.3 -MLINKS+= EC_GROUP_new.3 EC_GROUP_set_curve_GFp.3 -MLINKS+= EC_GROUP_new.3 EC_get_builtin_curves.3 -MLINKS+= EC_KEY_get_enc_flags.3 EC_KEY_set_enc_flags.3 -MLINKS+= EC_KEY_new.3 EC_KEY_check_key.3 -MLINKS+= EC_KEY_new.3 EC_KEY_clear_flags.3 -MLINKS+= EC_KEY_new.3 EC_KEY_copy.3 -MLINKS+= EC_KEY_new.3 EC_KEY_dup.3 -MLINKS+= EC_KEY_new.3 EC_KEY_free.3 -MLINKS+= EC_KEY_new.3 EC_KEY_generate_key.3 -MLINKS+= EC_KEY_new.3 EC_KEY_get0_engine.3 -MLINKS+= EC_KEY_new.3 EC_KEY_get0_group.3 -MLINKS+= EC_KEY_new.3 EC_KEY_get0_private_key.3 -MLINKS+= EC_KEY_new.3 EC_KEY_get0_public_key.3 -MLINKS+= EC_KEY_new.3 EC_KEY_get_conv_form.3 -MLINKS+= EC_KEY_new.3 EC_KEY_get_flags.3 -MLINKS+= EC_KEY_new.3 EC_KEY_get_method.3 -MLINKS+= EC_KEY_new.3 EC_KEY_key2buf.3 -MLINKS+= EC_KEY_new.3 EC_KEY_new_by_curve_name.3 -MLINKS+= EC_KEY_new.3 EC_KEY_oct2key.3 -MLINKS+= EC_KEY_new.3 EC_KEY_oct2priv.3 -MLINKS+= EC_KEY_new.3 EC_KEY_precompute_mult.3 -MLINKS+= EC_KEY_new.3 EC_KEY_priv2buf.3 -MLINKS+= EC_KEY_new.3 EC_KEY_priv2oct.3 -MLINKS+= EC_KEY_new.3 EC_KEY_set_asn1_flag.3 -MLINKS+= EC_KEY_new.3 EC_KEY_set_conv_form.3 -MLINKS+= EC_KEY_new.3 EC_KEY_set_flags.3 -MLINKS+= EC_KEY_new.3 EC_KEY_set_group.3 -MLINKS+= EC_KEY_new.3 EC_KEY_set_method.3 -MLINKS+= EC_KEY_new.3 EC_KEY_set_private_key.3 -MLINKS+= EC_KEY_new.3 EC_KEY_set_public_key.3 -MLINKS+= EC_KEY_new.3 EC_KEY_set_public_key_affine_coordinates.3 -MLINKS+= EC_KEY_new.3 EC_KEY_up_ref.3 -MLINKS+= EC_POINT_add.3 EC_GROUP_have_precompute_mult.3 -MLINKS+= EC_POINT_add.3 EC_GROUP_precompute_mult.3 -MLINKS+= EC_POINT_add.3 EC_POINT_cmp.3 -MLINKS+= EC_POINT_add.3 EC_POINT_dbl.3 -MLINKS+= EC_POINT_add.3 EC_POINT_invert.3 -MLINKS+= EC_POINT_add.3 EC_POINT_is_at_infinity.3 -MLINKS+= EC_POINT_add.3 EC_POINT_is_on_curve.3 -MLINKS+= EC_POINT_add.3 EC_POINT_make_affine.3 -MLINKS+= EC_POINT_add.3 EC_POINT_mul.3 -MLINKS+= EC_POINT_add.3 EC_POINTs_make_affine.3 -MLINKS+= EC_POINT_add.3 EC_POINTs_mul.3 -MLINKS+= EC_POINT_new.3 EC_POINT_bn2point.3 -MLINKS+= EC_POINT_new.3 EC_POINT_clear_free.3 -MLINKS+= EC_POINT_new.3 EC_POINT_copy.3 -MLINKS+= EC_POINT_new.3 EC_POINT_dup.3 -MLINKS+= EC_POINT_new.3 EC_POINT_free.3 -MLINKS+= EC_POINT_new.3 EC_POINT_get_Jprojective_coordinates_GFp.3 -MLINKS+= EC_POINT_new.3 EC_POINT_get_affine_coordinates.3 -MLINKS+= EC_POINT_new.3 EC_POINT_get_affine_coordinates_GF2m.3 -MLINKS+= EC_POINT_new.3 EC_POINT_get_affine_coordinates_GFp.3 -MLINKS+= EC_POINT_new.3 EC_POINT_hex2point.3 -MLINKS+= EC_POINT_new.3 EC_POINT_method_of.3 -MLINKS+= EC_POINT_new.3 EC_POINT_oct2point.3 -MLINKS+= EC_POINT_new.3 EC_POINT_point2bn.3 -MLINKS+= EC_POINT_new.3 EC_POINT_point2buf.3 -MLINKS+= EC_POINT_new.3 EC_POINT_point2hex.3 -MLINKS+= EC_POINT_new.3 EC_POINT_point2oct.3 -MLINKS+= EC_POINT_new.3 EC_POINT_set_Jprojective_coordinates_GFp.3 -MLINKS+= EC_POINT_new.3 EC_POINT_set_affine_coordinates.3 -MLINKS+= EC_POINT_new.3 EC_POINT_set_affine_coordinates_GF2m.3 -MLINKS+= EC_POINT_new.3 EC_POINT_set_affine_coordinates_GFp.3 -MLINKS+= EC_POINT_new.3 EC_POINT_set_compressed_coordinates.3 -MLINKS+= EC_POINT_new.3 EC_POINT_set_compressed_coordinates_GF2m.3 -MLINKS+= EC_POINT_new.3 EC_POINT_set_compressed_coordinates_GFp.3 -MLINKS+= EC_POINT_new.3 EC_POINT_set_to_infinity.3 -MLINKS+= ENGINE_add.3 ENGINE_by_id.3 -MLINKS+= ENGINE_add.3 ENGINE_cleanup.3 -MLINKS+= ENGINE_add.3 ENGINE_cmd_is_executable.3 -MLINKS+= ENGINE_add.3 ENGINE_ctrl.3 -MLINKS+= ENGINE_add.3 ENGINE_ctrl_cmd.3 -MLINKS+= ENGINE_add.3 ENGINE_ctrl_cmd_string.3 -MLINKS+= ENGINE_add.3 ENGINE_finish.3 -MLINKS+= ENGINE_add.3 ENGINE_free.3 -MLINKS+= ENGINE_add.3 ENGINE_get_DH.3 -MLINKS+= ENGINE_add.3 ENGINE_get_DSA.3 -MLINKS+= ENGINE_add.3 ENGINE_get_RAND.3 -MLINKS+= ENGINE_add.3 ENGINE_get_RSA.3 -MLINKS+= ENGINE_add.3 ENGINE_get_cipher.3 -MLINKS+= ENGINE_add.3 ENGINE_get_cipher_engine.3 -MLINKS+= ENGINE_add.3 ENGINE_get_ciphers.3 -MLINKS+= ENGINE_add.3 ENGINE_get_cmd_defns.3 -MLINKS+= ENGINE_add.3 ENGINE_get_ctrl_function.3 -MLINKS+= ENGINE_add.3 ENGINE_get_default_DH.3 -MLINKS+= ENGINE_add.3 ENGINE_get_default_DSA.3 -MLINKS+= ENGINE_add.3 ENGINE_get_default_RAND.3 -MLINKS+= ENGINE_add.3 ENGINE_get_default_RSA.3 -MLINKS+= ENGINE_add.3 ENGINE_get_destroy_function.3 -MLINKS+= ENGINE_add.3 ENGINE_get_digest.3 -MLINKS+= ENGINE_add.3 ENGINE_get_digest_engine.3 -MLINKS+= ENGINE_add.3 ENGINE_get_digests.3 -MLINKS+= ENGINE_add.3 ENGINE_get_finish_function.3 -MLINKS+= ENGINE_add.3 ENGINE_get_first.3 -MLINKS+= ENGINE_add.3 ENGINE_get_flags.3 -MLINKS+= ENGINE_add.3 ENGINE_get_id.3 -MLINKS+= ENGINE_add.3 ENGINE_get_init_function.3 -MLINKS+= ENGINE_add.3 ENGINE_get_last.3 -MLINKS+= ENGINE_add.3 ENGINE_get_load_privkey_function.3 -MLINKS+= ENGINE_add.3 ENGINE_get_load_pubkey_function.3 -MLINKS+= ENGINE_add.3 ENGINE_get_name.3 -MLINKS+= ENGINE_add.3 ENGINE_get_next.3 -MLINKS+= ENGINE_add.3 ENGINE_get_prev.3 -MLINKS+= ENGINE_add.3 ENGINE_get_table_flags.3 -MLINKS+= ENGINE_add.3 ENGINE_init.3 -MLINKS+= ENGINE_add.3 ENGINE_load_builtin_engines.3 -MLINKS+= ENGINE_add.3 ENGINE_load_private_key.3 -MLINKS+= ENGINE_add.3 ENGINE_load_public_key.3 -MLINKS+= ENGINE_add.3 ENGINE_new.3 -MLINKS+= ENGINE_add.3 ENGINE_register_DH.3 -MLINKS+= ENGINE_add.3 ENGINE_register_DSA.3 -MLINKS+= ENGINE_add.3 ENGINE_register_RAND.3 -MLINKS+= ENGINE_add.3 ENGINE_register_RSA.3 -MLINKS+= ENGINE_add.3 ENGINE_register_all_DH.3 -MLINKS+= ENGINE_add.3 ENGINE_register_all_DSA.3 -MLINKS+= ENGINE_add.3 ENGINE_register_all_RAND.3 -MLINKS+= ENGINE_add.3 ENGINE_register_all_RSA.3 -MLINKS+= ENGINE_add.3 ENGINE_register_all_ciphers.3 -MLINKS+= ENGINE_add.3 ENGINE_register_all_complete.3 -MLINKS+= ENGINE_add.3 ENGINE_register_all_digests.3 -MLINKS+= ENGINE_add.3 ENGINE_register_ciphers.3 -MLINKS+= ENGINE_add.3 ENGINE_register_complete.3 -MLINKS+= ENGINE_add.3 ENGINE_register_digests.3 -MLINKS+= ENGINE_add.3 ENGINE_remove.3 -MLINKS+= ENGINE_add.3 ENGINE_set_DH.3 -MLINKS+= ENGINE_add.3 ENGINE_set_DSA.3 -MLINKS+= ENGINE_add.3 ENGINE_set_RAND.3 -MLINKS+= ENGINE_add.3 ENGINE_set_RSA.3 -MLINKS+= ENGINE_add.3 ENGINE_set_ciphers.3 -MLINKS+= ENGINE_add.3 ENGINE_set_cmd_defns.3 -MLINKS+= ENGINE_add.3 ENGINE_set_ctrl_function.3 -MLINKS+= ENGINE_add.3 ENGINE_set_default.3 -MLINKS+= ENGINE_add.3 ENGINE_set_default_DH.3 -MLINKS+= ENGINE_add.3 ENGINE_set_default_DSA.3 -MLINKS+= ENGINE_add.3 ENGINE_set_default_RAND.3 -MLINKS+= ENGINE_add.3 ENGINE_set_default_RSA.3 -MLINKS+= ENGINE_add.3 ENGINE_set_default_ciphers.3 -MLINKS+= ENGINE_add.3 ENGINE_set_default_digests.3 -MLINKS+= ENGINE_add.3 ENGINE_set_default_string.3 -MLINKS+= ENGINE_add.3 ENGINE_set_destroy_function.3 -MLINKS+= ENGINE_add.3 ENGINE_set_digests.3 -MLINKS+= ENGINE_add.3 ENGINE_set_finish_function.3 -MLINKS+= ENGINE_add.3 ENGINE_set_flags.3 -MLINKS+= ENGINE_add.3 ENGINE_set_id.3 -MLINKS+= ENGINE_add.3 ENGINE_set_init_function.3 -MLINKS+= ENGINE_add.3 ENGINE_set_load_privkey_function.3 -MLINKS+= ENGINE_add.3 ENGINE_set_load_pubkey_function.3 -MLINKS+= ENGINE_add.3 ENGINE_set_name.3 -MLINKS+= ENGINE_add.3 ENGINE_set_table_flags.3 -MLINKS+= ENGINE_add.3 ENGINE_unregister_DH.3 -MLINKS+= ENGINE_add.3 ENGINE_unregister_DSA.3 -MLINKS+= ENGINE_add.3 ENGINE_unregister_RAND.3 -MLINKS+= ENGINE_add.3 ENGINE_unregister_RSA.3 -MLINKS+= ENGINE_add.3 ENGINE_unregister_ciphers.3 -MLINKS+= ENGINE_add.3 ENGINE_unregister_digests.3 -MLINKS+= ENGINE_add.3 ENGINE_up_ref.3 -MLINKS+= ERR_GET_LIB.3 ERR_FATAL_ERROR.3 -MLINKS+= ERR_GET_LIB.3 ERR_GET_FUNC.3 -MLINKS+= ERR_GET_LIB.3 ERR_GET_REASON.3 -MLINKS+= ERR_error_string.3 ERR_error_string_n.3 -MLINKS+= ERR_error_string.3 ERR_func_error_string.3 -MLINKS+= ERR_error_string.3 ERR_lib_error_string.3 -MLINKS+= ERR_error_string.3 ERR_reason_error_string.3 -MLINKS+= ERR_get_error.3 ERR_get_error_line.3 -MLINKS+= ERR_get_error.3 ERR_get_error_line_data.3 -MLINKS+= ERR_get_error.3 ERR_peek_error.3 -MLINKS+= ERR_get_error.3 ERR_peek_error_line.3 -MLINKS+= ERR_get_error.3 ERR_peek_error_line_data.3 -MLINKS+= ERR_get_error.3 ERR_peek_last_error.3 -MLINKS+= ERR_get_error.3 ERR_peek_last_error_line.3 -MLINKS+= ERR_get_error.3 ERR_peek_last_error_line_data.3 -MLINKS+= ERR_load_crypto_strings.3 ERR_free_strings.3 -MLINKS+= ERR_load_crypto_strings.3 SSL_load_error_strings.3 -MLINKS+= ERR_load_strings.3 ERR_PACK.3 -MLINKS+= ERR_load_strings.3 ERR_get_next_error_library.3 -MLINKS+= ERR_print_errors.3 ERR_print_errors_cb.3 -MLINKS+= ERR_print_errors.3 ERR_print_errors_fp.3 -MLINKS+= ERR_put_error.3 ERR_add_error_data.3 -MLINKS+= ERR_put_error.3 ERR_add_error_vdata.3 -MLINKS+= ERR_remove_state.3 ERR_remove_thread_state.3 -MLINKS+= ERR_set_mark.3 ERR_pop_to_mark.3 -MLINKS+= EVP_CIPHER_CTX_get_cipher_data.3 EVP_CIPHER_CTX_set_cipher_data.3 -MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_dup.3 -MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_free.3 -MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_get_cleanup.3 -MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_get_ctrl.3 -MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_get_do_cipher.3 -MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_get_get_asn1_params.3 -MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_get_init.3 -MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_get_set_asn1_params.3 -MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_set_cleanup.3 -MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_set_ctrl.3 -MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_set_do_cipher.3 -MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_set_flags.3 -MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_set_get_asn1_params.3 -MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_set_impl_ctx_size.3 -MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_set_init.3 -MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_set_iv_length.3 -MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_set_set_asn1_params.3 -MLINKS+= EVP_DigestInit.3 EVP_DigestFinal.3 -MLINKS+= EVP_DigestInit.3 EVP_DigestFinalXOF.3 -MLINKS+= EVP_DigestInit.3 EVP_DigestFinal_ex.3 -MLINKS+= EVP_DigestInit.3 EVP_DigestInit_ex.3 -MLINKS+= EVP_DigestInit.3 EVP_DigestUpdate.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_block_size.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_clear_flags.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_copy.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_copy_ex.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_ctrl.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_free.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_md.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_md_data.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_new.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_reset.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_set_flags.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_set_pkey_ctx.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_size.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_test_flags.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_type.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_block_size.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_pkey_type.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_size.3 -MLINKS+= EVP_DigestInit.3 EVP_MD_type.3 -MLINKS+= EVP_DigestInit.3 EVP_get_digestbyname.3 -MLINKS+= EVP_DigestInit.3 EVP_get_digestbynid.3 -MLINKS+= EVP_DigestInit.3 EVP_get_digestbyobj.3 -MLINKS+= EVP_DigestInit.3 EVP_md_null.3 -MLINKS+= EVP_DigestSignInit.3 EVP_DigestSign.3 -MLINKS+= EVP_DigestSignInit.3 EVP_DigestSignFinal.3 -MLINKS+= EVP_DigestSignInit.3 EVP_DigestSignUpdate.3 -MLINKS+= EVP_DigestVerifyInit.3 EVP_DigestVerify.3 -MLINKS+= EVP_DigestVerifyInit.3 EVP_DigestVerifyFinal.3 -MLINKS+= EVP_DigestVerifyInit.3 EVP_DigestVerifyUpdate.3 -MLINKS+= EVP_EncodeInit.3 EVP_DecodeBlock.3 -MLINKS+= EVP_EncodeInit.3 EVP_DecodeFinal.3 -MLINKS+= EVP_EncodeInit.3 EVP_DecodeInit.3 -MLINKS+= EVP_EncodeInit.3 EVP_DecodeUpdate.3 -MLINKS+= EVP_EncodeInit.3 EVP_ENCODE_CTX_copy.3 -MLINKS+= EVP_EncodeInit.3 EVP_ENCODE_CTX_free.3 -MLINKS+= EVP_EncodeInit.3 EVP_ENCODE_CTX_new.3 -MLINKS+= EVP_EncodeInit.3 EVP_ENCODE_CTX_num.3 -MLINKS+= EVP_EncodeInit.3 EVP_EncodeBlock.3 -MLINKS+= EVP_EncodeInit.3 EVP_EncodeFinal.3 -MLINKS+= EVP_EncodeInit.3 EVP_EncodeUpdate.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_block_size.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_cipher.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_ctrl.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_flags.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_free.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_get_app_data.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_iv_length.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_key_length.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_mode.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_new.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_nid.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_reset.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_set_app_data.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_set_key_length.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_set_padding.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_type.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_asn1_to_param.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_block_size.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_flags.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_iv_length.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_key_length.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_mode.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_nid.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_param_to_asn1.3 -MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_type.3 -MLINKS+= EVP_EncryptInit.3 EVP_CipherFinal.3 -MLINKS+= EVP_EncryptInit.3 EVP_CipherFinal_ex.3 -MLINKS+= EVP_EncryptInit.3 EVP_CipherInit.3 -MLINKS+= EVP_EncryptInit.3 EVP_CipherInit_ex.3 -MLINKS+= EVP_EncryptInit.3 EVP_CipherUpdate.3 -MLINKS+= EVP_EncryptInit.3 EVP_DecryptFinal.3 -MLINKS+= EVP_EncryptInit.3 EVP_DecryptFinal_ex.3 -MLINKS+= EVP_EncryptInit.3 EVP_DecryptInit.3 -MLINKS+= EVP_EncryptInit.3 EVP_DecryptInit_ex.3 -MLINKS+= EVP_EncryptInit.3 EVP_DecryptUpdate.3 -MLINKS+= EVP_EncryptInit.3 EVP_EncryptFinal.3 -MLINKS+= EVP_EncryptInit.3 EVP_EncryptFinal_ex.3 -MLINKS+= EVP_EncryptInit.3 EVP_EncryptInit_ex.3 -MLINKS+= EVP_EncryptInit.3 EVP_EncryptUpdate.3 -MLINKS+= EVP_EncryptInit.3 EVP_enc_null.3 -MLINKS+= EVP_EncryptInit.3 EVP_get_cipherbyname.3 -MLINKS+= EVP_EncryptInit.3 EVP_get_cipherbynid.3 -MLINKS+= EVP_EncryptInit.3 EVP_get_cipherbyobj.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_dup.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_free.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_app_datasize.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_cleanup.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_copy.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_ctrl.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_final.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_flags.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_init.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_input_blocksize.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_result_size.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_update.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_app_datasize.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_cleanup.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_copy.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_ctrl.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_final.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_flags.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_init.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_input_blocksize.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_result_size.3 -MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_update.3 -MLINKS+= EVP_OpenInit.3 EVP_OpenFinal.3 -MLINKS+= EVP_OpenInit.3 EVP_OpenUpdate.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_add0.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_add_alias.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_copy.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_free.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_new.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_check.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_ctrl.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_free.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_get_priv_key.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_get_pub_key.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_item.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_param.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_param_check.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_private.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_public.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_public_check.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_security_bits.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_set_priv_key.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_set_pub_key.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_siginf.3 -MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_get0_asn1.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_ctrl_str.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_ctrl_uint64.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get0_dh_kdf_oid.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get0_dh_kdf_ukm.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get0_ecdh_kdf_ukm.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get0_rsa_oaep_label.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get1_id.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get1_id_len.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_dh_kdf_md.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_dh_kdf_outlen.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_dh_kdf_type.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_ecdh_cofactor_mode.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_ecdh_kdf_md.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_ecdh_kdf_outlen.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_ecdh_kdf_type.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_rsa_mgf1_md.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_rsa_oaep_md.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_rsa_padding.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_rsa_pss_saltlen.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_signature_md.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_md.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set0_dh_kdf_oid.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set0_dh_kdf_ukm.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set0_ecdh_kdf_ukm.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set0_rsa_oaep_label.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set1_id.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_kdf_md.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_kdf_outlen.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_kdf_type.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_nid.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_pad.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_paramgen_generator.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_paramgen_prime_len.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_paramgen_subprime_len.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_paramgen_type.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_rfc5114.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dhx_rfc5114.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dsa_paramgen_bits.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_ec_param_enc.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_ec_paramgen_curve_nid.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_ecdh_cofactor_mode.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_ecdh_kdf_md.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_ecdh_kdf_outlen.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_ecdh_kdf_type.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_mac_key.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_rsa_keygen_bits.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_rsa_keygen_primes.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_rsa_keygen_pubexp.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_rsa_mgf1_md.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_rsa_oaep_md.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_rsa_padding.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_rsa_pss_saltlen.3 -MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_signature_md.3 -MLINKS+= EVP_PKEY_CTX_new.3 EVP_PKEY_CTX_dup.3 -MLINKS+= EVP_PKEY_CTX_new.3 EVP_PKEY_CTX_free.3 -MLINKS+= EVP_PKEY_CTX_new.3 EVP_PKEY_CTX_new_id.3 -MLINKS+= EVP_PKEY_CTX_set_hkdf_md.3 EVP_PKEY_CTX_add1_hkdf_info.3 -MLINKS+= EVP_PKEY_CTX_set_hkdf_md.3 EVP_PKEY_CTX_hkdf_mode.3 -MLINKS+= EVP_PKEY_CTX_set_hkdf_md.3 EVP_PKEY_CTX_set1_hkdf_key.3 -MLINKS+= EVP_PKEY_CTX_set_hkdf_md.3 EVP_PKEY_CTX_set1_hkdf_salt.3 -MLINKS+= EVP_PKEY_CTX_set_rsa_pss_keygen_md.3 EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md.3 -MLINKS+= EVP_PKEY_CTX_set_rsa_pss_keygen_md.3 EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen.3 -MLINKS+= EVP_PKEY_CTX_set_scrypt_N.3 EVP_PKEY_CTX_set1_scrypt_salt.3 -MLINKS+= EVP_PKEY_CTX_set_scrypt_N.3 EVP_PKEY_CTX_set_scrypt_maxmem_bytes.3 -MLINKS+= EVP_PKEY_CTX_set_scrypt_N.3 EVP_PKEY_CTX_set_scrypt_p.3 -MLINKS+= EVP_PKEY_CTX_set_scrypt_N.3 EVP_PKEY_CTX_set_scrypt_r.3 -MLINKS+= EVP_PKEY_CTX_set_tls1_prf_md.3 EVP_PKEY_CTX_add1_tls1_prf_seed.3 -MLINKS+= EVP_PKEY_CTX_set_tls1_prf_md.3 EVP_PKEY_CTX_set1_tls1_prf_secret.3 -MLINKS+= EVP_PKEY_asn1_get_count.3 EVP_PKEY_asn1_find.3 -MLINKS+= EVP_PKEY_asn1_get_count.3 EVP_PKEY_asn1_find_str.3 -MLINKS+= EVP_PKEY_asn1_get_count.3 EVP_PKEY_asn1_get0.3 -MLINKS+= EVP_PKEY_asn1_get_count.3 EVP_PKEY_asn1_get0_info.3 -MLINKS+= EVP_PKEY_cmp.3 EVP_PKEY_cmp_parameters.3 -MLINKS+= EVP_PKEY_cmp.3 EVP_PKEY_copy_parameters.3 -MLINKS+= EVP_PKEY_cmp.3 EVP_PKEY_missing_parameters.3 -MLINKS+= EVP_PKEY_decrypt.3 EVP_PKEY_decrypt_init.3 -MLINKS+= EVP_PKEY_derive.3 EVP_PKEY_derive_init.3 -MLINKS+= EVP_PKEY_derive.3 EVP_PKEY_derive_set_peer.3 -MLINKS+= EVP_PKEY_encrypt.3 EVP_PKEY_encrypt_init.3 -MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_CTX_get_app_data.3 -MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_CTX_get_cb.3 -MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_CTX_get_keygen_info.3 -MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_CTX_set_app_data.3 -MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_CTX_set_cb.3 -MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_check.3 -MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_gen_cb.3 -MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_keygen_init.3 -MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_param_check.3 -MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_paramgen.3 -MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_paramgen_init.3 -MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_public_check.3 -MLINKS+= EVP_PKEY_meth_get_count.3 EVP_PKEY_meth_get0.3 -MLINKS+= EVP_PKEY_meth_get_count.3 EVP_PKEY_meth_get0_info.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_METHOD.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_add0.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_copy.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_find.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_free.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_check.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_cleanup.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_copy.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_ctrl.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_decrypt.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_derive.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_digest_custom.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_encrypt.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_init.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_keygen.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_param_check.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_paramgen.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_public_check.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_sign.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_signctx.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_verify.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_verify_recover.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_verifyctx.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_remove.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_check.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_cleanup.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_copy.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_ctrl.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_decrypt.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_derive.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_digest_custom.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_encrypt.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_init.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_keygen.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_param_check.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_paramgen.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_public_check.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_sign.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_signctx.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_verify.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_verify_recover.3 -MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_verifyctx.3 -MLINKS+= EVP_PKEY_new.3 EVP_PKEY_free.3 -MLINKS+= EVP_PKEY_new.3 EVP_PKEY_get_raw_private_key.3 -MLINKS+= EVP_PKEY_new.3 EVP_PKEY_get_raw_public_key.3 -MLINKS+= EVP_PKEY_new.3 EVP_PKEY_new_CMAC_key.3 -MLINKS+= EVP_PKEY_new.3 EVP_PKEY_new_mac_key.3 -MLINKS+= EVP_PKEY_new.3 EVP_PKEY_new_raw_private_key.3 -MLINKS+= EVP_PKEY_new.3 EVP_PKEY_new_raw_public_key.3 -MLINKS+= EVP_PKEY_new.3 EVP_PKEY_up_ref.3 -MLINKS+= EVP_PKEY_print_private.3 EVP_PKEY_print_params.3 -MLINKS+= EVP_PKEY_print_private.3 EVP_PKEY_print_public.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_assign_DH.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_assign_DSA.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_assign_EC_KEY.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_assign_POLY1305.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_assign_RSA.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_assign_SIPHASH.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_base_id.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get0_DH.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get0_DSA.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get0_EC_KEY.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get0_RSA.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get0_engine.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get0_hmac.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get0_poly1305.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get0_siphash.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get1_DH.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get1_DSA.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get1_EC_KEY.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get1_RSA.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_id.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_set1_DH.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_set1_DSA.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_set1_EC_KEY.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_set1_engine.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_set_alias_type.3 -MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_type.3 -MLINKS+= EVP_PKEY_sign.3 EVP_PKEY_sign_init.3 -MLINKS+= EVP_PKEY_verify.3 EVP_PKEY_verify_init.3 -MLINKS+= EVP_PKEY_verify_recover.3 EVP_PKEY_verify_recover_init.3 -MLINKS+= EVP_SealInit.3 EVP_SealFinal.3 -MLINKS+= EVP_SealInit.3 EVP_SealUpdate.3 -MLINKS+= EVP_SignInit.3 EVP_PKEY_security_bits.3 -MLINKS+= EVP_SignInit.3 EVP_PKEY_size.3 -MLINKS+= EVP_SignInit.3 EVP_SignFinal.3 -MLINKS+= EVP_SignInit.3 EVP_SignInit_ex.3 -MLINKS+= EVP_SignInit.3 EVP_SignUpdate.3 -MLINKS+= EVP_VerifyInit.3 EVP_VerifyFinal.3 -MLINKS+= EVP_VerifyInit.3 EVP_VerifyInit_ex.3 -MLINKS+= EVP_VerifyInit.3 EVP_VerifyUpdate.3 -MLINKS+= EVP_aes.3 EVP_aes_128_cbc.3 -MLINKS+= EVP_aes.3 EVP_aes_128_cbc_hmac_sha1.3 -MLINKS+= EVP_aes.3 EVP_aes_128_cbc_hmac_sha256.3 -MLINKS+= EVP_aes.3 EVP_aes_128_ccm.3 -MLINKS+= EVP_aes.3 EVP_aes_128_cfb.3 -MLINKS+= EVP_aes.3 EVP_aes_128_cfb1.3 -MLINKS+= EVP_aes.3 EVP_aes_128_cfb128.3 -MLINKS+= EVP_aes.3 EVP_aes_128_cfb8.3 -MLINKS+= EVP_aes.3 EVP_aes_128_ctr.3 -MLINKS+= EVP_aes.3 EVP_aes_128_ecb.3 -MLINKS+= EVP_aes.3 EVP_aes_128_gcm.3 -MLINKS+= EVP_aes.3 EVP_aes_128_ocb.3 -MLINKS+= EVP_aes.3 EVP_aes_128_ofb.3 -MLINKS+= EVP_aes.3 EVP_aes_128_wrap.3 -MLINKS+= EVP_aes.3 EVP_aes_128_wrap_pad.3 -MLINKS+= EVP_aes.3 EVP_aes_128_xts.3 -MLINKS+= EVP_aes.3 EVP_aes_192_cbc.3 -MLINKS+= EVP_aes.3 EVP_aes_192_ccm.3 -MLINKS+= EVP_aes.3 EVP_aes_192_cfb.3 -MLINKS+= EVP_aes.3 EVP_aes_192_cfb1.3 -MLINKS+= EVP_aes.3 EVP_aes_192_cfb128.3 -MLINKS+= EVP_aes.3 EVP_aes_192_cfb8.3 -MLINKS+= EVP_aes.3 EVP_aes_192_ctr.3 -MLINKS+= EVP_aes.3 EVP_aes_192_ecb.3 -MLINKS+= EVP_aes.3 EVP_aes_192_gcm.3 -MLINKS+= EVP_aes.3 EVP_aes_192_ocb.3 -MLINKS+= EVP_aes.3 EVP_aes_192_ofb.3 -MLINKS+= EVP_aes.3 EVP_aes_192_wrap.3 -MLINKS+= EVP_aes.3 EVP_aes_192_wrap_pad.3 -MLINKS+= EVP_aes.3 EVP_aes_256_cbc.3 -MLINKS+= EVP_aes.3 EVP_aes_256_cbc_hmac_sha1.3 -MLINKS+= EVP_aes.3 EVP_aes_256_cbc_hmac_sha256.3 -MLINKS+= EVP_aes.3 EVP_aes_256_ccm.3 -MLINKS+= EVP_aes.3 EVP_aes_256_cfb.3 -MLINKS+= EVP_aes.3 EVP_aes_256_cfb1.3 -MLINKS+= EVP_aes.3 EVP_aes_256_cfb128.3 -MLINKS+= EVP_aes.3 EVP_aes_256_cfb8.3 -MLINKS+= EVP_aes.3 EVP_aes_256_ctr.3 -MLINKS+= EVP_aes.3 EVP_aes_256_ecb.3 -MLINKS+= EVP_aes.3 EVP_aes_256_gcm.3 -MLINKS+= EVP_aes.3 EVP_aes_256_ocb.3 -MLINKS+= EVP_aes.3 EVP_aes_256_ofb.3 -MLINKS+= EVP_aes.3 EVP_aes_256_wrap.3 -MLINKS+= EVP_aes.3 EVP_aes_256_wrap_pad.3 -MLINKS+= EVP_aes.3 EVP_aes_256_xts.3 -MLINKS+= EVP_aria.3 EVP_aria_128_cbc.3 -MLINKS+= EVP_aria.3 EVP_aria_128_ccm.3 -MLINKS+= EVP_aria.3 EVP_aria_128_cfb.3 -MLINKS+= EVP_aria.3 EVP_aria_128_cfb1.3 -MLINKS+= EVP_aria.3 EVP_aria_128_cfb128.3 -MLINKS+= EVP_aria.3 EVP_aria_128_cfb8.3 -MLINKS+= EVP_aria.3 EVP_aria_128_ctr.3 -MLINKS+= EVP_aria.3 EVP_aria_128_ecb.3 -MLINKS+= EVP_aria.3 EVP_aria_128_gcm.3 -MLINKS+= EVP_aria.3 EVP_aria_128_ofb.3 -MLINKS+= EVP_aria.3 EVP_aria_192_cbc.3 -MLINKS+= EVP_aria.3 EVP_aria_192_ccm.3 -MLINKS+= EVP_aria.3 EVP_aria_192_cfb.3 -MLINKS+= EVP_aria.3 EVP_aria_192_cfb1.3 -MLINKS+= EVP_aria.3 EVP_aria_192_cfb128.3 -MLINKS+= EVP_aria.3 EVP_aria_192_cfb8.3 -MLINKS+= EVP_aria.3 EVP_aria_192_ctr.3 -MLINKS+= EVP_aria.3 EVP_aria_192_ecb.3 -MLINKS+= EVP_aria.3 EVP_aria_192_gcm.3 -MLINKS+= EVP_aria.3 EVP_aria_192_ofb.3 -MLINKS+= EVP_aria.3 EVP_aria_256_cbc.3 -MLINKS+= EVP_aria.3 EVP_aria_256_ccm.3 -MLINKS+= EVP_aria.3 EVP_aria_256_cfb.3 -MLINKS+= EVP_aria.3 EVP_aria_256_cfb1.3 -MLINKS+= EVP_aria.3 EVP_aria_256_cfb128.3 -MLINKS+= EVP_aria.3 EVP_aria_256_cfb8.3 -MLINKS+= EVP_aria.3 EVP_aria_256_ctr.3 -MLINKS+= EVP_aria.3 EVP_aria_256_ecb.3 -MLINKS+= EVP_aria.3 EVP_aria_256_gcm.3 -MLINKS+= EVP_aria.3 EVP_aria_256_ofb.3 -MLINKS+= EVP_bf_cbc.3 EVP_bf_cfb.3 -MLINKS+= EVP_bf_cbc.3 EVP_bf_cfb64.3 -MLINKS+= EVP_bf_cbc.3 EVP_bf_ecb.3 -MLINKS+= EVP_bf_cbc.3 EVP_bf_ofb.3 -MLINKS+= EVP_blake2b512.3 EVP_blake2s256.3 -MLINKS+= EVP_camellia.3 EVP_camellia_128_cbc.3 -MLINKS+= EVP_camellia.3 EVP_camellia_128_cfb.3 -MLINKS+= EVP_camellia.3 EVP_camellia_128_cfb1.3 -MLINKS+= EVP_camellia.3 EVP_camellia_128_cfb128.3 -MLINKS+= EVP_camellia.3 EVP_camellia_128_cfb8.3 -MLINKS+= EVP_camellia.3 EVP_camellia_128_ctr.3 -MLINKS+= EVP_camellia.3 EVP_camellia_128_ecb.3 -MLINKS+= EVP_camellia.3 EVP_camellia_128_ofb.3 -MLINKS+= EVP_camellia.3 EVP_camellia_192_cbc.3 -MLINKS+= EVP_camellia.3 EVP_camellia_192_cfb.3 -MLINKS+= EVP_camellia.3 EVP_camellia_192_cfb1.3 -MLINKS+= EVP_camellia.3 EVP_camellia_192_cfb128.3 -MLINKS+= EVP_camellia.3 EVP_camellia_192_cfb8.3 -MLINKS+= EVP_camellia.3 EVP_camellia_192_ctr.3 -MLINKS+= EVP_camellia.3 EVP_camellia_192_ecb.3 -MLINKS+= EVP_camellia.3 EVP_camellia_192_ofb.3 -MLINKS+= EVP_camellia.3 EVP_camellia_256_cbc.3 -MLINKS+= EVP_camellia.3 EVP_camellia_256_cfb.3 -MLINKS+= EVP_camellia.3 EVP_camellia_256_cfb1.3 -MLINKS+= EVP_camellia.3 EVP_camellia_256_cfb128.3 -MLINKS+= EVP_camellia.3 EVP_camellia_256_cfb8.3 -MLINKS+= EVP_camellia.3 EVP_camellia_256_ctr.3 -MLINKS+= EVP_camellia.3 EVP_camellia_256_ecb.3 -MLINKS+= EVP_camellia.3 EVP_camellia_256_ofb.3 -MLINKS+= EVP_cast5_cbc.3 EVP_cast5_cfb.3 -MLINKS+= EVP_cast5_cbc.3 EVP_cast5_cfb64.3 -MLINKS+= EVP_cast5_cbc.3 EVP_cast5_ecb.3 -MLINKS+= EVP_cast5_cbc.3 EVP_cast5_ofb.3 -MLINKS+= EVP_chacha20.3 EVP_chacha20_poly1305.3 -MLINKS+= EVP_des.3 EVP_des_cbc.3 -MLINKS+= EVP_des.3 EVP_des_cfb.3 -MLINKS+= EVP_des.3 EVP_des_cfb1.3 -MLINKS+= EVP_des.3 EVP_des_cfb64.3 -MLINKS+= EVP_des.3 EVP_des_cfb8.3 -MLINKS+= EVP_des.3 EVP_des_ecb.3 -MLINKS+= EVP_des.3 EVP_des_ede.3 -MLINKS+= EVP_des.3 EVP_des_ede3.3 -MLINKS+= EVP_des.3 EVP_des_ede3_cbc.3 -MLINKS+= EVP_des.3 EVP_des_ede3_cfb.3 -MLINKS+= EVP_des.3 EVP_des_ede3_cfb1.3 -MLINKS+= EVP_des.3 EVP_des_ede3_cfb64.3 -MLINKS+= EVP_des.3 EVP_des_ede3_cfb8.3 -MLINKS+= EVP_des.3 EVP_des_ede3_ecb.3 -MLINKS+= EVP_des.3 EVP_des_ede3_ofb.3 -MLINKS+= EVP_des.3 EVP_des_ede3_wrap.3 -MLINKS+= EVP_des.3 EVP_des_ede_cbc.3 -MLINKS+= EVP_des.3 EVP_des_ede_cfb.3 -MLINKS+= EVP_des.3 EVP_des_ede_cfb64.3 -MLINKS+= EVP_des.3 EVP_des_ede_ecb.3 -MLINKS+= EVP_des.3 EVP_des_ede_ofb.3 -MLINKS+= EVP_des.3 EVP_des_ofb.3 -MLINKS+= EVP_idea_cbc.3 EVP_idea_cfb.3 -MLINKS+= EVP_idea_cbc.3 EVP_idea_cfb64.3 -MLINKS+= EVP_idea_cbc.3 EVP_idea_ecb.3 -MLINKS+= EVP_idea_cbc.3 EVP_idea_ofb.3 -MLINKS+= EVP_md5.3 EVP_md5_sha1.3 -MLINKS+= EVP_rc2_cbc.3 EVP_rc2_40_cbc.3 -MLINKS+= EVP_rc2_cbc.3 EVP_rc2_64_cbc.3 -MLINKS+= EVP_rc2_cbc.3 EVP_rc2_cfb.3 -MLINKS+= EVP_rc2_cbc.3 EVP_rc2_cfb64.3 -MLINKS+= EVP_rc2_cbc.3 EVP_rc2_ecb.3 -MLINKS+= EVP_rc2_cbc.3 EVP_rc2_ofb.3 -MLINKS+= EVP_rc4.3 EVP_rc4_40.3 -MLINKS+= EVP_rc4.3 EVP_rc4_hmac_md5.3 -MLINKS+= EVP_rc5_32_12_16_cbc.3 EVP_rc5_32_12_16_cfb.3 -MLINKS+= EVP_rc5_32_12_16_cbc.3 EVP_rc5_32_12_16_cfb64.3 -MLINKS+= EVP_rc5_32_12_16_cbc.3 EVP_rc5_32_12_16_ecb.3 -MLINKS+= EVP_rc5_32_12_16_cbc.3 EVP_rc5_32_12_16_ofb.3 -MLINKS+= EVP_seed_cbc.3 EVP_seed_cfb.3 -MLINKS+= EVP_seed_cbc.3 EVP_seed_cfb128.3 -MLINKS+= EVP_seed_cbc.3 EVP_seed_ecb.3 -MLINKS+= EVP_seed_cbc.3 EVP_seed_ofb.3 -MLINKS+= EVP_sha224.3 EVP_sha256.3 -MLINKS+= EVP_sha224.3 EVP_sha384.3 -MLINKS+= EVP_sha224.3 EVP_sha512.3 -MLINKS+= EVP_sha224.3 EVP_sha512_224.3 -MLINKS+= EVP_sha224.3 EVP_sha512_256.3 -MLINKS+= EVP_sha3_224.3 EVP_sha3_256.3 -MLINKS+= EVP_sha3_224.3 EVP_sha3_384.3 -MLINKS+= EVP_sha3_224.3 EVP_sha3_512.3 -MLINKS+= EVP_sha3_224.3 EVP_shake128.3 -MLINKS+= EVP_sha3_224.3 EVP_shake256.3 -MLINKS+= EVP_sm4_cbc.3 EVP_sm4_cfb.3 -MLINKS+= EVP_sm4_cbc.3 EVP_sm4_cfb128.3 -MLINKS+= EVP_sm4_cbc.3 EVP_sm4_ctr.3 -MLINKS+= EVP_sm4_cbc.3 EVP_sm4_ecb.3 -MLINKS+= EVP_sm4_cbc.3 EVP_sm4_ofb.3 -MLINKS+= HMAC.3 HMAC_CTX_copy.3 -MLINKS+= HMAC.3 HMAC_CTX_free.3 -MLINKS+= HMAC.3 HMAC_CTX_get_md.3 -MLINKS+= HMAC.3 HMAC_CTX_new.3 -MLINKS+= HMAC.3 HMAC_CTX_reset.3 -MLINKS+= HMAC.3 HMAC_CTX_set_flags.3 -MLINKS+= HMAC.3 HMAC_Final.3 -MLINKS+= HMAC.3 HMAC_Init.3 -MLINKS+= HMAC.3 HMAC_Init_ex.3 -MLINKS+= HMAC.3 HMAC_Update.3 -MLINKS+= HMAC.3 HMAC_size.3 -MLINKS+= MD5.3 MD2.3 -MLINKS+= MD5.3 MD2_Final.3 -MLINKS+= MD5.3 MD2_Init.3 -MLINKS+= MD5.3 MD2_Update.3 -MLINKS+= MD5.3 MD4.3 -MLINKS+= MD5.3 MD4_Final.3 -MLINKS+= MD5.3 MD4_Init.3 -MLINKS+= MD5.3 MD4_Update.3 -MLINKS+= MD5.3 MD5_Final.3 -MLINKS+= MD5.3 MD5_Init.3 -MLINKS+= MD5.3 MD5_Update.3 -MLINKS+= MDC2_Init.3 MDC2.3 -MLINKS+= MDC2_Init.3 MDC2_Final.3 -MLINKS+= MDC2_Init.3 MDC2_Update.3 -MLINKS+= OBJ_nid2obj.3 OBJ_cleanup.3 -MLINKS+= OBJ_nid2obj.3 OBJ_cmp.3 -MLINKS+= OBJ_nid2obj.3 OBJ_create.3 -MLINKS+= OBJ_nid2obj.3 OBJ_dup.3 -MLINKS+= OBJ_nid2obj.3 OBJ_get0_data.3 -MLINKS+= OBJ_nid2obj.3 OBJ_length.3 -MLINKS+= OBJ_nid2obj.3 OBJ_ln2nid.3 -MLINKS+= OBJ_nid2obj.3 OBJ_nid2ln.3 -MLINKS+= OBJ_nid2obj.3 OBJ_nid2sn.3 -MLINKS+= OBJ_nid2obj.3 OBJ_obj2nid.3 -MLINKS+= OBJ_nid2obj.3 OBJ_obj2txt.3 -MLINKS+= OBJ_nid2obj.3 OBJ_sn2nid.3 -MLINKS+= OBJ_nid2obj.3 OBJ_txt2nid.3 -MLINKS+= OBJ_nid2obj.3 OBJ_txt2obj.3 -MLINKS+= OBJ_nid2obj.3 i2t_ASN1_OBJECT.3 -MLINKS+= OCSP_REQUEST_new.3 OCSP_REQUEST_free.3 -MLINKS+= OCSP_REQUEST_new.3 OCSP_request_add0_id.3 -MLINKS+= OCSP_REQUEST_new.3 OCSP_request_add1_cert.3 -MLINKS+= OCSP_REQUEST_new.3 OCSP_request_onereq_count.3 -MLINKS+= OCSP_REQUEST_new.3 OCSP_request_onereq_get0.3 -MLINKS+= OCSP_REQUEST_new.3 OCSP_request_sign.3 -MLINKS+= OCSP_cert_to_id.3 OCSP_CERTID_free.3 -MLINKS+= OCSP_cert_to_id.3 OCSP_cert_id_new.3 -MLINKS+= OCSP_cert_to_id.3 OCSP_id_cmp.3 -MLINKS+= OCSP_cert_to_id.3 OCSP_id_get0_info.3 -MLINKS+= OCSP_cert_to_id.3 OCSP_id_issuer_cmp.3 -MLINKS+= OCSP_request_add1_nonce.3 OCSP_basic_add1_nonce.3 -MLINKS+= OCSP_request_add1_nonce.3 OCSP_check_nonce.3 -MLINKS+= OCSP_request_add1_nonce.3 OCSP_copy_nonce.3 -MLINKS+= OCSP_resp_find_status.3 OCSP_basic_verify.3 -MLINKS+= OCSP_resp_find_status.3 OCSP_check_validity.3 -MLINKS+= OCSP_resp_find_status.3 OCSP_resp_count.3 -MLINKS+= OCSP_resp_find_status.3 OCSP_resp_find.3 -MLINKS+= OCSP_resp_find_status.3 OCSP_resp_get0.3 -MLINKS+= OCSP_resp_find_status.3 OCSP_resp_get0_certs.3 -MLINKS+= OCSP_resp_find_status.3 OCSP_resp_get0_id.3 -MLINKS+= OCSP_resp_find_status.3 OCSP_resp_get0_produced_at.3 -MLINKS+= OCSP_resp_find_status.3 OCSP_resp_get0_respdata.3 -MLINKS+= OCSP_resp_find_status.3 OCSP_resp_get0_signature.3 -MLINKS+= OCSP_resp_find_status.3 OCSP_resp_get0_signer.3 -MLINKS+= OCSP_resp_find_status.3 OCSP_resp_get0_tbs_sigalg.3 -MLINKS+= OCSP_resp_find_status.3 OCSP_resp_get1_id.3 -MLINKS+= OCSP_resp_find_status.3 OCSP_single_get0_status.3 -MLINKS+= OCSP_response_status.3 OCSP_RESPID_match.3 -MLINKS+= OCSP_response_status.3 OCSP_RESPID_set_by_key.3 -MLINKS+= OCSP_response_status.3 OCSP_RESPID_set_by_name.3 -MLINKS+= OCSP_response_status.3 OCSP_RESPONSE_free.3 -MLINKS+= OCSP_response_status.3 OCSP_basic_sign.3 -MLINKS+= OCSP_response_status.3 OCSP_basic_sign_ctx.3 -MLINKS+= OCSP_response_status.3 OCSP_response_create.3 -MLINKS+= OCSP_response_status.3 OCSP_response_get1_basic.3 -MLINKS+= OCSP_sendreq_new.3 OCSP_REQ_CTX_add1_header.3 -MLINKS+= OCSP_sendreq_new.3 OCSP_REQ_CTX_free.3 -MLINKS+= OCSP_sendreq_new.3 OCSP_REQ_CTX_set1_req.3 -MLINKS+= OCSP_sendreq_new.3 OCSP_sendreq_bio.3 -MLINKS+= OCSP_sendreq_new.3 OCSP_sendreq_nbio.3 -MLINKS+= OCSP_sendreq_new.3 OCSP_set_max_response_length.3 -MLINKS+= OPENSSL_LH_COMPFUNC.3 DECLARE_LHASH_OF.3 -MLINKS+= OPENSSL_LH_COMPFUNC.3 IMPLEMENT_LHASH_COMP_FN.3 -MLINKS+= OPENSSL_LH_COMPFUNC.3 IMPLEMENT_LHASH_HASH_FN.3 -MLINKS+= OPENSSL_LH_COMPFUNC.3 LHASH.3 -MLINKS+= OPENSSL_LH_COMPFUNC.3 LHASH_DOALL_ARG_FN_TYPE.3 -MLINKS+= OPENSSL_LH_COMPFUNC.3 OPENSSL_LH_DOALL_FUNC.3 -MLINKS+= OPENSSL_LH_COMPFUNC.3 OPENSSL_LH_HASHFUNC.3 -MLINKS+= OPENSSL_LH_COMPFUNC.3 lh_TYPE_delete.3 -MLINKS+= OPENSSL_LH_COMPFUNC.3 lh_TYPE_doall.3 -MLINKS+= OPENSSL_LH_COMPFUNC.3 lh_TYPE_doall_arg.3 -MLINKS+= OPENSSL_LH_COMPFUNC.3 lh_TYPE_error.3 -MLINKS+= OPENSSL_LH_COMPFUNC.3 lh_TYPE_free.3 -MLINKS+= OPENSSL_LH_COMPFUNC.3 lh_TYPE_insert.3 -MLINKS+= OPENSSL_LH_COMPFUNC.3 lh_TYPE_new.3 -MLINKS+= OPENSSL_LH_COMPFUNC.3 lh_TYPE_retrieve.3 -MLINKS+= OPENSSL_LH_stats.3 OPENSSL_LH_node_stats.3 -MLINKS+= OPENSSL_LH_stats.3 OPENSSL_LH_node_stats_bio.3 -MLINKS+= OPENSSL_LH_stats.3 OPENSSL_LH_node_usage_stats.3 -MLINKS+= OPENSSL_LH_stats.3 OPENSSL_LH_node_usage_stats_bio.3 -MLINKS+= OPENSSL_LH_stats.3 OPENSSL_LH_stats_bio.3 -MLINKS+= OPENSSL_VERSION_NUMBER.3 OPENSSL_VERSION_TEXT.3 -MLINKS+= OPENSSL_VERSION_NUMBER.3 OpenSSL_version.3 -MLINKS+= OPENSSL_VERSION_NUMBER.3 OpenSSL_version_num.3 -MLINKS+= OPENSSL_config.3 OPENSSL_no_config.3 -MLINKS+= OPENSSL_fork_prepare.3 OPENSSL_fork_child.3 -MLINKS+= OPENSSL_fork_prepare.3 OPENSSL_fork_parent.3 -MLINKS+= OPENSSL_init_crypto.3 OPENSSL_INIT_free.3 -MLINKS+= OPENSSL_init_crypto.3 OPENSSL_INIT_new.3 -MLINKS+= OPENSSL_init_crypto.3 OPENSSL_INIT_set_config_appname.3 -MLINKS+= OPENSSL_init_crypto.3 OPENSSL_INIT_set_config_file_flags.3 -MLINKS+= OPENSSL_init_crypto.3 OPENSSL_INIT_set_config_filename.3 -MLINKS+= OPENSSL_init_crypto.3 OPENSSL_atexit.3 -MLINKS+= OPENSSL_init_crypto.3 OPENSSL_cleanup.3 -MLINKS+= OPENSSL_init_crypto.3 OPENSSL_thread_stop.3 -MLINKS+= OPENSSL_instrument_bus.3 OPENSSL_instrument_bus2.3 -MLINKS+= OPENSSL_load_builtin_modules.3 ASN1_add_oid_module.3 -MLINKS+= OPENSSL_load_builtin_modules.3 ENGINE_add_conf_module.3 -MLINKS+= OPENSSL_malloc.3 CRYPTO_clear_free.3 -MLINKS+= OPENSSL_malloc.3 CRYPTO_clear_realloc.3 -MLINKS+= OPENSSL_malloc.3 CRYPTO_free.3 -MLINKS+= OPENSSL_malloc.3 CRYPTO_get_alloc_counts.3 -MLINKS+= OPENSSL_malloc.3 CRYPTO_get_mem_functions.3 -MLINKS+= OPENSSL_malloc.3 CRYPTO_malloc.3 -MLINKS+= OPENSSL_malloc.3 CRYPTO_mem_ctrl.3 -MLINKS+= OPENSSL_malloc.3 CRYPTO_mem_debug_pop.3 -MLINKS+= OPENSSL_malloc.3 CRYPTO_mem_debug_push.3 -MLINKS+= OPENSSL_malloc.3 CRYPTO_mem_leaks.3 -MLINKS+= OPENSSL_malloc.3 CRYPTO_mem_leaks_cb.3 -MLINKS+= OPENSSL_malloc.3 CRYPTO_mem_leaks_fp.3 -MLINKS+= OPENSSL_malloc.3 CRYPTO_realloc.3 -MLINKS+= OPENSSL_malloc.3 CRYPTO_set_mem_debug.3 -MLINKS+= OPENSSL_malloc.3 CRYPTO_set_mem_functions.3 -MLINKS+= OPENSSL_malloc.3 CRYPTO_strdup.3 -MLINKS+= OPENSSL_malloc.3 CRYPTO_strndup.3 -MLINKS+= OPENSSL_malloc.3 CRYPTO_zalloc.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_MALLOC_FAILURES.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_MALLOC_FD.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_buf2hexstr.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_cleanse.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_clear_free.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_clear_realloc.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_free.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_hexchar2int.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_hexstr2buf.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_malloc_init.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_mem_debug_pop.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_mem_debug_push.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_memdup.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_realloc.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_strdup.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_strlcat.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_strlcpy.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_strndup.3 -MLINKS+= OPENSSL_malloc.3 OPENSSL_zalloc.3 -MLINKS+= OPENSSL_secure_malloc.3 CRYPTO_secure_clear_free.3 -MLINKS+= OPENSSL_secure_malloc.3 CRYPTO_secure_free.3 -MLINKS+= OPENSSL_secure_malloc.3 CRYPTO_secure_malloc.3 -MLINKS+= OPENSSL_secure_malloc.3 CRYPTO_secure_malloc_done.3 -MLINKS+= OPENSSL_secure_malloc.3 CRYPTO_secure_malloc_init.3 -MLINKS+= OPENSSL_secure_malloc.3 CRYPTO_secure_malloc_initialized.3 -MLINKS+= OPENSSL_secure_malloc.3 CRYPTO_secure_used.3 -MLINKS+= OPENSSL_secure_malloc.3 CRYPTO_secure_zalloc.3 -MLINKS+= OPENSSL_secure_malloc.3 OPENSSL_secure_actual_size.3 -MLINKS+= OPENSSL_secure_malloc.3 OPENSSL_secure_clear_free.3 -MLINKS+= OPENSSL_secure_malloc.3 OPENSSL_secure_free.3 -MLINKS+= OPENSSL_secure_malloc.3 OPENSSL_secure_zalloc.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_free.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get0_CERT.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get0_CRL.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get0_NAME.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get0_NAME_description.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get0_PARAMS.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get0_PKEY.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get1_CERT.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get1_CRL.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get1_NAME.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get1_NAME_description.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get1_PARAMS.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get1_PKEY.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get_type.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_new_CERT.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_new_CRL.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_new_NAME.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_new_PARAMS.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_new_PKEY.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_set0_NAME_description.3 -MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_type_string.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_CTX.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_free.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_get0_engine.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_get0_scheme.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_new.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_set_close.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_set_ctrl.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_set_eof.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_set_error.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_set_expect.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_set_find.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_set_load.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_set_open.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_close_fn.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_ctrl_fn.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_eof_fn.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_error_fn.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_expect_fn.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_find_fn.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_load_fn.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_open_fn.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_register_loader.3 -MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_unregister_loader.3 -MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_by_alias.3 -MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_by_issuer_serial.3 -MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_by_key_fingerprint.3 -MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_by_name.3 -MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_free.3 -MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_get0_bytes.3 -MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_get0_digest.3 -MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_get0_name.3 -MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_get0_serial.3 -MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_get0_string.3 -MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_get_type.3 -MLINKS+= OSSL_STORE_expect.3 OSSL_STORE_find.3 -MLINKS+= OSSL_STORE_expect.3 OSSL_STORE_supports_search.3 -MLINKS+= OSSL_STORE_open.3 OSSL_STORE_CTX.3 -MLINKS+= OSSL_STORE_open.3 OSSL_STORE_close.3 -MLINKS+= OSSL_STORE_open.3 OSSL_STORE_ctrl.3 -MLINKS+= OSSL_STORE_open.3 OSSL_STORE_eof.3 -MLINKS+= OSSL_STORE_open.3 OSSL_STORE_error.3 -MLINKS+= OSSL_STORE_open.3 OSSL_STORE_load.3 -MLINKS+= OSSL_STORE_open.3 OSSL_STORE_post_process_info_fn.3 -MLINKS+= OpenSSL_add_all_algorithms.3 EVP_cleanup.3 -MLINKS+= OpenSSL_add_all_algorithms.3 OpenSSL_add_all_ciphers.3 -MLINKS+= OpenSSL_add_all_algorithms.3 OpenSSL_add_all_digests.3 -MLINKS+= PEM_bytes_read_bio.3 PEM_bytes_read_bio_secmem.3 -MLINKS+= PEM_read.3 PEM_do_header.3 -MLINKS+= PEM_read.3 PEM_get_EVP_CIPHER_INFO.3 -MLINKS+= PEM_read.3 PEM_read_bio.3 -MLINKS+= PEM_read.3 PEM_write.3 -MLINKS+= PEM_read.3 PEM_write_bio.3 -MLINKS+= PEM_read_CMS.3 DECLARE_PEM_rw.3 -MLINKS+= PEM_read_CMS.3 PEM_read_ECPKParameters.3 -MLINKS+= PEM_read_CMS.3 PEM_read_ECPrivateKey.3 -MLINKS+= PEM_read_CMS.3 PEM_read_EC_PUBKEY.3 -MLINKS+= PEM_read_CMS.3 PEM_read_NETSCAPE_CERT_SEQUENCE.3 -MLINKS+= PEM_read_CMS.3 PEM_read_PKCS8.3 -MLINKS+= PEM_read_CMS.3 PEM_read_PKCS8_PRIV_KEY_INFO.3 -MLINKS+= PEM_read_CMS.3 PEM_read_SSL_SESSION.3 -MLINKS+= PEM_read_CMS.3 PEM_read_bio_CMS.3 -MLINKS+= PEM_read_CMS.3 PEM_read_bio_ECPKParameters.3 -MLINKS+= PEM_read_CMS.3 PEM_read_bio_EC_PUBKEY.3 -MLINKS+= PEM_read_CMS.3 PEM_read_bio_NETSCAPE_CERT_SEQUENCE.3 -MLINKS+= PEM_read_CMS.3 PEM_read_bio_PKCS8.3 -MLINKS+= PEM_read_CMS.3 PEM_read_bio_PKCS8_PRIV_KEY_INFO.3 -MLINKS+= PEM_read_CMS.3 PEM_read_bio_SSL_SESSION.3 -MLINKS+= PEM_read_CMS.3 PEM_write_CMS.3 -MLINKS+= PEM_read_CMS.3 PEM_write_DHxparams.3 -MLINKS+= PEM_read_CMS.3 PEM_write_ECPKParameters.3 -MLINKS+= PEM_read_CMS.3 PEM_write_ECPrivateKey.3 -MLINKS+= PEM_read_CMS.3 PEM_write_EC_PUBKEY.3 -MLINKS+= PEM_read_CMS.3 PEM_write_NETSCAPE_CERT_SEQUENCE.3 -MLINKS+= PEM_read_CMS.3 PEM_write_PKCS8.3 -MLINKS+= PEM_read_CMS.3 PEM_write_PKCS8_PRIV_KEY_INFO.3 -MLINKS+= PEM_read_CMS.3 PEM_write_SSL_SESSION.3 -MLINKS+= PEM_read_CMS.3 PEM_write_bio_CMS.3 -MLINKS+= PEM_read_CMS.3 PEM_write_bio_DHxparams.3 -MLINKS+= PEM_read_CMS.3 PEM_write_bio_ECPKParameters.3 -MLINKS+= PEM_read_CMS.3 PEM_write_bio_ECPrivateKey.3 -MLINKS+= PEM_read_CMS.3 PEM_write_bio_EC_PUBKEY.3 -MLINKS+= PEM_read_CMS.3 PEM_write_bio_NETSCAPE_CERT_SEQUENCE.3 -MLINKS+= PEM_read_CMS.3 PEM_write_bio_PKCS8.3 -MLINKS+= PEM_read_CMS.3 PEM_write_bio_PKCS8_PRIV_KEY_INFO.3 -MLINKS+= PEM_read_CMS.3 PEM_write_bio_SSL_SESSION.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_DHparams.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_DSAPrivateKey.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_DSA_PUBKEY.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_DSAparams.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_PKCS7.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_PUBKEY.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_PrivateKey.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_RSAPrivateKey.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_RSAPublicKey.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_RSA_PUBKEY.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_X509.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_X509_AUX.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_X509_CRL.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_X509_REQ.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_DHparams.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_DSAPrivateKey.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_DSA_PUBKEY.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_DSAparams.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_PKCS7.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_PUBKEY.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_RSAPrivateKey.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_RSAPublicKey.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_RSA_PUBKEY.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_X509.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_X509_AUX.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_X509_CRL.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_X509_REQ.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_DHparams.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_DSAPrivateKey.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_DSA_PUBKEY.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_DSAparams.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_PKCS7.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_PKCS8PrivateKey.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_PKCS8PrivateKey_nid.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_PUBKEY.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_PrivateKey.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_RSAPrivateKey.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_RSAPublicKey.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_RSA_PUBKEY.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_X509.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_X509_AUX.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_X509_CRL.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_X509_REQ.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_X509_REQ_NEW.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_DHparams.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_DSAPrivateKey.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_DSA_PUBKEY.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_DSAparams.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_PKCS7.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_PKCS8PrivateKey.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_PKCS8PrivateKey_nid.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_PUBKEY.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_PrivateKey.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_PrivateKey_traditional.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_RSAPrivateKey.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_RSAPublicKey.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_RSA_PUBKEY.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_X509.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_X509_AUX.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_X509_CRL.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_X509_REQ.3 -MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_X509_REQ_NEW.3 -MLINKS+= PEM_read_bio_PrivateKey.3 pem_password_cb.3 -MLINKS+= PEM_read_bio_ex.3 PEM_FLAG_EAY_COMPATIBLE.3 -MLINKS+= PEM_read_bio_ex.3 PEM_FLAG_ONLY_B64.3 -MLINKS+= PEM_read_bio_ex.3 PEM_FLAG_SECURE.3 -MLINKS+= PKCS5_PBKDF2_HMAC.3 PKCS5_PBKDF2_HMAC_SHA1.3 -MLINKS+= PKCS7_verify.3 PKCS7_get0_signers.3 -MLINKS+= RAND_DRBG_generate.3 RAND_DRBG_bytes.3 -MLINKS+= RAND_DRBG_get0_master.3 RAND_DRBG_get0_private.3 -MLINKS+= RAND_DRBG_get0_master.3 RAND_DRBG_get0_public.3 -MLINKS+= RAND_DRBG_new.3 RAND_DRBG_free.3 -MLINKS+= RAND_DRBG_new.3 RAND_DRBG_instantiate.3 -MLINKS+= RAND_DRBG_new.3 RAND_DRBG_secure_new.3 -MLINKS+= RAND_DRBG_new.3 RAND_DRBG_set.3 -MLINKS+= RAND_DRBG_new.3 RAND_DRBG_set_defaults.3 -MLINKS+= RAND_DRBG_new.3 RAND_DRBG_uninstantiate.3 -MLINKS+= RAND_DRBG_reseed.3 RAND_DRBG_set_reseed_defaults.3 -MLINKS+= RAND_DRBG_reseed.3 RAND_DRBG_set_reseed_interval.3 -MLINKS+= RAND_DRBG_reseed.3 RAND_DRBG_set_reseed_time_interval.3 -MLINKS+= RAND_DRBG_set_callbacks.3 RAND_DRBG_cleanup_entropy_fn.3 -MLINKS+= RAND_DRBG_set_callbacks.3 RAND_DRBG_cleanup_nonce_fn.3 -MLINKS+= RAND_DRBG_set_callbacks.3 RAND_DRBG_get_entropy_fn.3 -MLINKS+= RAND_DRBG_set_callbacks.3 RAND_DRBG_get_nonce_fn.3 -MLINKS+= RAND_DRBG_set_ex_data.3 RAND_DRBG_get_ex_data.3 -MLINKS+= RAND_DRBG_set_ex_data.3 RAND_DRBG_get_ex_new_index.3 -MLINKS+= RAND_add.3 RAND_event.3 -MLINKS+= RAND_add.3 RAND_keep_random_devices_open.3 -MLINKS+= RAND_add.3 RAND_poll.3 -MLINKS+= RAND_add.3 RAND_screen.3 -MLINKS+= RAND_add.3 RAND_seed.3 -MLINKS+= RAND_add.3 RAND_status.3 -MLINKS+= RAND_bytes.3 RAND_priv_bytes.3 -MLINKS+= RAND_bytes.3 RAND_pseudo_bytes.3 -MLINKS+= RAND_egd.3 RAND_egd_bytes.3 -MLINKS+= RAND_egd.3 RAND_query_egd_bytes.3 -MLINKS+= RAND_load_file.3 RAND_file_name.3 -MLINKS+= RAND_load_file.3 RAND_write_file.3 -MLINKS+= RAND_set_rand_method.3 RAND_OpenSSL.3 -MLINKS+= RAND_set_rand_method.3 RAND_get_rand_method.3 -MLINKS+= RC4_set_key.3 RC4.3 -MLINKS+= RIPEMD160_Init.3 RIPEMD160.3 -MLINKS+= RIPEMD160_Init.3 RIPEMD160_Final.3 -MLINKS+= RIPEMD160_Init.3 RIPEMD160_Update.3 -MLINKS+= RSA_blinding_on.3 RSA_blinding_off.3 -MLINKS+= RSA_check_key.3 RSA_check_key_ex.3 -MLINKS+= RSA_generate_key.3 RSA_generate_key_ex.3 -MLINKS+= RSA_generate_key.3 RSA_generate_multi_prime_key.3 -MLINKS+= RSA_get0_key.3 RSA_clear_flags.3 -MLINKS+= RSA_get0_key.3 RSA_get0_crt_params.3 -MLINKS+= RSA_get0_key.3 RSA_get0_d.3 -MLINKS+= RSA_get0_key.3 RSA_get0_dmp1.3 -MLINKS+= RSA_get0_key.3 RSA_get0_dmq1.3 -MLINKS+= RSA_get0_key.3 RSA_get0_e.3 -MLINKS+= RSA_get0_key.3 RSA_get0_engine.3 -MLINKS+= RSA_get0_key.3 RSA_get0_factors.3 -MLINKS+= RSA_get0_key.3 RSA_get0_iqmp.3 -MLINKS+= RSA_get0_key.3 RSA_get0_multi_prime_crt_params.3 -MLINKS+= RSA_get0_key.3 RSA_get0_multi_prime_factors.3 -MLINKS+= RSA_get0_key.3 RSA_get0_n.3 -MLINKS+= RSA_get0_key.3 RSA_get0_p.3 -MLINKS+= RSA_get0_key.3 RSA_get0_q.3 -MLINKS+= RSA_get0_key.3 RSA_get_multi_prime_extra_count.3 -MLINKS+= RSA_get0_key.3 RSA_get_version.3 -MLINKS+= RSA_get0_key.3 RSA_set0_crt_params.3 -MLINKS+= RSA_get0_key.3 RSA_set0_factors.3 -MLINKS+= RSA_get0_key.3 RSA_set0_key.3 -MLINKS+= RSA_get0_key.3 RSA_set0_multi_prime_params.3 -MLINKS+= RSA_get0_key.3 RSA_set_flags.3 -MLINKS+= RSA_get0_key.3 RSA_test_flags.3 -MLINKS+= RSA_meth_new.3 RSA_meth_dup.3 -MLINKS+= RSA_meth_new.3 RSA_meth_free.3 -MLINKS+= RSA_meth_new.3 RSA_meth_get0_app_data.3 -MLINKS+= RSA_meth_new.3 RSA_meth_get0_name.3 -MLINKS+= RSA_meth_new.3 RSA_meth_get_bn_mod_exp.3 -MLINKS+= RSA_meth_new.3 RSA_meth_get_finish.3 -MLINKS+= RSA_meth_new.3 RSA_meth_get_flags.3 -MLINKS+= RSA_meth_new.3 RSA_meth_get_init.3 -MLINKS+= RSA_meth_new.3 RSA_meth_get_keygen.3 -MLINKS+= RSA_meth_new.3 RSA_meth_get_mod_exp.3 -MLINKS+= RSA_meth_new.3 RSA_meth_get_multi_prime_keygen.3 -MLINKS+= RSA_meth_new.3 RSA_meth_get_priv_dec.3 -MLINKS+= RSA_meth_new.3 RSA_meth_get_priv_enc.3 -MLINKS+= RSA_meth_new.3 RSA_meth_get_pub_dec.3 -MLINKS+= RSA_meth_new.3 RSA_meth_get_pub_enc.3 -MLINKS+= RSA_meth_new.3 RSA_meth_get_sign.3 -MLINKS+= RSA_meth_new.3 RSA_meth_get_verify.3 -MLINKS+= RSA_meth_new.3 RSA_meth_set0_app_data.3 -MLINKS+= RSA_meth_new.3 RSA_meth_set1_name.3 -MLINKS+= RSA_meth_new.3 RSA_meth_set_bn_mod_exp.3 -MLINKS+= RSA_meth_new.3 RSA_meth_set_finish.3 -MLINKS+= RSA_meth_new.3 RSA_meth_set_flags.3 -MLINKS+= RSA_meth_new.3 RSA_meth_set_init.3 -MLINKS+= RSA_meth_new.3 RSA_meth_set_keygen.3 -MLINKS+= RSA_meth_new.3 RSA_meth_set_mod_exp.3 -MLINKS+= RSA_meth_new.3 RSA_meth_set_multi_prime_keygen.3 -MLINKS+= RSA_meth_new.3 RSA_meth_set_priv_dec.3 -MLINKS+= RSA_meth_new.3 RSA_meth_set_priv_enc.3 -MLINKS+= RSA_meth_new.3 RSA_meth_set_pub_dec.3 -MLINKS+= RSA_meth_new.3 RSA_meth_set_pub_enc.3 -MLINKS+= RSA_meth_new.3 RSA_meth_set_sign.3 -MLINKS+= RSA_meth_new.3 RSA_meth_set_verify.3 -MLINKS+= RSA_new.3 RSA_free.3 -MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_add_PKCS1_OAEP.3 -MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_add_PKCS1_OAEP_mgf1.3 -MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_add_PKCS1_type_2.3 -MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_add_SSLv23.3 -MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_add_none.3 -MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_check_PKCS1_OAEP.3 -MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_check_PKCS1_OAEP_mgf1.3 -MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_check_PKCS1_type_1.3 -MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_check_PKCS1_type_2.3 -MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_check_SSLv23.3 -MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_check_none.3 -MLINKS+= RSA_print.3 DHparams_print.3 -MLINKS+= RSA_print.3 DHparams_print_fp.3 -MLINKS+= RSA_print.3 DSA_print.3 -MLINKS+= RSA_print.3 DSA_print_fp.3 -MLINKS+= RSA_print.3 DSAparams_print.3 -MLINKS+= RSA_print.3 DSAparams_print_fp.3 -MLINKS+= RSA_print.3 RSA_print_fp.3 -MLINKS+= RSA_private_encrypt.3 RSA_public_decrypt.3 -MLINKS+= RSA_public_encrypt.3 RSA_private_decrypt.3 -MLINKS+= RSA_set_method.3 RSA_PKCS1_OpenSSL.3 -MLINKS+= RSA_set_method.3 RSA_flags.3 -MLINKS+= RSA_set_method.3 RSA_get_default_method.3 -MLINKS+= RSA_set_method.3 RSA_get_method.3 -MLINKS+= RSA_set_method.3 RSA_new_method.3 -MLINKS+= RSA_set_method.3 RSA_set_default_method.3 -MLINKS+= RSA_sign.3 RSA_verify.3 -MLINKS+= RSA_sign_ASN1_OCTET_STRING.3 RSA_verify_ASN1_OCTET_STRING.3 -MLINKS+= RSA_size.3 RSA_bits.3 -MLINKS+= RSA_size.3 RSA_security_bits.3 -MLINKS+= SCT_new.3 SCT_LIST_free.3 -MLINKS+= SCT_new.3 SCT_free.3 -MLINKS+= SCT_new.3 SCT_get0_extensions.3 -MLINKS+= SCT_new.3 SCT_get0_log_id.3 -MLINKS+= SCT_new.3 SCT_get0_signature.3 -MLINKS+= SCT_new.3 SCT_get_log_entry_type.3 -MLINKS+= SCT_new.3 SCT_get_signature_nid.3 -MLINKS+= SCT_new.3 SCT_get_source.3 -MLINKS+= SCT_new.3 SCT_get_timestamp.3 -MLINKS+= SCT_new.3 SCT_get_version.3 -MLINKS+= SCT_new.3 SCT_new_from_base64.3 -MLINKS+= SCT_new.3 SCT_set0_extensions.3 -MLINKS+= SCT_new.3 SCT_set0_log_id.3 -MLINKS+= SCT_new.3 SCT_set0_signature.3 -MLINKS+= SCT_new.3 SCT_set1_extensions.3 -MLINKS+= SCT_new.3 SCT_set1_log_id.3 -MLINKS+= SCT_new.3 SCT_set1_signature.3 -MLINKS+= SCT_new.3 SCT_set_log_entry_type.3 -MLINKS+= SCT_new.3 SCT_set_signature_nid.3 -MLINKS+= SCT_new.3 SCT_set_source.3 -MLINKS+= SCT_new.3 SCT_set_timestamp.3 -MLINKS+= SCT_new.3 SCT_set_version.3 -MLINKS+= SCT_print.3 SCT_LIST_print.3 -MLINKS+= SCT_print.3 SCT_validation_status_string.3 -MLINKS+= SCT_validate.3 SCT_LIST_validate.3 -MLINKS+= SCT_validate.3 SCT_get_validation_status.3 -MLINKS+= SHA256_Init.3 SHA1.3 -MLINKS+= SHA256_Init.3 SHA1_Final.3 -MLINKS+= SHA256_Init.3 SHA1_Init.3 -MLINKS+= SHA256_Init.3 SHA1_Update.3 -MLINKS+= SHA256_Init.3 SHA224.3 -MLINKS+= SHA256_Init.3 SHA224_Final.3 -MLINKS+= SHA256_Init.3 SHA224_Init.3 -MLINKS+= SHA256_Init.3 SHA224_Update.3 -MLINKS+= SHA256_Init.3 SHA256.3 -MLINKS+= SHA256_Init.3 SHA256_Final.3 -MLINKS+= SHA256_Init.3 SHA256_Update.3 -MLINKS+= SHA256_Init.3 SHA384.3 -MLINKS+= SHA256_Init.3 SHA384_Final.3 -MLINKS+= SHA256_Init.3 SHA384_Init.3 -MLINKS+= SHA256_Init.3 SHA384_Update.3 -MLINKS+= SHA256_Init.3 SHA512.3 -MLINKS+= SHA256_Init.3 SHA512_Final.3 -MLINKS+= SHA256_Init.3 SHA512_Init.3 -MLINKS+= SHA256_Init.3 SHA512_Update.3 -MLINKS+= SSL_CIPHER_get_name.3 OPENSSL_cipher_name.3 -MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_description.3 -MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_find.3 -MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_get_auth_nid.3 -MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_get_bits.3 -MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_get_cipher_nid.3 -MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_get_digest_nid.3 -MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_get_handshake_digest.3 -MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_get_id.3 -MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_get_kx_nid.3 -MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_get_protocol_id.3 -MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_get_version.3 -MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_is_aead.3 -MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_standard_name.3 -MLINKS+= SSL_COMP_add_compression_method.3 SSL_COMP_free_compression_methods.3 -MLINKS+= SSL_COMP_add_compression_method.3 SSL_COMP_get0_name.3 -MLINKS+= SSL_COMP_add_compression_method.3 SSL_COMP_get_compression_methods.3 -MLINKS+= SSL_COMP_add_compression_method.3 SSL_COMP_get_id.3 -MLINKS+= SSL_CONF_CTX_new.3 SSL_CONF_CTX_free.3 -MLINKS+= SSL_CONF_CTX_set_flags.3 SSL_CONF_CTX_clear_flags.3 -MLINKS+= SSL_CONF_CTX_set_ssl_ctx.3 SSL_CONF_CTX_set_ssl.3 -MLINKS+= SSL_CONF_cmd.3 SSL_CONF_cmd_value_type.3 -MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_CTX_add0_chain_cert.3 -MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_CTX_build_cert_chain.3 -MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_CTX_clear_chain_certs.3 -MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_CTX_get0_chain_certs.3 -MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_CTX_select_current_cert.3 -MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_CTX_set0_chain.3 -MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_CTX_set1_chain.3 -MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_CTX_set_current_cert.3 -MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_add0_chain_cert.3 -MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_add1_chain_cert.3 -MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_build_cert_chain.3 -MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_clear_chain_certs.3 -MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_get0_chain_certs.3 -MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_select_current_cert.3 -MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_set0_chain.3 -MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_set1_chain.3 -MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_set_current_cert.3 -MLINKS+= SSL_CTX_add_extra_chain_cert.3 SSL_CTX_clear_extra_chain_certs.3 -MLINKS+= SSL_CTX_add_session.3 SSL_CTX_remove_session.3 -MLINKS+= SSL_CTX_config.3 SSL_config.3 -MLINKS+= SSL_CTX_ctrl.3 SSL_CTX_callback_ctrl.3 -MLINKS+= SSL_CTX_ctrl.3 SSL_callback_ctrl.3 -MLINKS+= SSL_CTX_ctrl.3 SSL_ctrl.3 -MLINKS+= SSL_CTX_dane_enable.3 SSL_CTX_dane_clear_flags.3 -MLINKS+= SSL_CTX_dane_enable.3 SSL_CTX_dane_mtype_set.3 -MLINKS+= SSL_CTX_dane_enable.3 SSL_CTX_dane_set_flags.3 -MLINKS+= SSL_CTX_dane_enable.3 SSL_dane_clear_flags.3 -MLINKS+= SSL_CTX_dane_enable.3 SSL_dane_enable.3 -MLINKS+= SSL_CTX_dane_enable.3 SSL_dane_set_flags.3 -MLINKS+= SSL_CTX_dane_enable.3 SSL_dane_tlsa_add.3 -MLINKS+= SSL_CTX_dane_enable.3 SSL_get0_dane_authority.3 -MLINKS+= SSL_CTX_dane_enable.3 SSL_get0_dane_tlsa.3 -MLINKS+= SSL_CTX_get0_param.3 SSL_CTX_set1_param.3 -MLINKS+= SSL_CTX_get0_param.3 SSL_get0_param.3 -MLINKS+= SSL_CTX_get0_param.3 SSL_set1_param.3 -MLINKS+= SSL_CTX_get_verify_mode.3 SSL_CTX_get_verify_callback.3 -MLINKS+= SSL_CTX_get_verify_mode.3 SSL_CTX_get_verify_depth.3 -MLINKS+= SSL_CTX_get_verify_mode.3 SSL_get_verify_callback.3 -MLINKS+= SSL_CTX_get_verify_mode.3 SSL_get_verify_depth.3 -MLINKS+= SSL_CTX_get_verify_mode.3 SSL_get_verify_mode.3 -MLINKS+= SSL_CTX_load_verify_locations.3 SSL_CTX_set_default_verify_dir.3 -MLINKS+= SSL_CTX_load_verify_locations.3 SSL_CTX_set_default_verify_file.3 -MLINKS+= SSL_CTX_load_verify_locations.3 SSL_CTX_set_default_verify_paths.3 -MLINKS+= SSL_CTX_new.3 DTLS_client_method.3 -MLINKS+= SSL_CTX_new.3 DTLS_method.3 -MLINKS+= SSL_CTX_new.3 DTLS_server_method.3 -MLINKS+= SSL_CTX_new.3 DTLSv1_2_client_method.3 -MLINKS+= SSL_CTX_new.3 DTLSv1_2_method.3 -MLINKS+= SSL_CTX_new.3 DTLSv1_2_server_method.3 -MLINKS+= SSL_CTX_new.3 DTLSv1_client_method.3 -MLINKS+= SSL_CTX_new.3 DTLSv1_method.3 -MLINKS+= SSL_CTX_new.3 DTLSv1_server_method.3 -MLINKS+= SSL_CTX_new.3 SSL_CTX_up_ref.3 -MLINKS+= SSL_CTX_new.3 SSLv23_client_method.3 -MLINKS+= SSL_CTX_new.3 SSLv23_method.3 -MLINKS+= SSL_CTX_new.3 SSLv23_server_method.3 -MLINKS+= SSL_CTX_new.3 SSLv3_client_method.3 -MLINKS+= SSL_CTX_new.3 SSLv3_method.3 -MLINKS+= SSL_CTX_new.3 SSLv3_server_method.3 -MLINKS+= SSL_CTX_new.3 TLS_client_method.3 -MLINKS+= SSL_CTX_new.3 TLS_method.3 -MLINKS+= SSL_CTX_new.3 TLS_server_method.3 -MLINKS+= SSL_CTX_new.3 TLSv1_1_client_method.3 -MLINKS+= SSL_CTX_new.3 TLSv1_1_method.3 -MLINKS+= SSL_CTX_new.3 TLSv1_1_server_method.3 -MLINKS+= SSL_CTX_new.3 TLSv1_2_client_method.3 -MLINKS+= SSL_CTX_new.3 TLSv1_2_method.3 -MLINKS+= SSL_CTX_new.3 TLSv1_2_server_method.3 -MLINKS+= SSL_CTX_new.3 TLSv1_client_method.3 -MLINKS+= SSL_CTX_new.3 TLSv1_method.3 -MLINKS+= SSL_CTX_new.3 TLSv1_server_method.3 -MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_accept.3 -MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_accept_good.3 -MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_accept_renegotiate.3 -MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_cache_full.3 -MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_cb_hits.3 -MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_connect.3 -MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_connect_good.3 -MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_connect_renegotiate.3 -MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_hits.3 -MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_misses.3 -MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_timeouts.3 -MLINKS+= SSL_CTX_sess_set_cache_size.3 SSL_CTX_sess_get_cache_size.3 -MLINKS+= SSL_CTX_sess_set_get_cb.3 SSL_CTX_sess_get_get_cb.3 -MLINKS+= SSL_CTX_sess_set_get_cb.3 SSL_CTX_sess_get_new_cb.3 -MLINKS+= SSL_CTX_sess_set_get_cb.3 SSL_CTX_sess_get_remove_cb.3 -MLINKS+= SSL_CTX_sess_set_get_cb.3 SSL_CTX_sess_set_new_cb.3 -MLINKS+= SSL_CTX_sess_set_get_cb.3 SSL_CTX_sess_set_remove_cb.3 -MLINKS+= SSL_CTX_set0_CA_list.3 SSL_CTX_add1_to_CA_list.3 -MLINKS+= SSL_CTX_set0_CA_list.3 SSL_CTX_add_client_CA.3 -MLINKS+= SSL_CTX_set0_CA_list.3 SSL_CTX_get0_CA_list.3 -MLINKS+= SSL_CTX_set0_CA_list.3 SSL_CTX_get_client_CA_list.3 -MLINKS+= SSL_CTX_set0_CA_list.3 SSL_CTX_set_client_CA_list.3 -MLINKS+= SSL_CTX_set0_CA_list.3 SSL_add1_to_CA_list.3 -MLINKS+= SSL_CTX_set0_CA_list.3 SSL_add_client_CA.3 -MLINKS+= SSL_CTX_set0_CA_list.3 SSL_get0_CA_list.3 -MLINKS+= SSL_CTX_set0_CA_list.3 SSL_get0_peer_CA_list.3 -MLINKS+= SSL_CTX_set0_CA_list.3 SSL_get_client_CA_list.3 -MLINKS+= SSL_CTX_set0_CA_list.3 SSL_set0_CA_list.3 -MLINKS+= SSL_CTX_set0_CA_list.3 SSL_set_client_CA_list.3 -MLINKS+= SSL_CTX_set1_curves.3 SSL_CTX_set1_curves_list.3 -MLINKS+= SSL_CTX_set1_curves.3 SSL_CTX_set1_groups.3 -MLINKS+= SSL_CTX_set1_curves.3 SSL_CTX_set1_groups_list.3 -MLINKS+= SSL_CTX_set1_curves.3 SSL_get1_curves.3 -MLINKS+= SSL_CTX_set1_curves.3 SSL_get1_groups.3 -MLINKS+= SSL_CTX_set1_curves.3 SSL_get_shared_curve.3 -MLINKS+= SSL_CTX_set1_curves.3 SSL_get_shared_group.3 -MLINKS+= SSL_CTX_set1_curves.3 SSL_set1_curves.3 -MLINKS+= SSL_CTX_set1_curves.3 SSL_set1_curves_list.3 -MLINKS+= SSL_CTX_set1_curves.3 SSL_set1_groups.3 -MLINKS+= SSL_CTX_set1_curves.3 SSL_set1_groups_list.3 -MLINKS+= SSL_CTX_set1_sigalgs.3 SSL_CTX_set1_client_sigalgs.3 -MLINKS+= SSL_CTX_set1_sigalgs.3 SSL_CTX_set1_client_sigalgs_list.3 -MLINKS+= SSL_CTX_set1_sigalgs.3 SSL_CTX_set1_sigalgs_list.3 -MLINKS+= SSL_CTX_set1_sigalgs.3 SSL_set1_client_sigalgs.3 -MLINKS+= SSL_CTX_set1_sigalgs.3 SSL_set1_client_sigalgs_list.3 -MLINKS+= SSL_CTX_set1_sigalgs.3 SSL_set1_sigalgs.3 -MLINKS+= SSL_CTX_set1_sigalgs.3 SSL_set1_sigalgs_list.3 -MLINKS+= SSL_CTX_set1_verify_cert_store.3 SSL_CTX_set0_chain_cert_store.3 -MLINKS+= SSL_CTX_set1_verify_cert_store.3 SSL_CTX_set0_verify_cert_store.3 -MLINKS+= SSL_CTX_set1_verify_cert_store.3 SSL_CTX_set1_chain_cert_store.3 -MLINKS+= SSL_CTX_set1_verify_cert_store.3 SSL_set0_chain_cert_store.3 -MLINKS+= SSL_CTX_set1_verify_cert_store.3 SSL_set0_verify_cert_store.3 -MLINKS+= SSL_CTX_set1_verify_cert_store.3 SSL_set1_chain_cert_store.3 -MLINKS+= SSL_CTX_set1_verify_cert_store.3 SSL_set1_verify_cert_store.3 -MLINKS+= SSL_CTX_set_alpn_select_cb.3 SSL_CTX_set_alpn_protos.3 -MLINKS+= SSL_CTX_set_alpn_select_cb.3 SSL_CTX_set_next_proto_select_cb.3 -MLINKS+= SSL_CTX_set_alpn_select_cb.3 SSL_CTX_set_next_protos_advertised_cb.3 -MLINKS+= SSL_CTX_set_alpn_select_cb.3 SSL_get0_alpn_selected.3 -MLINKS+= SSL_CTX_set_alpn_select_cb.3 SSL_get0_next_proto_negotiated.3 -MLINKS+= SSL_CTX_set_alpn_select_cb.3 SSL_select_next_proto.3 -MLINKS+= SSL_CTX_set_alpn_select_cb.3 SSL_set_alpn_protos.3 -MLINKS+= SSL_CTX_set_cert_cb.3 SSL_set_cert_cb.3 -MLINKS+= SSL_CTX_set_cert_store.3 SSL_CTX_get_cert_store.3 -MLINKS+= SSL_CTX_set_cert_store.3 SSL_CTX_set1_cert_store.3 -MLINKS+= SSL_CTX_set_cipher_list.3 SSL_CTX_set_ciphersuites.3 -MLINKS+= SSL_CTX_set_cipher_list.3 SSL_set_cipher_list.3 -MLINKS+= SSL_CTX_set_cipher_list.3 SSL_set_ciphersuites.3 -MLINKS+= SSL_CTX_set_client_cert_cb.3 SSL_CTX_get_client_cert_cb.3 -MLINKS+= SSL_CTX_set_client_hello_cb.3 SSL_client_hello_cb_fn.3 -MLINKS+= SSL_CTX_set_client_hello_cb.3 SSL_client_hello_get0_ciphers.3 -MLINKS+= SSL_CTX_set_client_hello_cb.3 SSL_client_hello_get0_compression_methods.3 -MLINKS+= SSL_CTX_set_client_hello_cb.3 SSL_client_hello_get0_ext.3 -MLINKS+= SSL_CTX_set_client_hello_cb.3 SSL_client_hello_get0_legacy_version.3 -MLINKS+= SSL_CTX_set_client_hello_cb.3 SSL_client_hello_get0_random.3 -MLINKS+= SSL_CTX_set_client_hello_cb.3 SSL_client_hello_get0_session_id.3 -MLINKS+= SSL_CTX_set_client_hello_cb.3 SSL_client_hello_get1_extensions_present.3 -MLINKS+= SSL_CTX_set_client_hello_cb.3 SSL_client_hello_isv2.3 -MLINKS+= SSL_CTX_set_ct_validation_callback.3 SSL_CTX_ct_is_enabled.3 -MLINKS+= SSL_CTX_set_ct_validation_callback.3 SSL_CTX_disable_ct.3 -MLINKS+= SSL_CTX_set_ct_validation_callback.3 SSL_CTX_enable_ct.3 -MLINKS+= SSL_CTX_set_ct_validation_callback.3 SSL_ct_is_enabled.3 -MLINKS+= SSL_CTX_set_ct_validation_callback.3 SSL_disable_ct.3 -MLINKS+= SSL_CTX_set_ct_validation_callback.3 SSL_enable_ct.3 -MLINKS+= SSL_CTX_set_ct_validation_callback.3 SSL_set_ct_validation_callback.3 -MLINKS+= SSL_CTX_set_ct_validation_callback.3 ssl_ct_validation_cb.3 -MLINKS+= SSL_CTX_set_ctlog_list_file.3 SSL_CTX_set_default_ctlog_list_file.3 -MLINKS+= SSL_CTX_set_default_passwd_cb.3 SSL_CTX_get_default_passwd_cb.3 -MLINKS+= SSL_CTX_set_default_passwd_cb.3 SSL_CTX_get_default_passwd_cb_userdata.3 -MLINKS+= SSL_CTX_set_default_passwd_cb.3 SSL_CTX_set_default_passwd_cb_userdata.3 -MLINKS+= SSL_CTX_set_default_passwd_cb.3 SSL_get_default_passwd_cb.3 -MLINKS+= SSL_CTX_set_default_passwd_cb.3 SSL_get_default_passwd_cb_userdata.3 -MLINKS+= SSL_CTX_set_default_passwd_cb.3 SSL_set_default_passwd_cb.3 -MLINKS+= SSL_CTX_set_default_passwd_cb.3 SSL_set_default_passwd_cb_userdata.3 -MLINKS+= SSL_CTX_set_ex_data.3 SSL_CTX_get_ex_data.3 -MLINKS+= SSL_CTX_set_ex_data.3 SSL_get_ex_data.3 -MLINKS+= SSL_CTX_set_ex_data.3 SSL_set_ex_data.3 -MLINKS+= SSL_CTX_set_generate_session_id.3 GEN_SESSION_CB.3 -MLINKS+= SSL_CTX_set_generate_session_id.3 SSL_has_matching_session_id.3 -MLINKS+= SSL_CTX_set_generate_session_id.3 SSL_set_generate_session_id.3 -MLINKS+= SSL_CTX_set_info_callback.3 SSL_CTX_get_info_callback.3 -MLINKS+= SSL_CTX_set_info_callback.3 SSL_get_info_callback.3 -MLINKS+= SSL_CTX_set_info_callback.3 SSL_set_info_callback.3 -MLINKS+= SSL_CTX_set_keylog_callback.3 SSL_CTX_get_keylog_callback.3 -MLINKS+= SSL_CTX_set_keylog_callback.3 SSL_CTX_keylog_cb_func.3 -MLINKS+= SSL_CTX_set_max_cert_list.3 SSL_CTX_get_max_cert_list.3 -MLINKS+= SSL_CTX_set_max_cert_list.3 SSL_get_max_cert_list.3 -MLINKS+= SSL_CTX_set_max_cert_list.3 SSL_set_max_cert_list.3 -MLINKS+= SSL_CTX_set_min_proto_version.3 SSL_CTX_get_max_proto_version.3 -MLINKS+= SSL_CTX_set_min_proto_version.3 SSL_CTX_get_min_proto_version.3 -MLINKS+= SSL_CTX_set_min_proto_version.3 SSL_CTX_set_max_proto_version.3 -MLINKS+= SSL_CTX_set_min_proto_version.3 SSL_get_max_proto_version.3 -MLINKS+= SSL_CTX_set_min_proto_version.3 SSL_get_min_proto_version.3 -MLINKS+= SSL_CTX_set_min_proto_version.3 SSL_set_max_proto_version.3 -MLINKS+= SSL_CTX_set_min_proto_version.3 SSL_set_min_proto_version.3 -MLINKS+= SSL_CTX_set_mode.3 SSL_CTX_clear_mode.3 -MLINKS+= SSL_CTX_set_mode.3 SSL_CTX_get_mode.3 -MLINKS+= SSL_CTX_set_mode.3 SSL_clear_mode.3 -MLINKS+= SSL_CTX_set_mode.3 SSL_get_mode.3 -MLINKS+= SSL_CTX_set_mode.3 SSL_set_mode.3 -MLINKS+= SSL_CTX_set_msg_callback.3 SSL_CTX_set_msg_callback_arg.3 -MLINKS+= SSL_CTX_set_msg_callback.3 SSL_set_msg_callback.3 -MLINKS+= SSL_CTX_set_msg_callback.3 SSL_set_msg_callback_arg.3 -MLINKS+= SSL_CTX_set_num_tickets.3 SSL_CTX_get_num_tickets.3 -MLINKS+= SSL_CTX_set_num_tickets.3 SSL_get_num_tickets.3 -MLINKS+= SSL_CTX_set_num_tickets.3 SSL_set_num_tickets.3 -MLINKS+= SSL_CTX_set_options.3 SSL_CTX_clear_options.3 -MLINKS+= SSL_CTX_set_options.3 SSL_CTX_get_options.3 -MLINKS+= SSL_CTX_set_options.3 SSL_clear_options.3 -MLINKS+= SSL_CTX_set_options.3 SSL_get_options.3 -MLINKS+= SSL_CTX_set_options.3 SSL_get_secure_renegotiation_support.3 -MLINKS+= SSL_CTX_set_options.3 SSL_set_options.3 -MLINKS+= SSL_CTX_set_psk_client_callback.3 SSL_CTX_set_psk_use_session_callback.3 -MLINKS+= SSL_CTX_set_psk_client_callback.3 SSL_psk_client_cb_func.3 -MLINKS+= SSL_CTX_set_psk_client_callback.3 SSL_psk_use_session_cb_func.3 -MLINKS+= SSL_CTX_set_psk_client_callback.3 SSL_set_psk_client_callback.3 -MLINKS+= SSL_CTX_set_psk_client_callback.3 SSL_set_psk_use_session_callback.3 -MLINKS+= SSL_CTX_set_quiet_shutdown.3 SSL_CTX_get_quiet_shutdown.3 -MLINKS+= SSL_CTX_set_quiet_shutdown.3 SSL_get_quiet_shutdown.3 -MLINKS+= SSL_CTX_set_quiet_shutdown.3 SSL_set_quiet_shutdown.3 -MLINKS+= SSL_CTX_set_read_ahead.3 SSL_CTX_get_default_read_ahead.3 -MLINKS+= SSL_CTX_set_read_ahead.3 SSL_CTX_get_read_ahead.3 -MLINKS+= SSL_CTX_set_read_ahead.3 SSL_get_read_ahead.3 -MLINKS+= SSL_CTX_set_read_ahead.3 SSL_set_read_ahead.3 -MLINKS+= SSL_CTX_set_record_padding_callback.3 SSL_CTX_get_record_padding_callback_arg.3 -MLINKS+= SSL_CTX_set_record_padding_callback.3 SSL_CTX_set_block_padding.3 -MLINKS+= SSL_CTX_set_record_padding_callback.3 SSL_CTX_set_record_padding_callback_arg.3 -MLINKS+= SSL_CTX_set_record_padding_callback.3 SSL_get_record_padding_callback_arg.3 -MLINKS+= SSL_CTX_set_record_padding_callback.3 SSL_set_block_padding.3 -MLINKS+= SSL_CTX_set_record_padding_callback.3 SSL_set_record_padding_callback.3 -MLINKS+= SSL_CTX_set_record_padding_callback.3 SSL_set_record_padding_callback_arg.3 -MLINKS+= SSL_CTX_set_security_level.3 SSL_CTX_get0_security_ex_data.3 -MLINKS+= SSL_CTX_set_security_level.3 SSL_CTX_get_security_callback.3 -MLINKS+= SSL_CTX_set_security_level.3 SSL_CTX_get_security_level.3 -MLINKS+= SSL_CTX_set_security_level.3 SSL_CTX_set0_security_ex_data.3 -MLINKS+= SSL_CTX_set_security_level.3 SSL_CTX_set_security_callback.3 -MLINKS+= SSL_CTX_set_security_level.3 SSL_get0_security_ex_data.3 -MLINKS+= SSL_CTX_set_security_level.3 SSL_get_security_callback.3 -MLINKS+= SSL_CTX_set_security_level.3 SSL_get_security_level.3 -MLINKS+= SSL_CTX_set_security_level.3 SSL_set0_security_ex_data.3 -MLINKS+= SSL_CTX_set_security_level.3 SSL_set_security_callback.3 -MLINKS+= SSL_CTX_set_security_level.3 SSL_set_security_level.3 -MLINKS+= SSL_CTX_set_session_cache_mode.3 SSL_CTX_get_session_cache_mode.3 -MLINKS+= SSL_CTX_set_session_id_context.3 SSL_set_session_id_context.3 -MLINKS+= SSL_CTX_set_session_ticket_cb.3 SSL_CTX_decrypt_session_ticket_fn.3 -MLINKS+= SSL_CTX_set_session_ticket_cb.3 SSL_CTX_generate_session_ticket_fn.3 -MLINKS+= SSL_CTX_set_session_ticket_cb.3 SSL_SESSION_get0_ticket_appdata.3 -MLINKS+= SSL_CTX_set_session_ticket_cb.3 SSL_SESSION_set1_ticket_appdata.3 -MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_CTX_set_default_read_buffer_len.3 -MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_CTX_set_max_pipelines.3 -MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_CTX_set_max_send_fragment.3 -MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_CTX_set_tlsext_max_fragment_length.3 -MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_SESSION_get_max_fragment_length.3 -MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_set_default_read_buffer_len.3 -MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_set_max_pipelines.3 -MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_set_max_send_fragment.3 -MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_set_split_send_fragment.3 -MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_set_tlsext_max_fragment_length.3 -MLINKS+= SSL_CTX_set_ssl_version.3 SSL_get_ssl_method.3 -MLINKS+= SSL_CTX_set_ssl_version.3 SSL_set_ssl_method.3 -MLINKS+= SSL_CTX_set_stateless_cookie_generate_cb.3 SSL_CTX_set_stateless_cookie_verify_cb.3 -MLINKS+= SSL_CTX_set_timeout.3 SSL_CTX_get_timeout.3 -MLINKS+= SSL_CTX_set_tlsext_servername_callback.3 SSL_CTX_set_tlsext_servername_arg.3 -MLINKS+= SSL_CTX_set_tlsext_servername_callback.3 SSL_get_servername.3 -MLINKS+= SSL_CTX_set_tlsext_servername_callback.3 SSL_get_servername_type.3 -MLINKS+= SSL_CTX_set_tlsext_servername_callback.3 SSL_set_tlsext_host_name.3 -MLINKS+= SSL_CTX_set_tlsext_status_cb.3 SSL_CTX_get_tlsext_status_arg.3 -MLINKS+= SSL_CTX_set_tlsext_status_cb.3 SSL_CTX_get_tlsext_status_cb.3 -MLINKS+= SSL_CTX_set_tlsext_status_cb.3 SSL_CTX_get_tlsext_status_type.3 -MLINKS+= SSL_CTX_set_tlsext_status_cb.3 SSL_CTX_set_tlsext_status_arg.3 -MLINKS+= SSL_CTX_set_tlsext_status_cb.3 SSL_CTX_set_tlsext_status_type.3 -MLINKS+= SSL_CTX_set_tlsext_status_cb.3 SSL_get_tlsext_status_ocsp_resp.3 -MLINKS+= SSL_CTX_set_tlsext_status_cb.3 SSL_get_tlsext_status_type.3 -MLINKS+= SSL_CTX_set_tlsext_status_cb.3 SSL_set_tlsext_status_ocsp_resp.3 -MLINKS+= SSL_CTX_set_tlsext_status_cb.3 SSL_set_tlsext_status_type.3 -MLINKS+= SSL_CTX_set_tlsext_use_srtp.3 SSL_get_selected_srtp_profile.3 -MLINKS+= SSL_CTX_set_tlsext_use_srtp.3 SSL_get_srtp_profiles.3 -MLINKS+= SSL_CTX_set_tlsext_use_srtp.3 SSL_set_tlsext_use_srtp.3 -MLINKS+= SSL_CTX_set_tmp_dh_callback.3 SSL_CTX_set_tmp_dh.3 -MLINKS+= SSL_CTX_set_tmp_dh_callback.3 SSL_set_tmp_dh.3 -MLINKS+= SSL_CTX_set_tmp_dh_callback.3 SSL_set_tmp_dh_callback.3 -MLINKS+= SSL_CTX_set_verify.3 SSL_CTX_set_post_handshake_auth.3 -MLINKS+= SSL_CTX_set_verify.3 SSL_CTX_set_verify_depth.3 -MLINKS+= SSL_CTX_set_verify.3 SSL_get_ex_data_X509_STORE_CTX_idx.3 -MLINKS+= SSL_CTX_set_verify.3 SSL_set_post_handshake_auth.3 -MLINKS+= SSL_CTX_set_verify.3 SSL_set_verify.3 -MLINKS+= SSL_CTX_set_verify.3 SSL_set_verify_depth.3 -MLINKS+= SSL_CTX_set_verify.3 SSL_verify_cb.3 -MLINKS+= SSL_CTX_set_verify.3 SSL_verify_client_post_handshake.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_check_private_key.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_PrivateKey.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_PrivateKey_ASN1.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_PrivateKey_file.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_RSAPrivateKey.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_RSAPrivateKey_ASN1.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_RSAPrivateKey_file.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_cert_and_key.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_certificate_ASN1.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_certificate_chain_file.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_certificate_file.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_check_private_key.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_use_PrivateKey.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_use_PrivateKey_ASN1.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_use_PrivateKey_file.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_use_RSAPrivateKey.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_use_RSAPrivateKey_ASN1.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_use_RSAPrivateKey_file.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_use_cert_and_key.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_use_certificate.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_use_certificate_ASN1.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_use_certificate_chain_file.3 -MLINKS+= SSL_CTX_use_certificate.3 SSL_use_certificate_file.3 -MLINKS+= SSL_CTX_use_psk_identity_hint.3 SSL_CTX_set_psk_find_session_callback.3 -MLINKS+= SSL_CTX_use_psk_identity_hint.3 SSL_CTX_set_psk_server_callback.3 -MLINKS+= SSL_CTX_use_psk_identity_hint.3 SSL_psk_find_session_cb_func.3 -MLINKS+= SSL_CTX_use_psk_identity_hint.3 SSL_psk_server_cb_func.3 -MLINKS+= SSL_CTX_use_psk_identity_hint.3 SSL_set_psk_find_session_callback.3 -MLINKS+= SSL_CTX_use_psk_identity_hint.3 SSL_set_psk_server_callback.3 -MLINKS+= SSL_CTX_use_psk_identity_hint.3 SSL_use_psk_identity_hint.3 -MLINKS+= SSL_CTX_use_serverinfo.3 SSL_CTX_use_serverinfo_ex.3 -MLINKS+= SSL_CTX_use_serverinfo.3 SSL_CTX_use_serverinfo_file.3 -MLINKS+= SSL_SESSION_free.3 SSL_SESSION_dup.3 -MLINKS+= SSL_SESSION_free.3 SSL_SESSION_new.3 -MLINKS+= SSL_SESSION_free.3 SSL_SESSION_up_ref.3 -MLINKS+= SSL_SESSION_get0_cipher.3 SSL_SESSION_set_cipher.3 -MLINKS+= SSL_SESSION_get0_hostname.3 SSL_SESSION_get0_alpn_selected.3 -MLINKS+= SSL_SESSION_get0_hostname.3 SSL_SESSION_set1_alpn_selected.3 -MLINKS+= SSL_SESSION_get0_hostname.3 SSL_SESSION_set1_hostname.3 -MLINKS+= SSL_SESSION_get0_id_context.3 SSL_SESSION_set1_id_context.3 -MLINKS+= SSL_SESSION_get_ex_data.3 SSL_SESSION_set_ex_data.3 -MLINKS+= SSL_SESSION_get_protocol_version.3 SSL_SESSION_set_protocol_version.3 -MLINKS+= SSL_SESSION_get_time.3 SSL_SESSION_get_timeout.3 -MLINKS+= SSL_SESSION_get_time.3 SSL_SESSION_set_time.3 -MLINKS+= SSL_SESSION_get_time.3 SSL_SESSION_set_timeout.3 -MLINKS+= SSL_SESSION_get_time.3 SSL_get_time.3 -MLINKS+= SSL_SESSION_get_time.3 SSL_get_timeout.3 -MLINKS+= SSL_SESSION_get_time.3 SSL_set_time.3 -MLINKS+= SSL_SESSION_get_time.3 SSL_set_timeout.3 -MLINKS+= SSL_SESSION_has_ticket.3 SSL_SESSION_get0_ticket.3 -MLINKS+= SSL_SESSION_has_ticket.3 SSL_SESSION_get_ticket_lifetime_hint.3 -MLINKS+= SSL_SESSION_print.3 SSL_SESSION_print_fp.3 -MLINKS+= SSL_SESSION_print.3 SSL_SESSION_print_keylog.3 -MLINKS+= SSL_SESSION_set1_id.3 SSL_SESSION_get_id.3 -MLINKS+= SSL_alert_type_string.3 SSL_alert_desc_string.3 -MLINKS+= SSL_alert_type_string.3 SSL_alert_desc_string_long.3 -MLINKS+= SSL_alert_type_string.3 SSL_alert_type_string_long.3 -MLINKS+= SSL_alloc_buffers.3 SSL_free_buffers.3 -MLINKS+= SSL_export_keying_material.3 SSL_export_keying_material_early.3 -MLINKS+= SSL_extension_supported.3 SSL_CTX_add_client_custom_ext.3 -MLINKS+= SSL_extension_supported.3 SSL_CTX_add_custom_ext.3 -MLINKS+= SSL_extension_supported.3 SSL_CTX_add_server_custom_ext.3 -MLINKS+= SSL_extension_supported.3 custom_ext_add_cb.3 -MLINKS+= SSL_extension_supported.3 custom_ext_free_cb.3 -MLINKS+= SSL_extension_supported.3 custom_ext_parse_cb.3 -MLINKS+= SSL_get_all_async_fds.3 SSL_get_changed_async_fds.3 -MLINKS+= SSL_get_all_async_fds.3 SSL_waiting_for_async.3 -MLINKS+= SSL_get_ciphers.3 SSL_CTX_get_ciphers.3 -MLINKS+= SSL_get_ciphers.3 SSL_bytes_to_cipher_list.3 -MLINKS+= SSL_get_ciphers.3 SSL_get1_supported_ciphers.3 -MLINKS+= SSL_get_ciphers.3 SSL_get_cipher_list.3 -MLINKS+= SSL_get_ciphers.3 SSL_get_client_ciphers.3 -MLINKS+= SSL_get_ciphers.3 SSL_get_shared_ciphers.3 -MLINKS+= SSL_get_client_random.3 SSL_SESSION_get_master_key.3 -MLINKS+= SSL_get_client_random.3 SSL_SESSION_set1_master_key.3 -MLINKS+= SSL_get_client_random.3 SSL_get_server_random.3 -MLINKS+= SSL_get_current_cipher.3 SSL_get_cipher.3 -MLINKS+= SSL_get_current_cipher.3 SSL_get_cipher_bits.3 -MLINKS+= SSL_get_current_cipher.3 SSL_get_cipher_name.3 -MLINKS+= SSL_get_current_cipher.3 SSL_get_cipher_version.3 -MLINKS+= SSL_get_current_cipher.3 SSL_get_pending_cipher.3 -MLINKS+= SSL_get_fd.3 SSL_get_rfd.3 -MLINKS+= SSL_get_fd.3 SSL_get_wfd.3 -MLINKS+= SSL_get_peer_cert_chain.3 SSL_get0_verified_chain.3 -MLINKS+= SSL_get_peer_signature_nid.3 SSL_get_peer_signature_type_nid.3 -MLINKS+= SSL_get_peer_signature_nid.3 SSL_get_signature_nid.3 -MLINKS+= SSL_get_peer_signature_nid.3 SSL_get_signature_type_nid.3 -MLINKS+= SSL_get_peer_tmp_key.3 SSL_get_server_tmp_key.3 -MLINKS+= SSL_get_peer_tmp_key.3 SSL_get_tmp_key.3 -MLINKS+= SSL_get_psk_identity.3 SSL_get_psk_identity_hint.3 -MLINKS+= SSL_get_rbio.3 SSL_get_wbio.3 -MLINKS+= SSL_get_session.3 SSL_get0_session.3 -MLINKS+= SSL_get_session.3 SSL_get1_session.3 -MLINKS+= SSL_get_shared_sigalgs.3 SSL_get_sigalgs.3 -MLINKS+= SSL_get_version.3 SSL_client_version.3 -MLINKS+= SSL_get_version.3 SSL_is_dtls.3 -MLINKS+= SSL_get_version.3 SSL_version.3 -MLINKS+= SSL_in_init.3 SSL_get_state.3 -MLINKS+= SSL_in_init.3 SSL_in_accept_init.3 -MLINKS+= SSL_in_init.3 SSL_in_before.3 -MLINKS+= SSL_in_init.3 SSL_in_connect_init.3 -MLINKS+= SSL_in_init.3 SSL_is_init_finished.3 -MLINKS+= SSL_key_update.3 SSL_get_key_update_type.3 -MLINKS+= SSL_key_update.3 SSL_renegotiate.3 -MLINKS+= SSL_key_update.3 SSL_renegotiate_abbreviated.3 -MLINKS+= SSL_key_update.3 SSL_renegotiate_pending.3 -MLINKS+= SSL_library_init.3 OpenSSL_add_ssl_algorithms.3 -MLINKS+= SSL_new.3 SSL_dup.3 -MLINKS+= SSL_new.3 SSL_up_ref.3 -MLINKS+= SSL_pending.3 SSL_has_pending.3 -MLINKS+= SSL_read.3 SSL_peek.3 -MLINKS+= SSL_read.3 SSL_peek_ex.3 -MLINKS+= SSL_read.3 SSL_read_ex.3 -MLINKS+= SSL_read_early_data.3 SSL_CTX_get_max_early_data.3 -MLINKS+= SSL_read_early_data.3 SSL_CTX_get_recv_max_early_data.3 -MLINKS+= SSL_read_early_data.3 SSL_CTX_set_allow_early_data_cb.3 -MLINKS+= SSL_read_early_data.3 SSL_CTX_set_max_early_data.3 -MLINKS+= SSL_read_early_data.3 SSL_CTX_set_recv_max_early_data.3 -MLINKS+= SSL_read_early_data.3 SSL_SESSION_get_max_early_data.3 -MLINKS+= SSL_read_early_data.3 SSL_SESSION_set_max_early_data.3 -MLINKS+= SSL_read_early_data.3 SSL_allow_early_data_cb_fn.3 -MLINKS+= SSL_read_early_data.3 SSL_get_early_data_status.3 -MLINKS+= SSL_read_early_data.3 SSL_get_max_early_data.3 -MLINKS+= SSL_read_early_data.3 SSL_get_recv_max_early_data.3 -MLINKS+= SSL_read_early_data.3 SSL_set_allow_early_data_cb.3 -MLINKS+= SSL_read_early_data.3 SSL_set_max_early_data.3 -MLINKS+= SSL_read_early_data.3 SSL_set_recv_max_early_data.3 -MLINKS+= SSL_read_early_data.3 SSL_write_early_data.3 -MLINKS+= SSL_rstate_string.3 SSL_rstate_string_long.3 -MLINKS+= SSL_set1_host.3 SSL_add1_host.3 -MLINKS+= SSL_set1_host.3 SSL_get0_peername.3 -MLINKS+= SSL_set1_host.3 SSL_set_hostflags.3 -MLINKS+= SSL_set_bio.3 SSL_set0_rbio.3 -MLINKS+= SSL_set_bio.3 SSL_set0_wbio.3 -MLINKS+= SSL_set_connect_state.3 SSL_is_server.3 -MLINKS+= SSL_set_connect_state.3 SSL_set_accept_state.3 -MLINKS+= SSL_set_fd.3 SSL_set_rfd.3 -MLINKS+= SSL_set_fd.3 SSL_set_wfd.3 -MLINKS+= SSL_set_shutdown.3 SSL_get_shutdown.3 -MLINKS+= SSL_state_string.3 SSL_state_string_long.3 -MLINKS+= SSL_want.3 SSL_want_async.3 -MLINKS+= SSL_want.3 SSL_want_async_job.3 -MLINKS+= SSL_want.3 SSL_want_client_hello_cb.3 -MLINKS+= SSL_want.3 SSL_want_nothing.3 -MLINKS+= SSL_want.3 SSL_want_read.3 -MLINKS+= SSL_want.3 SSL_want_write.3 -MLINKS+= SSL_want.3 SSL_want_x509_lookup.3 -MLINKS+= SSL_write.3 SSL_write_ex.3 -MLINKS+= UI_STRING.3 UI_get0_action_string.3 -MLINKS+= UI_STRING.3 UI_get0_output_string.3 -MLINKS+= UI_STRING.3 UI_get0_result_string.3 -MLINKS+= UI_STRING.3 UI_get0_test_string.3 -MLINKS+= UI_STRING.3 UI_get_input_flags.3 -MLINKS+= UI_STRING.3 UI_get_result_maxsize.3 -MLINKS+= UI_STRING.3 UI_get_result_minsize.3 -MLINKS+= UI_STRING.3 UI_get_result_string_length.3 -MLINKS+= UI_STRING.3 UI_get_string_type.3 -MLINKS+= UI_STRING.3 UI_set_result.3 -MLINKS+= UI_STRING.3 UI_set_result_ex.3 -MLINKS+= UI_STRING.3 UI_string_types.3 -MLINKS+= UI_UTIL_read_pw.3 UI_UTIL_read_pw_string.3 -MLINKS+= UI_UTIL_read_pw.3 UI_UTIL_wrap_read_pem_callback.3 -MLINKS+= UI_create_method.3 UI_METHOD.3 -MLINKS+= UI_create_method.3 UI_destroy_method.3 -MLINKS+= UI_create_method.3 UI_method_get_closer.3 -MLINKS+= UI_create_method.3 UI_method_get_data_destructor.3 -MLINKS+= UI_create_method.3 UI_method_get_data_duplicator.3 -MLINKS+= UI_create_method.3 UI_method_get_ex_data.3 -MLINKS+= UI_create_method.3 UI_method_get_flusher.3 -MLINKS+= UI_create_method.3 UI_method_get_opener.3 -MLINKS+= UI_create_method.3 UI_method_get_prompt_constructor.3 -MLINKS+= UI_create_method.3 UI_method_get_reader.3 -MLINKS+= UI_create_method.3 UI_method_get_writer.3 -MLINKS+= UI_create_method.3 UI_method_set_closer.3 -MLINKS+= UI_create_method.3 UI_method_set_data_duplicator.3 -MLINKS+= UI_create_method.3 UI_method_set_ex_data.3 -MLINKS+= UI_create_method.3 UI_method_set_flusher.3 -MLINKS+= UI_create_method.3 UI_method_set_opener.3 -MLINKS+= UI_create_method.3 UI_method_set_prompt_constructor.3 -MLINKS+= UI_create_method.3 UI_method_set_reader.3 -MLINKS+= UI_create_method.3 UI_method_set_writer.3 -MLINKS+= UI_new.3 UI.3 -MLINKS+= UI_new.3 UI_OpenSSL.3 -MLINKS+= UI_new.3 UI_add_error_string.3 -MLINKS+= UI_new.3 UI_add_info_string.3 -MLINKS+= UI_new.3 UI_add_input_boolean.3 -MLINKS+= UI_new.3 UI_add_input_string.3 -MLINKS+= UI_new.3 UI_add_user_data.3 -MLINKS+= UI_new.3 UI_add_verify_string.3 -MLINKS+= UI_new.3 UI_construct_prompt.3 -MLINKS+= UI_new.3 UI_ctrl.3 -MLINKS+= UI_new.3 UI_dup_error_string.3 -MLINKS+= UI_new.3 UI_dup_info_string.3 -MLINKS+= UI_new.3 UI_dup_input_boolean.3 -MLINKS+= UI_new.3 UI_dup_input_string.3 -MLINKS+= UI_new.3 UI_dup_user_data.3 -MLINKS+= UI_new.3 UI_dup_verify_string.3 -MLINKS+= UI_new.3 UI_free.3 -MLINKS+= UI_new.3 UI_get0_result.3 -MLINKS+= UI_new.3 UI_get0_user_data.3 -MLINKS+= UI_new.3 UI_get_default_method.3 -MLINKS+= UI_new.3 UI_get_method.3 -MLINKS+= UI_new.3 UI_get_result_length.3 -MLINKS+= UI_new.3 UI_new_method.3 -MLINKS+= UI_new.3 UI_null.3 -MLINKS+= UI_new.3 UI_process.3 -MLINKS+= UI_new.3 UI_set_default_method.3 -MLINKS+= UI_new.3 UI_set_method.3 -MLINKS+= X509V3_get_d2i.3 X509V3_EXT_d2i.3 -MLINKS+= X509V3_get_d2i.3 X509V3_EXT_i2d.3 -MLINKS+= X509V3_get_d2i.3 X509V3_add1_i2d.3 -MLINKS+= X509V3_get_d2i.3 X509_CRL_add1_ext_i2d.3 -MLINKS+= X509V3_get_d2i.3 X509_CRL_get0_extensions.3 -MLINKS+= X509V3_get_d2i.3 X509_CRL_get_ext_d2i.3 -MLINKS+= X509V3_get_d2i.3 X509_REVOKED_add1_ext_i2d.3 -MLINKS+= X509V3_get_d2i.3 X509_REVOKED_get0_extensions.3 -MLINKS+= X509V3_get_d2i.3 X509_REVOKED_get_ext_d2i.3 -MLINKS+= X509V3_get_d2i.3 X509_add1_ext_i2d.3 -MLINKS+= X509V3_get_d2i.3 X509_get0_extensions.3 -MLINKS+= X509V3_get_d2i.3 X509_get_ext_d2i.3 -MLINKS+= X509_ALGOR_dup.3 X509_ALGOR_cmp.3 -MLINKS+= X509_ALGOR_dup.3 X509_ALGOR_get0.3 -MLINKS+= X509_ALGOR_dup.3 X509_ALGOR_set0.3 -MLINKS+= X509_ALGOR_dup.3 X509_ALGOR_set_md.3 -MLINKS+= X509_CRL_get0_by_serial.3 X509_CRL_add0_revoked.3 -MLINKS+= X509_CRL_get0_by_serial.3 X509_CRL_get0_by_cert.3 -MLINKS+= X509_CRL_get0_by_serial.3 X509_CRL_get_REVOKED.3 -MLINKS+= X509_CRL_get0_by_serial.3 X509_CRL_sort.3 -MLINKS+= X509_CRL_get0_by_serial.3 X509_REVOKED_get0_revocationDate.3 -MLINKS+= X509_CRL_get0_by_serial.3 X509_REVOKED_get0_serialNumber.3 -MLINKS+= X509_CRL_get0_by_serial.3 X509_REVOKED_set_revocationDate.3 -MLINKS+= X509_CRL_get0_by_serial.3 X509_REVOKED_set_serialNumber.3 -MLINKS+= X509_EXTENSION_set_object.3 X509_EXTENSION_create_by_NID.3 -MLINKS+= X509_EXTENSION_set_object.3 X509_EXTENSION_create_by_OBJ.3 -MLINKS+= X509_EXTENSION_set_object.3 X509_EXTENSION_get_critical.3 -MLINKS+= X509_EXTENSION_set_object.3 X509_EXTENSION_get_data.3 -MLINKS+= X509_EXTENSION_set_object.3 X509_EXTENSION_get_object.3 -MLINKS+= X509_EXTENSION_set_object.3 X509_EXTENSION_set_critical.3 -MLINKS+= X509_EXTENSION_set_object.3 X509_EXTENSION_set_data.3 -MLINKS+= X509_LOOKUP_hash_dir.3 X509_LOOKUP_file.3 -MLINKS+= X509_LOOKUP_hash_dir.3 X509_load_cert_crl_file.3 -MLINKS+= X509_LOOKUP_hash_dir.3 X509_load_cert_file.3 -MLINKS+= X509_LOOKUP_hash_dir.3 X509_load_crl_file.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_ctrl_fn.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_get_by_alias_fn.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_get_by_fingerprint_fn.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_get_by_issuer_serial_fn.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_get_by_subject_fn.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_get_method_data.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_get_store.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_free.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_get_ctrl.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_get_free.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_get_get_by_alias.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_get_get_by_fingerprint.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_get_get_by_issuer_serial.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_get_get_by_subject.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_get_init.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_get_new_item.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_get_shutdown.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_set_ctrl.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_set_free.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_set_get_by_alias.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_set_get_by_fingerprint.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_set_get_by_issuer_serial.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_set_get_by_subject.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_set_init.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_set_new_item.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_set_shutdown.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_set_method_data.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_OBJECT_set1_X509.3 -MLINKS+= X509_LOOKUP_meth_new.3 X509_OBJECT_set1_X509_CRL.3 -MLINKS+= X509_NAME_ENTRY_get_object.3 X509_NAME_ENTRY_create_by_NID.3 -MLINKS+= X509_NAME_ENTRY_get_object.3 X509_NAME_ENTRY_create_by_OBJ.3 -MLINKS+= X509_NAME_ENTRY_get_object.3 X509_NAME_ENTRY_create_by_txt.3 -MLINKS+= X509_NAME_ENTRY_get_object.3 X509_NAME_ENTRY_get_data.3 -MLINKS+= X509_NAME_ENTRY_get_object.3 X509_NAME_ENTRY_set_data.3 -MLINKS+= X509_NAME_ENTRY_get_object.3 X509_NAME_ENTRY_set_object.3 -MLINKS+= X509_NAME_add_entry_by_txt.3 X509_NAME_add_entry.3 -MLINKS+= X509_NAME_add_entry_by_txt.3 X509_NAME_add_entry_by_NID.3 -MLINKS+= X509_NAME_add_entry_by_txt.3 X509_NAME_add_entry_by_OBJ.3 -MLINKS+= X509_NAME_add_entry_by_txt.3 X509_NAME_delete_entry.3 -MLINKS+= X509_NAME_get_index_by_NID.3 X509_NAME_entry_count.3 -MLINKS+= X509_NAME_get_index_by_NID.3 X509_NAME_get_entry.3 -MLINKS+= X509_NAME_get_index_by_NID.3 X509_NAME_get_index_by_OBJ.3 -MLINKS+= X509_NAME_get_index_by_NID.3 X509_NAME_get_text_by_NID.3 -MLINKS+= X509_NAME_get_index_by_NID.3 X509_NAME_get_text_by_OBJ.3 -MLINKS+= X509_NAME_print_ex.3 X509_NAME_oneline.3 -MLINKS+= X509_NAME_print_ex.3 X509_NAME_print.3 -MLINKS+= X509_NAME_print_ex.3 X509_NAME_print_ex_fp.3 -MLINKS+= X509_PUBKEY_new.3 X509_PUBKEY_free.3 -MLINKS+= X509_PUBKEY_new.3 X509_PUBKEY_get.3 -MLINKS+= X509_PUBKEY_new.3 X509_PUBKEY_get0.3 -MLINKS+= X509_PUBKEY_new.3 X509_PUBKEY_get0_param.3 -MLINKS+= X509_PUBKEY_new.3 X509_PUBKEY_set.3 -MLINKS+= X509_PUBKEY_new.3 X509_PUBKEY_set0_param.3 -MLINKS+= X509_PUBKEY_new.3 d2i_PUBKEY.3 -MLINKS+= X509_PUBKEY_new.3 d2i_PUBKEY_bio.3 -MLINKS+= X509_PUBKEY_new.3 d2i_PUBKEY_fp.3 -MLINKS+= X509_PUBKEY_new.3 i2d_PUBKEY.3 -MLINKS+= X509_PUBKEY_new.3 i2d_PUBKEY_bio.3 -MLINKS+= X509_PUBKEY_new.3 i2d_PUBKEY_fp.3 -MLINKS+= X509_SIG_get0.3 X509_SIG_getm.3 -MLINKS+= X509_STORE_CTX_get_error.3 X509_STORE_CTX_get0_cert.3 -MLINKS+= X509_STORE_CTX_get_error.3 X509_STORE_CTX_get1_chain.3 -MLINKS+= X509_STORE_CTX_get_error.3 X509_STORE_CTX_get_current_cert.3 -MLINKS+= X509_STORE_CTX_get_error.3 X509_STORE_CTX_get_error_depth.3 -MLINKS+= X509_STORE_CTX_get_error.3 X509_STORE_CTX_set_current_cert.3 -MLINKS+= X509_STORE_CTX_get_error.3 X509_STORE_CTX_set_error.3 -MLINKS+= X509_STORE_CTX_get_error.3 X509_STORE_CTX_set_error_depth.3 -MLINKS+= X509_STORE_CTX_get_error.3 X509_verify_cert_error_string.3 -MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_cleanup.3 -MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_free.3 -MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_get0_chain.3 -MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_get0_param.3 -MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_get0_untrusted.3 -MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_get_num_untrusted.3 -MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_init.3 -MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_set0_crls.3 -MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_set0_param.3 -MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_set0_trusted_stack.3 -MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_set0_untrusted.3 -MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_set0_verified_chain.3 -MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_set_cert.3 -MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_set_default.3 -MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_set_verify.3 -MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_verify_fn.3 -MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_cert_crl.3 -MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_check_crl.3 -MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_check_issued.3 -MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_check_policy.3 -MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_check_revocation.3 -MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_cleanup.3 -MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_get_crl.3 -MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_get_issuer.3 -MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_lookup_certs.3 -MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_lookup_crls.3 -MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_verify_cb.3 -MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_verify_cb.3 -MLINKS+= X509_STORE_add_cert.3 X509_STORE_add_crl.3 -MLINKS+= X509_STORE_add_cert.3 X509_STORE_load_locations.3 -MLINKS+= X509_STORE_add_cert.3 X509_STORE_set_default_paths.3 -MLINKS+= X509_STORE_add_cert.3 X509_STORE_set_depth.3 -MLINKS+= X509_STORE_add_cert.3 X509_STORE_set_flags.3 -MLINKS+= X509_STORE_add_cert.3 X509_STORE_set_purpose.3 -MLINKS+= X509_STORE_add_cert.3 X509_STORE_set_trust.3 -MLINKS+= X509_STORE_get0_param.3 X509_STORE_get0_objects.3 -MLINKS+= X509_STORE_get0_param.3 X509_STORE_set1_param.3 -MLINKS+= X509_STORE_new.3 X509_STORE_free.3 -MLINKS+= X509_STORE_new.3 X509_STORE_lock.3 -MLINKS+= X509_STORE_new.3 X509_STORE_unlock.3 -MLINKS+= X509_STORE_new.3 X509_STORE_up_ref.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_cert_crl_fn.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_check_crl_fn.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_check_issued_fn.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_check_policy_fn.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_check_revocation_fn.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_cleanup_fn.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_get_crl_fn.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_get_issuer_fn.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_get_verify.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_lookup_certs_fn.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_lookup_crls_fn.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_cert_crl.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_check_crl.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_check_issued.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_check_policy.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_check_revocation.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_cleanup.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_get_crl.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_get_issuer.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_lookup_certs.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_lookup_crls.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_verify_cb.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_cert_crl.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_check_crl.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_check_issued.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_check_policy.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_check_revocation.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_cleanup.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_get_crl.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_get_issuer.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_lookup_certs.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_lookup_crls.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_lookup_crls_cb.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_verify.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_verify_cb.3 -MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_verify_func.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_add0_policy.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_add1_host.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_clear_flags.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_get0_peername.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_get_auth_level.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_get_depth.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_get_flags.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_get_hostflags.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_get_inh_flags.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_get_time.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set1_email.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set1_host.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set1_ip.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set1_ip_asc.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set1_policies.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set_auth_level.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set_depth.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set_hostflags.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set_inh_flags.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set_purpose.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set_time.3 -MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set_trust.3 -MLINKS+= X509_check_host.3 X509_check_email.3 -MLINKS+= X509_check_host.3 X509_check_ip.3 -MLINKS+= X509_check_host.3 X509_check_ip_asc.3 -MLINKS+= X509_check_private_key.3 X509_REQ_check_private_key.3 -MLINKS+= X509_cmp.3 X509_CRL_cmp.3 -MLINKS+= X509_cmp.3 X509_CRL_match.3 -MLINKS+= X509_cmp.3 X509_NAME_cmp.3 -MLINKS+= X509_cmp.3 X509_issuer_and_serial_cmp.3 -MLINKS+= X509_cmp.3 X509_issuer_name_cmp.3 -MLINKS+= X509_cmp.3 X509_subject_name_cmp.3 -MLINKS+= X509_cmp_time.3 X509_cmp_current_time.3 -MLINKS+= X509_cmp_time.3 X509_time_adj.3 -MLINKS+= X509_cmp_time.3 X509_time_adj_ex.3 -MLINKS+= X509_digest.3 PKCS7_ISSUER_AND_SERIAL_digest.3 -MLINKS+= X509_digest.3 X509_CRL_digest.3 -MLINKS+= X509_digest.3 X509_NAME_digest.3 -MLINKS+= X509_digest.3 X509_REQ_digest.3 -MLINKS+= X509_digest.3 X509_pubkey_digest.3 -MLINKS+= X509_dup.3 ACCESS_DESCRIPTION_free.3 -MLINKS+= X509_dup.3 ACCESS_DESCRIPTION_new.3 -MLINKS+= X509_dup.3 ADMISSIONS_free.3 -MLINKS+= X509_dup.3 ADMISSIONS_new.3 -MLINKS+= X509_dup.3 ADMISSION_SYNTAX_free.3 -MLINKS+= X509_dup.3 ADMISSION_SYNTAX_new.3 -MLINKS+= X509_dup.3 ASIdOrRange_free.3 -MLINKS+= X509_dup.3 ASIdOrRange_new.3 -MLINKS+= X509_dup.3 ASIdentifierChoice_free.3 -MLINKS+= X509_dup.3 ASIdentifierChoice_new.3 -MLINKS+= X509_dup.3 ASIdentifiers_free.3 -MLINKS+= X509_dup.3 ASIdentifiers_new.3 -MLINKS+= X509_dup.3 ASN1_ITEM.3 -MLINKS+= X509_dup.3 ASRange_free.3 -MLINKS+= X509_dup.3 ASRange_new.3 -MLINKS+= X509_dup.3 AUTHORITY_INFO_ACCESS_free.3 -MLINKS+= X509_dup.3 AUTHORITY_INFO_ACCESS_new.3 -MLINKS+= X509_dup.3 AUTHORITY_KEYID_free.3 -MLINKS+= X509_dup.3 AUTHORITY_KEYID_new.3 -MLINKS+= X509_dup.3 BASIC_CONSTRAINTS_free.3 -MLINKS+= X509_dup.3 BASIC_CONSTRAINTS_new.3 -MLINKS+= X509_dup.3 CERTIFICATEPOLICIES_free.3 -MLINKS+= X509_dup.3 CERTIFICATEPOLICIES_new.3 -MLINKS+= X509_dup.3 CMS_ContentInfo_free.3 -MLINKS+= X509_dup.3 CMS_ContentInfo_new.3 -MLINKS+= X509_dup.3 CMS_ContentInfo_print_ctx.3 -MLINKS+= X509_dup.3 CMS_ReceiptRequest_free.3 -MLINKS+= X509_dup.3 CMS_ReceiptRequest_new.3 -MLINKS+= X509_dup.3 CRL_DIST_POINTS_free.3 -MLINKS+= X509_dup.3 CRL_DIST_POINTS_new.3 -MLINKS+= X509_dup.3 DECLARE_ASN1_FUNCTIONS.3 -MLINKS+= X509_dup.3 DIRECTORYSTRING_free.3 -MLINKS+= X509_dup.3 DIRECTORYSTRING_new.3 -MLINKS+= X509_dup.3 DISPLAYTEXT_free.3 -MLINKS+= X509_dup.3 DISPLAYTEXT_new.3 -MLINKS+= X509_dup.3 DIST_POINT_NAME_free.3 -MLINKS+= X509_dup.3 DIST_POINT_NAME_new.3 -MLINKS+= X509_dup.3 DIST_POINT_free.3 -MLINKS+= X509_dup.3 DIST_POINT_new.3 -MLINKS+= X509_dup.3 DSAparams_dup.3 -MLINKS+= X509_dup.3 ECPARAMETERS_free.3 -MLINKS+= X509_dup.3 ECPARAMETERS_new.3 -MLINKS+= X509_dup.3 ECPKPARAMETERS_free.3 -MLINKS+= X509_dup.3 ECPKPARAMETERS_new.3 -MLINKS+= X509_dup.3 EDIPARTYNAME_free.3 -MLINKS+= X509_dup.3 EDIPARTYNAME_new.3 -MLINKS+= X509_dup.3 ESS_CERT_ID_dup.3 -MLINKS+= X509_dup.3 ESS_CERT_ID_free.3 -MLINKS+= X509_dup.3 ESS_CERT_ID_new.3 -MLINKS+= X509_dup.3 ESS_ISSUER_SERIAL_dup.3 -MLINKS+= X509_dup.3 ESS_ISSUER_SERIAL_free.3 -MLINKS+= X509_dup.3 ESS_ISSUER_SERIAL_new.3 -MLINKS+= X509_dup.3 ESS_SIGNING_CERT_dup.3 -MLINKS+= X509_dup.3 ESS_SIGNING_CERT_free.3 -MLINKS+= X509_dup.3 ESS_SIGNING_CERT_new.3 -MLINKS+= X509_dup.3 EXTENDED_KEY_USAGE_free.3 -MLINKS+= X509_dup.3 EXTENDED_KEY_USAGE_new.3 -MLINKS+= X509_dup.3 GENERAL_NAMES_free.3 -MLINKS+= X509_dup.3 GENERAL_NAMES_new.3 -MLINKS+= X509_dup.3 GENERAL_NAME_dup.3 -MLINKS+= X509_dup.3 GENERAL_NAME_free.3 -MLINKS+= X509_dup.3 GENERAL_NAME_new.3 -MLINKS+= X509_dup.3 GENERAL_SUBTREE_free.3 -MLINKS+= X509_dup.3 GENERAL_SUBTREE_new.3 -MLINKS+= X509_dup.3 IMPLEMENT_ASN1_FUNCTIONS.3 -MLINKS+= X509_dup.3 IPAddressChoice_free.3 -MLINKS+= X509_dup.3 IPAddressChoice_new.3 -MLINKS+= X509_dup.3 IPAddressFamily_free.3 -MLINKS+= X509_dup.3 IPAddressFamily_new.3 -MLINKS+= X509_dup.3 IPAddressOrRange_free.3 -MLINKS+= X509_dup.3 IPAddressOrRange_new.3 -MLINKS+= X509_dup.3 IPAddressRange_free.3 -MLINKS+= X509_dup.3 IPAddressRange_new.3 -MLINKS+= X509_dup.3 ISSUING_DIST_POINT_free.3 -MLINKS+= X509_dup.3 ISSUING_DIST_POINT_new.3 -MLINKS+= X509_dup.3 NAME_CONSTRAINTS_free.3 -MLINKS+= X509_dup.3 NAME_CONSTRAINTS_new.3 -MLINKS+= X509_dup.3 NAMING_AUTHORITY_free.3 -MLINKS+= X509_dup.3 NAMING_AUTHORITY_new.3 -MLINKS+= X509_dup.3 NETSCAPE_CERT_SEQUENCE_free.3 -MLINKS+= X509_dup.3 NETSCAPE_CERT_SEQUENCE_new.3 -MLINKS+= X509_dup.3 NETSCAPE_SPKAC_free.3 -MLINKS+= X509_dup.3 NETSCAPE_SPKAC_new.3 -MLINKS+= X509_dup.3 NETSCAPE_SPKI_free.3 -MLINKS+= X509_dup.3 NETSCAPE_SPKI_new.3 -MLINKS+= X509_dup.3 NOTICEREF_free.3 -MLINKS+= X509_dup.3 NOTICEREF_new.3 -MLINKS+= X509_dup.3 OCSP_BASICRESP_free.3 -MLINKS+= X509_dup.3 OCSP_BASICRESP_new.3 -MLINKS+= X509_dup.3 OCSP_CERTID_dup.3 -MLINKS+= X509_dup.3 OCSP_CERTID_new.3 -MLINKS+= X509_dup.3 OCSP_CERTSTATUS_free.3 -MLINKS+= X509_dup.3 OCSP_CERTSTATUS_new.3 -MLINKS+= X509_dup.3 OCSP_CRLID_free.3 -MLINKS+= X509_dup.3 OCSP_CRLID_new.3 -MLINKS+= X509_dup.3 OCSP_ONEREQ_free.3 -MLINKS+= X509_dup.3 OCSP_ONEREQ_new.3 -MLINKS+= X509_dup.3 OCSP_REQINFO_free.3 -MLINKS+= X509_dup.3 OCSP_REQINFO_new.3 -MLINKS+= X509_dup.3 OCSP_RESPBYTES_free.3 -MLINKS+= X509_dup.3 OCSP_RESPBYTES_new.3 -MLINKS+= X509_dup.3 OCSP_RESPDATA_free.3 -MLINKS+= X509_dup.3 OCSP_RESPDATA_new.3 -MLINKS+= X509_dup.3 OCSP_RESPID_free.3 -MLINKS+= X509_dup.3 OCSP_RESPID_new.3 -MLINKS+= X509_dup.3 OCSP_RESPONSE_new.3 -MLINKS+= X509_dup.3 OCSP_REVOKEDINFO_free.3 -MLINKS+= X509_dup.3 OCSP_REVOKEDINFO_new.3 -MLINKS+= X509_dup.3 OCSP_SERVICELOC_free.3 -MLINKS+= X509_dup.3 OCSP_SERVICELOC_new.3 -MLINKS+= X509_dup.3 OCSP_SIGNATURE_free.3 -MLINKS+= X509_dup.3 OCSP_SIGNATURE_new.3 -MLINKS+= X509_dup.3 OCSP_SINGLERESP_free.3 -MLINKS+= X509_dup.3 OCSP_SINGLERESP_new.3 -MLINKS+= X509_dup.3 OTHERNAME_free.3 -MLINKS+= X509_dup.3 OTHERNAME_new.3 -MLINKS+= X509_dup.3 PBE2PARAM_free.3 -MLINKS+= X509_dup.3 PBE2PARAM_new.3 -MLINKS+= X509_dup.3 PBEPARAM_free.3 -MLINKS+= X509_dup.3 PBEPARAM_new.3 -MLINKS+= X509_dup.3 PBKDF2PARAM_free.3 -MLINKS+= X509_dup.3 PBKDF2PARAM_new.3 -MLINKS+= X509_dup.3 PKCS12_BAGS_free.3 -MLINKS+= X509_dup.3 PKCS12_BAGS_new.3 -MLINKS+= X509_dup.3 PKCS12_MAC_DATA_free.3 -MLINKS+= X509_dup.3 PKCS12_MAC_DATA_new.3 -MLINKS+= X509_dup.3 PKCS12_SAFEBAG_free.3 -MLINKS+= X509_dup.3 PKCS12_SAFEBAG_new.3 -MLINKS+= X509_dup.3 PKCS12_free.3 -MLINKS+= X509_dup.3 PKCS12_new.3 -MLINKS+= X509_dup.3 PKCS7_DIGEST_free.3 -MLINKS+= X509_dup.3 PKCS7_DIGEST_new.3 -MLINKS+= X509_dup.3 PKCS7_ENCRYPT_free.3 -MLINKS+= X509_dup.3 PKCS7_ENCRYPT_new.3 -MLINKS+= X509_dup.3 PKCS7_ENC_CONTENT_free.3 -MLINKS+= X509_dup.3 PKCS7_ENC_CONTENT_new.3 -MLINKS+= X509_dup.3 PKCS7_ENVELOPE_free.3 -MLINKS+= X509_dup.3 PKCS7_ENVELOPE_new.3 -MLINKS+= X509_dup.3 PKCS7_ISSUER_AND_SERIAL_free.3 -MLINKS+= X509_dup.3 PKCS7_ISSUER_AND_SERIAL_new.3 -MLINKS+= X509_dup.3 PKCS7_RECIP_INFO_free.3 -MLINKS+= X509_dup.3 PKCS7_RECIP_INFO_new.3 -MLINKS+= X509_dup.3 PKCS7_SIGNED_free.3 -MLINKS+= X509_dup.3 PKCS7_SIGNED_new.3 -MLINKS+= X509_dup.3 PKCS7_SIGNER_INFO_free.3 -MLINKS+= X509_dup.3 PKCS7_SIGNER_INFO_new.3 -MLINKS+= X509_dup.3 PKCS7_SIGN_ENVELOPE_free.3 -MLINKS+= X509_dup.3 PKCS7_SIGN_ENVELOPE_new.3 -MLINKS+= X509_dup.3 PKCS7_dup.3 -MLINKS+= X509_dup.3 PKCS7_free.3 -MLINKS+= X509_dup.3 PKCS7_new.3 -MLINKS+= X509_dup.3 PKCS7_print_ctx.3 -MLINKS+= X509_dup.3 PKCS8_PRIV_KEY_INFO_free.3 -MLINKS+= X509_dup.3 PKCS8_PRIV_KEY_INFO_new.3 -MLINKS+= X509_dup.3 PKEY_USAGE_PERIOD_free.3 -MLINKS+= X509_dup.3 PKEY_USAGE_PERIOD_new.3 -MLINKS+= X509_dup.3 POLICYINFO_free.3 -MLINKS+= X509_dup.3 POLICYINFO_new.3 -MLINKS+= X509_dup.3 POLICYQUALINFO_free.3 -MLINKS+= X509_dup.3 POLICYQUALINFO_new.3 -MLINKS+= X509_dup.3 POLICY_CONSTRAINTS_free.3 -MLINKS+= X509_dup.3 POLICY_CONSTRAINTS_new.3 -MLINKS+= X509_dup.3 POLICY_MAPPING_free.3 -MLINKS+= X509_dup.3 POLICY_MAPPING_new.3 -MLINKS+= X509_dup.3 PROFESSION_INFOS_free.3 -MLINKS+= X509_dup.3 PROFESSION_INFOS_new.3 -MLINKS+= X509_dup.3 PROFESSION_INFO_free.3 -MLINKS+= X509_dup.3 PROFESSION_INFO_new.3 -MLINKS+= X509_dup.3 PROXY_CERT_INFO_EXTENSION_free.3 -MLINKS+= X509_dup.3 PROXY_CERT_INFO_EXTENSION_new.3 -MLINKS+= X509_dup.3 PROXY_POLICY_free.3 -MLINKS+= X509_dup.3 PROXY_POLICY_new.3 -MLINKS+= X509_dup.3 RSAPrivateKey_dup.3 -MLINKS+= X509_dup.3 RSAPublicKey_dup.3 -MLINKS+= X509_dup.3 RSA_OAEP_PARAMS_free.3 -MLINKS+= X509_dup.3 RSA_OAEP_PARAMS_new.3 -MLINKS+= X509_dup.3 RSA_PSS_PARAMS_free.3 -MLINKS+= X509_dup.3 RSA_PSS_PARAMS_new.3 -MLINKS+= X509_dup.3 SCRYPT_PARAMS_free.3 -MLINKS+= X509_dup.3 SCRYPT_PARAMS_new.3 -MLINKS+= X509_dup.3 SXNETID_free.3 -MLINKS+= X509_dup.3 SXNETID_new.3 -MLINKS+= X509_dup.3 SXNET_free.3 -MLINKS+= X509_dup.3 SXNET_new.3 -MLINKS+= X509_dup.3 TLS_FEATURE_free.3 -MLINKS+= X509_dup.3 TLS_FEATURE_new.3 -MLINKS+= X509_dup.3 TS_ACCURACY_dup.3 -MLINKS+= X509_dup.3 TS_ACCURACY_free.3 -MLINKS+= X509_dup.3 TS_ACCURACY_new.3 -MLINKS+= X509_dup.3 TS_MSG_IMPRINT_dup.3 -MLINKS+= X509_dup.3 TS_MSG_IMPRINT_free.3 -MLINKS+= X509_dup.3 TS_MSG_IMPRINT_new.3 -MLINKS+= X509_dup.3 TS_REQ_dup.3 -MLINKS+= X509_dup.3 TS_REQ_free.3 -MLINKS+= X509_dup.3 TS_REQ_new.3 -MLINKS+= X509_dup.3 TS_RESP_dup.3 -MLINKS+= X509_dup.3 TS_RESP_free.3 -MLINKS+= X509_dup.3 TS_RESP_new.3 -MLINKS+= X509_dup.3 TS_STATUS_INFO_dup.3 -MLINKS+= X509_dup.3 TS_STATUS_INFO_free.3 -MLINKS+= X509_dup.3 TS_STATUS_INFO_new.3 -MLINKS+= X509_dup.3 TS_TST_INFO_dup.3 -MLINKS+= X509_dup.3 TS_TST_INFO_free.3 -MLINKS+= X509_dup.3 TS_TST_INFO_new.3 -MLINKS+= X509_dup.3 USERNOTICE_free.3 -MLINKS+= X509_dup.3 USERNOTICE_new.3 -MLINKS+= X509_dup.3 X509_ALGOR_free.3 -MLINKS+= X509_dup.3 X509_ALGOR_new.3 -MLINKS+= X509_dup.3 X509_ATTRIBUTE_dup.3 -MLINKS+= X509_dup.3 X509_ATTRIBUTE_free.3 -MLINKS+= X509_dup.3 X509_ATTRIBUTE_new.3 -MLINKS+= X509_dup.3 X509_CERT_AUX_free.3 -MLINKS+= X509_dup.3 X509_CERT_AUX_new.3 -MLINKS+= X509_dup.3 X509_CINF_free.3 -MLINKS+= X509_dup.3 X509_CINF_new.3 -MLINKS+= X509_dup.3 X509_CRL_INFO_free.3 -MLINKS+= X509_dup.3 X509_CRL_INFO_new.3 -MLINKS+= X509_dup.3 X509_CRL_dup.3 -MLINKS+= X509_dup.3 X509_CRL_free.3 -MLINKS+= X509_dup.3 X509_CRL_new.3 -MLINKS+= X509_dup.3 X509_EXTENSION_dup.3 -MLINKS+= X509_dup.3 X509_EXTENSION_free.3 -MLINKS+= X509_dup.3 X509_EXTENSION_new.3 -MLINKS+= X509_dup.3 X509_NAME_ENTRY_dup.3 -MLINKS+= X509_dup.3 X509_NAME_ENTRY_free.3 -MLINKS+= X509_dup.3 X509_NAME_ENTRY_new.3 -MLINKS+= X509_dup.3 X509_NAME_dup.3 -MLINKS+= X509_dup.3 X509_NAME_free.3 -MLINKS+= X509_dup.3 X509_NAME_new.3 -MLINKS+= X509_dup.3 X509_REQ_INFO_free.3 -MLINKS+= X509_dup.3 X509_REQ_INFO_new.3 -MLINKS+= X509_dup.3 X509_REQ_dup.3 -MLINKS+= X509_dup.3 X509_REQ_free.3 -MLINKS+= X509_dup.3 X509_REQ_new.3 -MLINKS+= X509_dup.3 X509_REVOKED_dup.3 -MLINKS+= X509_dup.3 X509_REVOKED_free.3 -MLINKS+= X509_dup.3 X509_REVOKED_new.3 -MLINKS+= X509_dup.3 X509_SIG_free.3 -MLINKS+= X509_dup.3 X509_SIG_new.3 -MLINKS+= X509_dup.3 X509_VAL_free.3 -MLINKS+= X509_dup.3 X509_VAL_new.3 -MLINKS+= X509_get0_notBefore.3 X509_CRL_get0_lastUpdate.3 -MLINKS+= X509_get0_notBefore.3 X509_CRL_get0_nextUpdate.3 -MLINKS+= X509_get0_notBefore.3 X509_CRL_set1_lastUpdate.3 -MLINKS+= X509_get0_notBefore.3 X509_CRL_set1_nextUpdate.3 -MLINKS+= X509_get0_notBefore.3 X509_get0_notAfter.3 -MLINKS+= X509_get0_notBefore.3 X509_getm_notAfter.3 -MLINKS+= X509_get0_notBefore.3 X509_getm_notBefore.3 -MLINKS+= X509_get0_notBefore.3 X509_set1_notAfter.3 -MLINKS+= X509_get0_notBefore.3 X509_set1_notBefore.3 -MLINKS+= X509_get0_signature.3 X509_CRL_get0_signature.3 -MLINKS+= X509_get0_signature.3 X509_CRL_get_signature_nid.3 -MLINKS+= X509_get0_signature.3 X509_REQ_get0_signature.3 -MLINKS+= X509_get0_signature.3 X509_REQ_get_signature_nid.3 -MLINKS+= X509_get0_signature.3 X509_SIG_INFO_get.3 -MLINKS+= X509_get0_signature.3 X509_SIG_INFO_set.3 -MLINKS+= X509_get0_signature.3 X509_get0_tbs_sigalg.3 -MLINKS+= X509_get0_signature.3 X509_get_signature_info.3 -MLINKS+= X509_get0_signature.3 X509_get_signature_nid.3 -MLINKS+= X509_get_extension_flags.3 X509_get0_authority_issuer.3 -MLINKS+= X509_get_extension_flags.3 X509_get0_authority_key_id.3 -MLINKS+= X509_get_extension_flags.3 X509_get0_authority_serial.3 -MLINKS+= X509_get_extension_flags.3 X509_get0_subject_key_id.3 -MLINKS+= X509_get_extension_flags.3 X509_get_extended_key_usage.3 -MLINKS+= X509_get_extension_flags.3 X509_get_key_usage.3 -MLINKS+= X509_get_extension_flags.3 X509_get_pathlen.3 -MLINKS+= X509_get_extension_flags.3 X509_get_proxy_pathlen.3 -MLINKS+= X509_get_extension_flags.3 X509_set_proxy_flag.3 -MLINKS+= X509_get_extension_flags.3 X509_set_proxy_pathlen.3 -MLINKS+= X509_get_pubkey.3 X509_REQ_get0_pubkey.3 -MLINKS+= X509_get_pubkey.3 X509_REQ_get_X509_PUBKEY.3 -MLINKS+= X509_get_pubkey.3 X509_REQ_get_pubkey.3 -MLINKS+= X509_get_pubkey.3 X509_REQ_set_pubkey.3 -MLINKS+= X509_get_pubkey.3 X509_get0_pubkey.3 -MLINKS+= X509_get_pubkey.3 X509_get_X509_PUBKEY.3 -MLINKS+= X509_get_pubkey.3 X509_set_pubkey.3 -MLINKS+= X509_get_serialNumber.3 X509_get0_serialNumber.3 -MLINKS+= X509_get_serialNumber.3 X509_set_serialNumber.3 -MLINKS+= X509_get_subject_name.3 X509_CRL_get_issuer.3 -MLINKS+= X509_get_subject_name.3 X509_CRL_set_issuer_name.3 -MLINKS+= X509_get_subject_name.3 X509_REQ_get_subject_name.3 -MLINKS+= X509_get_subject_name.3 X509_REQ_set_subject_name.3 -MLINKS+= X509_get_subject_name.3 X509_get_issuer_name.3 -MLINKS+= X509_get_subject_name.3 X509_set_issuer_name.3 -MLINKS+= X509_get_subject_name.3 X509_set_subject_name.3 -MLINKS+= X509_get_version.3 X509_CRL_get_version.3 -MLINKS+= X509_get_version.3 X509_CRL_set_version.3 -MLINKS+= X509_get_version.3 X509_REQ_get_version.3 -MLINKS+= X509_get_version.3 X509_REQ_set_version.3 -MLINKS+= X509_get_version.3 X509_set_version.3 -MLINKS+= X509_new.3 X509_chain_up_ref.3 -MLINKS+= X509_new.3 X509_free.3 -MLINKS+= X509_new.3 X509_up_ref.3 -MLINKS+= X509_sign.3 X509_CRL_sign.3 -MLINKS+= X509_sign.3 X509_CRL_sign_ctx.3 -MLINKS+= X509_sign.3 X509_CRL_verify.3 -MLINKS+= X509_sign.3 X509_REQ_sign.3 -MLINKS+= X509_sign.3 X509_REQ_sign_ctx.3 -MLINKS+= X509_sign.3 X509_REQ_verify.3 -MLINKS+= X509_sign.3 X509_sign_ctx.3 -MLINKS+= X509_sign.3 X509_verify.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_CRL_add_ext.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_CRL_delete_ext.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_CRL_get_ext.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_CRL_get_ext_by_NID.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_CRL_get_ext_by_OBJ.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_CRL_get_ext_by_critical.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_CRL_get_ext_count.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_REVOKED_add_ext.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_REVOKED_delete_ext.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_REVOKED_get_ext.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_REVOKED_get_ext_by_NID.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_REVOKED_get_ext_by_OBJ.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_REVOKED_get_ext_by_critical.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_REVOKED_get_ext_count.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_add_ext.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_delete_ext.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_get_ext.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_get_ext_by_NID.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_get_ext_by_OBJ.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_get_ext_by_critical.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509_get_ext_count.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509v3_add_ext.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509v3_delete_ext.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509v3_get_ext.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509v3_get_ext_by_OBJ.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509v3_get_ext_by_critical.3 -MLINKS+= X509v3_get_ext_by_NID.3 X509v3_get_ext_count.3 -MLINKS+= d2i_DHparams.3 i2d_DHparams.3 -MLINKS+= d2i_PKCS8PrivateKey_bio.3 d2i_PKCS8PrivateKey_fp.3 -MLINKS+= d2i_PKCS8PrivateKey_bio.3 i2d_PKCS8PrivateKey_bio.3 -MLINKS+= d2i_PKCS8PrivateKey_bio.3 i2d_PKCS8PrivateKey_fp.3 -MLINKS+= d2i_PKCS8PrivateKey_bio.3 i2d_PKCS8PrivateKey_nid_bio.3 -MLINKS+= d2i_PKCS8PrivateKey_bio.3 i2d_PKCS8PrivateKey_nid_fp.3 -MLINKS+= d2i_PrivateKey.3 d2i_AutoPrivateKey.3 -MLINKS+= d2i_PrivateKey.3 d2i_PrivateKey_bio.3 -MLINKS+= d2i_PrivateKey.3 d2i_PrivateKey_fp.3 -MLINKS+= d2i_PrivateKey.3 d2i_PublicKey.3 -MLINKS+= d2i_PrivateKey.3 i2d_PrivateKey.3 -MLINKS+= d2i_PrivateKey.3 i2d_PublicKey.3 -MLINKS+= d2i_SSL_SESSION.3 i2d_SSL_SESSION.3 -MLINKS+= d2i_X509.3 d2i_ACCESS_DESCRIPTION.3 -MLINKS+= d2i_X509.3 d2i_ADMISSIONS.3 -MLINKS+= d2i_X509.3 d2i_ADMISSION_SYNTAX.3 -MLINKS+= d2i_X509.3 d2i_ASIdOrRange.3 -MLINKS+= d2i_X509.3 d2i_ASIdentifierChoice.3 -MLINKS+= d2i_X509.3 d2i_ASIdentifiers.3 -MLINKS+= d2i_X509.3 d2i_ASN1_BIT_STRING.3 -MLINKS+= d2i_X509.3 d2i_ASN1_BMPSTRING.3 -MLINKS+= d2i_X509.3 d2i_ASN1_ENUMERATED.3 -MLINKS+= d2i_X509.3 d2i_ASN1_GENERALIZEDTIME.3 -MLINKS+= d2i_X509.3 d2i_ASN1_GENERALSTRING.3 -MLINKS+= d2i_X509.3 d2i_ASN1_IA5STRING.3 -MLINKS+= d2i_X509.3 d2i_ASN1_INTEGER.3 -MLINKS+= d2i_X509.3 d2i_ASN1_NULL.3 -MLINKS+= d2i_X509.3 d2i_ASN1_OBJECT.3 -MLINKS+= d2i_X509.3 d2i_ASN1_OCTET_STRING.3 -MLINKS+= d2i_X509.3 d2i_ASN1_PRINTABLE.3 -MLINKS+= d2i_X509.3 d2i_ASN1_PRINTABLESTRING.3 -MLINKS+= d2i_X509.3 d2i_ASN1_SEQUENCE_ANY.3 -MLINKS+= d2i_X509.3 d2i_ASN1_SET_ANY.3 -MLINKS+= d2i_X509.3 d2i_ASN1_T61STRING.3 -MLINKS+= d2i_X509.3 d2i_ASN1_TIME.3 -MLINKS+= d2i_X509.3 d2i_ASN1_TYPE.3 -MLINKS+= d2i_X509.3 d2i_ASN1_UINTEGER.3 -MLINKS+= d2i_X509.3 d2i_ASN1_UNIVERSALSTRING.3 -MLINKS+= d2i_X509.3 d2i_ASN1_UTCTIME.3 -MLINKS+= d2i_X509.3 d2i_ASN1_UTF8STRING.3 -MLINKS+= d2i_X509.3 d2i_ASN1_VISIBLESTRING.3 -MLINKS+= d2i_X509.3 d2i_ASRange.3 -MLINKS+= d2i_X509.3 d2i_AUTHORITY_INFO_ACCESS.3 -MLINKS+= d2i_X509.3 d2i_AUTHORITY_KEYID.3 -MLINKS+= d2i_X509.3 d2i_BASIC_CONSTRAINTS.3 -MLINKS+= d2i_X509.3 d2i_CERTIFICATEPOLICIES.3 -MLINKS+= d2i_X509.3 d2i_CMS_ContentInfo.3 -MLINKS+= d2i_X509.3 d2i_CMS_ReceiptRequest.3 -MLINKS+= d2i_X509.3 d2i_CMS_bio.3 -MLINKS+= d2i_X509.3 d2i_CRL_DIST_POINTS.3 -MLINKS+= d2i_X509.3 d2i_DHxparams.3 -MLINKS+= d2i_X509.3 d2i_DIRECTORYSTRING.3 -MLINKS+= d2i_X509.3 d2i_DISPLAYTEXT.3 -MLINKS+= d2i_X509.3 d2i_DIST_POINT.3 -MLINKS+= d2i_X509.3 d2i_DIST_POINT_NAME.3 -MLINKS+= d2i_X509.3 d2i_DSAPrivateKey.3 -MLINKS+= d2i_X509.3 d2i_DSAPrivateKey_bio.3 -MLINKS+= d2i_X509.3 d2i_DSAPrivateKey_fp.3 -MLINKS+= d2i_X509.3 d2i_DSAPublicKey.3 -MLINKS+= d2i_X509.3 d2i_DSA_PUBKEY.3 -MLINKS+= d2i_X509.3 d2i_DSA_PUBKEY_bio.3 -MLINKS+= d2i_X509.3 d2i_DSA_PUBKEY_fp.3 -MLINKS+= d2i_X509.3 d2i_DSA_SIG.3 -MLINKS+= d2i_X509.3 d2i_DSAparams.3 -MLINKS+= d2i_X509.3 d2i_ECDSA_SIG.3 -MLINKS+= d2i_X509.3 d2i_ECPKParameters.3 -MLINKS+= d2i_X509.3 d2i_ECParameters.3 -MLINKS+= d2i_X509.3 d2i_ECPrivateKey.3 -MLINKS+= d2i_X509.3 d2i_ECPrivateKey_bio.3 -MLINKS+= d2i_X509.3 d2i_ECPrivateKey_fp.3 -MLINKS+= d2i_X509.3 d2i_EC_PUBKEY.3 -MLINKS+= d2i_X509.3 d2i_EC_PUBKEY_bio.3 -MLINKS+= d2i_X509.3 d2i_EC_PUBKEY_fp.3 -MLINKS+= d2i_X509.3 d2i_EDIPARTYNAME.3 -MLINKS+= d2i_X509.3 d2i_ESS_CERT_ID.3 -MLINKS+= d2i_X509.3 d2i_ESS_ISSUER_SERIAL.3 -MLINKS+= d2i_X509.3 d2i_ESS_SIGNING_CERT.3 -MLINKS+= d2i_X509.3 d2i_EXTENDED_KEY_USAGE.3 -MLINKS+= d2i_X509.3 d2i_GENERAL_NAME.3 -MLINKS+= d2i_X509.3 d2i_GENERAL_NAMES.3 -MLINKS+= d2i_X509.3 d2i_IPAddressChoice.3 -MLINKS+= d2i_X509.3 d2i_IPAddressFamily.3 -MLINKS+= d2i_X509.3 d2i_IPAddressOrRange.3 -MLINKS+= d2i_X509.3 d2i_IPAddressRange.3 -MLINKS+= d2i_X509.3 d2i_ISSUING_DIST_POINT.3 -MLINKS+= d2i_X509.3 d2i_NAMING_AUTHORITY.3 -MLINKS+= d2i_X509.3 d2i_NETSCAPE_CERT_SEQUENCE.3 -MLINKS+= d2i_X509.3 d2i_NETSCAPE_SPKAC.3 -MLINKS+= d2i_X509.3 d2i_NETSCAPE_SPKI.3 -MLINKS+= d2i_X509.3 d2i_NOTICEREF.3 -MLINKS+= d2i_X509.3 d2i_OCSP_BASICRESP.3 -MLINKS+= d2i_X509.3 d2i_OCSP_CERTID.3 -MLINKS+= d2i_X509.3 d2i_OCSP_CERTSTATUS.3 -MLINKS+= d2i_X509.3 d2i_OCSP_CRLID.3 -MLINKS+= d2i_X509.3 d2i_OCSP_ONEREQ.3 -MLINKS+= d2i_X509.3 d2i_OCSP_REQINFO.3 -MLINKS+= d2i_X509.3 d2i_OCSP_REQUEST.3 -MLINKS+= d2i_X509.3 d2i_OCSP_RESPBYTES.3 -MLINKS+= d2i_X509.3 d2i_OCSP_RESPDATA.3 -MLINKS+= d2i_X509.3 d2i_OCSP_RESPID.3 -MLINKS+= d2i_X509.3 d2i_OCSP_RESPONSE.3 -MLINKS+= d2i_X509.3 d2i_OCSP_REVOKEDINFO.3 -MLINKS+= d2i_X509.3 d2i_OCSP_SERVICELOC.3 -MLINKS+= d2i_X509.3 d2i_OCSP_SIGNATURE.3 -MLINKS+= d2i_X509.3 d2i_OCSP_SINGLERESP.3 -MLINKS+= d2i_X509.3 d2i_OTHERNAME.3 -MLINKS+= d2i_X509.3 d2i_PBE2PARAM.3 -MLINKS+= d2i_X509.3 d2i_PBEPARAM.3 -MLINKS+= d2i_X509.3 d2i_PBKDF2PARAM.3 -MLINKS+= d2i_X509.3 d2i_PKCS12.3 -MLINKS+= d2i_X509.3 d2i_PKCS12_BAGS.3 -MLINKS+= d2i_X509.3 d2i_PKCS12_MAC_DATA.3 -MLINKS+= d2i_X509.3 d2i_PKCS12_SAFEBAG.3 -MLINKS+= d2i_X509.3 d2i_PKCS12_bio.3 -MLINKS+= d2i_X509.3 d2i_PKCS12_fp.3 -MLINKS+= d2i_X509.3 d2i_PKCS7.3 -MLINKS+= d2i_X509.3 d2i_PKCS7_DIGEST.3 -MLINKS+= d2i_X509.3 d2i_PKCS7_ENCRYPT.3 -MLINKS+= d2i_X509.3 d2i_PKCS7_ENC_CONTENT.3 -MLINKS+= d2i_X509.3 d2i_PKCS7_ENVELOPE.3 -MLINKS+= d2i_X509.3 d2i_PKCS7_ISSUER_AND_SERIAL.3 -MLINKS+= d2i_X509.3 d2i_PKCS7_RECIP_INFO.3 -MLINKS+= d2i_X509.3 d2i_PKCS7_SIGNED.3 -MLINKS+= d2i_X509.3 d2i_PKCS7_SIGNER_INFO.3 -MLINKS+= d2i_X509.3 d2i_PKCS7_SIGN_ENVELOPE.3 -MLINKS+= d2i_X509.3 d2i_PKCS7_bio.3 -MLINKS+= d2i_X509.3 d2i_PKCS7_fp.3 -MLINKS+= d2i_X509.3 d2i_PKCS8_PRIV_KEY_INFO.3 -MLINKS+= d2i_X509.3 d2i_PKCS8_PRIV_KEY_INFO_bio.3 -MLINKS+= d2i_X509.3 d2i_PKCS8_PRIV_KEY_INFO_fp.3 -MLINKS+= d2i_X509.3 d2i_PKCS8_bio.3 -MLINKS+= d2i_X509.3 d2i_PKCS8_fp.3 -MLINKS+= d2i_X509.3 d2i_PKEY_USAGE_PERIOD.3 -MLINKS+= d2i_X509.3 d2i_POLICYINFO.3 -MLINKS+= d2i_X509.3 d2i_POLICYQUALINFO.3 -MLINKS+= d2i_X509.3 d2i_PROFESSION_INFO.3 -MLINKS+= d2i_X509.3 d2i_PROXY_CERT_INFO_EXTENSION.3 -MLINKS+= d2i_X509.3 d2i_PROXY_POLICY.3 -MLINKS+= d2i_X509.3 d2i_RSAPrivateKey.3 -MLINKS+= d2i_X509.3 d2i_RSAPrivateKey_bio.3 -MLINKS+= d2i_X509.3 d2i_RSAPrivateKey_fp.3 -MLINKS+= d2i_X509.3 d2i_RSAPublicKey.3 -MLINKS+= d2i_X509.3 d2i_RSAPublicKey_bio.3 -MLINKS+= d2i_X509.3 d2i_RSAPublicKey_fp.3 -MLINKS+= d2i_X509.3 d2i_RSA_OAEP_PARAMS.3 -MLINKS+= d2i_X509.3 d2i_RSA_PSS_PARAMS.3 -MLINKS+= d2i_X509.3 d2i_RSA_PUBKEY.3 -MLINKS+= d2i_X509.3 d2i_RSA_PUBKEY_bio.3 -MLINKS+= d2i_X509.3 d2i_RSA_PUBKEY_fp.3 -MLINKS+= d2i_X509.3 d2i_SCRYPT_PARAMS.3 -MLINKS+= d2i_X509.3 d2i_SCT_LIST.3 -MLINKS+= d2i_X509.3 d2i_SXNET.3 -MLINKS+= d2i_X509.3 d2i_SXNETID.3 -MLINKS+= d2i_X509.3 d2i_TS_ACCURACY.3 -MLINKS+= d2i_X509.3 d2i_TS_MSG_IMPRINT.3 -MLINKS+= d2i_X509.3 d2i_TS_MSG_IMPRINT_bio.3 -MLINKS+= d2i_X509.3 d2i_TS_MSG_IMPRINT_fp.3 -MLINKS+= d2i_X509.3 d2i_TS_REQ.3 -MLINKS+= d2i_X509.3 d2i_TS_REQ_bio.3 -MLINKS+= d2i_X509.3 d2i_TS_REQ_fp.3 -MLINKS+= d2i_X509.3 d2i_TS_RESP.3 -MLINKS+= d2i_X509.3 d2i_TS_RESP_bio.3 -MLINKS+= d2i_X509.3 d2i_TS_RESP_fp.3 -MLINKS+= d2i_X509.3 d2i_TS_STATUS_INFO.3 -MLINKS+= d2i_X509.3 d2i_TS_TST_INFO.3 -MLINKS+= d2i_X509.3 d2i_TS_TST_INFO_bio.3 -MLINKS+= d2i_X509.3 d2i_TS_TST_INFO_fp.3 -MLINKS+= d2i_X509.3 d2i_USERNOTICE.3 -MLINKS+= d2i_X509.3 d2i_X509_ALGOR.3 -MLINKS+= d2i_X509.3 d2i_X509_ALGORS.3 -MLINKS+= d2i_X509.3 d2i_X509_ATTRIBUTE.3 -MLINKS+= d2i_X509.3 d2i_X509_CERT_AUX.3 -MLINKS+= d2i_X509.3 d2i_X509_CINF.3 -MLINKS+= d2i_X509.3 d2i_X509_CRL.3 -MLINKS+= d2i_X509.3 d2i_X509_CRL_INFO.3 -MLINKS+= d2i_X509.3 d2i_X509_CRL_bio.3 -MLINKS+= d2i_X509.3 d2i_X509_CRL_fp.3 -MLINKS+= d2i_X509.3 d2i_X509_EXTENSION.3 -MLINKS+= d2i_X509.3 d2i_X509_EXTENSIONS.3 -MLINKS+= d2i_X509.3 d2i_X509_NAME.3 -MLINKS+= d2i_X509.3 d2i_X509_NAME_ENTRY.3 -MLINKS+= d2i_X509.3 d2i_X509_PUBKEY.3 -MLINKS+= d2i_X509.3 d2i_X509_REQ.3 -MLINKS+= d2i_X509.3 d2i_X509_REQ_INFO.3 -MLINKS+= d2i_X509.3 d2i_X509_REQ_bio.3 -MLINKS+= d2i_X509.3 d2i_X509_REQ_fp.3 -MLINKS+= d2i_X509.3 d2i_X509_REVOKED.3 -MLINKS+= d2i_X509.3 d2i_X509_SIG.3 -MLINKS+= d2i_X509.3 d2i_X509_VAL.3 -MLINKS+= d2i_X509.3 i2d_ACCESS_DESCRIPTION.3 -MLINKS+= d2i_X509.3 i2d_ADMISSIONS.3 -MLINKS+= d2i_X509.3 i2d_ADMISSION_SYNTAX.3 -MLINKS+= d2i_X509.3 i2d_ASIdOrRange.3 -MLINKS+= d2i_X509.3 i2d_ASIdentifierChoice.3 -MLINKS+= d2i_X509.3 i2d_ASIdentifiers.3 -MLINKS+= d2i_X509.3 i2d_ASN1_BIT_STRING.3 -MLINKS+= d2i_X509.3 i2d_ASN1_BMPSTRING.3 -MLINKS+= d2i_X509.3 i2d_ASN1_ENUMERATED.3 -MLINKS+= d2i_X509.3 i2d_ASN1_GENERALIZEDTIME.3 -MLINKS+= d2i_X509.3 i2d_ASN1_GENERALSTRING.3 -MLINKS+= d2i_X509.3 i2d_ASN1_IA5STRING.3 -MLINKS+= d2i_X509.3 i2d_ASN1_INTEGER.3 -MLINKS+= d2i_X509.3 i2d_ASN1_NULL.3 -MLINKS+= d2i_X509.3 i2d_ASN1_OBJECT.3 -MLINKS+= d2i_X509.3 i2d_ASN1_OCTET_STRING.3 -MLINKS+= d2i_X509.3 i2d_ASN1_PRINTABLE.3 -MLINKS+= d2i_X509.3 i2d_ASN1_PRINTABLESTRING.3 -MLINKS+= d2i_X509.3 i2d_ASN1_SEQUENCE_ANY.3 -MLINKS+= d2i_X509.3 i2d_ASN1_SET_ANY.3 -MLINKS+= d2i_X509.3 i2d_ASN1_T61STRING.3 -MLINKS+= d2i_X509.3 i2d_ASN1_TIME.3 -MLINKS+= d2i_X509.3 i2d_ASN1_TYPE.3 -MLINKS+= d2i_X509.3 i2d_ASN1_UNIVERSALSTRING.3 -MLINKS+= d2i_X509.3 i2d_ASN1_UTCTIME.3 -MLINKS+= d2i_X509.3 i2d_ASN1_UTF8STRING.3 -MLINKS+= d2i_X509.3 i2d_ASN1_VISIBLESTRING.3 -MLINKS+= d2i_X509.3 i2d_ASN1_bio_stream.3 -MLINKS+= d2i_X509.3 i2d_ASRange.3 -MLINKS+= d2i_X509.3 i2d_AUTHORITY_INFO_ACCESS.3 -MLINKS+= d2i_X509.3 i2d_AUTHORITY_KEYID.3 -MLINKS+= d2i_X509.3 i2d_BASIC_CONSTRAINTS.3 -MLINKS+= d2i_X509.3 i2d_CERTIFICATEPOLICIES.3 -MLINKS+= d2i_X509.3 i2d_CMS_ContentInfo.3 -MLINKS+= d2i_X509.3 i2d_CMS_ReceiptRequest.3 -MLINKS+= d2i_X509.3 i2d_CMS_bio.3 -MLINKS+= d2i_X509.3 i2d_CRL_DIST_POINTS.3 -MLINKS+= d2i_X509.3 i2d_DHxparams.3 -MLINKS+= d2i_X509.3 i2d_DIRECTORYSTRING.3 -MLINKS+= d2i_X509.3 i2d_DISPLAYTEXT.3 -MLINKS+= d2i_X509.3 i2d_DIST_POINT.3 -MLINKS+= d2i_X509.3 i2d_DIST_POINT_NAME.3 -MLINKS+= d2i_X509.3 i2d_DSAPrivateKey.3 -MLINKS+= d2i_X509.3 i2d_DSAPrivateKey_bio.3 -MLINKS+= d2i_X509.3 i2d_DSAPrivateKey_fp.3 -MLINKS+= d2i_X509.3 i2d_DSAPublicKey.3 -MLINKS+= d2i_X509.3 i2d_DSA_PUBKEY.3 -MLINKS+= d2i_X509.3 i2d_DSA_PUBKEY_bio.3 -MLINKS+= d2i_X509.3 i2d_DSA_PUBKEY_fp.3 -MLINKS+= d2i_X509.3 i2d_DSA_SIG.3 -MLINKS+= d2i_X509.3 i2d_DSAparams.3 -MLINKS+= d2i_X509.3 i2d_ECDSA_SIG.3 -MLINKS+= d2i_X509.3 i2d_ECPKParameters.3 -MLINKS+= d2i_X509.3 i2d_ECParameters.3 -MLINKS+= d2i_X509.3 i2d_ECPrivateKey.3 -MLINKS+= d2i_X509.3 i2d_ECPrivateKey_bio.3 -MLINKS+= d2i_X509.3 i2d_ECPrivateKey_fp.3 -MLINKS+= d2i_X509.3 i2d_EC_PUBKEY.3 -MLINKS+= d2i_X509.3 i2d_EC_PUBKEY_bio.3 -MLINKS+= d2i_X509.3 i2d_EC_PUBKEY_fp.3 -MLINKS+= d2i_X509.3 i2d_EDIPARTYNAME.3 -MLINKS+= d2i_X509.3 i2d_ESS_CERT_ID.3 -MLINKS+= d2i_X509.3 i2d_ESS_ISSUER_SERIAL.3 -MLINKS+= d2i_X509.3 i2d_ESS_SIGNING_CERT.3 -MLINKS+= d2i_X509.3 i2d_EXTENDED_KEY_USAGE.3 -MLINKS+= d2i_X509.3 i2d_GENERAL_NAME.3 -MLINKS+= d2i_X509.3 i2d_GENERAL_NAMES.3 -MLINKS+= d2i_X509.3 i2d_IPAddressChoice.3 -MLINKS+= d2i_X509.3 i2d_IPAddressFamily.3 -MLINKS+= d2i_X509.3 i2d_IPAddressOrRange.3 -MLINKS+= d2i_X509.3 i2d_IPAddressRange.3 -MLINKS+= d2i_X509.3 i2d_ISSUING_DIST_POINT.3 -MLINKS+= d2i_X509.3 i2d_NAMING_AUTHORITY.3 -MLINKS+= d2i_X509.3 i2d_NETSCAPE_CERT_SEQUENCE.3 -MLINKS+= d2i_X509.3 i2d_NETSCAPE_SPKAC.3 -MLINKS+= d2i_X509.3 i2d_NETSCAPE_SPKI.3 -MLINKS+= d2i_X509.3 i2d_NOTICEREF.3 -MLINKS+= d2i_X509.3 i2d_OCSP_BASICRESP.3 -MLINKS+= d2i_X509.3 i2d_OCSP_CERTID.3 -MLINKS+= d2i_X509.3 i2d_OCSP_CERTSTATUS.3 -MLINKS+= d2i_X509.3 i2d_OCSP_CRLID.3 -MLINKS+= d2i_X509.3 i2d_OCSP_ONEREQ.3 -MLINKS+= d2i_X509.3 i2d_OCSP_REQINFO.3 -MLINKS+= d2i_X509.3 i2d_OCSP_REQUEST.3 -MLINKS+= d2i_X509.3 i2d_OCSP_RESPBYTES.3 -MLINKS+= d2i_X509.3 i2d_OCSP_RESPDATA.3 -MLINKS+= d2i_X509.3 i2d_OCSP_RESPID.3 -MLINKS+= d2i_X509.3 i2d_OCSP_RESPONSE.3 -MLINKS+= d2i_X509.3 i2d_OCSP_REVOKEDINFO.3 -MLINKS+= d2i_X509.3 i2d_OCSP_SERVICELOC.3 -MLINKS+= d2i_X509.3 i2d_OCSP_SIGNATURE.3 -MLINKS+= d2i_X509.3 i2d_OCSP_SINGLERESP.3 -MLINKS+= d2i_X509.3 i2d_OTHERNAME.3 -MLINKS+= d2i_X509.3 i2d_PBE2PARAM.3 -MLINKS+= d2i_X509.3 i2d_PBEPARAM.3 -MLINKS+= d2i_X509.3 i2d_PBKDF2PARAM.3 -MLINKS+= d2i_X509.3 i2d_PKCS12.3 -MLINKS+= d2i_X509.3 i2d_PKCS12_BAGS.3 -MLINKS+= d2i_X509.3 i2d_PKCS12_MAC_DATA.3 -MLINKS+= d2i_X509.3 i2d_PKCS12_SAFEBAG.3 -MLINKS+= d2i_X509.3 i2d_PKCS12_bio.3 -MLINKS+= d2i_X509.3 i2d_PKCS12_fp.3 -MLINKS+= d2i_X509.3 i2d_PKCS7.3 -MLINKS+= d2i_X509.3 i2d_PKCS7_DIGEST.3 -MLINKS+= d2i_X509.3 i2d_PKCS7_ENCRYPT.3 -MLINKS+= d2i_X509.3 i2d_PKCS7_ENC_CONTENT.3 -MLINKS+= d2i_X509.3 i2d_PKCS7_ENVELOPE.3 -MLINKS+= d2i_X509.3 i2d_PKCS7_ISSUER_AND_SERIAL.3 -MLINKS+= d2i_X509.3 i2d_PKCS7_NDEF.3 -MLINKS+= d2i_X509.3 i2d_PKCS7_RECIP_INFO.3 -MLINKS+= d2i_X509.3 i2d_PKCS7_SIGNED.3 -MLINKS+= d2i_X509.3 i2d_PKCS7_SIGNER_INFO.3 -MLINKS+= d2i_X509.3 i2d_PKCS7_SIGN_ENVELOPE.3 -MLINKS+= d2i_X509.3 i2d_PKCS7_bio.3 -MLINKS+= d2i_X509.3 i2d_PKCS7_fp.3 -MLINKS+= d2i_X509.3 i2d_PKCS8PrivateKeyInfo_bio.3 -MLINKS+= d2i_X509.3 i2d_PKCS8PrivateKeyInfo_fp.3 -MLINKS+= d2i_X509.3 i2d_PKCS8_PRIV_KEY_INFO.3 -MLINKS+= d2i_X509.3 i2d_PKCS8_PRIV_KEY_INFO_bio.3 -MLINKS+= d2i_X509.3 i2d_PKCS8_PRIV_KEY_INFO_fp.3 -MLINKS+= d2i_X509.3 i2d_PKCS8_bio.3 -MLINKS+= d2i_X509.3 i2d_PKCS8_fp.3 -MLINKS+= d2i_X509.3 i2d_PKEY_USAGE_PERIOD.3 -MLINKS+= d2i_X509.3 i2d_POLICYINFO.3 -MLINKS+= d2i_X509.3 i2d_POLICYQUALINFO.3 -MLINKS+= d2i_X509.3 i2d_PROFESSION_INFO.3 -MLINKS+= d2i_X509.3 i2d_PROXY_CERT_INFO_EXTENSION.3 -MLINKS+= d2i_X509.3 i2d_PROXY_POLICY.3 -MLINKS+= d2i_X509.3 i2d_RSAPrivateKey.3 -MLINKS+= d2i_X509.3 i2d_RSAPrivateKey_bio.3 -MLINKS+= d2i_X509.3 i2d_RSAPrivateKey_fp.3 -MLINKS+= d2i_X509.3 i2d_RSAPublicKey.3 -MLINKS+= d2i_X509.3 i2d_RSAPublicKey_bio.3 -MLINKS+= d2i_X509.3 i2d_RSAPublicKey_fp.3 -MLINKS+= d2i_X509.3 i2d_RSA_OAEP_PARAMS.3 -MLINKS+= d2i_X509.3 i2d_RSA_PSS_PARAMS.3 -MLINKS+= d2i_X509.3 i2d_RSA_PUBKEY.3 -MLINKS+= d2i_X509.3 i2d_RSA_PUBKEY_bio.3 -MLINKS+= d2i_X509.3 i2d_RSA_PUBKEY_fp.3 -MLINKS+= d2i_X509.3 i2d_SCRYPT_PARAMS.3 -MLINKS+= d2i_X509.3 i2d_SCT_LIST.3 -MLINKS+= d2i_X509.3 i2d_SXNET.3 -MLINKS+= d2i_X509.3 i2d_SXNETID.3 -MLINKS+= d2i_X509.3 i2d_TS_ACCURACY.3 -MLINKS+= d2i_X509.3 i2d_TS_MSG_IMPRINT.3 -MLINKS+= d2i_X509.3 i2d_TS_MSG_IMPRINT_bio.3 -MLINKS+= d2i_X509.3 i2d_TS_MSG_IMPRINT_fp.3 -MLINKS+= d2i_X509.3 i2d_TS_REQ.3 -MLINKS+= d2i_X509.3 i2d_TS_REQ_bio.3 -MLINKS+= d2i_X509.3 i2d_TS_REQ_fp.3 -MLINKS+= d2i_X509.3 i2d_TS_RESP.3 -MLINKS+= d2i_X509.3 i2d_TS_RESP_bio.3 -MLINKS+= d2i_X509.3 i2d_TS_RESP_fp.3 -MLINKS+= d2i_X509.3 i2d_TS_STATUS_INFO.3 -MLINKS+= d2i_X509.3 i2d_TS_TST_INFO.3 -MLINKS+= d2i_X509.3 i2d_TS_TST_INFO_bio.3 -MLINKS+= d2i_X509.3 i2d_TS_TST_INFO_fp.3 -MLINKS+= d2i_X509.3 i2d_USERNOTICE.3 -MLINKS+= d2i_X509.3 i2d_X509.3 -MLINKS+= d2i_X509.3 i2d_X509_ALGOR.3 -MLINKS+= d2i_X509.3 i2d_X509_ALGORS.3 -MLINKS+= d2i_X509.3 i2d_X509_ATTRIBUTE.3 -MLINKS+= d2i_X509.3 i2d_X509_CERT_AUX.3 -MLINKS+= d2i_X509.3 i2d_X509_CINF.3 -MLINKS+= d2i_X509.3 i2d_X509_CRL.3 -MLINKS+= d2i_X509.3 i2d_X509_CRL_INFO.3 -MLINKS+= d2i_X509.3 i2d_X509_CRL_bio.3 -MLINKS+= d2i_X509.3 i2d_X509_CRL_fp.3 -MLINKS+= d2i_X509.3 i2d_X509_EXTENSION.3 -MLINKS+= d2i_X509.3 i2d_X509_EXTENSIONS.3 -MLINKS+= d2i_X509.3 i2d_X509_NAME.3 -MLINKS+= d2i_X509.3 i2d_X509_NAME_ENTRY.3 -MLINKS+= d2i_X509.3 i2d_X509_PUBKEY.3 -MLINKS+= d2i_X509.3 i2d_X509_REQ.3 -MLINKS+= d2i_X509.3 i2d_X509_REQ_INFO.3 -MLINKS+= d2i_X509.3 i2d_X509_REQ_bio.3 -MLINKS+= d2i_X509.3 i2d_X509_REQ_fp.3 -MLINKS+= d2i_X509.3 i2d_X509_REVOKED.3 -MLINKS+= d2i_X509.3 i2d_X509_SIG.3 -MLINKS+= d2i_X509.3 i2d_X509_VAL.3 -MLINKS+= i2d_re_X509_tbs.3 d2i_X509_AUX.3 -MLINKS+= i2d_re_X509_tbs.3 i2d_X509_AUX.3 -MLINKS+= i2d_re_X509_tbs.3 i2d_re_X509_CRL_tbs.3 -MLINKS+= i2d_re_X509_tbs.3 i2d_re_X509_REQ_tbs.3 -MLINKS+= o2i_SCT_LIST.3 i2o_SCT.3 -MLINKS+= o2i_SCT_LIST.3 i2o_SCT_LIST.3 -MLINKS+= o2i_SCT_LIST.3 o2i_SCT.3 +.for m in 3 5 7 +.include "man/man${m}/Makefile" +.PATH: ${.CURDIR}/man/man${m} +.endfor diff --git a/secure/lib/libcrypto/man/ADMISSIONS.3 b/secure/lib/libcrypto/man/man3/ADMISSIONS.3 index 9bee22d7dbae1..9bee22d7dbae1 100644 --- a/secure/lib/libcrypto/man/ADMISSIONS.3 +++ b/secure/lib/libcrypto/man/man3/ADMISSIONS.3 diff --git a/secure/lib/libcrypto/man/ASN1_INTEGER_get_int64.3 b/secure/lib/libcrypto/man/man3/ASN1_INTEGER_get_int64.3 index e500432411501..e500432411501 100644 --- a/secure/lib/libcrypto/man/ASN1_INTEGER_get_int64.3 +++ b/secure/lib/libcrypto/man/man3/ASN1_INTEGER_get_int64.3 diff --git a/secure/lib/libcrypto/man/ASN1_ITEM_lookup.3 b/secure/lib/libcrypto/man/man3/ASN1_ITEM_lookup.3 index 6032080cc5e60..6032080cc5e60 100644 --- a/secure/lib/libcrypto/man/ASN1_ITEM_lookup.3 +++ b/secure/lib/libcrypto/man/man3/ASN1_ITEM_lookup.3 diff --git a/secure/lib/libcrypto/man/ASN1_OBJECT_new.3 b/secure/lib/libcrypto/man/man3/ASN1_OBJECT_new.3 index ee517b0ace522..ee517b0ace522 100644 --- a/secure/lib/libcrypto/man/ASN1_OBJECT_new.3 +++ b/secure/lib/libcrypto/man/man3/ASN1_OBJECT_new.3 diff --git a/secure/lib/libcrypto/man/ASN1_STRING_TABLE_add.3 b/secure/lib/libcrypto/man/man3/ASN1_STRING_TABLE_add.3 index fa1a7bc2a4b24..fa1a7bc2a4b24 100644 --- a/secure/lib/libcrypto/man/ASN1_STRING_TABLE_add.3 +++ b/secure/lib/libcrypto/man/man3/ASN1_STRING_TABLE_add.3 diff --git a/secure/lib/libcrypto/man/ASN1_STRING_length.3 b/secure/lib/libcrypto/man/man3/ASN1_STRING_length.3 index 84f0edf194f4f..84f0edf194f4f 100644 --- a/secure/lib/libcrypto/man/ASN1_STRING_length.3 +++ b/secure/lib/libcrypto/man/man3/ASN1_STRING_length.3 diff --git a/secure/lib/libcrypto/man/ASN1_STRING_new.3 b/secure/lib/libcrypto/man/man3/ASN1_STRING_new.3 index ce20d45b163c8..ce20d45b163c8 100644 --- a/secure/lib/libcrypto/man/ASN1_STRING_new.3 +++ b/secure/lib/libcrypto/man/man3/ASN1_STRING_new.3 diff --git a/secure/lib/libcrypto/man/ASN1_STRING_print_ex.3 b/secure/lib/libcrypto/man/man3/ASN1_STRING_print_ex.3 index 96d4ab74a23bd..96d4ab74a23bd 100644 --- a/secure/lib/libcrypto/man/ASN1_STRING_print_ex.3 +++ b/secure/lib/libcrypto/man/man3/ASN1_STRING_print_ex.3 diff --git a/secure/lib/libcrypto/man/ASN1_TIME_set.3 b/secure/lib/libcrypto/man/man3/ASN1_TIME_set.3 index c4089fa027ae7..c4089fa027ae7 100644 --- a/secure/lib/libcrypto/man/ASN1_TIME_set.3 +++ b/secure/lib/libcrypto/man/man3/ASN1_TIME_set.3 diff --git a/secure/lib/libcrypto/man/ASN1_TYPE_get.3 b/secure/lib/libcrypto/man/man3/ASN1_TYPE_get.3 index bdaa21551c1ca..bdaa21551c1ca 100644 --- a/secure/lib/libcrypto/man/ASN1_TYPE_get.3 +++ b/secure/lib/libcrypto/man/man3/ASN1_TYPE_get.3 diff --git a/secure/lib/libcrypto/man/ASN1_generate_nconf.3 b/secure/lib/libcrypto/man/man3/ASN1_generate_nconf.3 index 835adc7b3be11..835adc7b3be11 100644 --- a/secure/lib/libcrypto/man/ASN1_generate_nconf.3 +++ b/secure/lib/libcrypto/man/man3/ASN1_generate_nconf.3 diff --git a/secure/lib/libcrypto/man/ASYNC_WAIT_CTX_new.3 b/secure/lib/libcrypto/man/man3/ASYNC_WAIT_CTX_new.3 index 3e45ef782019d..3e45ef782019d 100644 --- a/secure/lib/libcrypto/man/ASYNC_WAIT_CTX_new.3 +++ b/secure/lib/libcrypto/man/man3/ASYNC_WAIT_CTX_new.3 diff --git a/secure/lib/libcrypto/man/ASYNC_start_job.3 b/secure/lib/libcrypto/man/man3/ASYNC_start_job.3 index c55195c6ea005..c55195c6ea005 100644 --- a/secure/lib/libcrypto/man/ASYNC_start_job.3 +++ b/secure/lib/libcrypto/man/man3/ASYNC_start_job.3 diff --git a/secure/lib/libcrypto/man/BF_encrypt.3 b/secure/lib/libcrypto/man/man3/BF_encrypt.3 index 6b3e3291d2f33..6b3e3291d2f33 100644 --- a/secure/lib/libcrypto/man/BF_encrypt.3 +++ b/secure/lib/libcrypto/man/man3/BF_encrypt.3 diff --git a/secure/lib/libcrypto/man/BIO_ADDR.3 b/secure/lib/libcrypto/man/man3/BIO_ADDR.3 index 3cbe4dd42cd9b..3cbe4dd42cd9b 100644 --- a/secure/lib/libcrypto/man/BIO_ADDR.3 +++ b/secure/lib/libcrypto/man/man3/BIO_ADDR.3 diff --git a/secure/lib/libcrypto/man/BIO_ADDRINFO.3 b/secure/lib/libcrypto/man/man3/BIO_ADDRINFO.3 index c514538980712..c514538980712 100644 --- a/secure/lib/libcrypto/man/BIO_ADDRINFO.3 +++ b/secure/lib/libcrypto/man/man3/BIO_ADDRINFO.3 diff --git a/secure/lib/libcrypto/man/BIO_connect.3 b/secure/lib/libcrypto/man/man3/BIO_connect.3 index b1664b43884d5..b1664b43884d5 100644 --- a/secure/lib/libcrypto/man/BIO_connect.3 +++ b/secure/lib/libcrypto/man/man3/BIO_connect.3 diff --git a/secure/lib/libcrypto/man/BIO_ctrl.3 b/secure/lib/libcrypto/man/man3/BIO_ctrl.3 index 287f73cefc4db..287f73cefc4db 100644 --- a/secure/lib/libcrypto/man/BIO_ctrl.3 +++ b/secure/lib/libcrypto/man/man3/BIO_ctrl.3 diff --git a/secure/lib/libcrypto/man/BIO_f_base64.3 b/secure/lib/libcrypto/man/man3/BIO_f_base64.3 index bed5432e7681a..bed5432e7681a 100644 --- a/secure/lib/libcrypto/man/BIO_f_base64.3 +++ b/secure/lib/libcrypto/man/man3/BIO_f_base64.3 diff --git a/secure/lib/libcrypto/man/BIO_f_buffer.3 b/secure/lib/libcrypto/man/man3/BIO_f_buffer.3 index cc79eb36244fd..cc79eb36244fd 100644 --- a/secure/lib/libcrypto/man/BIO_f_buffer.3 +++ b/secure/lib/libcrypto/man/man3/BIO_f_buffer.3 diff --git a/secure/lib/libcrypto/man/BIO_f_cipher.3 b/secure/lib/libcrypto/man/man3/BIO_f_cipher.3 index f7831722b60e1..f7831722b60e1 100644 --- a/secure/lib/libcrypto/man/BIO_f_cipher.3 +++ b/secure/lib/libcrypto/man/man3/BIO_f_cipher.3 diff --git a/secure/lib/libcrypto/man/BIO_f_md.3 b/secure/lib/libcrypto/man/man3/BIO_f_md.3 index 0a8eeed7a5d3c..0a8eeed7a5d3c 100644 --- a/secure/lib/libcrypto/man/BIO_f_md.3 +++ b/secure/lib/libcrypto/man/man3/BIO_f_md.3 diff --git a/secure/lib/libcrypto/man/BIO_f_null.3 b/secure/lib/libcrypto/man/man3/BIO_f_null.3 index d6d168dad2040..d6d168dad2040 100644 --- a/secure/lib/libcrypto/man/BIO_f_null.3 +++ b/secure/lib/libcrypto/man/man3/BIO_f_null.3 diff --git a/secure/lib/libcrypto/man/BIO_f_ssl.3 b/secure/lib/libcrypto/man/man3/BIO_f_ssl.3 index e131f3a1dd1f8..e131f3a1dd1f8 100644 --- a/secure/lib/libcrypto/man/BIO_f_ssl.3 +++ b/secure/lib/libcrypto/man/man3/BIO_f_ssl.3 diff --git a/secure/lib/libcrypto/man/BIO_find_type.3 b/secure/lib/libcrypto/man/man3/BIO_find_type.3 index 534534d17c2ec..534534d17c2ec 100644 --- a/secure/lib/libcrypto/man/BIO_find_type.3 +++ b/secure/lib/libcrypto/man/man3/BIO_find_type.3 diff --git a/secure/lib/libcrypto/man/BIO_get_data.3 b/secure/lib/libcrypto/man/man3/BIO_get_data.3 index bc46e7b221552..bc46e7b221552 100644 --- a/secure/lib/libcrypto/man/BIO_get_data.3 +++ b/secure/lib/libcrypto/man/man3/BIO_get_data.3 diff --git a/secure/lib/libcrypto/man/BIO_get_ex_new_index.3 b/secure/lib/libcrypto/man/man3/BIO_get_ex_new_index.3 index 2b0092d60bfd6..2b0092d60bfd6 100644 --- a/secure/lib/libcrypto/man/BIO_get_ex_new_index.3 +++ b/secure/lib/libcrypto/man/man3/BIO_get_ex_new_index.3 diff --git a/secure/lib/libcrypto/man/BIO_meth_new.3 b/secure/lib/libcrypto/man/man3/BIO_meth_new.3 index 306a62eb8eb09..306a62eb8eb09 100644 --- a/secure/lib/libcrypto/man/BIO_meth_new.3 +++ b/secure/lib/libcrypto/man/man3/BIO_meth_new.3 diff --git a/secure/lib/libcrypto/man/BIO_new.3 b/secure/lib/libcrypto/man/man3/BIO_new.3 index 6cb997f31e102..6cb997f31e102 100644 --- a/secure/lib/libcrypto/man/BIO_new.3 +++ b/secure/lib/libcrypto/man/man3/BIO_new.3 diff --git a/secure/lib/libcrypto/man/BIO_new_CMS.3 b/secure/lib/libcrypto/man/man3/BIO_new_CMS.3 index e59a0a3b75810..e59a0a3b75810 100644 --- a/secure/lib/libcrypto/man/BIO_new_CMS.3 +++ b/secure/lib/libcrypto/man/man3/BIO_new_CMS.3 diff --git a/secure/lib/libcrypto/man/BIO_parse_hostserv.3 b/secure/lib/libcrypto/man/man3/BIO_parse_hostserv.3 index 747fbc19cc6c1..747fbc19cc6c1 100644 --- a/secure/lib/libcrypto/man/BIO_parse_hostserv.3 +++ b/secure/lib/libcrypto/man/man3/BIO_parse_hostserv.3 diff --git a/secure/lib/libcrypto/man/BIO_printf.3 b/secure/lib/libcrypto/man/man3/BIO_printf.3 index d68262148fff9..d68262148fff9 100644 --- a/secure/lib/libcrypto/man/BIO_printf.3 +++ b/secure/lib/libcrypto/man/man3/BIO_printf.3 diff --git a/secure/lib/libcrypto/man/BIO_push.3 b/secure/lib/libcrypto/man/man3/BIO_push.3 index 56cf8c42036b1..56cf8c42036b1 100644 --- a/secure/lib/libcrypto/man/BIO_push.3 +++ b/secure/lib/libcrypto/man/man3/BIO_push.3 diff --git a/secure/lib/libcrypto/man/BIO_read.3 b/secure/lib/libcrypto/man/man3/BIO_read.3 index e138ff703a2c1..e138ff703a2c1 100644 --- a/secure/lib/libcrypto/man/BIO_read.3 +++ b/secure/lib/libcrypto/man/man3/BIO_read.3 diff --git a/secure/lib/libcrypto/man/BIO_s_accept.3 b/secure/lib/libcrypto/man/man3/BIO_s_accept.3 index 8f4e156d897e9..8f4e156d897e9 100644 --- a/secure/lib/libcrypto/man/BIO_s_accept.3 +++ b/secure/lib/libcrypto/man/man3/BIO_s_accept.3 diff --git a/secure/lib/libcrypto/man/BIO_s_bio.3 b/secure/lib/libcrypto/man/man3/BIO_s_bio.3 index 43f2206bfce23..43f2206bfce23 100644 --- a/secure/lib/libcrypto/man/BIO_s_bio.3 +++ b/secure/lib/libcrypto/man/man3/BIO_s_bio.3 diff --git a/secure/lib/libcrypto/man/BIO_s_connect.3 b/secure/lib/libcrypto/man/man3/BIO_s_connect.3 index c74545f610b0c..c74545f610b0c 100644 --- a/secure/lib/libcrypto/man/BIO_s_connect.3 +++ b/secure/lib/libcrypto/man/man3/BIO_s_connect.3 diff --git a/secure/lib/libcrypto/man/BIO_s_fd.3 b/secure/lib/libcrypto/man/man3/BIO_s_fd.3 index 924f962a5a2b5..924f962a5a2b5 100644 --- a/secure/lib/libcrypto/man/BIO_s_fd.3 +++ b/secure/lib/libcrypto/man/man3/BIO_s_fd.3 diff --git a/secure/lib/libcrypto/man/BIO_s_file.3 b/secure/lib/libcrypto/man/man3/BIO_s_file.3 index 1f301d5c61388..1f301d5c61388 100644 --- a/secure/lib/libcrypto/man/BIO_s_file.3 +++ b/secure/lib/libcrypto/man/man3/BIO_s_file.3 diff --git a/secure/lib/libcrypto/man/BIO_s_mem.3 b/secure/lib/libcrypto/man/man3/BIO_s_mem.3 index 5e80706205506..5e80706205506 100644 --- a/secure/lib/libcrypto/man/BIO_s_mem.3 +++ b/secure/lib/libcrypto/man/man3/BIO_s_mem.3 diff --git a/secure/lib/libcrypto/man/BIO_s_null.3 b/secure/lib/libcrypto/man/man3/BIO_s_null.3 index d122e432ff84c..d122e432ff84c 100644 --- a/secure/lib/libcrypto/man/BIO_s_null.3 +++ b/secure/lib/libcrypto/man/man3/BIO_s_null.3 diff --git a/secure/lib/libcrypto/man/BIO_s_socket.3 b/secure/lib/libcrypto/man/man3/BIO_s_socket.3 index 8e66ed7944042..8e66ed7944042 100644 --- a/secure/lib/libcrypto/man/BIO_s_socket.3 +++ b/secure/lib/libcrypto/man/man3/BIO_s_socket.3 diff --git a/secure/lib/libcrypto/man/BIO_set_callback.3 b/secure/lib/libcrypto/man/man3/BIO_set_callback.3 index 844e35ac49308..844e35ac49308 100644 --- a/secure/lib/libcrypto/man/BIO_set_callback.3 +++ b/secure/lib/libcrypto/man/man3/BIO_set_callback.3 diff --git a/secure/lib/libcrypto/man/BIO_should_retry.3 b/secure/lib/libcrypto/man/man3/BIO_should_retry.3 index c2e0991d6d874..c2e0991d6d874 100644 --- a/secure/lib/libcrypto/man/BIO_should_retry.3 +++ b/secure/lib/libcrypto/man/man3/BIO_should_retry.3 diff --git a/secure/lib/libcrypto/man/BN_BLINDING_new.3 b/secure/lib/libcrypto/man/man3/BN_BLINDING_new.3 index 958fa5df3da42..958fa5df3da42 100644 --- a/secure/lib/libcrypto/man/BN_BLINDING_new.3 +++ b/secure/lib/libcrypto/man/man3/BN_BLINDING_new.3 diff --git a/secure/lib/libcrypto/man/BN_CTX_new.3 b/secure/lib/libcrypto/man/man3/BN_CTX_new.3 index 374136f5f513a..374136f5f513a 100644 --- a/secure/lib/libcrypto/man/BN_CTX_new.3 +++ b/secure/lib/libcrypto/man/man3/BN_CTX_new.3 diff --git a/secure/lib/libcrypto/man/BN_CTX_start.3 b/secure/lib/libcrypto/man/man3/BN_CTX_start.3 index e4fb021d3e241..e4fb021d3e241 100644 --- a/secure/lib/libcrypto/man/BN_CTX_start.3 +++ b/secure/lib/libcrypto/man/man3/BN_CTX_start.3 diff --git a/secure/lib/libcrypto/man/BN_add.3 b/secure/lib/libcrypto/man/man3/BN_add.3 index 9683f020b1b15..9683f020b1b15 100644 --- a/secure/lib/libcrypto/man/BN_add.3 +++ b/secure/lib/libcrypto/man/man3/BN_add.3 diff --git a/secure/lib/libcrypto/man/BN_add_word.3 b/secure/lib/libcrypto/man/man3/BN_add_word.3 index e55cafb88322f..e55cafb88322f 100644 --- a/secure/lib/libcrypto/man/BN_add_word.3 +++ b/secure/lib/libcrypto/man/man3/BN_add_word.3 diff --git a/secure/lib/libcrypto/man/BN_bn2bin.3 b/secure/lib/libcrypto/man/man3/BN_bn2bin.3 index d7d6f6b0502ee..d7d6f6b0502ee 100644 --- a/secure/lib/libcrypto/man/BN_bn2bin.3 +++ b/secure/lib/libcrypto/man/man3/BN_bn2bin.3 diff --git a/secure/lib/libcrypto/man/BN_cmp.3 b/secure/lib/libcrypto/man/man3/BN_cmp.3 index ee74b8a15d7c7..ee74b8a15d7c7 100644 --- a/secure/lib/libcrypto/man/BN_cmp.3 +++ b/secure/lib/libcrypto/man/man3/BN_cmp.3 diff --git a/secure/lib/libcrypto/man/BN_copy.3 b/secure/lib/libcrypto/man/man3/BN_copy.3 index ec49b42ff7714..ec49b42ff7714 100644 --- a/secure/lib/libcrypto/man/BN_copy.3 +++ b/secure/lib/libcrypto/man/man3/BN_copy.3 diff --git a/secure/lib/libcrypto/man/BN_generate_prime.3 b/secure/lib/libcrypto/man/man3/BN_generate_prime.3 index 8ac4b3f5d0b39..8ac4b3f5d0b39 100644 --- a/secure/lib/libcrypto/man/BN_generate_prime.3 +++ b/secure/lib/libcrypto/man/man3/BN_generate_prime.3 diff --git a/secure/lib/libcrypto/man/BN_mod_inverse.3 b/secure/lib/libcrypto/man/man3/BN_mod_inverse.3 index 13e5b9628ca46..13e5b9628ca46 100644 --- a/secure/lib/libcrypto/man/BN_mod_inverse.3 +++ b/secure/lib/libcrypto/man/man3/BN_mod_inverse.3 diff --git a/secure/lib/libcrypto/man/BN_mod_mul_montgomery.3 b/secure/lib/libcrypto/man/man3/BN_mod_mul_montgomery.3 index c6047fb4bb221..c6047fb4bb221 100644 --- a/secure/lib/libcrypto/man/BN_mod_mul_montgomery.3 +++ b/secure/lib/libcrypto/man/man3/BN_mod_mul_montgomery.3 diff --git a/secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3 b/secure/lib/libcrypto/man/man3/BN_mod_mul_reciprocal.3 index 5356ad44fb218..5356ad44fb218 100644 --- a/secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3 +++ b/secure/lib/libcrypto/man/man3/BN_mod_mul_reciprocal.3 diff --git a/secure/lib/libcrypto/man/BN_new.3 b/secure/lib/libcrypto/man/man3/BN_new.3 index 73f6401160062..73f6401160062 100644 --- a/secure/lib/libcrypto/man/BN_new.3 +++ b/secure/lib/libcrypto/man/man3/BN_new.3 diff --git a/secure/lib/libcrypto/man/BN_num_bytes.3 b/secure/lib/libcrypto/man/man3/BN_num_bytes.3 index 9973d0e9d129c..9973d0e9d129c 100644 --- a/secure/lib/libcrypto/man/BN_num_bytes.3 +++ b/secure/lib/libcrypto/man/man3/BN_num_bytes.3 diff --git a/secure/lib/libcrypto/man/BN_rand.3 b/secure/lib/libcrypto/man/man3/BN_rand.3 index 1574ada4fd00a..1574ada4fd00a 100644 --- a/secure/lib/libcrypto/man/BN_rand.3 +++ b/secure/lib/libcrypto/man/man3/BN_rand.3 diff --git a/secure/lib/libcrypto/man/BN_security_bits.3 b/secure/lib/libcrypto/man/man3/BN_security_bits.3 index dbf4672d92f32..dbf4672d92f32 100644 --- a/secure/lib/libcrypto/man/BN_security_bits.3 +++ b/secure/lib/libcrypto/man/man3/BN_security_bits.3 diff --git a/secure/lib/libcrypto/man/BN_set_bit.3 b/secure/lib/libcrypto/man/man3/BN_set_bit.3 index af8baa21ad98d..af8baa21ad98d 100644 --- a/secure/lib/libcrypto/man/BN_set_bit.3 +++ b/secure/lib/libcrypto/man/man3/BN_set_bit.3 diff --git a/secure/lib/libcrypto/man/BN_swap.3 b/secure/lib/libcrypto/man/man3/BN_swap.3 index f3021437d408a..f3021437d408a 100644 --- a/secure/lib/libcrypto/man/BN_swap.3 +++ b/secure/lib/libcrypto/man/man3/BN_swap.3 diff --git a/secure/lib/libcrypto/man/BN_zero.3 b/secure/lib/libcrypto/man/man3/BN_zero.3 index 12e39b7dae57c..12e39b7dae57c 100644 --- a/secure/lib/libcrypto/man/BN_zero.3 +++ b/secure/lib/libcrypto/man/man3/BN_zero.3 diff --git a/secure/lib/libcrypto/man/BUF_MEM_new.3 b/secure/lib/libcrypto/man/man3/BUF_MEM_new.3 index 0c28684ed9330..0c28684ed9330 100644 --- a/secure/lib/libcrypto/man/BUF_MEM_new.3 +++ b/secure/lib/libcrypto/man/man3/BUF_MEM_new.3 diff --git a/secure/lib/libcrypto/man/CMS_add0_cert.3 b/secure/lib/libcrypto/man/man3/CMS_add0_cert.3 index 26194ada00bce..26194ada00bce 100644 --- a/secure/lib/libcrypto/man/CMS_add0_cert.3 +++ b/secure/lib/libcrypto/man/man3/CMS_add0_cert.3 diff --git a/secure/lib/libcrypto/man/CMS_add1_recipient_cert.3 b/secure/lib/libcrypto/man/man3/CMS_add1_recipient_cert.3 index 6b75788e97c98..6b75788e97c98 100644 --- a/secure/lib/libcrypto/man/CMS_add1_recipient_cert.3 +++ b/secure/lib/libcrypto/man/man3/CMS_add1_recipient_cert.3 diff --git a/secure/lib/libcrypto/man/CMS_add1_signer.3 b/secure/lib/libcrypto/man/man3/CMS_add1_signer.3 index 0d046f4b02f92..0d046f4b02f92 100644 --- a/secure/lib/libcrypto/man/CMS_add1_signer.3 +++ b/secure/lib/libcrypto/man/man3/CMS_add1_signer.3 diff --git a/secure/lib/libcrypto/man/CMS_compress.3 b/secure/lib/libcrypto/man/man3/CMS_compress.3 index 916df4b6e643c..916df4b6e643c 100644 --- a/secure/lib/libcrypto/man/CMS_compress.3 +++ b/secure/lib/libcrypto/man/man3/CMS_compress.3 diff --git a/secure/lib/libcrypto/man/CMS_decrypt.3 b/secure/lib/libcrypto/man/man3/CMS_decrypt.3 index ee4d4cf4c6460..ee4d4cf4c6460 100644 --- a/secure/lib/libcrypto/man/CMS_decrypt.3 +++ b/secure/lib/libcrypto/man/man3/CMS_decrypt.3 diff --git a/secure/lib/libcrypto/man/CMS_encrypt.3 b/secure/lib/libcrypto/man/man3/CMS_encrypt.3 index cc5034b10dd3f..cc5034b10dd3f 100644 --- a/secure/lib/libcrypto/man/CMS_encrypt.3 +++ b/secure/lib/libcrypto/man/man3/CMS_encrypt.3 diff --git a/secure/lib/libcrypto/man/CMS_final.3 b/secure/lib/libcrypto/man/man3/CMS_final.3 index dd660c28d62a3..dd660c28d62a3 100644 --- a/secure/lib/libcrypto/man/CMS_final.3 +++ b/secure/lib/libcrypto/man/man3/CMS_final.3 diff --git a/secure/lib/libcrypto/man/CMS_get0_RecipientInfos.3 b/secure/lib/libcrypto/man/man3/CMS_get0_RecipientInfos.3 index dba1f218c199f..dba1f218c199f 100644 --- a/secure/lib/libcrypto/man/CMS_get0_RecipientInfos.3 +++ b/secure/lib/libcrypto/man/man3/CMS_get0_RecipientInfos.3 diff --git a/secure/lib/libcrypto/man/CMS_get0_SignerInfos.3 b/secure/lib/libcrypto/man/man3/CMS_get0_SignerInfos.3 index 22d4b12d07859..22d4b12d07859 100644 --- a/secure/lib/libcrypto/man/CMS_get0_SignerInfos.3 +++ b/secure/lib/libcrypto/man/man3/CMS_get0_SignerInfos.3 diff --git a/secure/lib/libcrypto/man/CMS_get0_type.3 b/secure/lib/libcrypto/man/man3/CMS_get0_type.3 index 1d5a063bac5b6..1d5a063bac5b6 100644 --- a/secure/lib/libcrypto/man/CMS_get0_type.3 +++ b/secure/lib/libcrypto/man/man3/CMS_get0_type.3 diff --git a/secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.3 b/secure/lib/libcrypto/man/man3/CMS_get1_ReceiptRequest.3 index f28fb192ae872..f28fb192ae872 100644 --- a/secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.3 +++ b/secure/lib/libcrypto/man/man3/CMS_get1_ReceiptRequest.3 diff --git a/secure/lib/libcrypto/man/CMS_sign.3 b/secure/lib/libcrypto/man/man3/CMS_sign.3 index b633d6b2e8288..b633d6b2e8288 100644 --- a/secure/lib/libcrypto/man/CMS_sign.3 +++ b/secure/lib/libcrypto/man/man3/CMS_sign.3 diff --git a/secure/lib/libcrypto/man/CMS_sign_receipt.3 b/secure/lib/libcrypto/man/man3/CMS_sign_receipt.3 index 01ae089746642..01ae089746642 100644 --- a/secure/lib/libcrypto/man/CMS_sign_receipt.3 +++ b/secure/lib/libcrypto/man/man3/CMS_sign_receipt.3 diff --git a/secure/lib/libcrypto/man/CMS_uncompress.3 b/secure/lib/libcrypto/man/man3/CMS_uncompress.3 index eac1a921aee48..eac1a921aee48 100644 --- a/secure/lib/libcrypto/man/CMS_uncompress.3 +++ b/secure/lib/libcrypto/man/man3/CMS_uncompress.3 diff --git a/secure/lib/libcrypto/man/CMS_verify.3 b/secure/lib/libcrypto/man/man3/CMS_verify.3 index 1031b46acf8ab..1031b46acf8ab 100644 --- a/secure/lib/libcrypto/man/CMS_verify.3 +++ b/secure/lib/libcrypto/man/man3/CMS_verify.3 diff --git a/secure/lib/libcrypto/man/CMS_verify_receipt.3 b/secure/lib/libcrypto/man/man3/CMS_verify_receipt.3 index 0e90ff6de9024..0e90ff6de9024 100644 --- a/secure/lib/libcrypto/man/CMS_verify_receipt.3 +++ b/secure/lib/libcrypto/man/man3/CMS_verify_receipt.3 diff --git a/secure/lib/libcrypto/man/CONF_modules_free.3 b/secure/lib/libcrypto/man/man3/CONF_modules_free.3 index 96020613e9e67..96020613e9e67 100644 --- a/secure/lib/libcrypto/man/CONF_modules_free.3 +++ b/secure/lib/libcrypto/man/man3/CONF_modules_free.3 diff --git a/secure/lib/libcrypto/man/CONF_modules_load_file.3 b/secure/lib/libcrypto/man/man3/CONF_modules_load_file.3 index f5b5d22a7381b..f5b5d22a7381b 100644 --- a/secure/lib/libcrypto/man/CONF_modules_load_file.3 +++ b/secure/lib/libcrypto/man/man3/CONF_modules_load_file.3 diff --git a/secure/lib/libcrypto/man/CRYPTO_THREAD_run_once.3 b/secure/lib/libcrypto/man/man3/CRYPTO_THREAD_run_once.3 index 6e638d566043c..6e638d566043c 100644 --- a/secure/lib/libcrypto/man/CRYPTO_THREAD_run_once.3 +++ b/secure/lib/libcrypto/man/man3/CRYPTO_THREAD_run_once.3 diff --git a/secure/lib/libcrypto/man/CRYPTO_get_ex_new_index.3 b/secure/lib/libcrypto/man/man3/CRYPTO_get_ex_new_index.3 index 503fa928855fb..503fa928855fb 100644 --- a/secure/lib/libcrypto/man/CRYPTO_get_ex_new_index.3 +++ b/secure/lib/libcrypto/man/man3/CRYPTO_get_ex_new_index.3 diff --git a/secure/lib/libcrypto/man/CRYPTO_memcmp.3 b/secure/lib/libcrypto/man/man3/CRYPTO_memcmp.3 index 2474f4b6ab570..2474f4b6ab570 100644 --- a/secure/lib/libcrypto/man/CRYPTO_memcmp.3 +++ b/secure/lib/libcrypto/man/man3/CRYPTO_memcmp.3 diff --git a/secure/lib/libcrypto/man/CTLOG_STORE_get0_log_by_id.3 b/secure/lib/libcrypto/man/man3/CTLOG_STORE_get0_log_by_id.3 index a1ffd4a69cb37..a1ffd4a69cb37 100644 --- a/secure/lib/libcrypto/man/CTLOG_STORE_get0_log_by_id.3 +++ b/secure/lib/libcrypto/man/man3/CTLOG_STORE_get0_log_by_id.3 diff --git a/secure/lib/libcrypto/man/CTLOG_STORE_new.3 b/secure/lib/libcrypto/man/man3/CTLOG_STORE_new.3 index 99743eb0c91c4..99743eb0c91c4 100644 --- a/secure/lib/libcrypto/man/CTLOG_STORE_new.3 +++ b/secure/lib/libcrypto/man/man3/CTLOG_STORE_new.3 diff --git a/secure/lib/libcrypto/man/CTLOG_new.3 b/secure/lib/libcrypto/man/man3/CTLOG_new.3 index 4eb73ff5abcda..4eb73ff5abcda 100644 --- a/secure/lib/libcrypto/man/CTLOG_new.3 +++ b/secure/lib/libcrypto/man/man3/CTLOG_new.3 diff --git a/secure/lib/libcrypto/man/CT_POLICY_EVAL_CTX_new.3 b/secure/lib/libcrypto/man/man3/CT_POLICY_EVAL_CTX_new.3 index 70e7d6fb4bf09..70e7d6fb4bf09 100644 --- a/secure/lib/libcrypto/man/CT_POLICY_EVAL_CTX_new.3 +++ b/secure/lib/libcrypto/man/man3/CT_POLICY_EVAL_CTX_new.3 diff --git a/secure/lib/libcrypto/man/DEFINE_STACK_OF.3 b/secure/lib/libcrypto/man/man3/DEFINE_STACK_OF.3 index b6675168dff7b..b6675168dff7b 100644 --- a/secure/lib/libcrypto/man/DEFINE_STACK_OF.3 +++ b/secure/lib/libcrypto/man/man3/DEFINE_STACK_OF.3 diff --git a/secure/lib/libcrypto/man/DES_random_key.3 b/secure/lib/libcrypto/man/man3/DES_random_key.3 index 0dd0ece6dd4db..0dd0ece6dd4db 100644 --- a/secure/lib/libcrypto/man/DES_random_key.3 +++ b/secure/lib/libcrypto/man/man3/DES_random_key.3 diff --git a/secure/lib/libcrypto/man/DH_generate_key.3 b/secure/lib/libcrypto/man/man3/DH_generate_key.3 index 3cd7a90e46695..3cd7a90e46695 100644 --- a/secure/lib/libcrypto/man/DH_generate_key.3 +++ b/secure/lib/libcrypto/man/man3/DH_generate_key.3 diff --git a/secure/lib/libcrypto/man/DH_generate_parameters.3 b/secure/lib/libcrypto/man/man3/DH_generate_parameters.3 index eb64edd6639fd..eb64edd6639fd 100644 --- a/secure/lib/libcrypto/man/DH_generate_parameters.3 +++ b/secure/lib/libcrypto/man/man3/DH_generate_parameters.3 diff --git a/secure/lib/libcrypto/man/DH_get0_pqg.3 b/secure/lib/libcrypto/man/man3/DH_get0_pqg.3 index f16b880f6e6ba..f16b880f6e6ba 100644 --- a/secure/lib/libcrypto/man/DH_get0_pqg.3 +++ b/secure/lib/libcrypto/man/man3/DH_get0_pqg.3 diff --git a/secure/lib/libcrypto/man/DH_get_1024_160.3 b/secure/lib/libcrypto/man/man3/DH_get_1024_160.3 index f0a3f0b7718b7..f0a3f0b7718b7 100644 --- a/secure/lib/libcrypto/man/DH_get_1024_160.3 +++ b/secure/lib/libcrypto/man/man3/DH_get_1024_160.3 diff --git a/secure/lib/libcrypto/man/DH_meth_new.3 b/secure/lib/libcrypto/man/man3/DH_meth_new.3 index aed529ba21d72..aed529ba21d72 100644 --- a/secure/lib/libcrypto/man/DH_meth_new.3 +++ b/secure/lib/libcrypto/man/man3/DH_meth_new.3 diff --git a/secure/lib/libcrypto/man/DH_new.3 b/secure/lib/libcrypto/man/man3/DH_new.3 index 2fd0721b86d06..2fd0721b86d06 100644 --- a/secure/lib/libcrypto/man/DH_new.3 +++ b/secure/lib/libcrypto/man/man3/DH_new.3 diff --git a/secure/lib/libcrypto/man/DH_new_by_nid.3 b/secure/lib/libcrypto/man/man3/DH_new_by_nid.3 index 4e85d2c0053c3..4e85d2c0053c3 100644 --- a/secure/lib/libcrypto/man/DH_new_by_nid.3 +++ b/secure/lib/libcrypto/man/man3/DH_new_by_nid.3 diff --git a/secure/lib/libcrypto/man/DH_set_method.3 b/secure/lib/libcrypto/man/man3/DH_set_method.3 index 3702353f11e94..3702353f11e94 100644 --- a/secure/lib/libcrypto/man/DH_set_method.3 +++ b/secure/lib/libcrypto/man/man3/DH_set_method.3 diff --git a/secure/lib/libcrypto/man/DH_size.3 b/secure/lib/libcrypto/man/man3/DH_size.3 index f47dbeb9e1196..f47dbeb9e1196 100644 --- a/secure/lib/libcrypto/man/DH_size.3 +++ b/secure/lib/libcrypto/man/man3/DH_size.3 diff --git a/secure/lib/libcrypto/man/DSA_SIG_new.3 b/secure/lib/libcrypto/man/man3/DSA_SIG_new.3 index 1c40267fd1871..1c40267fd1871 100644 --- a/secure/lib/libcrypto/man/DSA_SIG_new.3 +++ b/secure/lib/libcrypto/man/man3/DSA_SIG_new.3 diff --git a/secure/lib/libcrypto/man/DSA_do_sign.3 b/secure/lib/libcrypto/man/man3/DSA_do_sign.3 index c0221b8ea9bed..c0221b8ea9bed 100644 --- a/secure/lib/libcrypto/man/DSA_do_sign.3 +++ b/secure/lib/libcrypto/man/man3/DSA_do_sign.3 diff --git a/secure/lib/libcrypto/man/DSA_dup_DH.3 b/secure/lib/libcrypto/man/man3/DSA_dup_DH.3 index 9b3852a3dc9e1..9b3852a3dc9e1 100644 --- a/secure/lib/libcrypto/man/DSA_dup_DH.3 +++ b/secure/lib/libcrypto/man/man3/DSA_dup_DH.3 diff --git a/secure/lib/libcrypto/man/DSA_generate_key.3 b/secure/lib/libcrypto/man/man3/DSA_generate_key.3 index 10ed1b44efbd0..10ed1b44efbd0 100644 --- a/secure/lib/libcrypto/man/DSA_generate_key.3 +++ b/secure/lib/libcrypto/man/man3/DSA_generate_key.3 diff --git a/secure/lib/libcrypto/man/DSA_generate_parameters.3 b/secure/lib/libcrypto/man/man3/DSA_generate_parameters.3 index 15d56a2727a1f..15d56a2727a1f 100644 --- a/secure/lib/libcrypto/man/DSA_generate_parameters.3 +++ b/secure/lib/libcrypto/man/man3/DSA_generate_parameters.3 diff --git a/secure/lib/libcrypto/man/DSA_get0_pqg.3 b/secure/lib/libcrypto/man/man3/DSA_get0_pqg.3 index fed19b74d7313..fed19b74d7313 100644 --- a/secure/lib/libcrypto/man/DSA_get0_pqg.3 +++ b/secure/lib/libcrypto/man/man3/DSA_get0_pqg.3 diff --git a/secure/lib/libcrypto/man/DSA_meth_new.3 b/secure/lib/libcrypto/man/man3/DSA_meth_new.3 index 0fb5e6c234220..0fb5e6c234220 100644 --- a/secure/lib/libcrypto/man/DSA_meth_new.3 +++ b/secure/lib/libcrypto/man/man3/DSA_meth_new.3 diff --git a/secure/lib/libcrypto/man/DSA_new.3 b/secure/lib/libcrypto/man/man3/DSA_new.3 index 031b13f4bfb92..031b13f4bfb92 100644 --- a/secure/lib/libcrypto/man/DSA_new.3 +++ b/secure/lib/libcrypto/man/man3/DSA_new.3 diff --git a/secure/lib/libcrypto/man/DSA_set_method.3 b/secure/lib/libcrypto/man/man3/DSA_set_method.3 index df3e03928363f..df3e03928363f 100644 --- a/secure/lib/libcrypto/man/DSA_set_method.3 +++ b/secure/lib/libcrypto/man/man3/DSA_set_method.3 diff --git a/secure/lib/libcrypto/man/DSA_sign.3 b/secure/lib/libcrypto/man/man3/DSA_sign.3 index 573016019693c..573016019693c 100644 --- a/secure/lib/libcrypto/man/DSA_sign.3 +++ b/secure/lib/libcrypto/man/man3/DSA_sign.3 diff --git a/secure/lib/libcrypto/man/DSA_size.3 b/secure/lib/libcrypto/man/man3/DSA_size.3 index 486383b20f50f..486383b20f50f 100644 --- a/secure/lib/libcrypto/man/DSA_size.3 +++ b/secure/lib/libcrypto/man/man3/DSA_size.3 diff --git a/secure/lib/libcrypto/man/DTLS_get_data_mtu.3 b/secure/lib/libcrypto/man/man3/DTLS_get_data_mtu.3 index c66b8b2bc0590..c66b8b2bc0590 100644 --- a/secure/lib/libcrypto/man/DTLS_get_data_mtu.3 +++ b/secure/lib/libcrypto/man/man3/DTLS_get_data_mtu.3 diff --git a/secure/lib/libcrypto/man/DTLS_set_timer_cb.3 b/secure/lib/libcrypto/man/man3/DTLS_set_timer_cb.3 index 6fd51298d1357..6fd51298d1357 100644 --- a/secure/lib/libcrypto/man/DTLS_set_timer_cb.3 +++ b/secure/lib/libcrypto/man/man3/DTLS_set_timer_cb.3 diff --git a/secure/lib/libcrypto/man/DTLSv1_listen.3 b/secure/lib/libcrypto/man/man3/DTLSv1_listen.3 index 44b330e3523fa..44b330e3523fa 100644 --- a/secure/lib/libcrypto/man/DTLSv1_listen.3 +++ b/secure/lib/libcrypto/man/man3/DTLSv1_listen.3 diff --git a/secure/lib/libcrypto/man/ECDSA_SIG_new.3 b/secure/lib/libcrypto/man/man3/ECDSA_SIG_new.3 index b8d56d38ca5a5..b8d56d38ca5a5 100644 --- a/secure/lib/libcrypto/man/ECDSA_SIG_new.3 +++ b/secure/lib/libcrypto/man/man3/ECDSA_SIG_new.3 diff --git a/secure/lib/libcrypto/man/ECPKParameters_print.3 b/secure/lib/libcrypto/man/man3/ECPKParameters_print.3 index 6ad90ecb3c475..6ad90ecb3c475 100644 --- a/secure/lib/libcrypto/man/ECPKParameters_print.3 +++ b/secure/lib/libcrypto/man/man3/ECPKParameters_print.3 diff --git a/secure/lib/libcrypto/man/EC_GFp_simple_method.3 b/secure/lib/libcrypto/man/man3/EC_GFp_simple_method.3 index be5f0668c35c5..be5f0668c35c5 100644 --- a/secure/lib/libcrypto/man/EC_GFp_simple_method.3 +++ b/secure/lib/libcrypto/man/man3/EC_GFp_simple_method.3 diff --git a/secure/lib/libcrypto/man/EC_GROUP_copy.3 b/secure/lib/libcrypto/man/man3/EC_GROUP_copy.3 index cc369cbcdd2d8..cc369cbcdd2d8 100644 --- a/secure/lib/libcrypto/man/EC_GROUP_copy.3 +++ b/secure/lib/libcrypto/man/man3/EC_GROUP_copy.3 diff --git a/secure/lib/libcrypto/man/EC_GROUP_new.3 b/secure/lib/libcrypto/man/man3/EC_GROUP_new.3 index 2fc979596884e..2fc979596884e 100644 --- a/secure/lib/libcrypto/man/EC_GROUP_new.3 +++ b/secure/lib/libcrypto/man/man3/EC_GROUP_new.3 diff --git a/secure/lib/libcrypto/man/EC_KEY_get_enc_flags.3 b/secure/lib/libcrypto/man/man3/EC_KEY_get_enc_flags.3 index 7c23945de85fa..7c23945de85fa 100644 --- a/secure/lib/libcrypto/man/EC_KEY_get_enc_flags.3 +++ b/secure/lib/libcrypto/man/man3/EC_KEY_get_enc_flags.3 diff --git a/secure/lib/libcrypto/man/EC_KEY_new.3 b/secure/lib/libcrypto/man/man3/EC_KEY_new.3 index fab02e549f2bc..fab02e549f2bc 100644 --- a/secure/lib/libcrypto/man/EC_KEY_new.3 +++ b/secure/lib/libcrypto/man/man3/EC_KEY_new.3 diff --git a/secure/lib/libcrypto/man/EC_POINT_add.3 b/secure/lib/libcrypto/man/man3/EC_POINT_add.3 index 7f215809be920..7f215809be920 100644 --- a/secure/lib/libcrypto/man/EC_POINT_add.3 +++ b/secure/lib/libcrypto/man/man3/EC_POINT_add.3 diff --git a/secure/lib/libcrypto/man/EC_POINT_new.3 b/secure/lib/libcrypto/man/man3/EC_POINT_new.3 index fd5139878a171..fd5139878a171 100644 --- a/secure/lib/libcrypto/man/EC_POINT_new.3 +++ b/secure/lib/libcrypto/man/man3/EC_POINT_new.3 diff --git a/secure/lib/libcrypto/man/ENGINE_add.3 b/secure/lib/libcrypto/man/man3/ENGINE_add.3 index 197b02a51967c..197b02a51967c 100644 --- a/secure/lib/libcrypto/man/ENGINE_add.3 +++ b/secure/lib/libcrypto/man/man3/ENGINE_add.3 diff --git a/secure/lib/libcrypto/man/ERR_GET_LIB.3 b/secure/lib/libcrypto/man/man3/ERR_GET_LIB.3 index fc5445cc8a35f..fc5445cc8a35f 100644 --- a/secure/lib/libcrypto/man/ERR_GET_LIB.3 +++ b/secure/lib/libcrypto/man/man3/ERR_GET_LIB.3 diff --git a/secure/lib/libcrypto/man/ERR_clear_error.3 b/secure/lib/libcrypto/man/man3/ERR_clear_error.3 index 0e99443deae41..0e99443deae41 100644 --- a/secure/lib/libcrypto/man/ERR_clear_error.3 +++ b/secure/lib/libcrypto/man/man3/ERR_clear_error.3 diff --git a/secure/lib/libcrypto/man/ERR_error_string.3 b/secure/lib/libcrypto/man/man3/ERR_error_string.3 index 728539c2b58d9..728539c2b58d9 100644 --- a/secure/lib/libcrypto/man/ERR_error_string.3 +++ b/secure/lib/libcrypto/man/man3/ERR_error_string.3 diff --git a/secure/lib/libcrypto/man/ERR_get_error.3 b/secure/lib/libcrypto/man/man3/ERR_get_error.3 index d55b4e4718592..d55b4e4718592 100644 --- a/secure/lib/libcrypto/man/ERR_get_error.3 +++ b/secure/lib/libcrypto/man/man3/ERR_get_error.3 diff --git a/secure/lib/libcrypto/man/ERR_load_crypto_strings.3 b/secure/lib/libcrypto/man/man3/ERR_load_crypto_strings.3 index 8936aa76f2b9a..8936aa76f2b9a 100644 --- a/secure/lib/libcrypto/man/ERR_load_crypto_strings.3 +++ b/secure/lib/libcrypto/man/man3/ERR_load_crypto_strings.3 diff --git a/secure/lib/libcrypto/man/ERR_load_strings.3 b/secure/lib/libcrypto/man/man3/ERR_load_strings.3 index a0980ad5c12b6..a0980ad5c12b6 100644 --- a/secure/lib/libcrypto/man/ERR_load_strings.3 +++ b/secure/lib/libcrypto/man/man3/ERR_load_strings.3 diff --git a/secure/lib/libcrypto/man/ERR_print_errors.3 b/secure/lib/libcrypto/man/man3/ERR_print_errors.3 index 6edc96eb6a4c2..6edc96eb6a4c2 100644 --- a/secure/lib/libcrypto/man/ERR_print_errors.3 +++ b/secure/lib/libcrypto/man/man3/ERR_print_errors.3 diff --git a/secure/lib/libcrypto/man/ERR_put_error.3 b/secure/lib/libcrypto/man/man3/ERR_put_error.3 index e0e26bbd7cbe9..e0e26bbd7cbe9 100644 --- a/secure/lib/libcrypto/man/ERR_put_error.3 +++ b/secure/lib/libcrypto/man/man3/ERR_put_error.3 diff --git a/secure/lib/libcrypto/man/ERR_remove_state.3 b/secure/lib/libcrypto/man/man3/ERR_remove_state.3 index b70c5d5652f7a..b70c5d5652f7a 100644 --- a/secure/lib/libcrypto/man/ERR_remove_state.3 +++ b/secure/lib/libcrypto/man/man3/ERR_remove_state.3 diff --git a/secure/lib/libcrypto/man/ERR_set_mark.3 b/secure/lib/libcrypto/man/man3/ERR_set_mark.3 index 8edb3254f8815..8edb3254f8815 100644 --- a/secure/lib/libcrypto/man/ERR_set_mark.3 +++ b/secure/lib/libcrypto/man/man3/ERR_set_mark.3 diff --git a/secure/lib/libcrypto/man/EVP_BytesToKey.3 b/secure/lib/libcrypto/man/man3/EVP_BytesToKey.3 index 1b5a33460acb8..1b5a33460acb8 100644 --- a/secure/lib/libcrypto/man/EVP_BytesToKey.3 +++ b/secure/lib/libcrypto/man/man3/EVP_BytesToKey.3 diff --git a/secure/lib/libcrypto/man/EVP_CIPHER_CTX_get_cipher_data.3 b/secure/lib/libcrypto/man/man3/EVP_CIPHER_CTX_get_cipher_data.3 index 4941cc7e80c0e..4941cc7e80c0e 100644 --- a/secure/lib/libcrypto/man/EVP_CIPHER_CTX_get_cipher_data.3 +++ b/secure/lib/libcrypto/man/man3/EVP_CIPHER_CTX_get_cipher_data.3 diff --git a/secure/lib/libcrypto/man/EVP_CIPHER_meth_new.3 b/secure/lib/libcrypto/man/man3/EVP_CIPHER_meth_new.3 index 4da560cc7a79e..4da560cc7a79e 100644 --- a/secure/lib/libcrypto/man/EVP_CIPHER_meth_new.3 +++ b/secure/lib/libcrypto/man/man3/EVP_CIPHER_meth_new.3 diff --git a/secure/lib/libcrypto/man/EVP_DigestInit.3 b/secure/lib/libcrypto/man/man3/EVP_DigestInit.3 index 4b9e41e3d316d..4b9e41e3d316d 100644 --- a/secure/lib/libcrypto/man/EVP_DigestInit.3 +++ b/secure/lib/libcrypto/man/man3/EVP_DigestInit.3 diff --git a/secure/lib/libcrypto/man/EVP_DigestSignInit.3 b/secure/lib/libcrypto/man/man3/EVP_DigestSignInit.3 index 0524fd067ddd1..0524fd067ddd1 100644 --- a/secure/lib/libcrypto/man/EVP_DigestSignInit.3 +++ b/secure/lib/libcrypto/man/man3/EVP_DigestSignInit.3 diff --git a/secure/lib/libcrypto/man/EVP_DigestVerifyInit.3 b/secure/lib/libcrypto/man/man3/EVP_DigestVerifyInit.3 index c303fd85df81c..c303fd85df81c 100644 --- a/secure/lib/libcrypto/man/EVP_DigestVerifyInit.3 +++ b/secure/lib/libcrypto/man/man3/EVP_DigestVerifyInit.3 diff --git a/secure/lib/libcrypto/man/EVP_EncodeInit.3 b/secure/lib/libcrypto/man/man3/EVP_EncodeInit.3 index f23ef7efaf0c2..f23ef7efaf0c2 100644 --- a/secure/lib/libcrypto/man/EVP_EncodeInit.3 +++ b/secure/lib/libcrypto/man/man3/EVP_EncodeInit.3 diff --git a/secure/lib/libcrypto/man/EVP_EncryptInit.3 b/secure/lib/libcrypto/man/man3/EVP_EncryptInit.3 index f803c2de7549b..f803c2de7549b 100644 --- a/secure/lib/libcrypto/man/EVP_EncryptInit.3 +++ b/secure/lib/libcrypto/man/man3/EVP_EncryptInit.3 diff --git a/secure/lib/libcrypto/man/EVP_MD_meth_new.3 b/secure/lib/libcrypto/man/man3/EVP_MD_meth_new.3 index f472806291926..f472806291926 100644 --- a/secure/lib/libcrypto/man/EVP_MD_meth_new.3 +++ b/secure/lib/libcrypto/man/man3/EVP_MD_meth_new.3 diff --git a/secure/lib/libcrypto/man/EVP_OpenInit.3 b/secure/lib/libcrypto/man/man3/EVP_OpenInit.3 index e67fe0dc5fe47..e67fe0dc5fe47 100644 --- a/secure/lib/libcrypto/man/EVP_OpenInit.3 +++ b/secure/lib/libcrypto/man/man3/EVP_OpenInit.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_ASN1_METHOD.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_ASN1_METHOD.3 index 5eb33834e0912..5eb33834e0912 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_ASN1_METHOD.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_ASN1_METHOD.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_ctrl.3 index c580f29e51cce..c580f29e51cce 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_ctrl.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_CTX_new.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_new.3 index cd32f4574c5ba..cd32f4574c5ba 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_CTX_new.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_new.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_CTX_set1_pbe_pass.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3 index 77577bc356ff2..77577bc356ff2 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_CTX_set1_pbe_pass.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_CTX_set_hkdf_md.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_set_hkdf_md.3 index 15795d6ff5450..15795d6ff5450 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_CTX_set_hkdf_md.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_set_hkdf_md.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3 index 939d29cac16b8..939d29cac16b8 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_CTX_set_scrypt_N.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_set_scrypt_N.3 index 0794685ff34e2..0794685ff34e2 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_CTX_set_scrypt_N.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_set_scrypt_N.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_CTX_set_tls1_prf_md.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3 index 7d09f0d1ab800..7d09f0d1ab800 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_CTX_set_tls1_prf_md.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_asn1_get_count.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_asn1_get_count.3 index 9dbb17aa8dae8..9dbb17aa8dae8 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_asn1_get_count.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_asn1_get_count.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_cmp.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_cmp.3 index 6af3afbcc5ab4..6af3afbcc5ab4 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_cmp.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_cmp.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_decrypt.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_decrypt.3 index faa00d9d67748..faa00d9d67748 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_decrypt.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_decrypt.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_derive.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_derive.3 index 2aa43c002a60e..2aa43c002a60e 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_derive.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_derive.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_encrypt.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_encrypt.3 index bdf8d35b7e0bb..bdf8d35b7e0bb 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_encrypt.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_encrypt.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_get_default_digest_nid.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_get_default_digest_nid.3 index 777d60243707c..777d60243707c 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_get_default_digest_nid.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_get_default_digest_nid.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_keygen.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_keygen.3 index d323f2a038f09..d323f2a038f09 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_keygen.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_keygen.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_meth_get_count.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_meth_get_count.3 index 0b9e750b16baa..0b9e750b16baa 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_meth_get_count.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_meth_get_count.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_meth_new.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_meth_new.3 index 465a3499ed7aa..465a3499ed7aa 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_meth_new.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_meth_new.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_new.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_new.3 index 708dac7c7a2f1..708dac7c7a2f1 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_new.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_new.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_print_private.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_print_private.3 index b8d33cc738920..b8d33cc738920 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_print_private.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_print_private.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_set1_RSA.3 index 9d4c4670e4e86..9d4c4670e4e86 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_set1_RSA.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_sign.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_sign.3 index 8887fb79080e5..8887fb79080e5 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_sign.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_sign.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_verify.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_verify.3 index c7f15a36b1618..c7f15a36b1618 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_verify.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_verify.3 diff --git a/secure/lib/libcrypto/man/EVP_PKEY_verify_recover.3 b/secure/lib/libcrypto/man/man3/EVP_PKEY_verify_recover.3 index d75534aa73f5e..d75534aa73f5e 100644 --- a/secure/lib/libcrypto/man/EVP_PKEY_verify_recover.3 +++ b/secure/lib/libcrypto/man/man3/EVP_PKEY_verify_recover.3 diff --git a/secure/lib/libcrypto/man/EVP_SealInit.3 b/secure/lib/libcrypto/man/man3/EVP_SealInit.3 index 32c26df471a9b..32c26df471a9b 100644 --- a/secure/lib/libcrypto/man/EVP_SealInit.3 +++ b/secure/lib/libcrypto/man/man3/EVP_SealInit.3 diff --git a/secure/lib/libcrypto/man/EVP_SignInit.3 b/secure/lib/libcrypto/man/man3/EVP_SignInit.3 index cf7eb2b1a672d..cf7eb2b1a672d 100644 --- a/secure/lib/libcrypto/man/EVP_SignInit.3 +++ b/secure/lib/libcrypto/man/man3/EVP_SignInit.3 diff --git a/secure/lib/libcrypto/man/EVP_VerifyInit.3 b/secure/lib/libcrypto/man/man3/EVP_VerifyInit.3 index 6ce5eafb4085a..6ce5eafb4085a 100644 --- a/secure/lib/libcrypto/man/EVP_VerifyInit.3 +++ b/secure/lib/libcrypto/man/man3/EVP_VerifyInit.3 diff --git a/secure/lib/libcrypto/man/EVP_aes.3 b/secure/lib/libcrypto/man/man3/EVP_aes.3 index c79fbc05d30ac..c79fbc05d30ac 100644 --- a/secure/lib/libcrypto/man/EVP_aes.3 +++ b/secure/lib/libcrypto/man/man3/EVP_aes.3 diff --git a/secure/lib/libcrypto/man/EVP_aria.3 b/secure/lib/libcrypto/man/man3/EVP_aria.3 index 65fd2843fc27a..65fd2843fc27a 100644 --- a/secure/lib/libcrypto/man/EVP_aria.3 +++ b/secure/lib/libcrypto/man/man3/EVP_aria.3 diff --git a/secure/lib/libcrypto/man/EVP_bf_cbc.3 b/secure/lib/libcrypto/man/man3/EVP_bf_cbc.3 index e04fc08cddb9d..e04fc08cddb9d 100644 --- a/secure/lib/libcrypto/man/EVP_bf_cbc.3 +++ b/secure/lib/libcrypto/man/man3/EVP_bf_cbc.3 diff --git a/secure/lib/libcrypto/man/EVP_blake2b512.3 b/secure/lib/libcrypto/man/man3/EVP_blake2b512.3 index 257b6707290ce..257b6707290ce 100644 --- a/secure/lib/libcrypto/man/EVP_blake2b512.3 +++ b/secure/lib/libcrypto/man/man3/EVP_blake2b512.3 diff --git a/secure/lib/libcrypto/man/EVP_camellia.3 b/secure/lib/libcrypto/man/man3/EVP_camellia.3 index f492975343af0..f492975343af0 100644 --- a/secure/lib/libcrypto/man/EVP_camellia.3 +++ b/secure/lib/libcrypto/man/man3/EVP_camellia.3 diff --git a/secure/lib/libcrypto/man/EVP_cast5_cbc.3 b/secure/lib/libcrypto/man/man3/EVP_cast5_cbc.3 index 907808dbb23aa..907808dbb23aa 100644 --- a/secure/lib/libcrypto/man/EVP_cast5_cbc.3 +++ b/secure/lib/libcrypto/man/man3/EVP_cast5_cbc.3 diff --git a/secure/lib/libcrypto/man/EVP_chacha20.3 b/secure/lib/libcrypto/man/man3/EVP_chacha20.3 index 0a3f1c52d8e51..0a3f1c52d8e51 100644 --- a/secure/lib/libcrypto/man/EVP_chacha20.3 +++ b/secure/lib/libcrypto/man/man3/EVP_chacha20.3 diff --git a/secure/lib/libcrypto/man/EVP_des.3 b/secure/lib/libcrypto/man/man3/EVP_des.3 index 2e809fa8ae20c..2e809fa8ae20c 100644 --- a/secure/lib/libcrypto/man/EVP_des.3 +++ b/secure/lib/libcrypto/man/man3/EVP_des.3 diff --git a/secure/lib/libcrypto/man/EVP_desx_cbc.3 b/secure/lib/libcrypto/man/man3/EVP_desx_cbc.3 index 4f50dd4a9cccf..4f50dd4a9cccf 100644 --- a/secure/lib/libcrypto/man/EVP_desx_cbc.3 +++ b/secure/lib/libcrypto/man/man3/EVP_desx_cbc.3 diff --git a/secure/lib/libcrypto/man/EVP_idea_cbc.3 b/secure/lib/libcrypto/man/man3/EVP_idea_cbc.3 index 5fca826ccf616..5fca826ccf616 100644 --- a/secure/lib/libcrypto/man/EVP_idea_cbc.3 +++ b/secure/lib/libcrypto/man/man3/EVP_idea_cbc.3 diff --git a/secure/lib/libcrypto/man/EVP_md2.3 b/secure/lib/libcrypto/man/man3/EVP_md2.3 index e01f4d9e9c4e4..e01f4d9e9c4e4 100644 --- a/secure/lib/libcrypto/man/EVP_md2.3 +++ b/secure/lib/libcrypto/man/man3/EVP_md2.3 diff --git a/secure/lib/libcrypto/man/EVP_md4.3 b/secure/lib/libcrypto/man/man3/EVP_md4.3 index cfcf27ce4acb0..cfcf27ce4acb0 100644 --- a/secure/lib/libcrypto/man/EVP_md4.3 +++ b/secure/lib/libcrypto/man/man3/EVP_md4.3 diff --git a/secure/lib/libcrypto/man/EVP_md5.3 b/secure/lib/libcrypto/man/man3/EVP_md5.3 index f512a8de247cd..f512a8de247cd 100644 --- a/secure/lib/libcrypto/man/EVP_md5.3 +++ b/secure/lib/libcrypto/man/man3/EVP_md5.3 diff --git a/secure/lib/libcrypto/man/EVP_mdc2.3 b/secure/lib/libcrypto/man/man3/EVP_mdc2.3 index 2f76da399c2dc..2f76da399c2dc 100644 --- a/secure/lib/libcrypto/man/EVP_mdc2.3 +++ b/secure/lib/libcrypto/man/man3/EVP_mdc2.3 diff --git a/secure/lib/libcrypto/man/EVP_rc2_cbc.3 b/secure/lib/libcrypto/man/man3/EVP_rc2_cbc.3 index 7129201573a3e..7129201573a3e 100644 --- a/secure/lib/libcrypto/man/EVP_rc2_cbc.3 +++ b/secure/lib/libcrypto/man/man3/EVP_rc2_cbc.3 diff --git a/secure/lib/libcrypto/man/EVP_rc4.3 b/secure/lib/libcrypto/man/man3/EVP_rc4.3 index ddf2d51534168..ddf2d51534168 100644 --- a/secure/lib/libcrypto/man/EVP_rc4.3 +++ b/secure/lib/libcrypto/man/man3/EVP_rc4.3 diff --git a/secure/lib/libcrypto/man/EVP_rc5_32_12_16_cbc.3 b/secure/lib/libcrypto/man/man3/EVP_rc5_32_12_16_cbc.3 index a6d21839c41ca..a6d21839c41ca 100644 --- a/secure/lib/libcrypto/man/EVP_rc5_32_12_16_cbc.3 +++ b/secure/lib/libcrypto/man/man3/EVP_rc5_32_12_16_cbc.3 diff --git a/secure/lib/libcrypto/man/EVP_ripemd160.3 b/secure/lib/libcrypto/man/man3/EVP_ripemd160.3 index 8380f78ef3a5e..8380f78ef3a5e 100644 --- a/secure/lib/libcrypto/man/EVP_ripemd160.3 +++ b/secure/lib/libcrypto/man/man3/EVP_ripemd160.3 diff --git a/secure/lib/libcrypto/man/EVP_seed_cbc.3 b/secure/lib/libcrypto/man/man3/EVP_seed_cbc.3 index 6dd6417db97fc..6dd6417db97fc 100644 --- a/secure/lib/libcrypto/man/EVP_seed_cbc.3 +++ b/secure/lib/libcrypto/man/man3/EVP_seed_cbc.3 diff --git a/secure/lib/libcrypto/man/EVP_sha1.3 b/secure/lib/libcrypto/man/man3/EVP_sha1.3 index fd688d5f4c04d..fd688d5f4c04d 100644 --- a/secure/lib/libcrypto/man/EVP_sha1.3 +++ b/secure/lib/libcrypto/man/man3/EVP_sha1.3 diff --git a/secure/lib/libcrypto/man/EVP_sha224.3 b/secure/lib/libcrypto/man/man3/EVP_sha224.3 index 3863fcdba82c4..3863fcdba82c4 100644 --- a/secure/lib/libcrypto/man/EVP_sha224.3 +++ b/secure/lib/libcrypto/man/man3/EVP_sha224.3 diff --git a/secure/lib/libcrypto/man/EVP_sha3_224.3 b/secure/lib/libcrypto/man/man3/EVP_sha3_224.3 index 80912d1f03f49..80912d1f03f49 100644 --- a/secure/lib/libcrypto/man/EVP_sha3_224.3 +++ b/secure/lib/libcrypto/man/man3/EVP_sha3_224.3 diff --git a/secure/lib/libcrypto/man/EVP_sm3.3 b/secure/lib/libcrypto/man/man3/EVP_sm3.3 index b43489ffe60ec..b43489ffe60ec 100644 --- a/secure/lib/libcrypto/man/EVP_sm3.3 +++ b/secure/lib/libcrypto/man/man3/EVP_sm3.3 diff --git a/secure/lib/libcrypto/man/EVP_sm4_cbc.3 b/secure/lib/libcrypto/man/man3/EVP_sm4_cbc.3 index f1bb99f33e4a1..f1bb99f33e4a1 100644 --- a/secure/lib/libcrypto/man/EVP_sm4_cbc.3 +++ b/secure/lib/libcrypto/man/man3/EVP_sm4_cbc.3 diff --git a/secure/lib/libcrypto/man/EVP_whirlpool.3 b/secure/lib/libcrypto/man/man3/EVP_whirlpool.3 index 3b8c83942c320..3b8c83942c320 100644 --- a/secure/lib/libcrypto/man/EVP_whirlpool.3 +++ b/secure/lib/libcrypto/man/man3/EVP_whirlpool.3 diff --git a/secure/lib/libcrypto/man/HMAC.3 b/secure/lib/libcrypto/man/man3/HMAC.3 index 4ff9e1ddcc849..4ff9e1ddcc849 100644 --- a/secure/lib/libcrypto/man/HMAC.3 +++ b/secure/lib/libcrypto/man/man3/HMAC.3 diff --git a/secure/lib/libcrypto/man/MD5.3 b/secure/lib/libcrypto/man/man3/MD5.3 index 3d127a9e504ff..3d127a9e504ff 100644 --- a/secure/lib/libcrypto/man/MD5.3 +++ b/secure/lib/libcrypto/man/man3/MD5.3 diff --git a/secure/lib/libcrypto/man/MDC2_Init.3 b/secure/lib/libcrypto/man/man3/MDC2_Init.3 index eec665c127048..eec665c127048 100644 --- a/secure/lib/libcrypto/man/MDC2_Init.3 +++ b/secure/lib/libcrypto/man/man3/MDC2_Init.3 diff --git a/secure/lib/libcrypto/man/man3/Makefile b/secure/lib/libcrypto/man/man3/Makefile new file mode 100644 index 0000000000000..da6c0c8a8e881 --- /dev/null +++ b/secure/lib/libcrypto/man/man3/Makefile @@ -0,0 +1,3806 @@ +# $FreeBSD$ +MAN+= ADMISSIONS.3 +MAN+= ASN1_INTEGER_get_int64.3 +MAN+= ASN1_ITEM_lookup.3 +MAN+= ASN1_OBJECT_new.3 +MAN+= ASN1_STRING_TABLE_add.3 +MAN+= ASN1_STRING_length.3 +MAN+= ASN1_STRING_new.3 +MAN+= ASN1_STRING_print_ex.3 +MAN+= ASN1_TIME_set.3 +MAN+= ASN1_TYPE_get.3 +MAN+= ASN1_generate_nconf.3 +MAN+= ASYNC_WAIT_CTX_new.3 +MAN+= ASYNC_start_job.3 +MAN+= BF_encrypt.3 +MAN+= BIO_ADDR.3 +MAN+= BIO_ADDRINFO.3 +MAN+= BIO_connect.3 +MAN+= BIO_ctrl.3 +MAN+= BIO_f_base64.3 +MAN+= BIO_f_buffer.3 +MAN+= BIO_f_cipher.3 +MAN+= BIO_f_md.3 +MAN+= BIO_f_null.3 +MAN+= BIO_f_ssl.3 +MAN+= BIO_find_type.3 +MAN+= BIO_get_data.3 +MAN+= BIO_get_ex_new_index.3 +MAN+= BIO_meth_new.3 +MAN+= BIO_new.3 +MAN+= BIO_new_CMS.3 +MAN+= BIO_parse_hostserv.3 +MAN+= BIO_printf.3 +MAN+= BIO_push.3 +MAN+= BIO_read.3 +MAN+= BIO_s_accept.3 +MAN+= BIO_s_bio.3 +MAN+= BIO_s_connect.3 +MAN+= BIO_s_fd.3 +MAN+= BIO_s_file.3 +MAN+= BIO_s_mem.3 +MAN+= BIO_s_null.3 +MAN+= BIO_s_socket.3 +MAN+= BIO_set_callback.3 +MAN+= BIO_should_retry.3 +MAN+= BN_BLINDING_new.3 +MAN+= BN_CTX_new.3 +MAN+= BN_CTX_start.3 +MAN+= BN_add.3 +MAN+= BN_add_word.3 +MAN+= BN_bn2bin.3 +MAN+= BN_cmp.3 +MAN+= BN_copy.3 +MAN+= BN_generate_prime.3 +MAN+= BN_mod_inverse.3 +MAN+= BN_mod_mul_montgomery.3 +MAN+= BN_mod_mul_reciprocal.3 +MAN+= BN_new.3 +MAN+= BN_num_bytes.3 +MAN+= BN_rand.3 +MAN+= BN_security_bits.3 +MAN+= BN_set_bit.3 +MAN+= BN_swap.3 +MAN+= BN_zero.3 +MAN+= BUF_MEM_new.3 +MAN+= CMS_add0_cert.3 +MAN+= CMS_add1_recipient_cert.3 +MAN+= CMS_add1_signer.3 +MAN+= CMS_compress.3 +MAN+= CMS_decrypt.3 +MAN+= CMS_encrypt.3 +MAN+= CMS_final.3 +MAN+= CMS_get0_RecipientInfos.3 +MAN+= CMS_get0_SignerInfos.3 +MAN+= CMS_get0_type.3 +MAN+= CMS_get1_ReceiptRequest.3 +MAN+= CMS_sign.3 +MAN+= CMS_sign_receipt.3 +MAN+= CMS_uncompress.3 +MAN+= CMS_verify.3 +MAN+= CMS_verify_receipt.3 +MAN+= CONF_modules_free.3 +MAN+= CONF_modules_load_file.3 +MAN+= CRYPTO_THREAD_run_once.3 +MAN+= CRYPTO_get_ex_new_index.3 +MAN+= CRYPTO_memcmp.3 +MAN+= CTLOG_STORE_get0_log_by_id.3 +MAN+= CTLOG_STORE_new.3 +MAN+= CTLOG_new.3 +MAN+= CT_POLICY_EVAL_CTX_new.3 +MAN+= DEFINE_STACK_OF.3 +MAN+= DES_random_key.3 +MAN+= DH_generate_key.3 +MAN+= DH_generate_parameters.3 +MAN+= DH_get0_pqg.3 +MAN+= DH_get_1024_160.3 +MAN+= DH_meth_new.3 +MAN+= DH_new.3 +MAN+= DH_new_by_nid.3 +MAN+= DH_set_method.3 +MAN+= DH_size.3 +MAN+= DSA_SIG_new.3 +MAN+= DSA_do_sign.3 +MAN+= DSA_dup_DH.3 +MAN+= DSA_generate_key.3 +MAN+= DSA_generate_parameters.3 +MAN+= DSA_get0_pqg.3 +MAN+= DSA_meth_new.3 +MAN+= DSA_new.3 +MAN+= DSA_set_method.3 +MAN+= DSA_sign.3 +MAN+= DSA_size.3 +MAN+= DTLS_get_data_mtu.3 +MAN+= DTLS_set_timer_cb.3 +MAN+= DTLSv1_listen.3 +MAN+= ECDSA_SIG_new.3 +MAN+= ECPKParameters_print.3 +MAN+= EC_GFp_simple_method.3 +MAN+= EC_GROUP_copy.3 +MAN+= EC_GROUP_new.3 +MAN+= EC_KEY_get_enc_flags.3 +MAN+= EC_KEY_new.3 +MAN+= EC_POINT_add.3 +MAN+= EC_POINT_new.3 +MAN+= ENGINE_add.3 +MAN+= ERR_GET_LIB.3 +MAN+= ERR_clear_error.3 +MAN+= ERR_error_string.3 +MAN+= ERR_get_error.3 +MAN+= ERR_load_crypto_strings.3 +MAN+= ERR_load_strings.3 +MAN+= ERR_print_errors.3 +MAN+= ERR_put_error.3 +MAN+= ERR_remove_state.3 +MAN+= ERR_set_mark.3 +MAN+= EVP_BytesToKey.3 +MAN+= EVP_CIPHER_CTX_get_cipher_data.3 +MAN+= EVP_CIPHER_meth_new.3 +MAN+= EVP_DigestInit.3 +MAN+= EVP_DigestSignInit.3 +MAN+= EVP_DigestVerifyInit.3 +MAN+= EVP_EncodeInit.3 +MAN+= EVP_EncryptInit.3 +MAN+= EVP_MD_meth_new.3 +MAN+= EVP_OpenInit.3 +MAN+= EVP_PKEY_ASN1_METHOD.3 +MAN+= EVP_PKEY_CTX_ctrl.3 +MAN+= EVP_PKEY_CTX_new.3 +MAN+= EVP_PKEY_CTX_set1_pbe_pass.3 +MAN+= EVP_PKEY_CTX_set_hkdf_md.3 +MAN+= EVP_PKEY_CTX_set_rsa_pss_keygen_md.3 +MAN+= EVP_PKEY_CTX_set_scrypt_N.3 +MAN+= EVP_PKEY_CTX_set_tls1_prf_md.3 +MAN+= EVP_PKEY_asn1_get_count.3 +MAN+= EVP_PKEY_cmp.3 +MAN+= EVP_PKEY_decrypt.3 +MAN+= EVP_PKEY_derive.3 +MAN+= EVP_PKEY_encrypt.3 +MAN+= EVP_PKEY_get_default_digest_nid.3 +MAN+= EVP_PKEY_keygen.3 +MAN+= EVP_PKEY_meth_get_count.3 +MAN+= EVP_PKEY_meth_new.3 +MAN+= EVP_PKEY_new.3 +MAN+= EVP_PKEY_print_private.3 +MAN+= EVP_PKEY_set1_RSA.3 +MAN+= EVP_PKEY_sign.3 +MAN+= EVP_PKEY_verify.3 +MAN+= EVP_PKEY_verify_recover.3 +MAN+= EVP_SealInit.3 +MAN+= EVP_SignInit.3 +MAN+= EVP_VerifyInit.3 +MAN+= EVP_aes.3 +MAN+= EVP_aria.3 +MAN+= EVP_bf_cbc.3 +MAN+= EVP_blake2b512.3 +MAN+= EVP_camellia.3 +MAN+= EVP_cast5_cbc.3 +MAN+= EVP_chacha20.3 +MAN+= EVP_des.3 +MAN+= EVP_desx_cbc.3 +MAN+= EVP_idea_cbc.3 +MAN+= EVP_md2.3 +MAN+= EVP_md4.3 +MAN+= EVP_md5.3 +MAN+= EVP_mdc2.3 +MAN+= EVP_rc2_cbc.3 +MAN+= EVP_rc4.3 +MAN+= EVP_rc5_32_12_16_cbc.3 +MAN+= EVP_ripemd160.3 +MAN+= EVP_seed_cbc.3 +MAN+= EVP_sha1.3 +MAN+= EVP_sha224.3 +MAN+= EVP_sha3_224.3 +MAN+= EVP_sm3.3 +MAN+= EVP_sm4_cbc.3 +MAN+= EVP_whirlpool.3 +MAN+= HMAC.3 +MAN+= MD5.3 +MAN+= MDC2_Init.3 +MAN+= OBJ_nid2obj.3 +MAN+= OCSP_REQUEST_new.3 +MAN+= OCSP_cert_to_id.3 +MAN+= OCSP_request_add1_nonce.3 +MAN+= OCSP_resp_find_status.3 +MAN+= OCSP_response_status.3 +MAN+= OCSP_sendreq_new.3 +MAN+= OPENSSL_Applink.3 +MAN+= OPENSSL_LH_COMPFUNC.3 +MAN+= OPENSSL_LH_stats.3 +MAN+= OPENSSL_VERSION_NUMBER.3 +MAN+= OPENSSL_config.3 +MAN+= OPENSSL_fork_prepare.3 +MAN+= OPENSSL_ia32cap.3 +MAN+= OPENSSL_init_crypto.3 +MAN+= OPENSSL_init_ssl.3 +MAN+= OPENSSL_instrument_bus.3 +MAN+= OPENSSL_load_builtin_modules.3 +MAN+= OPENSSL_malloc.3 +MAN+= OPENSSL_secure_malloc.3 +MAN+= OSSL_STORE_INFO.3 +MAN+= OSSL_STORE_LOADER.3 +MAN+= OSSL_STORE_SEARCH.3 +MAN+= OSSL_STORE_expect.3 +MAN+= OSSL_STORE_open.3 +MAN+= OpenSSL_add_all_algorithms.3 +MAN+= PEM_bytes_read_bio.3 +MAN+= PEM_read.3 +MAN+= PEM_read_CMS.3 +MAN+= PEM_read_bio_PrivateKey.3 +MAN+= PEM_read_bio_ex.3 +MAN+= PEM_write_bio_CMS_stream.3 +MAN+= PEM_write_bio_PKCS7_stream.3 +MAN+= PKCS12_create.3 +MAN+= PKCS12_newpass.3 +MAN+= PKCS12_parse.3 +MAN+= PKCS5_PBKDF2_HMAC.3 +MAN+= PKCS7_decrypt.3 +MAN+= PKCS7_encrypt.3 +MAN+= PKCS7_sign.3 +MAN+= PKCS7_sign_add_signer.3 +MAN+= PKCS7_verify.3 +MAN+= RAND_DRBG_generate.3 +MAN+= RAND_DRBG_get0_master.3 +MAN+= RAND_DRBG_new.3 +MAN+= RAND_DRBG_reseed.3 +MAN+= RAND_DRBG_set_callbacks.3 +MAN+= RAND_DRBG_set_ex_data.3 +MAN+= RAND_add.3 +MAN+= RAND_bytes.3 +MAN+= RAND_cleanup.3 +MAN+= RAND_egd.3 +MAN+= RAND_load_file.3 +MAN+= RAND_set_rand_method.3 +MAN+= RC4_set_key.3 +MAN+= RIPEMD160_Init.3 +MAN+= RSA_blinding_on.3 +MAN+= RSA_check_key.3 +MAN+= RSA_generate_key.3 +MAN+= RSA_get0_key.3 +MAN+= RSA_meth_new.3 +MAN+= RSA_new.3 +MAN+= RSA_padding_add_PKCS1_type_1.3 +MAN+= RSA_print.3 +MAN+= RSA_private_encrypt.3 +MAN+= RSA_public_encrypt.3 +MAN+= RSA_set_method.3 +MAN+= RSA_sign.3 +MAN+= RSA_sign_ASN1_OCTET_STRING.3 +MAN+= RSA_size.3 +MAN+= SCT_new.3 +MAN+= SCT_print.3 +MAN+= SCT_validate.3 +MAN+= SHA256_Init.3 +MAN+= SMIME_read_CMS.3 +MAN+= SMIME_read_PKCS7.3 +MAN+= SMIME_write_CMS.3 +MAN+= SMIME_write_PKCS7.3 +MAN+= SSL_CIPHER_get_name.3 +MAN+= SSL_COMP_add_compression_method.3 +MAN+= SSL_CONF_CTX_new.3 +MAN+= SSL_CONF_CTX_set1_prefix.3 +MAN+= SSL_CONF_CTX_set_flags.3 +MAN+= SSL_CONF_CTX_set_ssl_ctx.3 +MAN+= SSL_CONF_cmd.3 +MAN+= SSL_CONF_cmd_argv.3 +MAN+= SSL_CTX_add1_chain_cert.3 +MAN+= SSL_CTX_add_extra_chain_cert.3 +MAN+= SSL_CTX_add_session.3 +MAN+= SSL_CTX_config.3 +MAN+= SSL_CTX_ctrl.3 +MAN+= SSL_CTX_dane_enable.3 +MAN+= SSL_CTX_flush_sessions.3 +MAN+= SSL_CTX_free.3 +MAN+= SSL_CTX_get0_param.3 +MAN+= SSL_CTX_get_verify_mode.3 +MAN+= SSL_CTX_has_client_custom_ext.3 +MAN+= SSL_CTX_load_verify_locations.3 +MAN+= SSL_CTX_new.3 +MAN+= SSL_CTX_sess_number.3 +MAN+= SSL_CTX_sess_set_cache_size.3 +MAN+= SSL_CTX_sess_set_get_cb.3 +MAN+= SSL_CTX_sessions.3 +MAN+= SSL_CTX_set0_CA_list.3 +MAN+= SSL_CTX_set1_curves.3 +MAN+= SSL_CTX_set1_sigalgs.3 +MAN+= SSL_CTX_set1_verify_cert_store.3 +MAN+= SSL_CTX_set_alpn_select_cb.3 +MAN+= SSL_CTX_set_cert_cb.3 +MAN+= SSL_CTX_set_cert_store.3 +MAN+= SSL_CTX_set_cert_verify_callback.3 +MAN+= SSL_CTX_set_cipher_list.3 +MAN+= SSL_CTX_set_client_cert_cb.3 +MAN+= SSL_CTX_set_client_hello_cb.3 +MAN+= SSL_CTX_set_ct_validation_callback.3 +MAN+= SSL_CTX_set_ctlog_list_file.3 +MAN+= SSL_CTX_set_default_passwd_cb.3 +MAN+= SSL_CTX_set_ex_data.3 +MAN+= SSL_CTX_set_generate_session_id.3 +MAN+= SSL_CTX_set_info_callback.3 +MAN+= SSL_CTX_set_keylog_callback.3 +MAN+= SSL_CTX_set_max_cert_list.3 +MAN+= SSL_CTX_set_min_proto_version.3 +MAN+= SSL_CTX_set_mode.3 +MAN+= SSL_CTX_set_msg_callback.3 +MAN+= SSL_CTX_set_num_tickets.3 +MAN+= SSL_CTX_set_options.3 +MAN+= SSL_CTX_set_psk_client_callback.3 +MAN+= SSL_CTX_set_quiet_shutdown.3 +MAN+= SSL_CTX_set_read_ahead.3 +MAN+= SSL_CTX_set_record_padding_callback.3 +MAN+= SSL_CTX_set_security_level.3 +MAN+= SSL_CTX_set_session_cache_mode.3 +MAN+= SSL_CTX_set_session_id_context.3 +MAN+= SSL_CTX_set_session_ticket_cb.3 +MAN+= SSL_CTX_set_split_send_fragment.3 +MAN+= SSL_CTX_set_ssl_version.3 +MAN+= SSL_CTX_set_stateless_cookie_generate_cb.3 +MAN+= SSL_CTX_set_timeout.3 +MAN+= SSL_CTX_set_tlsext_servername_callback.3 +MAN+= SSL_CTX_set_tlsext_status_cb.3 +MAN+= SSL_CTX_set_tlsext_ticket_key_cb.3 +MAN+= SSL_CTX_set_tlsext_use_srtp.3 +MAN+= SSL_CTX_set_tmp_dh_callback.3 +MAN+= SSL_CTX_set_verify.3 +MAN+= SSL_CTX_use_certificate.3 +MAN+= SSL_CTX_use_psk_identity_hint.3 +MAN+= SSL_CTX_use_serverinfo.3 +MAN+= SSL_SESSION_free.3 +MAN+= SSL_SESSION_get0_cipher.3 +MAN+= SSL_SESSION_get0_hostname.3 +MAN+= SSL_SESSION_get0_id_context.3 +MAN+= SSL_SESSION_get0_peer.3 +MAN+= SSL_SESSION_get_compress_id.3 +MAN+= SSL_SESSION_get_ex_data.3 +MAN+= SSL_SESSION_get_protocol_version.3 +MAN+= SSL_SESSION_get_time.3 +MAN+= SSL_SESSION_has_ticket.3 +MAN+= SSL_SESSION_is_resumable.3 +MAN+= SSL_SESSION_print.3 +MAN+= SSL_SESSION_set1_id.3 +MAN+= SSL_accept.3 +MAN+= SSL_alert_type_string.3 +MAN+= SSL_alloc_buffers.3 +MAN+= SSL_check_chain.3 +MAN+= SSL_clear.3 +MAN+= SSL_connect.3 +MAN+= SSL_do_handshake.3 +MAN+= SSL_export_keying_material.3 +MAN+= SSL_extension_supported.3 +MAN+= SSL_free.3 +MAN+= SSL_get0_peer_scts.3 +MAN+= SSL_get_SSL_CTX.3 +MAN+= SSL_get_all_async_fds.3 +MAN+= SSL_get_ciphers.3 +MAN+= SSL_get_client_random.3 +MAN+= SSL_get_current_cipher.3 +MAN+= SSL_get_default_timeout.3 +MAN+= SSL_get_error.3 +MAN+= SSL_get_extms_support.3 +MAN+= SSL_get_fd.3 +MAN+= SSL_get_peer_cert_chain.3 +MAN+= SSL_get_peer_certificate.3 +MAN+= SSL_get_peer_signature_nid.3 +MAN+= SSL_get_peer_tmp_key.3 +MAN+= SSL_get_psk_identity.3 +MAN+= SSL_get_rbio.3 +MAN+= SSL_get_session.3 +MAN+= SSL_get_shared_sigalgs.3 +MAN+= SSL_get_verify_result.3 +MAN+= SSL_get_version.3 +MAN+= SSL_in_init.3 +MAN+= SSL_key_update.3 +MAN+= SSL_library_init.3 +MAN+= SSL_load_client_CA_file.3 +MAN+= SSL_new.3 +MAN+= SSL_pending.3 +MAN+= SSL_read.3 +MAN+= SSL_read_early_data.3 +MAN+= SSL_rstate_string.3 +MAN+= SSL_session_reused.3 +MAN+= SSL_set1_host.3 +MAN+= SSL_set_bio.3 +MAN+= SSL_set_connect_state.3 +MAN+= SSL_set_fd.3 +MAN+= SSL_set_session.3 +MAN+= SSL_set_shutdown.3 +MAN+= SSL_set_verify_result.3 +MAN+= SSL_shutdown.3 +MAN+= SSL_state_string.3 +MAN+= SSL_want.3 +MAN+= SSL_write.3 +MAN+= UI_STRING.3 +MAN+= UI_UTIL_read_pw.3 +MAN+= UI_create_method.3 +MAN+= UI_new.3 +MAN+= X509V3_get_d2i.3 +MAN+= X509_ALGOR_dup.3 +MAN+= X509_CRL_get0_by_serial.3 +MAN+= X509_EXTENSION_set_object.3 +MAN+= X509_LOOKUP_hash_dir.3 +MAN+= X509_LOOKUP_meth_new.3 +MAN+= X509_NAME_ENTRY_get_object.3 +MAN+= X509_NAME_add_entry_by_txt.3 +MAN+= X509_NAME_get0_der.3 +MAN+= X509_NAME_get_index_by_NID.3 +MAN+= X509_NAME_print_ex.3 +MAN+= X509_PUBKEY_new.3 +MAN+= X509_SIG_get0.3 +MAN+= X509_STORE_CTX_get_error.3 +MAN+= X509_STORE_CTX_new.3 +MAN+= X509_STORE_CTX_set_verify_cb.3 +MAN+= X509_STORE_add_cert.3 +MAN+= X509_STORE_get0_param.3 +MAN+= X509_STORE_new.3 +MAN+= X509_STORE_set_verify_cb_func.3 +MAN+= X509_VERIFY_PARAM_set_flags.3 +MAN+= X509_check_ca.3 +MAN+= X509_check_host.3 +MAN+= X509_check_issued.3 +MAN+= X509_check_private_key.3 +MAN+= X509_cmp.3 +MAN+= X509_cmp_time.3 +MAN+= X509_digest.3 +MAN+= X509_dup.3 +MAN+= X509_get0_notBefore.3 +MAN+= X509_get0_signature.3 +MAN+= X509_get0_uids.3 +MAN+= X509_get_extension_flags.3 +MAN+= X509_get_pubkey.3 +MAN+= X509_get_serialNumber.3 +MAN+= X509_get_subject_name.3 +MAN+= X509_get_version.3 +MAN+= X509_new.3 +MAN+= X509_sign.3 +MAN+= X509_verify_cert.3 +MAN+= X509v3_get_ext_by_NID.3 +MAN+= d2i_DHparams.3 +MAN+= d2i_PKCS8PrivateKey_bio.3 +MAN+= d2i_PrivateKey.3 +MAN+= d2i_SSL_SESSION.3 +MAN+= d2i_X509.3 +MAN+= i2d_CMS_bio_stream.3 +MAN+= i2d_PKCS7_bio_stream.3 +MAN+= i2d_re_X509_tbs.3 +MAN+= o2i_SCT_LIST.3 +MLINKS+= ADMISSIONS.3 ADMISSIONS_get0_admissionAuthority.3 +MLINKS+= ADMISSIONS.3 ADMISSIONS_get0_namingAuthority.3 +MLINKS+= ADMISSIONS.3 ADMISSIONS_get0_professionInfos.3 +MLINKS+= ADMISSIONS.3 ADMISSIONS_set0_admissionAuthority.3 +MLINKS+= ADMISSIONS.3 ADMISSIONS_set0_namingAuthority.3 +MLINKS+= ADMISSIONS.3 ADMISSIONS_set0_professionInfos.3 +MLINKS+= ADMISSIONS.3 ADMISSION_SYNTAX.3 +MLINKS+= ADMISSIONS.3 ADMISSION_SYNTAX_get0_admissionAuthority.3 +MLINKS+= ADMISSIONS.3 ADMISSION_SYNTAX_get0_contentsOfAdmissions.3 +MLINKS+= ADMISSIONS.3 ADMISSION_SYNTAX_set0_admissionAuthority.3 +MLINKS+= ADMISSIONS.3 ADMISSION_SYNTAX_set0_contentsOfAdmissions.3 +MLINKS+= ADMISSIONS.3 NAMING_AUTHORITY.3 +MLINKS+= ADMISSIONS.3 NAMING_AUTHORITY_get0_authorityId.3 +MLINKS+= ADMISSIONS.3 NAMING_AUTHORITY_get0_authorityText.3 +MLINKS+= ADMISSIONS.3 NAMING_AUTHORITY_get0_authorityURL.3 +MLINKS+= ADMISSIONS.3 NAMING_AUTHORITY_set0_authorityId.3 +MLINKS+= ADMISSIONS.3 NAMING_AUTHORITY_set0_authorityText.3 +MLINKS+= ADMISSIONS.3 NAMING_AUTHORITY_set0_authorityURL.3 +MLINKS+= ADMISSIONS.3 PROFESSION_INFO.3 +MLINKS+= ADMISSIONS.3 PROFESSION_INFOS.3 +MLINKS+= ADMISSIONS.3 PROFESSION_INFO_get0_addProfessionInfo.3 +MLINKS+= ADMISSIONS.3 PROFESSION_INFO_get0_namingAuthority.3 +MLINKS+= ADMISSIONS.3 PROFESSION_INFO_get0_professionItems.3 +MLINKS+= ADMISSIONS.3 PROFESSION_INFO_get0_professionOIDs.3 +MLINKS+= ADMISSIONS.3 PROFESSION_INFO_get0_registrationNumber.3 +MLINKS+= ADMISSIONS.3 PROFESSION_INFO_set0_addProfessionInfo.3 +MLINKS+= ADMISSIONS.3 PROFESSION_INFO_set0_namingAuthority.3 +MLINKS+= ADMISSIONS.3 PROFESSION_INFO_set0_professionItems.3 +MLINKS+= ADMISSIONS.3 PROFESSION_INFO_set0_professionOIDs.3 +MLINKS+= ADMISSIONS.3 PROFESSION_INFO_set0_registrationNumber.3 +MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_ENUMERATED_get.3 +MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_ENUMERATED_get_int64.3 +MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_ENUMERATED_set.3 +MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_ENUMERATED_set_int64.3 +MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_ENUMERATED_to_BN.3 +MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_INTEGER_get.3 +MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_INTEGER_get_uint64.3 +MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_INTEGER_set.3 +MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_INTEGER_set_int64.3 +MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_INTEGER_set_uint64.3 +MLINKS+= ASN1_INTEGER_get_int64.3 ASN1_INTEGER_to_BN.3 +MLINKS+= ASN1_INTEGER_get_int64.3 BN_to_ASN1_ENUMERATED.3 +MLINKS+= ASN1_INTEGER_get_int64.3 BN_to_ASN1_INTEGER.3 +MLINKS+= ASN1_ITEM_lookup.3 ASN1_ITEM_get.3 +MLINKS+= ASN1_OBJECT_new.3 ASN1_OBJECT_free.3 +MLINKS+= ASN1_STRING_TABLE_add.3 ASN1_STRING_TABLE.3 +MLINKS+= ASN1_STRING_TABLE_add.3 ASN1_STRING_TABLE_cleanup.3 +MLINKS+= ASN1_STRING_TABLE_add.3 ASN1_STRING_TABLE_get.3 +MLINKS+= ASN1_STRING_length.3 ASN1_STRING_cmp.3 +MLINKS+= ASN1_STRING_length.3 ASN1_STRING_data.3 +MLINKS+= ASN1_STRING_length.3 ASN1_STRING_dup.3 +MLINKS+= ASN1_STRING_length.3 ASN1_STRING_get0_data.3 +MLINKS+= ASN1_STRING_length.3 ASN1_STRING_set.3 +MLINKS+= ASN1_STRING_length.3 ASN1_STRING_to_UTF8.3 +MLINKS+= ASN1_STRING_length.3 ASN1_STRING_type.3 +MLINKS+= ASN1_STRING_new.3 ASN1_STRING_free.3 +MLINKS+= ASN1_STRING_new.3 ASN1_STRING_type_new.3 +MLINKS+= ASN1_STRING_print_ex.3 ASN1_STRING_print.3 +MLINKS+= ASN1_STRING_print_ex.3 ASN1_STRING_print_ex_fp.3 +MLINKS+= ASN1_STRING_print_ex.3 ASN1_tag2str.3 +MLINKS+= ASN1_TIME_set.3 ASN1_GENERALIZEDTIME_adj.3 +MLINKS+= ASN1_TIME_set.3 ASN1_GENERALIZEDTIME_check.3 +MLINKS+= ASN1_TIME_set.3 ASN1_GENERALIZEDTIME_print.3 +MLINKS+= ASN1_TIME_set.3 ASN1_GENERALIZEDTIME_set.3 +MLINKS+= ASN1_TIME_set.3 ASN1_GENERALIZEDTIME_set_string.3 +MLINKS+= ASN1_TIME_set.3 ASN1_TIME_adj.3 +MLINKS+= ASN1_TIME_set.3 ASN1_TIME_check.3 +MLINKS+= ASN1_TIME_set.3 ASN1_TIME_cmp_time_t.3 +MLINKS+= ASN1_TIME_set.3 ASN1_TIME_compare.3 +MLINKS+= ASN1_TIME_set.3 ASN1_TIME_diff.3 +MLINKS+= ASN1_TIME_set.3 ASN1_TIME_normalize.3 +MLINKS+= ASN1_TIME_set.3 ASN1_TIME_print.3 +MLINKS+= ASN1_TIME_set.3 ASN1_TIME_set_string.3 +MLINKS+= ASN1_TIME_set.3 ASN1_TIME_set_string_X509.3 +MLINKS+= ASN1_TIME_set.3 ASN1_TIME_to_generalizedtime.3 +MLINKS+= ASN1_TIME_set.3 ASN1_TIME_to_tm.3 +MLINKS+= ASN1_TIME_set.3 ASN1_UTCTIME_adj.3 +MLINKS+= ASN1_TIME_set.3 ASN1_UTCTIME_check.3 +MLINKS+= ASN1_TIME_set.3 ASN1_UTCTIME_cmp_time_t.3 +MLINKS+= ASN1_TIME_set.3 ASN1_UTCTIME_print.3 +MLINKS+= ASN1_TIME_set.3 ASN1_UTCTIME_set.3 +MLINKS+= ASN1_TIME_set.3 ASN1_UTCTIME_set_string.3 +MLINKS+= ASN1_TYPE_get.3 ASN1_TYPE_cmp.3 +MLINKS+= ASN1_TYPE_get.3 ASN1_TYPE_pack_sequence.3 +MLINKS+= ASN1_TYPE_get.3 ASN1_TYPE_set.3 +MLINKS+= ASN1_TYPE_get.3 ASN1_TYPE_set1.3 +MLINKS+= ASN1_TYPE_get.3 ASN1_TYPE_unpack_sequence.3 +MLINKS+= ASN1_generate_nconf.3 ASN1_generate_v3.3 +MLINKS+= ASYNC_WAIT_CTX_new.3 ASYNC_WAIT_CTX_clear_fd.3 +MLINKS+= ASYNC_WAIT_CTX_new.3 ASYNC_WAIT_CTX_free.3 +MLINKS+= ASYNC_WAIT_CTX_new.3 ASYNC_WAIT_CTX_get_all_fds.3 +MLINKS+= ASYNC_WAIT_CTX_new.3 ASYNC_WAIT_CTX_get_changed_fds.3 +MLINKS+= ASYNC_WAIT_CTX_new.3 ASYNC_WAIT_CTX_get_fd.3 +MLINKS+= ASYNC_WAIT_CTX_new.3 ASYNC_WAIT_CTX_set_wait_fd.3 +MLINKS+= ASYNC_start_job.3 ASYNC_block_pause.3 +MLINKS+= ASYNC_start_job.3 ASYNC_cleanup_thread.3 +MLINKS+= ASYNC_start_job.3 ASYNC_get_current_job.3 +MLINKS+= ASYNC_start_job.3 ASYNC_get_wait_ctx.3 +MLINKS+= ASYNC_start_job.3 ASYNC_init_thread.3 +MLINKS+= ASYNC_start_job.3 ASYNC_is_capable.3 +MLINKS+= ASYNC_start_job.3 ASYNC_pause_job.3 +MLINKS+= ASYNC_start_job.3 ASYNC_unblock_pause.3 +MLINKS+= BF_encrypt.3 BF_cbc_encrypt.3 +MLINKS+= BF_encrypt.3 BF_cfb64_encrypt.3 +MLINKS+= BF_encrypt.3 BF_decrypt.3 +MLINKS+= BF_encrypt.3 BF_ecb_encrypt.3 +MLINKS+= BF_encrypt.3 BF_ofb64_encrypt.3 +MLINKS+= BF_encrypt.3 BF_options.3 +MLINKS+= BF_encrypt.3 BF_set_key.3 +MLINKS+= BIO_ADDR.3 BIO_ADDR_clear.3 +MLINKS+= BIO_ADDR.3 BIO_ADDR_family.3 +MLINKS+= BIO_ADDR.3 BIO_ADDR_free.3 +MLINKS+= BIO_ADDR.3 BIO_ADDR_hostname_string.3 +MLINKS+= BIO_ADDR.3 BIO_ADDR_new.3 +MLINKS+= BIO_ADDR.3 BIO_ADDR_path_string.3 +MLINKS+= BIO_ADDR.3 BIO_ADDR_rawaddress.3 +MLINKS+= BIO_ADDR.3 BIO_ADDR_rawmake.3 +MLINKS+= BIO_ADDR.3 BIO_ADDR_rawport.3 +MLINKS+= BIO_ADDR.3 BIO_ADDR_service_string.3 +MLINKS+= BIO_ADDRINFO.3 BIO_ADDRINFO_address.3 +MLINKS+= BIO_ADDRINFO.3 BIO_ADDRINFO_family.3 +MLINKS+= BIO_ADDRINFO.3 BIO_ADDRINFO_free.3 +MLINKS+= BIO_ADDRINFO.3 BIO_ADDRINFO_next.3 +MLINKS+= BIO_ADDRINFO.3 BIO_ADDRINFO_protocol.3 +MLINKS+= BIO_ADDRINFO.3 BIO_ADDRINFO_socktype.3 +MLINKS+= BIO_ADDRINFO.3 BIO_lookup.3 +MLINKS+= BIO_ADDRINFO.3 BIO_lookup_ex.3 +MLINKS+= BIO_ADDRINFO.3 BIO_lookup_type.3 +MLINKS+= BIO_connect.3 BIO_accept_ex.3 +MLINKS+= BIO_connect.3 BIO_bind.3 +MLINKS+= BIO_connect.3 BIO_closesocket.3 +MLINKS+= BIO_connect.3 BIO_listen.3 +MLINKS+= BIO_connect.3 BIO_socket.3 +MLINKS+= BIO_ctrl.3 BIO_callback_ctrl.3 +MLINKS+= BIO_ctrl.3 BIO_ctrl_pending.3 +MLINKS+= BIO_ctrl.3 BIO_ctrl_wpending.3 +MLINKS+= BIO_ctrl.3 BIO_eof.3 +MLINKS+= BIO_ctrl.3 BIO_flush.3 +MLINKS+= BIO_ctrl.3 BIO_get_close.3 +MLINKS+= BIO_ctrl.3 BIO_get_info_callback.3 +MLINKS+= BIO_ctrl.3 BIO_info_cb.3 +MLINKS+= BIO_ctrl.3 BIO_int_ctrl.3 +MLINKS+= BIO_ctrl.3 BIO_pending.3 +MLINKS+= BIO_ctrl.3 BIO_ptr_ctrl.3 +MLINKS+= BIO_ctrl.3 BIO_reset.3 +MLINKS+= BIO_ctrl.3 BIO_seek.3 +MLINKS+= BIO_ctrl.3 BIO_set_close.3 +MLINKS+= BIO_ctrl.3 BIO_set_info_callback.3 +MLINKS+= BIO_ctrl.3 BIO_tell.3 +MLINKS+= BIO_ctrl.3 BIO_wpending.3 +MLINKS+= BIO_f_buffer.3 BIO_get_buffer_num_lines.3 +MLINKS+= BIO_f_buffer.3 BIO_set_buffer_read_data.3 +MLINKS+= BIO_f_buffer.3 BIO_set_buffer_size.3 +MLINKS+= BIO_f_buffer.3 BIO_set_read_buffer_size.3 +MLINKS+= BIO_f_buffer.3 BIO_set_write_buffer_size.3 +MLINKS+= BIO_f_cipher.3 BIO_get_cipher_ctx.3 +MLINKS+= BIO_f_cipher.3 BIO_get_cipher_status.3 +MLINKS+= BIO_f_cipher.3 BIO_set_cipher.3 +MLINKS+= BIO_f_md.3 BIO_get_md.3 +MLINKS+= BIO_f_md.3 BIO_get_md_ctx.3 +MLINKS+= BIO_f_md.3 BIO_set_md.3 +MLINKS+= BIO_f_ssl.3 BIO_do_handshake.3 +MLINKS+= BIO_f_ssl.3 BIO_get_num_renegotiates.3 +MLINKS+= BIO_f_ssl.3 BIO_get_ssl.3 +MLINKS+= BIO_f_ssl.3 BIO_new_buffer_ssl_connect.3 +MLINKS+= BIO_f_ssl.3 BIO_new_ssl.3 +MLINKS+= BIO_f_ssl.3 BIO_new_ssl_connect.3 +MLINKS+= BIO_f_ssl.3 BIO_set_ssl.3 +MLINKS+= BIO_f_ssl.3 BIO_set_ssl_mode.3 +MLINKS+= BIO_f_ssl.3 BIO_set_ssl_renegotiate_bytes.3 +MLINKS+= BIO_f_ssl.3 BIO_set_ssl_renegotiate_timeout.3 +MLINKS+= BIO_f_ssl.3 BIO_ssl_copy_session_id.3 +MLINKS+= BIO_f_ssl.3 BIO_ssl_shutdown.3 +MLINKS+= BIO_find_type.3 BIO_method_type.3 +MLINKS+= BIO_find_type.3 BIO_next.3 +MLINKS+= BIO_get_data.3 BIO_get_init.3 +MLINKS+= BIO_get_data.3 BIO_get_shutdown.3 +MLINKS+= BIO_get_data.3 BIO_set_data.3 +MLINKS+= BIO_get_data.3 BIO_set_init.3 +MLINKS+= BIO_get_data.3 BIO_set_shutdown.3 +MLINKS+= BIO_get_ex_new_index.3 BIO_get_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 BIO_set_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 DH_get_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 DH_get_ex_new_index.3 +MLINKS+= BIO_get_ex_new_index.3 DH_set_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 DSA_get_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 DSA_get_ex_new_index.3 +MLINKS+= BIO_get_ex_new_index.3 DSA_set_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 ECDH_get_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 ECDH_get_ex_new_index.3 +MLINKS+= BIO_get_ex_new_index.3 ECDH_set_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 EC_KEY_get_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 EC_KEY_get_ex_new_index.3 +MLINKS+= BIO_get_ex_new_index.3 EC_KEY_set_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 ENGINE_get_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 ENGINE_get_ex_new_index.3 +MLINKS+= BIO_get_ex_new_index.3 ENGINE_set_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 RSA_get_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 RSA_get_ex_new_index.3 +MLINKS+= BIO_get_ex_new_index.3 RSA_set_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 UI_get_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 UI_get_ex_new_index.3 +MLINKS+= BIO_get_ex_new_index.3 UI_set_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 X509_STORE_CTX_get_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 X509_STORE_CTX_get_ex_new_index.3 +MLINKS+= BIO_get_ex_new_index.3 X509_STORE_CTX_set_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 X509_STORE_get_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 X509_STORE_get_ex_new_index.3 +MLINKS+= BIO_get_ex_new_index.3 X509_STORE_set_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 X509_get_ex_data.3 +MLINKS+= BIO_get_ex_new_index.3 X509_get_ex_new_index.3 +MLINKS+= BIO_get_ex_new_index.3 X509_set_ex_data.3 +MLINKS+= BIO_meth_new.3 BIO_get_new_index.3 +MLINKS+= BIO_meth_new.3 BIO_meth_free.3 +MLINKS+= BIO_meth_new.3 BIO_meth_get_callback_ctrl.3 +MLINKS+= BIO_meth_new.3 BIO_meth_get_create.3 +MLINKS+= BIO_meth_new.3 BIO_meth_get_ctrl.3 +MLINKS+= BIO_meth_new.3 BIO_meth_get_destroy.3 +MLINKS+= BIO_meth_new.3 BIO_meth_get_gets.3 +MLINKS+= BIO_meth_new.3 BIO_meth_get_puts.3 +MLINKS+= BIO_meth_new.3 BIO_meth_get_read.3 +MLINKS+= BIO_meth_new.3 BIO_meth_get_read_ex.3 +MLINKS+= BIO_meth_new.3 BIO_meth_get_write.3 +MLINKS+= BIO_meth_new.3 BIO_meth_get_write_ex.3 +MLINKS+= BIO_meth_new.3 BIO_meth_set_callback_ctrl.3 +MLINKS+= BIO_meth_new.3 BIO_meth_set_create.3 +MLINKS+= BIO_meth_new.3 BIO_meth_set_ctrl.3 +MLINKS+= BIO_meth_new.3 BIO_meth_set_destroy.3 +MLINKS+= BIO_meth_new.3 BIO_meth_set_gets.3 +MLINKS+= BIO_meth_new.3 BIO_meth_set_puts.3 +MLINKS+= BIO_meth_new.3 BIO_meth_set_read.3 +MLINKS+= BIO_meth_new.3 BIO_meth_set_read_ex.3 +MLINKS+= BIO_meth_new.3 BIO_meth_set_write.3 +MLINKS+= BIO_meth_new.3 BIO_meth_set_write_ex.3 +MLINKS+= BIO_new.3 BIO_free.3 +MLINKS+= BIO_new.3 BIO_free_all.3 +MLINKS+= BIO_new.3 BIO_up_ref.3 +MLINKS+= BIO_new.3 BIO_vfree.3 +MLINKS+= BIO_parse_hostserv.3 BIO_hostserv_priorities.3 +MLINKS+= BIO_printf.3 BIO_snprintf.3 +MLINKS+= BIO_printf.3 BIO_vprintf.3 +MLINKS+= BIO_printf.3 BIO_vsnprintf.3 +MLINKS+= BIO_push.3 BIO_pop.3 +MLINKS+= BIO_push.3 BIO_set_next.3 +MLINKS+= BIO_read.3 BIO_gets.3 +MLINKS+= BIO_read.3 BIO_puts.3 +MLINKS+= BIO_read.3 BIO_read_ex.3 +MLINKS+= BIO_read.3 BIO_write.3 +MLINKS+= BIO_read.3 BIO_write_ex.3 +MLINKS+= BIO_s_accept.3 BIO_do_accept.3 +MLINKS+= BIO_s_accept.3 BIO_get_accept_ip_family.3 +MLINKS+= BIO_s_accept.3 BIO_get_accept_name.3 +MLINKS+= BIO_s_accept.3 BIO_get_accept_port.3 +MLINKS+= BIO_s_accept.3 BIO_get_bind_mode.3 +MLINKS+= BIO_s_accept.3 BIO_get_peer_name.3 +MLINKS+= BIO_s_accept.3 BIO_get_peer_port.3 +MLINKS+= BIO_s_accept.3 BIO_new_accept.3 +MLINKS+= BIO_s_accept.3 BIO_set_accept_bios.3 +MLINKS+= BIO_s_accept.3 BIO_set_accept_ip_family.3 +MLINKS+= BIO_s_accept.3 BIO_set_accept_name.3 +MLINKS+= BIO_s_accept.3 BIO_set_accept_port.3 +MLINKS+= BIO_s_accept.3 BIO_set_bind_mode.3 +MLINKS+= BIO_s_accept.3 BIO_set_nbio_accept.3 +MLINKS+= BIO_s_bio.3 BIO_ctrl_get_read_request.3 +MLINKS+= BIO_s_bio.3 BIO_ctrl_get_write_guarantee.3 +MLINKS+= BIO_s_bio.3 BIO_ctrl_reset_read_request.3 +MLINKS+= BIO_s_bio.3 BIO_destroy_bio_pair.3 +MLINKS+= BIO_s_bio.3 BIO_get_read_request.3 +MLINKS+= BIO_s_bio.3 BIO_get_write_buf_size.3 +MLINKS+= BIO_s_bio.3 BIO_get_write_guarantee.3 +MLINKS+= BIO_s_bio.3 BIO_make_bio_pair.3 +MLINKS+= BIO_s_bio.3 BIO_new_bio_pair.3 +MLINKS+= BIO_s_bio.3 BIO_set_write_buf_size.3 +MLINKS+= BIO_s_bio.3 BIO_shutdown_wr.3 +MLINKS+= BIO_s_connect.3 BIO_do_connect.3 +MLINKS+= BIO_s_connect.3 BIO_get_conn_address.3 +MLINKS+= BIO_s_connect.3 BIO_get_conn_hostname.3 +MLINKS+= BIO_s_connect.3 BIO_get_conn_ip_family.3 +MLINKS+= BIO_s_connect.3 BIO_get_conn_port.3 +MLINKS+= BIO_s_connect.3 BIO_new_connect.3 +MLINKS+= BIO_s_connect.3 BIO_set_conn_address.3 +MLINKS+= BIO_s_connect.3 BIO_set_conn_hostname.3 +MLINKS+= BIO_s_connect.3 BIO_set_conn_ip_family.3 +MLINKS+= BIO_s_connect.3 BIO_set_conn_port.3 +MLINKS+= BIO_s_connect.3 BIO_set_nbio.3 +MLINKS+= BIO_s_fd.3 BIO_get_fd.3 +MLINKS+= BIO_s_fd.3 BIO_new_fd.3 +MLINKS+= BIO_s_fd.3 BIO_set_fd.3 +MLINKS+= BIO_s_file.3 BIO_append_filename.3 +MLINKS+= BIO_s_file.3 BIO_get_fp.3 +MLINKS+= BIO_s_file.3 BIO_new_file.3 +MLINKS+= BIO_s_file.3 BIO_new_fp.3 +MLINKS+= BIO_s_file.3 BIO_read_filename.3 +MLINKS+= BIO_s_file.3 BIO_rw_filename.3 +MLINKS+= BIO_s_file.3 BIO_set_fp.3 +MLINKS+= BIO_s_file.3 BIO_write_filename.3 +MLINKS+= BIO_s_mem.3 BIO_get_mem_data.3 +MLINKS+= BIO_s_mem.3 BIO_get_mem_ptr.3 +MLINKS+= BIO_s_mem.3 BIO_new_mem_buf.3 +MLINKS+= BIO_s_mem.3 BIO_s_secmem.3 +MLINKS+= BIO_s_mem.3 BIO_set_mem_buf.3 +MLINKS+= BIO_s_mem.3 BIO_set_mem_eof_return.3 +MLINKS+= BIO_s_socket.3 BIO_new_socket.3 +MLINKS+= BIO_set_callback.3 BIO_callback_fn.3 +MLINKS+= BIO_set_callback.3 BIO_callback_fn_ex.3 +MLINKS+= BIO_set_callback.3 BIO_debug_callback.3 +MLINKS+= BIO_set_callback.3 BIO_get_callback.3 +MLINKS+= BIO_set_callback.3 BIO_get_callback_arg.3 +MLINKS+= BIO_set_callback.3 BIO_get_callback_ex.3 +MLINKS+= BIO_set_callback.3 BIO_set_callback_arg.3 +MLINKS+= BIO_set_callback.3 BIO_set_callback_ex.3 +MLINKS+= BIO_should_retry.3 BIO_get_retry_BIO.3 +MLINKS+= BIO_should_retry.3 BIO_get_retry_reason.3 +MLINKS+= BIO_should_retry.3 BIO_retry_type.3 +MLINKS+= BIO_should_retry.3 BIO_set_retry_reason.3 +MLINKS+= BIO_should_retry.3 BIO_should_io_special.3 +MLINKS+= BIO_should_retry.3 BIO_should_read.3 +MLINKS+= BIO_should_retry.3 BIO_should_write.3 +MLINKS+= BN_BLINDING_new.3 BN_BLINDING_convert.3 +MLINKS+= BN_BLINDING_new.3 BN_BLINDING_convert_ex.3 +MLINKS+= BN_BLINDING_new.3 BN_BLINDING_create_param.3 +MLINKS+= BN_BLINDING_new.3 BN_BLINDING_free.3 +MLINKS+= BN_BLINDING_new.3 BN_BLINDING_get_flags.3 +MLINKS+= BN_BLINDING_new.3 BN_BLINDING_invert.3 +MLINKS+= BN_BLINDING_new.3 BN_BLINDING_invert_ex.3 +MLINKS+= BN_BLINDING_new.3 BN_BLINDING_is_current_thread.3 +MLINKS+= BN_BLINDING_new.3 BN_BLINDING_lock.3 +MLINKS+= BN_BLINDING_new.3 BN_BLINDING_set_current_thread.3 +MLINKS+= BN_BLINDING_new.3 BN_BLINDING_set_flags.3 +MLINKS+= BN_BLINDING_new.3 BN_BLINDING_unlock.3 +MLINKS+= BN_BLINDING_new.3 BN_BLINDING_update.3 +MLINKS+= BN_CTX_new.3 BN_CTX_free.3 +MLINKS+= BN_CTX_new.3 BN_CTX_secure_new.3 +MLINKS+= BN_CTX_start.3 BN_CTX_end.3 +MLINKS+= BN_CTX_start.3 BN_CTX_get.3 +MLINKS+= BN_add.3 BN_div.3 +MLINKS+= BN_add.3 BN_exp.3 +MLINKS+= BN_add.3 BN_gcd.3 +MLINKS+= BN_add.3 BN_mod.3 +MLINKS+= BN_add.3 BN_mod_add.3 +MLINKS+= BN_add.3 BN_mod_exp.3 +MLINKS+= BN_add.3 BN_mod_mul.3 +MLINKS+= BN_add.3 BN_mod_sqr.3 +MLINKS+= BN_add.3 BN_mod_sub.3 +MLINKS+= BN_add.3 BN_mul.3 +MLINKS+= BN_add.3 BN_nnmod.3 +MLINKS+= BN_add.3 BN_sqr.3 +MLINKS+= BN_add.3 BN_sub.3 +MLINKS+= BN_add_word.3 BN_div_word.3 +MLINKS+= BN_add_word.3 BN_mod_word.3 +MLINKS+= BN_add_word.3 BN_mul_word.3 +MLINKS+= BN_add_word.3 BN_sub_word.3 +MLINKS+= BN_bn2bin.3 BN_bin2bn.3 +MLINKS+= BN_bn2bin.3 BN_bn2binpad.3 +MLINKS+= BN_bn2bin.3 BN_bn2dec.3 +MLINKS+= BN_bn2bin.3 BN_bn2hex.3 +MLINKS+= BN_bn2bin.3 BN_bn2lebinpad.3 +MLINKS+= BN_bn2bin.3 BN_bn2mpi.3 +MLINKS+= BN_bn2bin.3 BN_dec2bn.3 +MLINKS+= BN_bn2bin.3 BN_hex2bn.3 +MLINKS+= BN_bn2bin.3 BN_lebin2bn.3 +MLINKS+= BN_bn2bin.3 BN_mpi2bn.3 +MLINKS+= BN_bn2bin.3 BN_print.3 +MLINKS+= BN_bn2bin.3 BN_print_fp.3 +MLINKS+= BN_cmp.3 BN_is_odd.3 +MLINKS+= BN_cmp.3 BN_is_one.3 +MLINKS+= BN_cmp.3 BN_is_word.3 +MLINKS+= BN_cmp.3 BN_is_zero.3 +MLINKS+= BN_cmp.3 BN_ucmp.3 +MLINKS+= BN_copy.3 BN_dup.3 +MLINKS+= BN_copy.3 BN_with_flags.3 +MLINKS+= BN_generate_prime.3 BN_GENCB_call.3 +MLINKS+= BN_generate_prime.3 BN_GENCB_free.3 +MLINKS+= BN_generate_prime.3 BN_GENCB_get_arg.3 +MLINKS+= BN_generate_prime.3 BN_GENCB_new.3 +MLINKS+= BN_generate_prime.3 BN_GENCB_set.3 +MLINKS+= BN_generate_prime.3 BN_GENCB_set_old.3 +MLINKS+= BN_generate_prime.3 BN_generate_prime_ex.3 +MLINKS+= BN_generate_prime.3 BN_is_prime.3 +MLINKS+= BN_generate_prime.3 BN_is_prime_ex.3 +MLINKS+= BN_generate_prime.3 BN_is_prime_fasttest.3 +MLINKS+= BN_generate_prime.3 BN_is_prime_fasttest_ex.3 +MLINKS+= BN_mod_mul_montgomery.3 BN_MONT_CTX_copy.3 +MLINKS+= BN_mod_mul_montgomery.3 BN_MONT_CTX_free.3 +MLINKS+= BN_mod_mul_montgomery.3 BN_MONT_CTX_new.3 +MLINKS+= BN_mod_mul_montgomery.3 BN_MONT_CTX_set.3 +MLINKS+= BN_mod_mul_montgomery.3 BN_from_montgomery.3 +MLINKS+= BN_mod_mul_montgomery.3 BN_to_montgomery.3 +MLINKS+= BN_mod_mul_reciprocal.3 BN_RECP_CTX_free.3 +MLINKS+= BN_mod_mul_reciprocal.3 BN_RECP_CTX_new.3 +MLINKS+= BN_mod_mul_reciprocal.3 BN_RECP_CTX_set.3 +MLINKS+= BN_mod_mul_reciprocal.3 BN_div_recp.3 +MLINKS+= BN_new.3 BN_clear.3 +MLINKS+= BN_new.3 BN_clear_free.3 +MLINKS+= BN_new.3 BN_free.3 +MLINKS+= BN_new.3 BN_secure_new.3 +MLINKS+= BN_num_bytes.3 BN_num_bits.3 +MLINKS+= BN_num_bytes.3 BN_num_bits_word.3 +MLINKS+= BN_rand.3 BN_priv_rand.3 +MLINKS+= BN_rand.3 BN_priv_rand_range.3 +MLINKS+= BN_rand.3 BN_pseudo_rand.3 +MLINKS+= BN_rand.3 BN_pseudo_rand_range.3 +MLINKS+= BN_rand.3 BN_rand_range.3 +MLINKS+= BN_set_bit.3 BN_clear_bit.3 +MLINKS+= BN_set_bit.3 BN_is_bit_set.3 +MLINKS+= BN_set_bit.3 BN_lshift.3 +MLINKS+= BN_set_bit.3 BN_lshift1.3 +MLINKS+= BN_set_bit.3 BN_mask_bits.3 +MLINKS+= BN_set_bit.3 BN_rshift.3 +MLINKS+= BN_set_bit.3 BN_rshift1.3 +MLINKS+= BN_zero.3 BN_get_word.3 +MLINKS+= BN_zero.3 BN_one.3 +MLINKS+= BN_zero.3 BN_set_word.3 +MLINKS+= BN_zero.3 BN_value_one.3 +MLINKS+= BUF_MEM_new.3 BUF_MEM_free.3 +MLINKS+= BUF_MEM_new.3 BUF_MEM_grow.3 +MLINKS+= BUF_MEM_new.3 BUF_MEM_grow_clean.3 +MLINKS+= BUF_MEM_new.3 BUF_MEM_new_ex.3 +MLINKS+= BUF_MEM_new.3 BUF_reverse.3 +MLINKS+= CMS_add0_cert.3 CMS_add0_crl.3 +MLINKS+= CMS_add0_cert.3 CMS_add1_cert.3 +MLINKS+= CMS_add0_cert.3 CMS_add1_crl.3 +MLINKS+= CMS_add0_cert.3 CMS_get1_certs.3 +MLINKS+= CMS_add0_cert.3 CMS_get1_crls.3 +MLINKS+= CMS_add1_recipient_cert.3 CMS_add0_recipient_key.3 +MLINKS+= CMS_add1_signer.3 CMS_SignerInfo_sign.3 +MLINKS+= CMS_get0_RecipientInfos.3 CMS_RecipientInfo_decrypt.3 +MLINKS+= CMS_get0_RecipientInfos.3 CMS_RecipientInfo_encrypt.3 +MLINKS+= CMS_get0_RecipientInfos.3 CMS_RecipientInfo_kekri_get0_id.3 +MLINKS+= CMS_get0_RecipientInfos.3 CMS_RecipientInfo_kekri_id_cmp.3 +MLINKS+= CMS_get0_RecipientInfos.3 CMS_RecipientInfo_ktri_cert_cmp.3 +MLINKS+= CMS_get0_RecipientInfos.3 CMS_RecipientInfo_ktri_get0_signer_id.3 +MLINKS+= CMS_get0_RecipientInfos.3 CMS_RecipientInfo_set0_key.3 +MLINKS+= CMS_get0_RecipientInfos.3 CMS_RecipientInfo_set0_pkey.3 +MLINKS+= CMS_get0_RecipientInfos.3 CMS_RecipientInfo_type.3 +MLINKS+= CMS_get0_SignerInfos.3 CMS_SignerInfo_cert_cmp.3 +MLINKS+= CMS_get0_SignerInfos.3 CMS_SignerInfo_get0_signature.3 +MLINKS+= CMS_get0_SignerInfos.3 CMS_SignerInfo_get0_signer_id.3 +MLINKS+= CMS_get0_SignerInfos.3 CMS_SignerInfo_set1_signer_cert.3 +MLINKS+= CMS_get0_type.3 CMS_get0_content.3 +MLINKS+= CMS_get0_type.3 CMS_get0_eContentType.3 +MLINKS+= CMS_get0_type.3 CMS_set1_eContentType.3 +MLINKS+= CMS_get1_ReceiptRequest.3 CMS_ReceiptRequest_create0.3 +MLINKS+= CMS_get1_ReceiptRequest.3 CMS_ReceiptRequest_get0_values.3 +MLINKS+= CMS_get1_ReceiptRequest.3 CMS_add1_ReceiptRequest.3 +MLINKS+= CMS_verify.3 CMS_get0_signers.3 +MLINKS+= CONF_modules_free.3 CONF_modules_finish.3 +MLINKS+= CONF_modules_free.3 CONF_modules_unload.3 +MLINKS+= CONF_modules_load_file.3 CONF_modules_load.3 +MLINKS+= CRYPTO_THREAD_run_once.3 CRYPTO_THREAD_lock_free.3 +MLINKS+= CRYPTO_THREAD_run_once.3 CRYPTO_THREAD_lock_new.3 +MLINKS+= CRYPTO_THREAD_run_once.3 CRYPTO_THREAD_read_lock.3 +MLINKS+= CRYPTO_THREAD_run_once.3 CRYPTO_THREAD_unlock.3 +MLINKS+= CRYPTO_THREAD_run_once.3 CRYPTO_THREAD_write_lock.3 +MLINKS+= CRYPTO_THREAD_run_once.3 CRYPTO_atomic_add.3 +MLINKS+= CRYPTO_get_ex_new_index.3 CRYPTO_EX_dup.3 +MLINKS+= CRYPTO_get_ex_new_index.3 CRYPTO_EX_free.3 +MLINKS+= CRYPTO_get_ex_new_index.3 CRYPTO_EX_new.3 +MLINKS+= CRYPTO_get_ex_new_index.3 CRYPTO_free_ex_data.3 +MLINKS+= CRYPTO_get_ex_new_index.3 CRYPTO_free_ex_index.3 +MLINKS+= CRYPTO_get_ex_new_index.3 CRYPTO_get_ex_data.3 +MLINKS+= CRYPTO_get_ex_new_index.3 CRYPTO_new_ex_data.3 +MLINKS+= CRYPTO_get_ex_new_index.3 CRYPTO_set_ex_data.3 +MLINKS+= CTLOG_STORE_new.3 CTLOG_STORE_free.3 +MLINKS+= CTLOG_STORE_new.3 CTLOG_STORE_load_default_file.3 +MLINKS+= CTLOG_STORE_new.3 CTLOG_STORE_load_file.3 +MLINKS+= CTLOG_new.3 CTLOG_free.3 +MLINKS+= CTLOG_new.3 CTLOG_get0_log_id.3 +MLINKS+= CTLOG_new.3 CTLOG_get0_name.3 +MLINKS+= CTLOG_new.3 CTLOG_get0_public_key.3 +MLINKS+= CTLOG_new.3 CTLOG_new_from_base64.3 +MLINKS+= CT_POLICY_EVAL_CTX_new.3 CT_POLICY_EVAL_CTX_free.3 +MLINKS+= CT_POLICY_EVAL_CTX_new.3 CT_POLICY_EVAL_CTX_get0_cert.3 +MLINKS+= CT_POLICY_EVAL_CTX_new.3 CT_POLICY_EVAL_CTX_get0_issuer.3 +MLINKS+= CT_POLICY_EVAL_CTX_new.3 CT_POLICY_EVAL_CTX_get0_log_store.3 +MLINKS+= CT_POLICY_EVAL_CTX_new.3 CT_POLICY_EVAL_CTX_get_time.3 +MLINKS+= CT_POLICY_EVAL_CTX_new.3 CT_POLICY_EVAL_CTX_set1_cert.3 +MLINKS+= CT_POLICY_EVAL_CTX_new.3 CT_POLICY_EVAL_CTX_set1_issuer.3 +MLINKS+= CT_POLICY_EVAL_CTX_new.3 CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE.3 +MLINKS+= CT_POLICY_EVAL_CTX_new.3 CT_POLICY_EVAL_CTX_set_time.3 +MLINKS+= DEFINE_STACK_OF.3 DEFINE_SPECIAL_STACK_OF.3 +MLINKS+= DEFINE_STACK_OF.3 DEFINE_SPECIAL_STACK_OF_CONST.3 +MLINKS+= DEFINE_STACK_OF.3 DEFINE_STACK_OF_CONST.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_deep_copy.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_delete.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_delete_ptr.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_dup.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_find.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_find_ex.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_free.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_insert.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_is_sorted.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_new.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_new_null.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_new_reserve.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_num.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_pop.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_pop_free.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_push.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_reserve.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_set.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_set_cmp_func.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_shift.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_sort.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_unshift.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_value.3 +MLINKS+= DEFINE_STACK_OF.3 sk_TYPE_zero.3 +MLINKS+= DES_random_key.3 DES_cbc_cksum.3 +MLINKS+= DES_random_key.3 DES_cfb64_encrypt.3 +MLINKS+= DES_random_key.3 DES_cfb_encrypt.3 +MLINKS+= DES_random_key.3 DES_crypt.3 +MLINKS+= DES_random_key.3 DES_ecb2_encrypt.3 +MLINKS+= DES_random_key.3 DES_ecb3_encrypt.3 +MLINKS+= DES_random_key.3 DES_ecb_encrypt.3 +MLINKS+= DES_random_key.3 DES_ede2_cbc_encrypt.3 +MLINKS+= DES_random_key.3 DES_ede2_cfb64_encrypt.3 +MLINKS+= DES_random_key.3 DES_ede2_ofb64_encrypt.3 +MLINKS+= DES_random_key.3 DES_ede3_cbc_encrypt.3 +MLINKS+= DES_random_key.3 DES_ede3_cfb64_encrypt.3 +MLINKS+= DES_random_key.3 DES_ede3_ofb64_encrypt.3 +MLINKS+= DES_random_key.3 DES_fcrypt.3 +MLINKS+= DES_random_key.3 DES_is_weak_key.3 +MLINKS+= DES_random_key.3 DES_key_sched.3 +MLINKS+= DES_random_key.3 DES_ncbc_encrypt.3 +MLINKS+= DES_random_key.3 DES_ofb64_encrypt.3 +MLINKS+= DES_random_key.3 DES_ofb_encrypt.3 +MLINKS+= DES_random_key.3 DES_pcbc_encrypt.3 +MLINKS+= DES_random_key.3 DES_quad_cksum.3 +MLINKS+= DES_random_key.3 DES_set_key.3 +MLINKS+= DES_random_key.3 DES_set_key_checked.3 +MLINKS+= DES_random_key.3 DES_set_key_unchecked.3 +MLINKS+= DES_random_key.3 DES_set_odd_parity.3 +MLINKS+= DES_random_key.3 DES_string_to_2keys.3 +MLINKS+= DES_random_key.3 DES_string_to_key.3 +MLINKS+= DES_random_key.3 DES_xcbc_encrypt.3 +MLINKS+= DH_generate_key.3 DH_compute_key.3 +MLINKS+= DH_generate_parameters.3 DH_check.3 +MLINKS+= DH_generate_parameters.3 DH_check_ex.3 +MLINKS+= DH_generate_parameters.3 DH_check_params.3 +MLINKS+= DH_generate_parameters.3 DH_check_params_ex.3 +MLINKS+= DH_generate_parameters.3 DH_check_pub_key_ex.3 +MLINKS+= DH_generate_parameters.3 DH_generate_parameters_ex.3 +MLINKS+= DH_get0_pqg.3 DH_clear_flags.3 +MLINKS+= DH_get0_pqg.3 DH_get0_engine.3 +MLINKS+= DH_get0_pqg.3 DH_get0_g.3 +MLINKS+= DH_get0_pqg.3 DH_get0_key.3 +MLINKS+= DH_get0_pqg.3 DH_get0_p.3 +MLINKS+= DH_get0_pqg.3 DH_get0_priv_key.3 +MLINKS+= DH_get0_pqg.3 DH_get0_pub_key.3 +MLINKS+= DH_get0_pqg.3 DH_get0_q.3 +MLINKS+= DH_get0_pqg.3 DH_get_length.3 +MLINKS+= DH_get0_pqg.3 DH_set0_key.3 +MLINKS+= DH_get0_pqg.3 DH_set0_pqg.3 +MLINKS+= DH_get0_pqg.3 DH_set_flags.3 +MLINKS+= DH_get0_pqg.3 DH_set_length.3 +MLINKS+= DH_get0_pqg.3 DH_test_flags.3 +MLINKS+= DH_get_1024_160.3 BN_get0_nist_prime_192.3 +MLINKS+= DH_get_1024_160.3 BN_get0_nist_prime_224.3 +MLINKS+= DH_get_1024_160.3 BN_get0_nist_prime_256.3 +MLINKS+= DH_get_1024_160.3 BN_get0_nist_prime_384.3 +MLINKS+= DH_get_1024_160.3 BN_get0_nist_prime_521.3 +MLINKS+= DH_get_1024_160.3 BN_get_rfc2409_prime_1024.3 +MLINKS+= DH_get_1024_160.3 BN_get_rfc2409_prime_768.3 +MLINKS+= DH_get_1024_160.3 BN_get_rfc3526_prime_1536.3 +MLINKS+= DH_get_1024_160.3 BN_get_rfc3526_prime_2048.3 +MLINKS+= DH_get_1024_160.3 BN_get_rfc3526_prime_3072.3 +MLINKS+= DH_get_1024_160.3 BN_get_rfc3526_prime_4096.3 +MLINKS+= DH_get_1024_160.3 BN_get_rfc3526_prime_6144.3 +MLINKS+= DH_get_1024_160.3 BN_get_rfc3526_prime_8192.3 +MLINKS+= DH_get_1024_160.3 DH_get_2048_224.3 +MLINKS+= DH_get_1024_160.3 DH_get_2048_256.3 +MLINKS+= DH_meth_new.3 DH_meth_dup.3 +MLINKS+= DH_meth_new.3 DH_meth_free.3 +MLINKS+= DH_meth_new.3 DH_meth_get0_app_data.3 +MLINKS+= DH_meth_new.3 DH_meth_get0_name.3 +MLINKS+= DH_meth_new.3 DH_meth_get_bn_mod_exp.3 +MLINKS+= DH_meth_new.3 DH_meth_get_compute_key.3 +MLINKS+= DH_meth_new.3 DH_meth_get_finish.3 +MLINKS+= DH_meth_new.3 DH_meth_get_flags.3 +MLINKS+= DH_meth_new.3 DH_meth_get_generate_key.3 +MLINKS+= DH_meth_new.3 DH_meth_get_generate_params.3 +MLINKS+= DH_meth_new.3 DH_meth_get_init.3 +MLINKS+= DH_meth_new.3 DH_meth_set0_app_data.3 +MLINKS+= DH_meth_new.3 DH_meth_set1_name.3 +MLINKS+= DH_meth_new.3 DH_meth_set_bn_mod_exp.3 +MLINKS+= DH_meth_new.3 DH_meth_set_compute_key.3 +MLINKS+= DH_meth_new.3 DH_meth_set_finish.3 +MLINKS+= DH_meth_new.3 DH_meth_set_flags.3 +MLINKS+= DH_meth_new.3 DH_meth_set_generate_key.3 +MLINKS+= DH_meth_new.3 DH_meth_set_generate_params.3 +MLINKS+= DH_meth_new.3 DH_meth_set_init.3 +MLINKS+= DH_new.3 DH_free.3 +MLINKS+= DH_new_by_nid.3 DH_get_nid.3 +MLINKS+= DH_set_method.3 DH_OpenSSL.3 +MLINKS+= DH_set_method.3 DH_get_default_method.3 +MLINKS+= DH_set_method.3 DH_new_method.3 +MLINKS+= DH_set_method.3 DH_set_default_method.3 +MLINKS+= DH_size.3 DH_bits.3 +MLINKS+= DH_size.3 DH_security_bits.3 +MLINKS+= DSA_SIG_new.3 DSA_SIG_free.3 +MLINKS+= DSA_SIG_new.3 DSA_SIG_get0.3 +MLINKS+= DSA_SIG_new.3 DSA_SIG_set0.3 +MLINKS+= DSA_do_sign.3 DSA_do_verify.3 +MLINKS+= DSA_generate_parameters.3 DSA_generate_parameters_ex.3 +MLINKS+= DSA_get0_pqg.3 DSA_clear_flags.3 +MLINKS+= DSA_get0_pqg.3 DSA_get0_engine.3 +MLINKS+= DSA_get0_pqg.3 DSA_get0_g.3 +MLINKS+= DSA_get0_pqg.3 DSA_get0_key.3 +MLINKS+= DSA_get0_pqg.3 DSA_get0_p.3 +MLINKS+= DSA_get0_pqg.3 DSA_get0_priv_key.3 +MLINKS+= DSA_get0_pqg.3 DSA_get0_pub_key.3 +MLINKS+= DSA_get0_pqg.3 DSA_get0_q.3 +MLINKS+= DSA_get0_pqg.3 DSA_set0_key.3 +MLINKS+= DSA_get0_pqg.3 DSA_set0_pqg.3 +MLINKS+= DSA_get0_pqg.3 DSA_set_flags.3 +MLINKS+= DSA_get0_pqg.3 DSA_test_flags.3 +MLINKS+= DSA_meth_new.3 DSA_meth_dup.3 +MLINKS+= DSA_meth_new.3 DSA_meth_free.3 +MLINKS+= DSA_meth_new.3 DSA_meth_get0_app_data.3 +MLINKS+= DSA_meth_new.3 DSA_meth_get0_name.3 +MLINKS+= DSA_meth_new.3 DSA_meth_get_bn_mod_exp.3 +MLINKS+= DSA_meth_new.3 DSA_meth_get_finish.3 +MLINKS+= DSA_meth_new.3 DSA_meth_get_flags.3 +MLINKS+= DSA_meth_new.3 DSA_meth_get_init.3 +MLINKS+= DSA_meth_new.3 DSA_meth_get_keygen.3 +MLINKS+= DSA_meth_new.3 DSA_meth_get_mod_exp.3 +MLINKS+= DSA_meth_new.3 DSA_meth_get_paramgen.3 +MLINKS+= DSA_meth_new.3 DSA_meth_get_sign.3 +MLINKS+= DSA_meth_new.3 DSA_meth_get_sign_setup.3 +MLINKS+= DSA_meth_new.3 DSA_meth_get_verify.3 +MLINKS+= DSA_meth_new.3 DSA_meth_set0_app_data.3 +MLINKS+= DSA_meth_new.3 DSA_meth_set1_name.3 +MLINKS+= DSA_meth_new.3 DSA_meth_set_bn_mod_exp.3 +MLINKS+= DSA_meth_new.3 DSA_meth_set_finish.3 +MLINKS+= DSA_meth_new.3 DSA_meth_set_flags.3 +MLINKS+= DSA_meth_new.3 DSA_meth_set_init.3 +MLINKS+= DSA_meth_new.3 DSA_meth_set_keygen.3 +MLINKS+= DSA_meth_new.3 DSA_meth_set_mod_exp.3 +MLINKS+= DSA_meth_new.3 DSA_meth_set_paramgen.3 +MLINKS+= DSA_meth_new.3 DSA_meth_set_sign.3 +MLINKS+= DSA_meth_new.3 DSA_meth_set_sign_setup.3 +MLINKS+= DSA_meth_new.3 DSA_meth_set_verify.3 +MLINKS+= DSA_new.3 DSA_free.3 +MLINKS+= DSA_set_method.3 DSA_OpenSSL.3 +MLINKS+= DSA_set_method.3 DSA_get_default_method.3 +MLINKS+= DSA_set_method.3 DSA_new_method.3 +MLINKS+= DSA_set_method.3 DSA_set_default_method.3 +MLINKS+= DSA_sign.3 DSA_sign_setup.3 +MLINKS+= DSA_sign.3 DSA_verify.3 +MLINKS+= DSA_size.3 DSA_bits.3 +MLINKS+= DSA_size.3 DSA_security_bits.3 +MLINKS+= DTLS_set_timer_cb.3 DTLS_timer_cb.3 +MLINKS+= DTLSv1_listen.3 SSL_stateless.3 +MLINKS+= ECDSA_SIG_new.3 ECDSA_SIG_free.3 +MLINKS+= ECDSA_SIG_new.3 ECDSA_SIG_get0.3 +MLINKS+= ECDSA_SIG_new.3 ECDSA_SIG_get0_r.3 +MLINKS+= ECDSA_SIG_new.3 ECDSA_SIG_get0_s.3 +MLINKS+= ECDSA_SIG_new.3 ECDSA_SIG_set0.3 +MLINKS+= ECDSA_SIG_new.3 ECDSA_do_sign.3 +MLINKS+= ECDSA_SIG_new.3 ECDSA_do_sign_ex.3 +MLINKS+= ECDSA_SIG_new.3 ECDSA_do_verify.3 +MLINKS+= ECDSA_SIG_new.3 ECDSA_sign.3 +MLINKS+= ECDSA_SIG_new.3 ECDSA_sign_ex.3 +MLINKS+= ECDSA_SIG_new.3 ECDSA_sign_setup.3 +MLINKS+= ECDSA_SIG_new.3 ECDSA_size.3 +MLINKS+= ECDSA_SIG_new.3 ECDSA_verify.3 +MLINKS+= ECPKParameters_print.3 ECPKParameters_print_fp.3 +MLINKS+= EC_GFp_simple_method.3 EC_GF2m_simple_method.3 +MLINKS+= EC_GFp_simple_method.3 EC_GFp_mont_method.3 +MLINKS+= EC_GFp_simple_method.3 EC_GFp_nist_method.3 +MLINKS+= EC_GFp_simple_method.3 EC_GFp_nistp224_method.3 +MLINKS+= EC_GFp_simple_method.3 EC_GFp_nistp256_method.3 +MLINKS+= EC_GFp_simple_method.3 EC_GFp_nistp521_method.3 +MLINKS+= EC_GFp_simple_method.3 EC_METHOD_get_field_type.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_check.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_check_discriminant.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_cmp.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_dup.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_get0_cofactor.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_get0_generator.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_get0_order.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_get0_seed.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_asn1_flag.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_basis_type.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_cofactor.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_curve_name.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_degree.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_order.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_pentanomial_basis.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_point_conversion_form.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_seed_len.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_get_trinomial_basis.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_method_of.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_order_bits.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_set_asn1_flag.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_set_curve_name.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_set_generator.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_set_point_conversion_form.3 +MLINKS+= EC_GROUP_copy.3 EC_GROUP_set_seed.3 +MLINKS+= EC_GROUP_new.3 EC_GROUP_clear_free.3 +MLINKS+= EC_GROUP_new.3 EC_GROUP_free.3 +MLINKS+= EC_GROUP_new.3 EC_GROUP_get_curve.3 +MLINKS+= EC_GROUP_new.3 EC_GROUP_get_curve_GF2m.3 +MLINKS+= EC_GROUP_new.3 EC_GROUP_get_curve_GFp.3 +MLINKS+= EC_GROUP_new.3 EC_GROUP_get_ecparameters.3 +MLINKS+= EC_GROUP_new.3 EC_GROUP_get_ecpkparameters.3 +MLINKS+= EC_GROUP_new.3 EC_GROUP_new_by_curve_name.3 +MLINKS+= EC_GROUP_new.3 EC_GROUP_new_curve_GF2m.3 +MLINKS+= EC_GROUP_new.3 EC_GROUP_new_curve_GFp.3 +MLINKS+= EC_GROUP_new.3 EC_GROUP_new_from_ecparameters.3 +MLINKS+= EC_GROUP_new.3 EC_GROUP_new_from_ecpkparameters.3 +MLINKS+= EC_GROUP_new.3 EC_GROUP_set_curve.3 +MLINKS+= EC_GROUP_new.3 EC_GROUP_set_curve_GF2m.3 +MLINKS+= EC_GROUP_new.3 EC_GROUP_set_curve_GFp.3 +MLINKS+= EC_GROUP_new.3 EC_get_builtin_curves.3 +MLINKS+= EC_KEY_get_enc_flags.3 EC_KEY_set_enc_flags.3 +MLINKS+= EC_KEY_new.3 EC_KEY_check_key.3 +MLINKS+= EC_KEY_new.3 EC_KEY_clear_flags.3 +MLINKS+= EC_KEY_new.3 EC_KEY_copy.3 +MLINKS+= EC_KEY_new.3 EC_KEY_dup.3 +MLINKS+= EC_KEY_new.3 EC_KEY_free.3 +MLINKS+= EC_KEY_new.3 EC_KEY_generate_key.3 +MLINKS+= EC_KEY_new.3 EC_KEY_get0_engine.3 +MLINKS+= EC_KEY_new.3 EC_KEY_get0_group.3 +MLINKS+= EC_KEY_new.3 EC_KEY_get0_private_key.3 +MLINKS+= EC_KEY_new.3 EC_KEY_get0_public_key.3 +MLINKS+= EC_KEY_new.3 EC_KEY_get_conv_form.3 +MLINKS+= EC_KEY_new.3 EC_KEY_get_flags.3 +MLINKS+= EC_KEY_new.3 EC_KEY_get_method.3 +MLINKS+= EC_KEY_new.3 EC_KEY_key2buf.3 +MLINKS+= EC_KEY_new.3 EC_KEY_new_by_curve_name.3 +MLINKS+= EC_KEY_new.3 EC_KEY_oct2key.3 +MLINKS+= EC_KEY_new.3 EC_KEY_oct2priv.3 +MLINKS+= EC_KEY_new.3 EC_KEY_precompute_mult.3 +MLINKS+= EC_KEY_new.3 EC_KEY_priv2buf.3 +MLINKS+= EC_KEY_new.3 EC_KEY_priv2oct.3 +MLINKS+= EC_KEY_new.3 EC_KEY_set_asn1_flag.3 +MLINKS+= EC_KEY_new.3 EC_KEY_set_conv_form.3 +MLINKS+= EC_KEY_new.3 EC_KEY_set_flags.3 +MLINKS+= EC_KEY_new.3 EC_KEY_set_group.3 +MLINKS+= EC_KEY_new.3 EC_KEY_set_method.3 +MLINKS+= EC_KEY_new.3 EC_KEY_set_private_key.3 +MLINKS+= EC_KEY_new.3 EC_KEY_set_public_key.3 +MLINKS+= EC_KEY_new.3 EC_KEY_set_public_key_affine_coordinates.3 +MLINKS+= EC_KEY_new.3 EC_KEY_up_ref.3 +MLINKS+= EC_POINT_add.3 EC_GROUP_have_precompute_mult.3 +MLINKS+= EC_POINT_add.3 EC_GROUP_precompute_mult.3 +MLINKS+= EC_POINT_add.3 EC_POINT_cmp.3 +MLINKS+= EC_POINT_add.3 EC_POINT_dbl.3 +MLINKS+= EC_POINT_add.3 EC_POINT_invert.3 +MLINKS+= EC_POINT_add.3 EC_POINT_is_at_infinity.3 +MLINKS+= EC_POINT_add.3 EC_POINT_is_on_curve.3 +MLINKS+= EC_POINT_add.3 EC_POINT_make_affine.3 +MLINKS+= EC_POINT_add.3 EC_POINT_mul.3 +MLINKS+= EC_POINT_add.3 EC_POINTs_make_affine.3 +MLINKS+= EC_POINT_add.3 EC_POINTs_mul.3 +MLINKS+= EC_POINT_new.3 EC_POINT_bn2point.3 +MLINKS+= EC_POINT_new.3 EC_POINT_clear_free.3 +MLINKS+= EC_POINT_new.3 EC_POINT_copy.3 +MLINKS+= EC_POINT_new.3 EC_POINT_dup.3 +MLINKS+= EC_POINT_new.3 EC_POINT_free.3 +MLINKS+= EC_POINT_new.3 EC_POINT_get_Jprojective_coordinates_GFp.3 +MLINKS+= EC_POINT_new.3 EC_POINT_get_affine_coordinates.3 +MLINKS+= EC_POINT_new.3 EC_POINT_get_affine_coordinates_GF2m.3 +MLINKS+= EC_POINT_new.3 EC_POINT_get_affine_coordinates_GFp.3 +MLINKS+= EC_POINT_new.3 EC_POINT_hex2point.3 +MLINKS+= EC_POINT_new.3 EC_POINT_method_of.3 +MLINKS+= EC_POINT_new.3 EC_POINT_oct2point.3 +MLINKS+= EC_POINT_new.3 EC_POINT_point2bn.3 +MLINKS+= EC_POINT_new.3 EC_POINT_point2buf.3 +MLINKS+= EC_POINT_new.3 EC_POINT_point2hex.3 +MLINKS+= EC_POINT_new.3 EC_POINT_point2oct.3 +MLINKS+= EC_POINT_new.3 EC_POINT_set_Jprojective_coordinates_GFp.3 +MLINKS+= EC_POINT_new.3 EC_POINT_set_affine_coordinates.3 +MLINKS+= EC_POINT_new.3 EC_POINT_set_affine_coordinates_GF2m.3 +MLINKS+= EC_POINT_new.3 EC_POINT_set_affine_coordinates_GFp.3 +MLINKS+= EC_POINT_new.3 EC_POINT_set_compressed_coordinates.3 +MLINKS+= EC_POINT_new.3 EC_POINT_set_compressed_coordinates_GF2m.3 +MLINKS+= EC_POINT_new.3 EC_POINT_set_compressed_coordinates_GFp.3 +MLINKS+= EC_POINT_new.3 EC_POINT_set_to_infinity.3 +MLINKS+= ENGINE_add.3 ENGINE_by_id.3 +MLINKS+= ENGINE_add.3 ENGINE_cleanup.3 +MLINKS+= ENGINE_add.3 ENGINE_cmd_is_executable.3 +MLINKS+= ENGINE_add.3 ENGINE_ctrl.3 +MLINKS+= ENGINE_add.3 ENGINE_ctrl_cmd.3 +MLINKS+= ENGINE_add.3 ENGINE_ctrl_cmd_string.3 +MLINKS+= ENGINE_add.3 ENGINE_finish.3 +MLINKS+= ENGINE_add.3 ENGINE_free.3 +MLINKS+= ENGINE_add.3 ENGINE_get_DH.3 +MLINKS+= ENGINE_add.3 ENGINE_get_DSA.3 +MLINKS+= ENGINE_add.3 ENGINE_get_RAND.3 +MLINKS+= ENGINE_add.3 ENGINE_get_RSA.3 +MLINKS+= ENGINE_add.3 ENGINE_get_cipher.3 +MLINKS+= ENGINE_add.3 ENGINE_get_cipher_engine.3 +MLINKS+= ENGINE_add.3 ENGINE_get_ciphers.3 +MLINKS+= ENGINE_add.3 ENGINE_get_cmd_defns.3 +MLINKS+= ENGINE_add.3 ENGINE_get_ctrl_function.3 +MLINKS+= ENGINE_add.3 ENGINE_get_default_DH.3 +MLINKS+= ENGINE_add.3 ENGINE_get_default_DSA.3 +MLINKS+= ENGINE_add.3 ENGINE_get_default_RAND.3 +MLINKS+= ENGINE_add.3 ENGINE_get_default_RSA.3 +MLINKS+= ENGINE_add.3 ENGINE_get_destroy_function.3 +MLINKS+= ENGINE_add.3 ENGINE_get_digest.3 +MLINKS+= ENGINE_add.3 ENGINE_get_digest_engine.3 +MLINKS+= ENGINE_add.3 ENGINE_get_digests.3 +MLINKS+= ENGINE_add.3 ENGINE_get_finish_function.3 +MLINKS+= ENGINE_add.3 ENGINE_get_first.3 +MLINKS+= ENGINE_add.3 ENGINE_get_flags.3 +MLINKS+= ENGINE_add.3 ENGINE_get_id.3 +MLINKS+= ENGINE_add.3 ENGINE_get_init_function.3 +MLINKS+= ENGINE_add.3 ENGINE_get_last.3 +MLINKS+= ENGINE_add.3 ENGINE_get_load_privkey_function.3 +MLINKS+= ENGINE_add.3 ENGINE_get_load_pubkey_function.3 +MLINKS+= ENGINE_add.3 ENGINE_get_name.3 +MLINKS+= ENGINE_add.3 ENGINE_get_next.3 +MLINKS+= ENGINE_add.3 ENGINE_get_prev.3 +MLINKS+= ENGINE_add.3 ENGINE_get_table_flags.3 +MLINKS+= ENGINE_add.3 ENGINE_init.3 +MLINKS+= ENGINE_add.3 ENGINE_load_builtin_engines.3 +MLINKS+= ENGINE_add.3 ENGINE_load_private_key.3 +MLINKS+= ENGINE_add.3 ENGINE_load_public_key.3 +MLINKS+= ENGINE_add.3 ENGINE_new.3 +MLINKS+= ENGINE_add.3 ENGINE_register_DH.3 +MLINKS+= ENGINE_add.3 ENGINE_register_DSA.3 +MLINKS+= ENGINE_add.3 ENGINE_register_RAND.3 +MLINKS+= ENGINE_add.3 ENGINE_register_RSA.3 +MLINKS+= ENGINE_add.3 ENGINE_register_all_DH.3 +MLINKS+= ENGINE_add.3 ENGINE_register_all_DSA.3 +MLINKS+= ENGINE_add.3 ENGINE_register_all_RAND.3 +MLINKS+= ENGINE_add.3 ENGINE_register_all_RSA.3 +MLINKS+= ENGINE_add.3 ENGINE_register_all_ciphers.3 +MLINKS+= ENGINE_add.3 ENGINE_register_all_complete.3 +MLINKS+= ENGINE_add.3 ENGINE_register_all_digests.3 +MLINKS+= ENGINE_add.3 ENGINE_register_ciphers.3 +MLINKS+= ENGINE_add.3 ENGINE_register_complete.3 +MLINKS+= ENGINE_add.3 ENGINE_register_digests.3 +MLINKS+= ENGINE_add.3 ENGINE_remove.3 +MLINKS+= ENGINE_add.3 ENGINE_set_DH.3 +MLINKS+= ENGINE_add.3 ENGINE_set_DSA.3 +MLINKS+= ENGINE_add.3 ENGINE_set_RAND.3 +MLINKS+= ENGINE_add.3 ENGINE_set_RSA.3 +MLINKS+= ENGINE_add.3 ENGINE_set_ciphers.3 +MLINKS+= ENGINE_add.3 ENGINE_set_cmd_defns.3 +MLINKS+= ENGINE_add.3 ENGINE_set_ctrl_function.3 +MLINKS+= ENGINE_add.3 ENGINE_set_default.3 +MLINKS+= ENGINE_add.3 ENGINE_set_default_DH.3 +MLINKS+= ENGINE_add.3 ENGINE_set_default_DSA.3 +MLINKS+= ENGINE_add.3 ENGINE_set_default_RAND.3 +MLINKS+= ENGINE_add.3 ENGINE_set_default_RSA.3 +MLINKS+= ENGINE_add.3 ENGINE_set_default_ciphers.3 +MLINKS+= ENGINE_add.3 ENGINE_set_default_digests.3 +MLINKS+= ENGINE_add.3 ENGINE_set_default_string.3 +MLINKS+= ENGINE_add.3 ENGINE_set_destroy_function.3 +MLINKS+= ENGINE_add.3 ENGINE_set_digests.3 +MLINKS+= ENGINE_add.3 ENGINE_set_finish_function.3 +MLINKS+= ENGINE_add.3 ENGINE_set_flags.3 +MLINKS+= ENGINE_add.3 ENGINE_set_id.3 +MLINKS+= ENGINE_add.3 ENGINE_set_init_function.3 +MLINKS+= ENGINE_add.3 ENGINE_set_load_privkey_function.3 +MLINKS+= ENGINE_add.3 ENGINE_set_load_pubkey_function.3 +MLINKS+= ENGINE_add.3 ENGINE_set_name.3 +MLINKS+= ENGINE_add.3 ENGINE_set_table_flags.3 +MLINKS+= ENGINE_add.3 ENGINE_unregister_DH.3 +MLINKS+= ENGINE_add.3 ENGINE_unregister_DSA.3 +MLINKS+= ENGINE_add.3 ENGINE_unregister_RAND.3 +MLINKS+= ENGINE_add.3 ENGINE_unregister_RSA.3 +MLINKS+= ENGINE_add.3 ENGINE_unregister_ciphers.3 +MLINKS+= ENGINE_add.3 ENGINE_unregister_digests.3 +MLINKS+= ENGINE_add.3 ENGINE_up_ref.3 +MLINKS+= ERR_GET_LIB.3 ERR_FATAL_ERROR.3 +MLINKS+= ERR_GET_LIB.3 ERR_GET_FUNC.3 +MLINKS+= ERR_GET_LIB.3 ERR_GET_REASON.3 +MLINKS+= ERR_error_string.3 ERR_error_string_n.3 +MLINKS+= ERR_error_string.3 ERR_func_error_string.3 +MLINKS+= ERR_error_string.3 ERR_lib_error_string.3 +MLINKS+= ERR_error_string.3 ERR_reason_error_string.3 +MLINKS+= ERR_get_error.3 ERR_get_error_line.3 +MLINKS+= ERR_get_error.3 ERR_get_error_line_data.3 +MLINKS+= ERR_get_error.3 ERR_peek_error.3 +MLINKS+= ERR_get_error.3 ERR_peek_error_line.3 +MLINKS+= ERR_get_error.3 ERR_peek_error_line_data.3 +MLINKS+= ERR_get_error.3 ERR_peek_last_error.3 +MLINKS+= ERR_get_error.3 ERR_peek_last_error_line.3 +MLINKS+= ERR_get_error.3 ERR_peek_last_error_line_data.3 +MLINKS+= ERR_load_crypto_strings.3 ERR_free_strings.3 +MLINKS+= ERR_load_crypto_strings.3 SSL_load_error_strings.3 +MLINKS+= ERR_load_strings.3 ERR_PACK.3 +MLINKS+= ERR_load_strings.3 ERR_get_next_error_library.3 +MLINKS+= ERR_print_errors.3 ERR_print_errors_cb.3 +MLINKS+= ERR_print_errors.3 ERR_print_errors_fp.3 +MLINKS+= ERR_put_error.3 ERR_add_error_data.3 +MLINKS+= ERR_put_error.3 ERR_add_error_vdata.3 +MLINKS+= ERR_remove_state.3 ERR_remove_thread_state.3 +MLINKS+= ERR_set_mark.3 ERR_pop_to_mark.3 +MLINKS+= EVP_CIPHER_CTX_get_cipher_data.3 EVP_CIPHER_CTX_set_cipher_data.3 +MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_dup.3 +MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_free.3 +MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_get_cleanup.3 +MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_get_ctrl.3 +MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_get_do_cipher.3 +MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_get_get_asn1_params.3 +MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_get_init.3 +MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_get_set_asn1_params.3 +MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_set_cleanup.3 +MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_set_ctrl.3 +MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_set_do_cipher.3 +MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_set_flags.3 +MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_set_get_asn1_params.3 +MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_set_impl_ctx_size.3 +MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_set_init.3 +MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_set_iv_length.3 +MLINKS+= EVP_CIPHER_meth_new.3 EVP_CIPHER_meth_set_set_asn1_params.3 +MLINKS+= EVP_DigestInit.3 EVP_DigestFinal.3 +MLINKS+= EVP_DigestInit.3 EVP_DigestFinalXOF.3 +MLINKS+= EVP_DigestInit.3 EVP_DigestFinal_ex.3 +MLINKS+= EVP_DigestInit.3 EVP_DigestInit_ex.3 +MLINKS+= EVP_DigestInit.3 EVP_DigestUpdate.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_block_size.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_clear_flags.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_copy.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_copy_ex.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_ctrl.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_free.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_md.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_md_data.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_new.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_reset.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_set_flags.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_set_pkey_ctx.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_size.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_test_flags.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_CTX_type.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_block_size.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_pkey_type.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_size.3 +MLINKS+= EVP_DigestInit.3 EVP_MD_type.3 +MLINKS+= EVP_DigestInit.3 EVP_get_digestbyname.3 +MLINKS+= EVP_DigestInit.3 EVP_get_digestbynid.3 +MLINKS+= EVP_DigestInit.3 EVP_get_digestbyobj.3 +MLINKS+= EVP_DigestInit.3 EVP_md_null.3 +MLINKS+= EVP_DigestSignInit.3 EVP_DigestSign.3 +MLINKS+= EVP_DigestSignInit.3 EVP_DigestSignFinal.3 +MLINKS+= EVP_DigestSignInit.3 EVP_DigestSignUpdate.3 +MLINKS+= EVP_DigestVerifyInit.3 EVP_DigestVerify.3 +MLINKS+= EVP_DigestVerifyInit.3 EVP_DigestVerifyFinal.3 +MLINKS+= EVP_DigestVerifyInit.3 EVP_DigestVerifyUpdate.3 +MLINKS+= EVP_EncodeInit.3 EVP_DecodeBlock.3 +MLINKS+= EVP_EncodeInit.3 EVP_DecodeFinal.3 +MLINKS+= EVP_EncodeInit.3 EVP_DecodeInit.3 +MLINKS+= EVP_EncodeInit.3 EVP_DecodeUpdate.3 +MLINKS+= EVP_EncodeInit.3 EVP_ENCODE_CTX_copy.3 +MLINKS+= EVP_EncodeInit.3 EVP_ENCODE_CTX_free.3 +MLINKS+= EVP_EncodeInit.3 EVP_ENCODE_CTX_new.3 +MLINKS+= EVP_EncodeInit.3 EVP_ENCODE_CTX_num.3 +MLINKS+= EVP_EncodeInit.3 EVP_EncodeBlock.3 +MLINKS+= EVP_EncodeInit.3 EVP_EncodeFinal.3 +MLINKS+= EVP_EncodeInit.3 EVP_EncodeUpdate.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_block_size.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_cipher.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_ctrl.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_flags.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_free.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_get_app_data.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_iv_length.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_key_length.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_mode.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_new.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_nid.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_reset.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_set_app_data.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_set_key_length.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_set_padding.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_CTX_type.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_asn1_to_param.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_block_size.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_flags.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_iv_length.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_key_length.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_mode.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_nid.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_param_to_asn1.3 +MLINKS+= EVP_EncryptInit.3 EVP_CIPHER_type.3 +MLINKS+= EVP_EncryptInit.3 EVP_CipherFinal.3 +MLINKS+= EVP_EncryptInit.3 EVP_CipherFinal_ex.3 +MLINKS+= EVP_EncryptInit.3 EVP_CipherInit.3 +MLINKS+= EVP_EncryptInit.3 EVP_CipherInit_ex.3 +MLINKS+= EVP_EncryptInit.3 EVP_CipherUpdate.3 +MLINKS+= EVP_EncryptInit.3 EVP_DecryptFinal.3 +MLINKS+= EVP_EncryptInit.3 EVP_DecryptFinal_ex.3 +MLINKS+= EVP_EncryptInit.3 EVP_DecryptInit.3 +MLINKS+= EVP_EncryptInit.3 EVP_DecryptInit_ex.3 +MLINKS+= EVP_EncryptInit.3 EVP_DecryptUpdate.3 +MLINKS+= EVP_EncryptInit.3 EVP_EncryptFinal.3 +MLINKS+= EVP_EncryptInit.3 EVP_EncryptFinal_ex.3 +MLINKS+= EVP_EncryptInit.3 EVP_EncryptInit_ex.3 +MLINKS+= EVP_EncryptInit.3 EVP_EncryptUpdate.3 +MLINKS+= EVP_EncryptInit.3 EVP_enc_null.3 +MLINKS+= EVP_EncryptInit.3 EVP_get_cipherbyname.3 +MLINKS+= EVP_EncryptInit.3 EVP_get_cipherbynid.3 +MLINKS+= EVP_EncryptInit.3 EVP_get_cipherbyobj.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_dup.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_free.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_app_datasize.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_cleanup.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_copy.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_ctrl.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_final.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_flags.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_init.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_input_blocksize.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_result_size.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_get_update.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_app_datasize.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_cleanup.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_copy.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_ctrl.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_final.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_flags.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_init.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_input_blocksize.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_result_size.3 +MLINKS+= EVP_MD_meth_new.3 EVP_MD_meth_set_update.3 +MLINKS+= EVP_OpenInit.3 EVP_OpenFinal.3 +MLINKS+= EVP_OpenInit.3 EVP_OpenUpdate.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_add0.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_add_alias.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_copy.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_free.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_new.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_check.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_ctrl.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_free.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_get_priv_key.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_get_pub_key.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_item.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_param.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_param_check.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_private.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_public.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_public_check.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_security_bits.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_set_priv_key.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_set_pub_key.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_asn1_set_siginf.3 +MLINKS+= EVP_PKEY_ASN1_METHOD.3 EVP_PKEY_get0_asn1.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_ctrl_str.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_ctrl_uint64.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get0_dh_kdf_oid.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get0_dh_kdf_ukm.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get0_ecdh_kdf_ukm.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get0_rsa_oaep_label.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get1_id.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get1_id_len.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_dh_kdf_md.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_dh_kdf_outlen.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_dh_kdf_type.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_ecdh_cofactor_mode.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_ecdh_kdf_md.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_ecdh_kdf_outlen.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_ecdh_kdf_type.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_rsa_mgf1_md.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_rsa_oaep_md.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_rsa_padding.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_rsa_pss_saltlen.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_get_signature_md.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_md.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set0_dh_kdf_oid.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set0_dh_kdf_ukm.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set0_ecdh_kdf_ukm.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set0_rsa_oaep_label.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set1_id.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_kdf_md.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_kdf_outlen.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_kdf_type.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_nid.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_pad.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_paramgen_generator.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_paramgen_prime_len.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_paramgen_subprime_len.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_paramgen_type.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_rfc5114.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dhx_rfc5114.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dsa_paramgen_bits.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_ec_param_enc.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_ec_paramgen_curve_nid.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_ecdh_cofactor_mode.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_ecdh_kdf_md.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_ecdh_kdf_outlen.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_ecdh_kdf_type.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_mac_key.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_rsa_keygen_bits.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_rsa_keygen_primes.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_rsa_keygen_pubexp.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_rsa_mgf1_md.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_rsa_oaep_md.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_rsa_padding.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_rsa_pss_saltlen.3 +MLINKS+= EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_signature_md.3 +MLINKS+= EVP_PKEY_CTX_new.3 EVP_PKEY_CTX_dup.3 +MLINKS+= EVP_PKEY_CTX_new.3 EVP_PKEY_CTX_free.3 +MLINKS+= EVP_PKEY_CTX_new.3 EVP_PKEY_CTX_new_id.3 +MLINKS+= EVP_PKEY_CTX_set_hkdf_md.3 EVP_PKEY_CTX_add1_hkdf_info.3 +MLINKS+= EVP_PKEY_CTX_set_hkdf_md.3 EVP_PKEY_CTX_hkdf_mode.3 +MLINKS+= EVP_PKEY_CTX_set_hkdf_md.3 EVP_PKEY_CTX_set1_hkdf_key.3 +MLINKS+= EVP_PKEY_CTX_set_hkdf_md.3 EVP_PKEY_CTX_set1_hkdf_salt.3 +MLINKS+= EVP_PKEY_CTX_set_rsa_pss_keygen_md.3 EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md.3 +MLINKS+= EVP_PKEY_CTX_set_rsa_pss_keygen_md.3 EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen.3 +MLINKS+= EVP_PKEY_CTX_set_scrypt_N.3 EVP_PKEY_CTX_set1_scrypt_salt.3 +MLINKS+= EVP_PKEY_CTX_set_scrypt_N.3 EVP_PKEY_CTX_set_scrypt_maxmem_bytes.3 +MLINKS+= EVP_PKEY_CTX_set_scrypt_N.3 EVP_PKEY_CTX_set_scrypt_p.3 +MLINKS+= EVP_PKEY_CTX_set_scrypt_N.3 EVP_PKEY_CTX_set_scrypt_r.3 +MLINKS+= EVP_PKEY_CTX_set_tls1_prf_md.3 EVP_PKEY_CTX_add1_tls1_prf_seed.3 +MLINKS+= EVP_PKEY_CTX_set_tls1_prf_md.3 EVP_PKEY_CTX_set1_tls1_prf_secret.3 +MLINKS+= EVP_PKEY_asn1_get_count.3 EVP_PKEY_asn1_find.3 +MLINKS+= EVP_PKEY_asn1_get_count.3 EVP_PKEY_asn1_find_str.3 +MLINKS+= EVP_PKEY_asn1_get_count.3 EVP_PKEY_asn1_get0.3 +MLINKS+= EVP_PKEY_asn1_get_count.3 EVP_PKEY_asn1_get0_info.3 +MLINKS+= EVP_PKEY_cmp.3 EVP_PKEY_cmp_parameters.3 +MLINKS+= EVP_PKEY_cmp.3 EVP_PKEY_copy_parameters.3 +MLINKS+= EVP_PKEY_cmp.3 EVP_PKEY_missing_parameters.3 +MLINKS+= EVP_PKEY_decrypt.3 EVP_PKEY_decrypt_init.3 +MLINKS+= EVP_PKEY_derive.3 EVP_PKEY_derive_init.3 +MLINKS+= EVP_PKEY_derive.3 EVP_PKEY_derive_set_peer.3 +MLINKS+= EVP_PKEY_encrypt.3 EVP_PKEY_encrypt_init.3 +MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_CTX_get_app_data.3 +MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_CTX_get_cb.3 +MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_CTX_get_keygen_info.3 +MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_CTX_set_app_data.3 +MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_CTX_set_cb.3 +MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_check.3 +MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_gen_cb.3 +MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_keygen_init.3 +MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_param_check.3 +MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_paramgen.3 +MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_paramgen_init.3 +MLINKS+= EVP_PKEY_keygen.3 EVP_PKEY_public_check.3 +MLINKS+= EVP_PKEY_meth_get_count.3 EVP_PKEY_meth_get0.3 +MLINKS+= EVP_PKEY_meth_get_count.3 EVP_PKEY_meth_get0_info.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_METHOD.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_add0.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_copy.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_find.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_free.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_check.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_cleanup.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_copy.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_ctrl.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_decrypt.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_derive.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_digest_custom.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_encrypt.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_init.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_keygen.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_param_check.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_paramgen.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_public_check.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_sign.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_signctx.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_verify.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_verify_recover.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_get_verifyctx.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_remove.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_check.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_cleanup.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_copy.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_ctrl.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_decrypt.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_derive.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_digest_custom.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_encrypt.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_init.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_keygen.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_param_check.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_paramgen.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_public_check.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_sign.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_signctx.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_verify.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_verify_recover.3 +MLINKS+= EVP_PKEY_meth_new.3 EVP_PKEY_meth_set_verifyctx.3 +MLINKS+= EVP_PKEY_new.3 EVP_PKEY_free.3 +MLINKS+= EVP_PKEY_new.3 EVP_PKEY_get_raw_private_key.3 +MLINKS+= EVP_PKEY_new.3 EVP_PKEY_get_raw_public_key.3 +MLINKS+= EVP_PKEY_new.3 EVP_PKEY_new_CMAC_key.3 +MLINKS+= EVP_PKEY_new.3 EVP_PKEY_new_mac_key.3 +MLINKS+= EVP_PKEY_new.3 EVP_PKEY_new_raw_private_key.3 +MLINKS+= EVP_PKEY_new.3 EVP_PKEY_new_raw_public_key.3 +MLINKS+= EVP_PKEY_new.3 EVP_PKEY_up_ref.3 +MLINKS+= EVP_PKEY_print_private.3 EVP_PKEY_print_params.3 +MLINKS+= EVP_PKEY_print_private.3 EVP_PKEY_print_public.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_assign_DH.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_assign_DSA.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_assign_EC_KEY.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_assign_POLY1305.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_assign_RSA.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_assign_SIPHASH.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_base_id.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get0_DH.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get0_DSA.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get0_EC_KEY.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get0_RSA.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get0_engine.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get0_hmac.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get0_poly1305.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get0_siphash.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get1_DH.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get1_DSA.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get1_EC_KEY.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_get1_RSA.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_id.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_set1_DH.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_set1_DSA.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_set1_EC_KEY.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_set1_engine.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_set_alias_type.3 +MLINKS+= EVP_PKEY_set1_RSA.3 EVP_PKEY_type.3 +MLINKS+= EVP_PKEY_sign.3 EVP_PKEY_sign_init.3 +MLINKS+= EVP_PKEY_verify.3 EVP_PKEY_verify_init.3 +MLINKS+= EVP_PKEY_verify_recover.3 EVP_PKEY_verify_recover_init.3 +MLINKS+= EVP_SealInit.3 EVP_SealFinal.3 +MLINKS+= EVP_SealInit.3 EVP_SealUpdate.3 +MLINKS+= EVP_SignInit.3 EVP_PKEY_security_bits.3 +MLINKS+= EVP_SignInit.3 EVP_PKEY_size.3 +MLINKS+= EVP_SignInit.3 EVP_SignFinal.3 +MLINKS+= EVP_SignInit.3 EVP_SignInit_ex.3 +MLINKS+= EVP_SignInit.3 EVP_SignUpdate.3 +MLINKS+= EVP_VerifyInit.3 EVP_VerifyFinal.3 +MLINKS+= EVP_VerifyInit.3 EVP_VerifyInit_ex.3 +MLINKS+= EVP_VerifyInit.3 EVP_VerifyUpdate.3 +MLINKS+= EVP_aes.3 EVP_aes_128_cbc.3 +MLINKS+= EVP_aes.3 EVP_aes_128_cbc_hmac_sha1.3 +MLINKS+= EVP_aes.3 EVP_aes_128_cbc_hmac_sha256.3 +MLINKS+= EVP_aes.3 EVP_aes_128_ccm.3 +MLINKS+= EVP_aes.3 EVP_aes_128_cfb.3 +MLINKS+= EVP_aes.3 EVP_aes_128_cfb1.3 +MLINKS+= EVP_aes.3 EVP_aes_128_cfb128.3 +MLINKS+= EVP_aes.3 EVP_aes_128_cfb8.3 +MLINKS+= EVP_aes.3 EVP_aes_128_ctr.3 +MLINKS+= EVP_aes.3 EVP_aes_128_ecb.3 +MLINKS+= EVP_aes.3 EVP_aes_128_gcm.3 +MLINKS+= EVP_aes.3 EVP_aes_128_ocb.3 +MLINKS+= EVP_aes.3 EVP_aes_128_ofb.3 +MLINKS+= EVP_aes.3 EVP_aes_128_wrap.3 +MLINKS+= EVP_aes.3 EVP_aes_128_wrap_pad.3 +MLINKS+= EVP_aes.3 EVP_aes_128_xts.3 +MLINKS+= EVP_aes.3 EVP_aes_192_cbc.3 +MLINKS+= EVP_aes.3 EVP_aes_192_ccm.3 +MLINKS+= EVP_aes.3 EVP_aes_192_cfb.3 +MLINKS+= EVP_aes.3 EVP_aes_192_cfb1.3 +MLINKS+= EVP_aes.3 EVP_aes_192_cfb128.3 +MLINKS+= EVP_aes.3 EVP_aes_192_cfb8.3 +MLINKS+= EVP_aes.3 EVP_aes_192_ctr.3 +MLINKS+= EVP_aes.3 EVP_aes_192_ecb.3 +MLINKS+= EVP_aes.3 EVP_aes_192_gcm.3 +MLINKS+= EVP_aes.3 EVP_aes_192_ocb.3 +MLINKS+= EVP_aes.3 EVP_aes_192_ofb.3 +MLINKS+= EVP_aes.3 EVP_aes_192_wrap.3 +MLINKS+= EVP_aes.3 EVP_aes_192_wrap_pad.3 +MLINKS+= EVP_aes.3 EVP_aes_256_cbc.3 +MLINKS+= EVP_aes.3 EVP_aes_256_cbc_hmac_sha1.3 +MLINKS+= EVP_aes.3 EVP_aes_256_cbc_hmac_sha256.3 +MLINKS+= EVP_aes.3 EVP_aes_256_ccm.3 +MLINKS+= EVP_aes.3 EVP_aes_256_cfb.3 +MLINKS+= EVP_aes.3 EVP_aes_256_cfb1.3 +MLINKS+= EVP_aes.3 EVP_aes_256_cfb128.3 +MLINKS+= EVP_aes.3 EVP_aes_256_cfb8.3 +MLINKS+= EVP_aes.3 EVP_aes_256_ctr.3 +MLINKS+= EVP_aes.3 EVP_aes_256_ecb.3 +MLINKS+= EVP_aes.3 EVP_aes_256_gcm.3 +MLINKS+= EVP_aes.3 EVP_aes_256_ocb.3 +MLINKS+= EVP_aes.3 EVP_aes_256_ofb.3 +MLINKS+= EVP_aes.3 EVP_aes_256_wrap.3 +MLINKS+= EVP_aes.3 EVP_aes_256_wrap_pad.3 +MLINKS+= EVP_aes.3 EVP_aes_256_xts.3 +MLINKS+= EVP_aria.3 EVP_aria_128_cbc.3 +MLINKS+= EVP_aria.3 EVP_aria_128_ccm.3 +MLINKS+= EVP_aria.3 EVP_aria_128_cfb.3 +MLINKS+= EVP_aria.3 EVP_aria_128_cfb1.3 +MLINKS+= EVP_aria.3 EVP_aria_128_cfb128.3 +MLINKS+= EVP_aria.3 EVP_aria_128_cfb8.3 +MLINKS+= EVP_aria.3 EVP_aria_128_ctr.3 +MLINKS+= EVP_aria.3 EVP_aria_128_ecb.3 +MLINKS+= EVP_aria.3 EVP_aria_128_gcm.3 +MLINKS+= EVP_aria.3 EVP_aria_128_ofb.3 +MLINKS+= EVP_aria.3 EVP_aria_192_cbc.3 +MLINKS+= EVP_aria.3 EVP_aria_192_ccm.3 +MLINKS+= EVP_aria.3 EVP_aria_192_cfb.3 +MLINKS+= EVP_aria.3 EVP_aria_192_cfb1.3 +MLINKS+= EVP_aria.3 EVP_aria_192_cfb128.3 +MLINKS+= EVP_aria.3 EVP_aria_192_cfb8.3 +MLINKS+= EVP_aria.3 EVP_aria_192_ctr.3 +MLINKS+= EVP_aria.3 EVP_aria_192_ecb.3 +MLINKS+= EVP_aria.3 EVP_aria_192_gcm.3 +MLINKS+= EVP_aria.3 EVP_aria_192_ofb.3 +MLINKS+= EVP_aria.3 EVP_aria_256_cbc.3 +MLINKS+= EVP_aria.3 EVP_aria_256_ccm.3 +MLINKS+= EVP_aria.3 EVP_aria_256_cfb.3 +MLINKS+= EVP_aria.3 EVP_aria_256_cfb1.3 +MLINKS+= EVP_aria.3 EVP_aria_256_cfb128.3 +MLINKS+= EVP_aria.3 EVP_aria_256_cfb8.3 +MLINKS+= EVP_aria.3 EVP_aria_256_ctr.3 +MLINKS+= EVP_aria.3 EVP_aria_256_ecb.3 +MLINKS+= EVP_aria.3 EVP_aria_256_gcm.3 +MLINKS+= EVP_aria.3 EVP_aria_256_ofb.3 +MLINKS+= EVP_bf_cbc.3 EVP_bf_cfb.3 +MLINKS+= EVP_bf_cbc.3 EVP_bf_cfb64.3 +MLINKS+= EVP_bf_cbc.3 EVP_bf_ecb.3 +MLINKS+= EVP_bf_cbc.3 EVP_bf_ofb.3 +MLINKS+= EVP_blake2b512.3 EVP_blake2s256.3 +MLINKS+= EVP_camellia.3 EVP_camellia_128_cbc.3 +MLINKS+= EVP_camellia.3 EVP_camellia_128_cfb.3 +MLINKS+= EVP_camellia.3 EVP_camellia_128_cfb1.3 +MLINKS+= EVP_camellia.3 EVP_camellia_128_cfb128.3 +MLINKS+= EVP_camellia.3 EVP_camellia_128_cfb8.3 +MLINKS+= EVP_camellia.3 EVP_camellia_128_ctr.3 +MLINKS+= EVP_camellia.3 EVP_camellia_128_ecb.3 +MLINKS+= EVP_camellia.3 EVP_camellia_128_ofb.3 +MLINKS+= EVP_camellia.3 EVP_camellia_192_cbc.3 +MLINKS+= EVP_camellia.3 EVP_camellia_192_cfb.3 +MLINKS+= EVP_camellia.3 EVP_camellia_192_cfb1.3 +MLINKS+= EVP_camellia.3 EVP_camellia_192_cfb128.3 +MLINKS+= EVP_camellia.3 EVP_camellia_192_cfb8.3 +MLINKS+= EVP_camellia.3 EVP_camellia_192_ctr.3 +MLINKS+= EVP_camellia.3 EVP_camellia_192_ecb.3 +MLINKS+= EVP_camellia.3 EVP_camellia_192_ofb.3 +MLINKS+= EVP_camellia.3 EVP_camellia_256_cbc.3 +MLINKS+= EVP_camellia.3 EVP_camellia_256_cfb.3 +MLINKS+= EVP_camellia.3 EVP_camellia_256_cfb1.3 +MLINKS+= EVP_camellia.3 EVP_camellia_256_cfb128.3 +MLINKS+= EVP_camellia.3 EVP_camellia_256_cfb8.3 +MLINKS+= EVP_camellia.3 EVP_camellia_256_ctr.3 +MLINKS+= EVP_camellia.3 EVP_camellia_256_ecb.3 +MLINKS+= EVP_camellia.3 EVP_camellia_256_ofb.3 +MLINKS+= EVP_cast5_cbc.3 EVP_cast5_cfb.3 +MLINKS+= EVP_cast5_cbc.3 EVP_cast5_cfb64.3 +MLINKS+= EVP_cast5_cbc.3 EVP_cast5_ecb.3 +MLINKS+= EVP_cast5_cbc.3 EVP_cast5_ofb.3 +MLINKS+= EVP_chacha20.3 EVP_chacha20_poly1305.3 +MLINKS+= EVP_des.3 EVP_des_cbc.3 +MLINKS+= EVP_des.3 EVP_des_cfb.3 +MLINKS+= EVP_des.3 EVP_des_cfb1.3 +MLINKS+= EVP_des.3 EVP_des_cfb64.3 +MLINKS+= EVP_des.3 EVP_des_cfb8.3 +MLINKS+= EVP_des.3 EVP_des_ecb.3 +MLINKS+= EVP_des.3 EVP_des_ede.3 +MLINKS+= EVP_des.3 EVP_des_ede3.3 +MLINKS+= EVP_des.3 EVP_des_ede3_cbc.3 +MLINKS+= EVP_des.3 EVP_des_ede3_cfb.3 +MLINKS+= EVP_des.3 EVP_des_ede3_cfb1.3 +MLINKS+= EVP_des.3 EVP_des_ede3_cfb64.3 +MLINKS+= EVP_des.3 EVP_des_ede3_cfb8.3 +MLINKS+= EVP_des.3 EVP_des_ede3_ecb.3 +MLINKS+= EVP_des.3 EVP_des_ede3_ofb.3 +MLINKS+= EVP_des.3 EVP_des_ede3_wrap.3 +MLINKS+= EVP_des.3 EVP_des_ede_cbc.3 +MLINKS+= EVP_des.3 EVP_des_ede_cfb.3 +MLINKS+= EVP_des.3 EVP_des_ede_cfb64.3 +MLINKS+= EVP_des.3 EVP_des_ede_ecb.3 +MLINKS+= EVP_des.3 EVP_des_ede_ofb.3 +MLINKS+= EVP_des.3 EVP_des_ofb.3 +MLINKS+= EVP_idea_cbc.3 EVP_idea_cfb.3 +MLINKS+= EVP_idea_cbc.3 EVP_idea_cfb64.3 +MLINKS+= EVP_idea_cbc.3 EVP_idea_ecb.3 +MLINKS+= EVP_idea_cbc.3 EVP_idea_ofb.3 +MLINKS+= EVP_md5.3 EVP_md5_sha1.3 +MLINKS+= EVP_rc2_cbc.3 EVP_rc2_40_cbc.3 +MLINKS+= EVP_rc2_cbc.3 EVP_rc2_64_cbc.3 +MLINKS+= EVP_rc2_cbc.3 EVP_rc2_cfb.3 +MLINKS+= EVP_rc2_cbc.3 EVP_rc2_cfb64.3 +MLINKS+= EVP_rc2_cbc.3 EVP_rc2_ecb.3 +MLINKS+= EVP_rc2_cbc.3 EVP_rc2_ofb.3 +MLINKS+= EVP_rc4.3 EVP_rc4_40.3 +MLINKS+= EVP_rc4.3 EVP_rc4_hmac_md5.3 +MLINKS+= EVP_rc5_32_12_16_cbc.3 EVP_rc5_32_12_16_cfb.3 +MLINKS+= EVP_rc5_32_12_16_cbc.3 EVP_rc5_32_12_16_cfb64.3 +MLINKS+= EVP_rc5_32_12_16_cbc.3 EVP_rc5_32_12_16_ecb.3 +MLINKS+= EVP_rc5_32_12_16_cbc.3 EVP_rc5_32_12_16_ofb.3 +MLINKS+= EVP_seed_cbc.3 EVP_seed_cfb.3 +MLINKS+= EVP_seed_cbc.3 EVP_seed_cfb128.3 +MLINKS+= EVP_seed_cbc.3 EVP_seed_ecb.3 +MLINKS+= EVP_seed_cbc.3 EVP_seed_ofb.3 +MLINKS+= EVP_sha224.3 EVP_sha256.3 +MLINKS+= EVP_sha224.3 EVP_sha384.3 +MLINKS+= EVP_sha224.3 EVP_sha512.3 +MLINKS+= EVP_sha224.3 EVP_sha512_224.3 +MLINKS+= EVP_sha224.3 EVP_sha512_256.3 +MLINKS+= EVP_sha3_224.3 EVP_sha3_256.3 +MLINKS+= EVP_sha3_224.3 EVP_sha3_384.3 +MLINKS+= EVP_sha3_224.3 EVP_sha3_512.3 +MLINKS+= EVP_sha3_224.3 EVP_shake128.3 +MLINKS+= EVP_sha3_224.3 EVP_shake256.3 +MLINKS+= EVP_sm4_cbc.3 EVP_sm4_cfb.3 +MLINKS+= EVP_sm4_cbc.3 EVP_sm4_cfb128.3 +MLINKS+= EVP_sm4_cbc.3 EVP_sm4_ctr.3 +MLINKS+= EVP_sm4_cbc.3 EVP_sm4_ecb.3 +MLINKS+= EVP_sm4_cbc.3 EVP_sm4_ofb.3 +MLINKS+= HMAC.3 HMAC_CTX_copy.3 +MLINKS+= HMAC.3 HMAC_CTX_free.3 +MLINKS+= HMAC.3 HMAC_CTX_get_md.3 +MLINKS+= HMAC.3 HMAC_CTX_new.3 +MLINKS+= HMAC.3 HMAC_CTX_reset.3 +MLINKS+= HMAC.3 HMAC_CTX_set_flags.3 +MLINKS+= HMAC.3 HMAC_Final.3 +MLINKS+= HMAC.3 HMAC_Init.3 +MLINKS+= HMAC.3 HMAC_Init_ex.3 +MLINKS+= HMAC.3 HMAC_Update.3 +MLINKS+= HMAC.3 HMAC_size.3 +MLINKS+= MD5.3 MD2.3 +MLINKS+= MD5.3 MD2_Final.3 +MLINKS+= MD5.3 MD2_Init.3 +MLINKS+= MD5.3 MD2_Update.3 +MLINKS+= MD5.3 MD4.3 +MLINKS+= MD5.3 MD4_Final.3 +MLINKS+= MD5.3 MD4_Init.3 +MLINKS+= MD5.3 MD4_Update.3 +MLINKS+= MD5.3 MD5_Final.3 +MLINKS+= MD5.3 MD5_Init.3 +MLINKS+= MD5.3 MD5_Update.3 +MLINKS+= MDC2_Init.3 MDC2.3 +MLINKS+= MDC2_Init.3 MDC2_Final.3 +MLINKS+= MDC2_Init.3 MDC2_Update.3 +MLINKS+= OBJ_nid2obj.3 OBJ_cleanup.3 +MLINKS+= OBJ_nid2obj.3 OBJ_cmp.3 +MLINKS+= OBJ_nid2obj.3 OBJ_create.3 +MLINKS+= OBJ_nid2obj.3 OBJ_dup.3 +MLINKS+= OBJ_nid2obj.3 OBJ_get0_data.3 +MLINKS+= OBJ_nid2obj.3 OBJ_length.3 +MLINKS+= OBJ_nid2obj.3 OBJ_ln2nid.3 +MLINKS+= OBJ_nid2obj.3 OBJ_nid2ln.3 +MLINKS+= OBJ_nid2obj.3 OBJ_nid2sn.3 +MLINKS+= OBJ_nid2obj.3 OBJ_obj2nid.3 +MLINKS+= OBJ_nid2obj.3 OBJ_obj2txt.3 +MLINKS+= OBJ_nid2obj.3 OBJ_sn2nid.3 +MLINKS+= OBJ_nid2obj.3 OBJ_txt2nid.3 +MLINKS+= OBJ_nid2obj.3 OBJ_txt2obj.3 +MLINKS+= OBJ_nid2obj.3 i2t_ASN1_OBJECT.3 +MLINKS+= OCSP_REQUEST_new.3 OCSP_REQUEST_free.3 +MLINKS+= OCSP_REQUEST_new.3 OCSP_request_add0_id.3 +MLINKS+= OCSP_REQUEST_new.3 OCSP_request_add1_cert.3 +MLINKS+= OCSP_REQUEST_new.3 OCSP_request_onereq_count.3 +MLINKS+= OCSP_REQUEST_new.3 OCSP_request_onereq_get0.3 +MLINKS+= OCSP_REQUEST_new.3 OCSP_request_sign.3 +MLINKS+= OCSP_cert_to_id.3 OCSP_CERTID_free.3 +MLINKS+= OCSP_cert_to_id.3 OCSP_cert_id_new.3 +MLINKS+= OCSP_cert_to_id.3 OCSP_id_cmp.3 +MLINKS+= OCSP_cert_to_id.3 OCSP_id_get0_info.3 +MLINKS+= OCSP_cert_to_id.3 OCSP_id_issuer_cmp.3 +MLINKS+= OCSP_request_add1_nonce.3 OCSP_basic_add1_nonce.3 +MLINKS+= OCSP_request_add1_nonce.3 OCSP_check_nonce.3 +MLINKS+= OCSP_request_add1_nonce.3 OCSP_copy_nonce.3 +MLINKS+= OCSP_resp_find_status.3 OCSP_basic_verify.3 +MLINKS+= OCSP_resp_find_status.3 OCSP_check_validity.3 +MLINKS+= OCSP_resp_find_status.3 OCSP_resp_count.3 +MLINKS+= OCSP_resp_find_status.3 OCSP_resp_find.3 +MLINKS+= OCSP_resp_find_status.3 OCSP_resp_get0.3 +MLINKS+= OCSP_resp_find_status.3 OCSP_resp_get0_certs.3 +MLINKS+= OCSP_resp_find_status.3 OCSP_resp_get0_id.3 +MLINKS+= OCSP_resp_find_status.3 OCSP_resp_get0_produced_at.3 +MLINKS+= OCSP_resp_find_status.3 OCSP_resp_get0_respdata.3 +MLINKS+= OCSP_resp_find_status.3 OCSP_resp_get0_signature.3 +MLINKS+= OCSP_resp_find_status.3 OCSP_resp_get0_signer.3 +MLINKS+= OCSP_resp_find_status.3 OCSP_resp_get0_tbs_sigalg.3 +MLINKS+= OCSP_resp_find_status.3 OCSP_resp_get1_id.3 +MLINKS+= OCSP_resp_find_status.3 OCSP_single_get0_status.3 +MLINKS+= OCSP_response_status.3 OCSP_RESPID_match.3 +MLINKS+= OCSP_response_status.3 OCSP_RESPID_set_by_key.3 +MLINKS+= OCSP_response_status.3 OCSP_RESPID_set_by_name.3 +MLINKS+= OCSP_response_status.3 OCSP_RESPONSE_free.3 +MLINKS+= OCSP_response_status.3 OCSP_basic_sign.3 +MLINKS+= OCSP_response_status.3 OCSP_basic_sign_ctx.3 +MLINKS+= OCSP_response_status.3 OCSP_response_create.3 +MLINKS+= OCSP_response_status.3 OCSP_response_get1_basic.3 +MLINKS+= OCSP_sendreq_new.3 OCSP_REQ_CTX_add1_header.3 +MLINKS+= OCSP_sendreq_new.3 OCSP_REQ_CTX_free.3 +MLINKS+= OCSP_sendreq_new.3 OCSP_REQ_CTX_set1_req.3 +MLINKS+= OCSP_sendreq_new.3 OCSP_sendreq_bio.3 +MLINKS+= OCSP_sendreq_new.3 OCSP_sendreq_nbio.3 +MLINKS+= OCSP_sendreq_new.3 OCSP_set_max_response_length.3 +MLINKS+= OPENSSL_LH_COMPFUNC.3 DECLARE_LHASH_OF.3 +MLINKS+= OPENSSL_LH_COMPFUNC.3 IMPLEMENT_LHASH_COMP_FN.3 +MLINKS+= OPENSSL_LH_COMPFUNC.3 IMPLEMENT_LHASH_HASH_FN.3 +MLINKS+= OPENSSL_LH_COMPFUNC.3 LHASH.3 +MLINKS+= OPENSSL_LH_COMPFUNC.3 LHASH_DOALL_ARG_FN_TYPE.3 +MLINKS+= OPENSSL_LH_COMPFUNC.3 OPENSSL_LH_DOALL_FUNC.3 +MLINKS+= OPENSSL_LH_COMPFUNC.3 OPENSSL_LH_HASHFUNC.3 +MLINKS+= OPENSSL_LH_COMPFUNC.3 lh_TYPE_delete.3 +MLINKS+= OPENSSL_LH_COMPFUNC.3 lh_TYPE_doall.3 +MLINKS+= OPENSSL_LH_COMPFUNC.3 lh_TYPE_doall_arg.3 +MLINKS+= OPENSSL_LH_COMPFUNC.3 lh_TYPE_error.3 +MLINKS+= OPENSSL_LH_COMPFUNC.3 lh_TYPE_free.3 +MLINKS+= OPENSSL_LH_COMPFUNC.3 lh_TYPE_insert.3 +MLINKS+= OPENSSL_LH_COMPFUNC.3 lh_TYPE_new.3 +MLINKS+= OPENSSL_LH_COMPFUNC.3 lh_TYPE_retrieve.3 +MLINKS+= OPENSSL_LH_stats.3 OPENSSL_LH_node_stats.3 +MLINKS+= OPENSSL_LH_stats.3 OPENSSL_LH_node_stats_bio.3 +MLINKS+= OPENSSL_LH_stats.3 OPENSSL_LH_node_usage_stats.3 +MLINKS+= OPENSSL_LH_stats.3 OPENSSL_LH_node_usage_stats_bio.3 +MLINKS+= OPENSSL_LH_stats.3 OPENSSL_LH_stats_bio.3 +MLINKS+= OPENSSL_VERSION_NUMBER.3 OPENSSL_VERSION_TEXT.3 +MLINKS+= OPENSSL_VERSION_NUMBER.3 OpenSSL_version.3 +MLINKS+= OPENSSL_VERSION_NUMBER.3 OpenSSL_version_num.3 +MLINKS+= OPENSSL_config.3 OPENSSL_no_config.3 +MLINKS+= OPENSSL_fork_prepare.3 OPENSSL_fork_child.3 +MLINKS+= OPENSSL_fork_prepare.3 OPENSSL_fork_parent.3 +MLINKS+= OPENSSL_init_crypto.3 OPENSSL_INIT_free.3 +MLINKS+= OPENSSL_init_crypto.3 OPENSSL_INIT_new.3 +MLINKS+= OPENSSL_init_crypto.3 OPENSSL_INIT_set_config_appname.3 +MLINKS+= OPENSSL_init_crypto.3 OPENSSL_INIT_set_config_file_flags.3 +MLINKS+= OPENSSL_init_crypto.3 OPENSSL_INIT_set_config_filename.3 +MLINKS+= OPENSSL_init_crypto.3 OPENSSL_atexit.3 +MLINKS+= OPENSSL_init_crypto.3 OPENSSL_cleanup.3 +MLINKS+= OPENSSL_init_crypto.3 OPENSSL_thread_stop.3 +MLINKS+= OPENSSL_instrument_bus.3 OPENSSL_instrument_bus2.3 +MLINKS+= OPENSSL_load_builtin_modules.3 ASN1_add_oid_module.3 +MLINKS+= OPENSSL_load_builtin_modules.3 ENGINE_add_conf_module.3 +MLINKS+= OPENSSL_malloc.3 CRYPTO_clear_free.3 +MLINKS+= OPENSSL_malloc.3 CRYPTO_clear_realloc.3 +MLINKS+= OPENSSL_malloc.3 CRYPTO_free.3 +MLINKS+= OPENSSL_malloc.3 CRYPTO_get_alloc_counts.3 +MLINKS+= OPENSSL_malloc.3 CRYPTO_get_mem_functions.3 +MLINKS+= OPENSSL_malloc.3 CRYPTO_malloc.3 +MLINKS+= OPENSSL_malloc.3 CRYPTO_mem_ctrl.3 +MLINKS+= OPENSSL_malloc.3 CRYPTO_mem_debug_pop.3 +MLINKS+= OPENSSL_malloc.3 CRYPTO_mem_debug_push.3 +MLINKS+= OPENSSL_malloc.3 CRYPTO_mem_leaks.3 +MLINKS+= OPENSSL_malloc.3 CRYPTO_mem_leaks_cb.3 +MLINKS+= OPENSSL_malloc.3 CRYPTO_mem_leaks_fp.3 +MLINKS+= OPENSSL_malloc.3 CRYPTO_realloc.3 +MLINKS+= OPENSSL_malloc.3 CRYPTO_set_mem_debug.3 +MLINKS+= OPENSSL_malloc.3 CRYPTO_set_mem_functions.3 +MLINKS+= OPENSSL_malloc.3 CRYPTO_strdup.3 +MLINKS+= OPENSSL_malloc.3 CRYPTO_strndup.3 +MLINKS+= OPENSSL_malloc.3 CRYPTO_zalloc.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_MALLOC_FAILURES.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_MALLOC_FD.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_buf2hexstr.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_cleanse.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_clear_free.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_clear_realloc.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_free.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_hexchar2int.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_hexstr2buf.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_malloc_init.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_mem_debug_pop.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_mem_debug_push.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_memdup.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_realloc.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_strdup.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_strlcat.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_strlcpy.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_strndup.3 +MLINKS+= OPENSSL_malloc.3 OPENSSL_zalloc.3 +MLINKS+= OPENSSL_secure_malloc.3 CRYPTO_secure_clear_free.3 +MLINKS+= OPENSSL_secure_malloc.3 CRYPTO_secure_free.3 +MLINKS+= OPENSSL_secure_malloc.3 CRYPTO_secure_malloc.3 +MLINKS+= OPENSSL_secure_malloc.3 CRYPTO_secure_malloc_done.3 +MLINKS+= OPENSSL_secure_malloc.3 CRYPTO_secure_malloc_init.3 +MLINKS+= OPENSSL_secure_malloc.3 CRYPTO_secure_malloc_initialized.3 +MLINKS+= OPENSSL_secure_malloc.3 CRYPTO_secure_used.3 +MLINKS+= OPENSSL_secure_malloc.3 CRYPTO_secure_zalloc.3 +MLINKS+= OPENSSL_secure_malloc.3 OPENSSL_secure_actual_size.3 +MLINKS+= OPENSSL_secure_malloc.3 OPENSSL_secure_clear_free.3 +MLINKS+= OPENSSL_secure_malloc.3 OPENSSL_secure_free.3 +MLINKS+= OPENSSL_secure_malloc.3 OPENSSL_secure_zalloc.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_free.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get0_CERT.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get0_CRL.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get0_NAME.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get0_NAME_description.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get0_PARAMS.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get0_PKEY.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get1_CERT.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get1_CRL.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get1_NAME.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get1_NAME_description.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get1_PARAMS.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get1_PKEY.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_get_type.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_new_CERT.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_new_CRL.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_new_NAME.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_new_PARAMS.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_new_PKEY.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_set0_NAME_description.3 +MLINKS+= OSSL_STORE_INFO.3 OSSL_STORE_INFO_type_string.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_CTX.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_free.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_get0_engine.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_get0_scheme.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_new.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_set_close.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_set_ctrl.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_set_eof.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_set_error.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_set_expect.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_set_find.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_set_load.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_LOADER_set_open.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_close_fn.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_ctrl_fn.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_eof_fn.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_error_fn.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_expect_fn.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_find_fn.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_load_fn.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_open_fn.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_register_loader.3 +MLINKS+= OSSL_STORE_LOADER.3 OSSL_STORE_unregister_loader.3 +MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_by_alias.3 +MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_by_issuer_serial.3 +MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_by_key_fingerprint.3 +MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_by_name.3 +MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_free.3 +MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_get0_bytes.3 +MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_get0_digest.3 +MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_get0_name.3 +MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_get0_serial.3 +MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_get0_string.3 +MLINKS+= OSSL_STORE_SEARCH.3 OSSL_STORE_SEARCH_get_type.3 +MLINKS+= OSSL_STORE_expect.3 OSSL_STORE_find.3 +MLINKS+= OSSL_STORE_expect.3 OSSL_STORE_supports_search.3 +MLINKS+= OSSL_STORE_open.3 OSSL_STORE_CTX.3 +MLINKS+= OSSL_STORE_open.3 OSSL_STORE_close.3 +MLINKS+= OSSL_STORE_open.3 OSSL_STORE_ctrl.3 +MLINKS+= OSSL_STORE_open.3 OSSL_STORE_eof.3 +MLINKS+= OSSL_STORE_open.3 OSSL_STORE_error.3 +MLINKS+= OSSL_STORE_open.3 OSSL_STORE_load.3 +MLINKS+= OSSL_STORE_open.3 OSSL_STORE_post_process_info_fn.3 +MLINKS+= OpenSSL_add_all_algorithms.3 EVP_cleanup.3 +MLINKS+= OpenSSL_add_all_algorithms.3 OpenSSL_add_all_ciphers.3 +MLINKS+= OpenSSL_add_all_algorithms.3 OpenSSL_add_all_digests.3 +MLINKS+= PEM_bytes_read_bio.3 PEM_bytes_read_bio_secmem.3 +MLINKS+= PEM_read.3 PEM_do_header.3 +MLINKS+= PEM_read.3 PEM_get_EVP_CIPHER_INFO.3 +MLINKS+= PEM_read.3 PEM_read_bio.3 +MLINKS+= PEM_read.3 PEM_write.3 +MLINKS+= PEM_read.3 PEM_write_bio.3 +MLINKS+= PEM_read_CMS.3 DECLARE_PEM_rw.3 +MLINKS+= PEM_read_CMS.3 PEM_read_ECPKParameters.3 +MLINKS+= PEM_read_CMS.3 PEM_read_ECPrivateKey.3 +MLINKS+= PEM_read_CMS.3 PEM_read_EC_PUBKEY.3 +MLINKS+= PEM_read_CMS.3 PEM_read_NETSCAPE_CERT_SEQUENCE.3 +MLINKS+= PEM_read_CMS.3 PEM_read_PKCS8.3 +MLINKS+= PEM_read_CMS.3 PEM_read_PKCS8_PRIV_KEY_INFO.3 +MLINKS+= PEM_read_CMS.3 PEM_read_SSL_SESSION.3 +MLINKS+= PEM_read_CMS.3 PEM_read_bio_CMS.3 +MLINKS+= PEM_read_CMS.3 PEM_read_bio_ECPKParameters.3 +MLINKS+= PEM_read_CMS.3 PEM_read_bio_EC_PUBKEY.3 +MLINKS+= PEM_read_CMS.3 PEM_read_bio_NETSCAPE_CERT_SEQUENCE.3 +MLINKS+= PEM_read_CMS.3 PEM_read_bio_PKCS8.3 +MLINKS+= PEM_read_CMS.3 PEM_read_bio_PKCS8_PRIV_KEY_INFO.3 +MLINKS+= PEM_read_CMS.3 PEM_read_bio_SSL_SESSION.3 +MLINKS+= PEM_read_CMS.3 PEM_write_CMS.3 +MLINKS+= PEM_read_CMS.3 PEM_write_DHxparams.3 +MLINKS+= PEM_read_CMS.3 PEM_write_ECPKParameters.3 +MLINKS+= PEM_read_CMS.3 PEM_write_ECPrivateKey.3 +MLINKS+= PEM_read_CMS.3 PEM_write_EC_PUBKEY.3 +MLINKS+= PEM_read_CMS.3 PEM_write_NETSCAPE_CERT_SEQUENCE.3 +MLINKS+= PEM_read_CMS.3 PEM_write_PKCS8.3 +MLINKS+= PEM_read_CMS.3 PEM_write_PKCS8_PRIV_KEY_INFO.3 +MLINKS+= PEM_read_CMS.3 PEM_write_SSL_SESSION.3 +MLINKS+= PEM_read_CMS.3 PEM_write_bio_CMS.3 +MLINKS+= PEM_read_CMS.3 PEM_write_bio_DHxparams.3 +MLINKS+= PEM_read_CMS.3 PEM_write_bio_ECPKParameters.3 +MLINKS+= PEM_read_CMS.3 PEM_write_bio_ECPrivateKey.3 +MLINKS+= PEM_read_CMS.3 PEM_write_bio_EC_PUBKEY.3 +MLINKS+= PEM_read_CMS.3 PEM_write_bio_NETSCAPE_CERT_SEQUENCE.3 +MLINKS+= PEM_read_CMS.3 PEM_write_bio_PKCS8.3 +MLINKS+= PEM_read_CMS.3 PEM_write_bio_PKCS8_PRIV_KEY_INFO.3 +MLINKS+= PEM_read_CMS.3 PEM_write_bio_SSL_SESSION.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_DHparams.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_DSAPrivateKey.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_DSA_PUBKEY.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_DSAparams.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_PKCS7.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_PUBKEY.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_PrivateKey.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_RSAPrivateKey.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_RSAPublicKey.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_RSA_PUBKEY.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_X509.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_X509_AUX.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_X509_CRL.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_X509_REQ.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_DHparams.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_DSAPrivateKey.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_DSA_PUBKEY.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_DSAparams.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_PKCS7.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_PUBKEY.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_RSAPrivateKey.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_RSAPublicKey.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_RSA_PUBKEY.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_X509.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_X509_AUX.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_X509_CRL.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_read_bio_X509_REQ.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_DHparams.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_DSAPrivateKey.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_DSA_PUBKEY.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_DSAparams.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_PKCS7.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_PKCS8PrivateKey.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_PKCS8PrivateKey_nid.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_PUBKEY.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_PrivateKey.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_RSAPrivateKey.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_RSAPublicKey.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_RSA_PUBKEY.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_X509.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_X509_AUX.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_X509_CRL.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_X509_REQ.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_X509_REQ_NEW.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_DHparams.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_DSAPrivateKey.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_DSA_PUBKEY.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_DSAparams.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_PKCS7.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_PKCS8PrivateKey.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_PKCS8PrivateKey_nid.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_PUBKEY.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_PrivateKey.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_PrivateKey_traditional.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_RSAPrivateKey.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_RSAPublicKey.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_RSA_PUBKEY.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_X509.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_X509_AUX.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_X509_CRL.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_X509_REQ.3 +MLINKS+= PEM_read_bio_PrivateKey.3 PEM_write_bio_X509_REQ_NEW.3 +MLINKS+= PEM_read_bio_PrivateKey.3 pem_password_cb.3 +MLINKS+= PEM_read_bio_ex.3 PEM_FLAG_EAY_COMPATIBLE.3 +MLINKS+= PEM_read_bio_ex.3 PEM_FLAG_ONLY_B64.3 +MLINKS+= PEM_read_bio_ex.3 PEM_FLAG_SECURE.3 +MLINKS+= PKCS5_PBKDF2_HMAC.3 PKCS5_PBKDF2_HMAC_SHA1.3 +MLINKS+= PKCS7_verify.3 PKCS7_get0_signers.3 +MLINKS+= RAND_DRBG_generate.3 RAND_DRBG_bytes.3 +MLINKS+= RAND_DRBG_get0_master.3 RAND_DRBG_get0_private.3 +MLINKS+= RAND_DRBG_get0_master.3 RAND_DRBG_get0_public.3 +MLINKS+= RAND_DRBG_new.3 RAND_DRBG_free.3 +MLINKS+= RAND_DRBG_new.3 RAND_DRBG_instantiate.3 +MLINKS+= RAND_DRBG_new.3 RAND_DRBG_secure_new.3 +MLINKS+= RAND_DRBG_new.3 RAND_DRBG_set.3 +MLINKS+= RAND_DRBG_new.3 RAND_DRBG_set_defaults.3 +MLINKS+= RAND_DRBG_new.3 RAND_DRBG_uninstantiate.3 +MLINKS+= RAND_DRBG_reseed.3 RAND_DRBG_set_reseed_defaults.3 +MLINKS+= RAND_DRBG_reseed.3 RAND_DRBG_set_reseed_interval.3 +MLINKS+= RAND_DRBG_reseed.3 RAND_DRBG_set_reseed_time_interval.3 +MLINKS+= RAND_DRBG_set_callbacks.3 RAND_DRBG_cleanup_entropy_fn.3 +MLINKS+= RAND_DRBG_set_callbacks.3 RAND_DRBG_cleanup_nonce_fn.3 +MLINKS+= RAND_DRBG_set_callbacks.3 RAND_DRBG_get_entropy_fn.3 +MLINKS+= RAND_DRBG_set_callbacks.3 RAND_DRBG_get_nonce_fn.3 +MLINKS+= RAND_DRBG_set_ex_data.3 RAND_DRBG_get_ex_data.3 +MLINKS+= RAND_DRBG_set_ex_data.3 RAND_DRBG_get_ex_new_index.3 +MLINKS+= RAND_add.3 RAND_event.3 +MLINKS+= RAND_add.3 RAND_keep_random_devices_open.3 +MLINKS+= RAND_add.3 RAND_poll.3 +MLINKS+= RAND_add.3 RAND_screen.3 +MLINKS+= RAND_add.3 RAND_seed.3 +MLINKS+= RAND_add.3 RAND_status.3 +MLINKS+= RAND_bytes.3 RAND_priv_bytes.3 +MLINKS+= RAND_bytes.3 RAND_pseudo_bytes.3 +MLINKS+= RAND_egd.3 RAND_egd_bytes.3 +MLINKS+= RAND_egd.3 RAND_query_egd_bytes.3 +MLINKS+= RAND_load_file.3 RAND_file_name.3 +MLINKS+= RAND_load_file.3 RAND_write_file.3 +MLINKS+= RAND_set_rand_method.3 RAND_OpenSSL.3 +MLINKS+= RAND_set_rand_method.3 RAND_get_rand_method.3 +MLINKS+= RC4_set_key.3 RC4.3 +MLINKS+= RIPEMD160_Init.3 RIPEMD160.3 +MLINKS+= RIPEMD160_Init.3 RIPEMD160_Final.3 +MLINKS+= RIPEMD160_Init.3 RIPEMD160_Update.3 +MLINKS+= RSA_blinding_on.3 RSA_blinding_off.3 +MLINKS+= RSA_check_key.3 RSA_check_key_ex.3 +MLINKS+= RSA_generate_key.3 RSA_generate_key_ex.3 +MLINKS+= RSA_generate_key.3 RSA_generate_multi_prime_key.3 +MLINKS+= RSA_get0_key.3 RSA_clear_flags.3 +MLINKS+= RSA_get0_key.3 RSA_get0_crt_params.3 +MLINKS+= RSA_get0_key.3 RSA_get0_d.3 +MLINKS+= RSA_get0_key.3 RSA_get0_dmp1.3 +MLINKS+= RSA_get0_key.3 RSA_get0_dmq1.3 +MLINKS+= RSA_get0_key.3 RSA_get0_e.3 +MLINKS+= RSA_get0_key.3 RSA_get0_engine.3 +MLINKS+= RSA_get0_key.3 RSA_get0_factors.3 +MLINKS+= RSA_get0_key.3 RSA_get0_iqmp.3 +MLINKS+= RSA_get0_key.3 RSA_get0_multi_prime_crt_params.3 +MLINKS+= RSA_get0_key.3 RSA_get0_multi_prime_factors.3 +MLINKS+= RSA_get0_key.3 RSA_get0_n.3 +MLINKS+= RSA_get0_key.3 RSA_get0_p.3 +MLINKS+= RSA_get0_key.3 RSA_get0_q.3 +MLINKS+= RSA_get0_key.3 RSA_get_multi_prime_extra_count.3 +MLINKS+= RSA_get0_key.3 RSA_get_version.3 +MLINKS+= RSA_get0_key.3 RSA_set0_crt_params.3 +MLINKS+= RSA_get0_key.3 RSA_set0_factors.3 +MLINKS+= RSA_get0_key.3 RSA_set0_key.3 +MLINKS+= RSA_get0_key.3 RSA_set0_multi_prime_params.3 +MLINKS+= RSA_get0_key.3 RSA_set_flags.3 +MLINKS+= RSA_get0_key.3 RSA_test_flags.3 +MLINKS+= RSA_meth_new.3 RSA_meth_dup.3 +MLINKS+= RSA_meth_new.3 RSA_meth_free.3 +MLINKS+= RSA_meth_new.3 RSA_meth_get0_app_data.3 +MLINKS+= RSA_meth_new.3 RSA_meth_get0_name.3 +MLINKS+= RSA_meth_new.3 RSA_meth_get_bn_mod_exp.3 +MLINKS+= RSA_meth_new.3 RSA_meth_get_finish.3 +MLINKS+= RSA_meth_new.3 RSA_meth_get_flags.3 +MLINKS+= RSA_meth_new.3 RSA_meth_get_init.3 +MLINKS+= RSA_meth_new.3 RSA_meth_get_keygen.3 +MLINKS+= RSA_meth_new.3 RSA_meth_get_mod_exp.3 +MLINKS+= RSA_meth_new.3 RSA_meth_get_multi_prime_keygen.3 +MLINKS+= RSA_meth_new.3 RSA_meth_get_priv_dec.3 +MLINKS+= RSA_meth_new.3 RSA_meth_get_priv_enc.3 +MLINKS+= RSA_meth_new.3 RSA_meth_get_pub_dec.3 +MLINKS+= RSA_meth_new.3 RSA_meth_get_pub_enc.3 +MLINKS+= RSA_meth_new.3 RSA_meth_get_sign.3 +MLINKS+= RSA_meth_new.3 RSA_meth_get_verify.3 +MLINKS+= RSA_meth_new.3 RSA_meth_set0_app_data.3 +MLINKS+= RSA_meth_new.3 RSA_meth_set1_name.3 +MLINKS+= RSA_meth_new.3 RSA_meth_set_bn_mod_exp.3 +MLINKS+= RSA_meth_new.3 RSA_meth_set_finish.3 +MLINKS+= RSA_meth_new.3 RSA_meth_set_flags.3 +MLINKS+= RSA_meth_new.3 RSA_meth_set_init.3 +MLINKS+= RSA_meth_new.3 RSA_meth_set_keygen.3 +MLINKS+= RSA_meth_new.3 RSA_meth_set_mod_exp.3 +MLINKS+= RSA_meth_new.3 RSA_meth_set_multi_prime_keygen.3 +MLINKS+= RSA_meth_new.3 RSA_meth_set_priv_dec.3 +MLINKS+= RSA_meth_new.3 RSA_meth_set_priv_enc.3 +MLINKS+= RSA_meth_new.3 RSA_meth_set_pub_dec.3 +MLINKS+= RSA_meth_new.3 RSA_meth_set_pub_enc.3 +MLINKS+= RSA_meth_new.3 RSA_meth_set_sign.3 +MLINKS+= RSA_meth_new.3 RSA_meth_set_verify.3 +MLINKS+= RSA_new.3 RSA_free.3 +MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_add_PKCS1_OAEP.3 +MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_add_PKCS1_OAEP_mgf1.3 +MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_add_PKCS1_type_2.3 +MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_add_SSLv23.3 +MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_add_none.3 +MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_check_PKCS1_OAEP.3 +MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_check_PKCS1_OAEP_mgf1.3 +MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_check_PKCS1_type_1.3 +MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_check_PKCS1_type_2.3 +MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_check_SSLv23.3 +MLINKS+= RSA_padding_add_PKCS1_type_1.3 RSA_padding_check_none.3 +MLINKS+= RSA_print.3 DHparams_print.3 +MLINKS+= RSA_print.3 DHparams_print_fp.3 +MLINKS+= RSA_print.3 DSA_print.3 +MLINKS+= RSA_print.3 DSA_print_fp.3 +MLINKS+= RSA_print.3 DSAparams_print.3 +MLINKS+= RSA_print.3 DSAparams_print_fp.3 +MLINKS+= RSA_print.3 RSA_print_fp.3 +MLINKS+= RSA_private_encrypt.3 RSA_public_decrypt.3 +MLINKS+= RSA_public_encrypt.3 RSA_private_decrypt.3 +MLINKS+= RSA_set_method.3 RSA_PKCS1_OpenSSL.3 +MLINKS+= RSA_set_method.3 RSA_flags.3 +MLINKS+= RSA_set_method.3 RSA_get_default_method.3 +MLINKS+= RSA_set_method.3 RSA_get_method.3 +MLINKS+= RSA_set_method.3 RSA_new_method.3 +MLINKS+= RSA_set_method.3 RSA_set_default_method.3 +MLINKS+= RSA_sign.3 RSA_verify.3 +MLINKS+= RSA_sign_ASN1_OCTET_STRING.3 RSA_verify_ASN1_OCTET_STRING.3 +MLINKS+= RSA_size.3 RSA_bits.3 +MLINKS+= RSA_size.3 RSA_security_bits.3 +MLINKS+= SCT_new.3 SCT_LIST_free.3 +MLINKS+= SCT_new.3 SCT_free.3 +MLINKS+= SCT_new.3 SCT_get0_extensions.3 +MLINKS+= SCT_new.3 SCT_get0_log_id.3 +MLINKS+= SCT_new.3 SCT_get0_signature.3 +MLINKS+= SCT_new.3 SCT_get_log_entry_type.3 +MLINKS+= SCT_new.3 SCT_get_signature_nid.3 +MLINKS+= SCT_new.3 SCT_get_source.3 +MLINKS+= SCT_new.3 SCT_get_timestamp.3 +MLINKS+= SCT_new.3 SCT_get_version.3 +MLINKS+= SCT_new.3 SCT_new_from_base64.3 +MLINKS+= SCT_new.3 SCT_set0_extensions.3 +MLINKS+= SCT_new.3 SCT_set0_log_id.3 +MLINKS+= SCT_new.3 SCT_set0_signature.3 +MLINKS+= SCT_new.3 SCT_set1_extensions.3 +MLINKS+= SCT_new.3 SCT_set1_log_id.3 +MLINKS+= SCT_new.3 SCT_set1_signature.3 +MLINKS+= SCT_new.3 SCT_set_log_entry_type.3 +MLINKS+= SCT_new.3 SCT_set_signature_nid.3 +MLINKS+= SCT_new.3 SCT_set_source.3 +MLINKS+= SCT_new.3 SCT_set_timestamp.3 +MLINKS+= SCT_new.3 SCT_set_version.3 +MLINKS+= SCT_print.3 SCT_LIST_print.3 +MLINKS+= SCT_print.3 SCT_validation_status_string.3 +MLINKS+= SCT_validate.3 SCT_LIST_validate.3 +MLINKS+= SCT_validate.3 SCT_get_validation_status.3 +MLINKS+= SHA256_Init.3 SHA1.3 +MLINKS+= SHA256_Init.3 SHA1_Final.3 +MLINKS+= SHA256_Init.3 SHA1_Init.3 +MLINKS+= SHA256_Init.3 SHA1_Update.3 +MLINKS+= SHA256_Init.3 SHA224.3 +MLINKS+= SHA256_Init.3 SHA224_Final.3 +MLINKS+= SHA256_Init.3 SHA224_Init.3 +MLINKS+= SHA256_Init.3 SHA224_Update.3 +MLINKS+= SHA256_Init.3 SHA256.3 +MLINKS+= SHA256_Init.3 SHA256_Final.3 +MLINKS+= SHA256_Init.3 SHA256_Update.3 +MLINKS+= SHA256_Init.3 SHA384.3 +MLINKS+= SHA256_Init.3 SHA384_Final.3 +MLINKS+= SHA256_Init.3 SHA384_Init.3 +MLINKS+= SHA256_Init.3 SHA384_Update.3 +MLINKS+= SHA256_Init.3 SHA512.3 +MLINKS+= SHA256_Init.3 SHA512_Final.3 +MLINKS+= SHA256_Init.3 SHA512_Init.3 +MLINKS+= SHA256_Init.3 SHA512_Update.3 +MLINKS+= SSL_CIPHER_get_name.3 OPENSSL_cipher_name.3 +MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_description.3 +MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_find.3 +MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_get_auth_nid.3 +MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_get_bits.3 +MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_get_cipher_nid.3 +MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_get_digest_nid.3 +MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_get_handshake_digest.3 +MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_get_id.3 +MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_get_kx_nid.3 +MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_get_protocol_id.3 +MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_get_version.3 +MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_is_aead.3 +MLINKS+= SSL_CIPHER_get_name.3 SSL_CIPHER_standard_name.3 +MLINKS+= SSL_COMP_add_compression_method.3 SSL_COMP_free_compression_methods.3 +MLINKS+= SSL_COMP_add_compression_method.3 SSL_COMP_get0_name.3 +MLINKS+= SSL_COMP_add_compression_method.3 SSL_COMP_get_compression_methods.3 +MLINKS+= SSL_COMP_add_compression_method.3 SSL_COMP_get_id.3 +MLINKS+= SSL_CONF_CTX_new.3 SSL_CONF_CTX_free.3 +MLINKS+= SSL_CONF_CTX_set_flags.3 SSL_CONF_CTX_clear_flags.3 +MLINKS+= SSL_CONF_CTX_set_ssl_ctx.3 SSL_CONF_CTX_set_ssl.3 +MLINKS+= SSL_CONF_cmd.3 SSL_CONF_cmd_value_type.3 +MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_CTX_add0_chain_cert.3 +MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_CTX_build_cert_chain.3 +MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_CTX_clear_chain_certs.3 +MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_CTX_get0_chain_certs.3 +MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_CTX_select_current_cert.3 +MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_CTX_set0_chain.3 +MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_CTX_set1_chain.3 +MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_CTX_set_current_cert.3 +MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_add0_chain_cert.3 +MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_add1_chain_cert.3 +MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_build_cert_chain.3 +MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_clear_chain_certs.3 +MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_get0_chain_certs.3 +MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_select_current_cert.3 +MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_set0_chain.3 +MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_set1_chain.3 +MLINKS+= SSL_CTX_add1_chain_cert.3 SSL_set_current_cert.3 +MLINKS+= SSL_CTX_add_extra_chain_cert.3 SSL_CTX_clear_extra_chain_certs.3 +MLINKS+= SSL_CTX_add_session.3 SSL_CTX_remove_session.3 +MLINKS+= SSL_CTX_config.3 SSL_config.3 +MLINKS+= SSL_CTX_ctrl.3 SSL_CTX_callback_ctrl.3 +MLINKS+= SSL_CTX_ctrl.3 SSL_callback_ctrl.3 +MLINKS+= SSL_CTX_ctrl.3 SSL_ctrl.3 +MLINKS+= SSL_CTX_dane_enable.3 SSL_CTX_dane_clear_flags.3 +MLINKS+= SSL_CTX_dane_enable.3 SSL_CTX_dane_mtype_set.3 +MLINKS+= SSL_CTX_dane_enable.3 SSL_CTX_dane_set_flags.3 +MLINKS+= SSL_CTX_dane_enable.3 SSL_dane_clear_flags.3 +MLINKS+= SSL_CTX_dane_enable.3 SSL_dane_enable.3 +MLINKS+= SSL_CTX_dane_enable.3 SSL_dane_set_flags.3 +MLINKS+= SSL_CTX_dane_enable.3 SSL_dane_tlsa_add.3 +MLINKS+= SSL_CTX_dane_enable.3 SSL_get0_dane_authority.3 +MLINKS+= SSL_CTX_dane_enable.3 SSL_get0_dane_tlsa.3 +MLINKS+= SSL_CTX_get0_param.3 SSL_CTX_set1_param.3 +MLINKS+= SSL_CTX_get0_param.3 SSL_get0_param.3 +MLINKS+= SSL_CTX_get0_param.3 SSL_set1_param.3 +MLINKS+= SSL_CTX_get_verify_mode.3 SSL_CTX_get_verify_callback.3 +MLINKS+= SSL_CTX_get_verify_mode.3 SSL_CTX_get_verify_depth.3 +MLINKS+= SSL_CTX_get_verify_mode.3 SSL_get_verify_callback.3 +MLINKS+= SSL_CTX_get_verify_mode.3 SSL_get_verify_depth.3 +MLINKS+= SSL_CTX_get_verify_mode.3 SSL_get_verify_mode.3 +MLINKS+= SSL_CTX_load_verify_locations.3 SSL_CTX_set_default_verify_dir.3 +MLINKS+= SSL_CTX_load_verify_locations.3 SSL_CTX_set_default_verify_file.3 +MLINKS+= SSL_CTX_load_verify_locations.3 SSL_CTX_set_default_verify_paths.3 +MLINKS+= SSL_CTX_new.3 DTLS_client_method.3 +MLINKS+= SSL_CTX_new.3 DTLS_method.3 +MLINKS+= SSL_CTX_new.3 DTLS_server_method.3 +MLINKS+= SSL_CTX_new.3 DTLSv1_2_client_method.3 +MLINKS+= SSL_CTX_new.3 DTLSv1_2_method.3 +MLINKS+= SSL_CTX_new.3 DTLSv1_2_server_method.3 +MLINKS+= SSL_CTX_new.3 DTLSv1_client_method.3 +MLINKS+= SSL_CTX_new.3 DTLSv1_method.3 +MLINKS+= SSL_CTX_new.3 DTLSv1_server_method.3 +MLINKS+= SSL_CTX_new.3 SSL_CTX_up_ref.3 +MLINKS+= SSL_CTX_new.3 SSLv23_client_method.3 +MLINKS+= SSL_CTX_new.3 SSLv23_method.3 +MLINKS+= SSL_CTX_new.3 SSLv23_server_method.3 +MLINKS+= SSL_CTX_new.3 SSLv3_client_method.3 +MLINKS+= SSL_CTX_new.3 SSLv3_method.3 +MLINKS+= SSL_CTX_new.3 SSLv3_server_method.3 +MLINKS+= SSL_CTX_new.3 TLS_client_method.3 +MLINKS+= SSL_CTX_new.3 TLS_method.3 +MLINKS+= SSL_CTX_new.3 TLS_server_method.3 +MLINKS+= SSL_CTX_new.3 TLSv1_1_client_method.3 +MLINKS+= SSL_CTX_new.3 TLSv1_1_method.3 +MLINKS+= SSL_CTX_new.3 TLSv1_1_server_method.3 +MLINKS+= SSL_CTX_new.3 TLSv1_2_client_method.3 +MLINKS+= SSL_CTX_new.3 TLSv1_2_method.3 +MLINKS+= SSL_CTX_new.3 TLSv1_2_server_method.3 +MLINKS+= SSL_CTX_new.3 TLSv1_client_method.3 +MLINKS+= SSL_CTX_new.3 TLSv1_method.3 +MLINKS+= SSL_CTX_new.3 TLSv1_server_method.3 +MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_accept.3 +MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_accept_good.3 +MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_accept_renegotiate.3 +MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_cache_full.3 +MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_cb_hits.3 +MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_connect.3 +MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_connect_good.3 +MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_connect_renegotiate.3 +MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_hits.3 +MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_misses.3 +MLINKS+= SSL_CTX_sess_number.3 SSL_CTX_sess_timeouts.3 +MLINKS+= SSL_CTX_sess_set_cache_size.3 SSL_CTX_sess_get_cache_size.3 +MLINKS+= SSL_CTX_sess_set_get_cb.3 SSL_CTX_sess_get_get_cb.3 +MLINKS+= SSL_CTX_sess_set_get_cb.3 SSL_CTX_sess_get_new_cb.3 +MLINKS+= SSL_CTX_sess_set_get_cb.3 SSL_CTX_sess_get_remove_cb.3 +MLINKS+= SSL_CTX_sess_set_get_cb.3 SSL_CTX_sess_set_new_cb.3 +MLINKS+= SSL_CTX_sess_set_get_cb.3 SSL_CTX_sess_set_remove_cb.3 +MLINKS+= SSL_CTX_set0_CA_list.3 SSL_CTX_add1_to_CA_list.3 +MLINKS+= SSL_CTX_set0_CA_list.3 SSL_CTX_add_client_CA.3 +MLINKS+= SSL_CTX_set0_CA_list.3 SSL_CTX_get0_CA_list.3 +MLINKS+= SSL_CTX_set0_CA_list.3 SSL_CTX_get_client_CA_list.3 +MLINKS+= SSL_CTX_set0_CA_list.3 SSL_CTX_set_client_CA_list.3 +MLINKS+= SSL_CTX_set0_CA_list.3 SSL_add1_to_CA_list.3 +MLINKS+= SSL_CTX_set0_CA_list.3 SSL_add_client_CA.3 +MLINKS+= SSL_CTX_set0_CA_list.3 SSL_get0_CA_list.3 +MLINKS+= SSL_CTX_set0_CA_list.3 SSL_get0_peer_CA_list.3 +MLINKS+= SSL_CTX_set0_CA_list.3 SSL_get_client_CA_list.3 +MLINKS+= SSL_CTX_set0_CA_list.3 SSL_set0_CA_list.3 +MLINKS+= SSL_CTX_set0_CA_list.3 SSL_set_client_CA_list.3 +MLINKS+= SSL_CTX_set1_curves.3 SSL_CTX_set1_curves_list.3 +MLINKS+= SSL_CTX_set1_curves.3 SSL_CTX_set1_groups.3 +MLINKS+= SSL_CTX_set1_curves.3 SSL_CTX_set1_groups_list.3 +MLINKS+= SSL_CTX_set1_curves.3 SSL_get1_curves.3 +MLINKS+= SSL_CTX_set1_curves.3 SSL_get1_groups.3 +MLINKS+= SSL_CTX_set1_curves.3 SSL_get_shared_curve.3 +MLINKS+= SSL_CTX_set1_curves.3 SSL_get_shared_group.3 +MLINKS+= SSL_CTX_set1_curves.3 SSL_set1_curves.3 +MLINKS+= SSL_CTX_set1_curves.3 SSL_set1_curves_list.3 +MLINKS+= SSL_CTX_set1_curves.3 SSL_set1_groups.3 +MLINKS+= SSL_CTX_set1_curves.3 SSL_set1_groups_list.3 +MLINKS+= SSL_CTX_set1_sigalgs.3 SSL_CTX_set1_client_sigalgs.3 +MLINKS+= SSL_CTX_set1_sigalgs.3 SSL_CTX_set1_client_sigalgs_list.3 +MLINKS+= SSL_CTX_set1_sigalgs.3 SSL_CTX_set1_sigalgs_list.3 +MLINKS+= SSL_CTX_set1_sigalgs.3 SSL_set1_client_sigalgs.3 +MLINKS+= SSL_CTX_set1_sigalgs.3 SSL_set1_client_sigalgs_list.3 +MLINKS+= SSL_CTX_set1_sigalgs.3 SSL_set1_sigalgs.3 +MLINKS+= SSL_CTX_set1_sigalgs.3 SSL_set1_sigalgs_list.3 +MLINKS+= SSL_CTX_set1_verify_cert_store.3 SSL_CTX_set0_chain_cert_store.3 +MLINKS+= SSL_CTX_set1_verify_cert_store.3 SSL_CTX_set0_verify_cert_store.3 +MLINKS+= SSL_CTX_set1_verify_cert_store.3 SSL_CTX_set1_chain_cert_store.3 +MLINKS+= SSL_CTX_set1_verify_cert_store.3 SSL_set0_chain_cert_store.3 +MLINKS+= SSL_CTX_set1_verify_cert_store.3 SSL_set0_verify_cert_store.3 +MLINKS+= SSL_CTX_set1_verify_cert_store.3 SSL_set1_chain_cert_store.3 +MLINKS+= SSL_CTX_set1_verify_cert_store.3 SSL_set1_verify_cert_store.3 +MLINKS+= SSL_CTX_set_alpn_select_cb.3 SSL_CTX_set_alpn_protos.3 +MLINKS+= SSL_CTX_set_alpn_select_cb.3 SSL_CTX_set_next_proto_select_cb.3 +MLINKS+= SSL_CTX_set_alpn_select_cb.3 SSL_CTX_set_next_protos_advertised_cb.3 +MLINKS+= SSL_CTX_set_alpn_select_cb.3 SSL_get0_alpn_selected.3 +MLINKS+= SSL_CTX_set_alpn_select_cb.3 SSL_get0_next_proto_negotiated.3 +MLINKS+= SSL_CTX_set_alpn_select_cb.3 SSL_select_next_proto.3 +MLINKS+= SSL_CTX_set_alpn_select_cb.3 SSL_set_alpn_protos.3 +MLINKS+= SSL_CTX_set_cert_cb.3 SSL_set_cert_cb.3 +MLINKS+= SSL_CTX_set_cert_store.3 SSL_CTX_get_cert_store.3 +MLINKS+= SSL_CTX_set_cert_store.3 SSL_CTX_set1_cert_store.3 +MLINKS+= SSL_CTX_set_cipher_list.3 SSL_CTX_set_ciphersuites.3 +MLINKS+= SSL_CTX_set_cipher_list.3 SSL_set_cipher_list.3 +MLINKS+= SSL_CTX_set_cipher_list.3 SSL_set_ciphersuites.3 +MLINKS+= SSL_CTX_set_client_cert_cb.3 SSL_CTX_get_client_cert_cb.3 +MLINKS+= SSL_CTX_set_client_hello_cb.3 SSL_client_hello_cb_fn.3 +MLINKS+= SSL_CTX_set_client_hello_cb.3 SSL_client_hello_get0_ciphers.3 +MLINKS+= SSL_CTX_set_client_hello_cb.3 SSL_client_hello_get0_compression_methods.3 +MLINKS+= SSL_CTX_set_client_hello_cb.3 SSL_client_hello_get0_ext.3 +MLINKS+= SSL_CTX_set_client_hello_cb.3 SSL_client_hello_get0_legacy_version.3 +MLINKS+= SSL_CTX_set_client_hello_cb.3 SSL_client_hello_get0_random.3 +MLINKS+= SSL_CTX_set_client_hello_cb.3 SSL_client_hello_get0_session_id.3 +MLINKS+= SSL_CTX_set_client_hello_cb.3 SSL_client_hello_get1_extensions_present.3 +MLINKS+= SSL_CTX_set_client_hello_cb.3 SSL_client_hello_isv2.3 +MLINKS+= SSL_CTX_set_ct_validation_callback.3 SSL_CTX_ct_is_enabled.3 +MLINKS+= SSL_CTX_set_ct_validation_callback.3 SSL_CTX_disable_ct.3 +MLINKS+= SSL_CTX_set_ct_validation_callback.3 SSL_CTX_enable_ct.3 +MLINKS+= SSL_CTX_set_ct_validation_callback.3 SSL_ct_is_enabled.3 +MLINKS+= SSL_CTX_set_ct_validation_callback.3 SSL_disable_ct.3 +MLINKS+= SSL_CTX_set_ct_validation_callback.3 SSL_enable_ct.3 +MLINKS+= SSL_CTX_set_ct_validation_callback.3 SSL_set_ct_validation_callback.3 +MLINKS+= SSL_CTX_set_ct_validation_callback.3 ssl_ct_validation_cb.3 +MLINKS+= SSL_CTX_set_ctlog_list_file.3 SSL_CTX_set_default_ctlog_list_file.3 +MLINKS+= SSL_CTX_set_default_passwd_cb.3 SSL_CTX_get_default_passwd_cb.3 +MLINKS+= SSL_CTX_set_default_passwd_cb.3 SSL_CTX_get_default_passwd_cb_userdata.3 +MLINKS+= SSL_CTX_set_default_passwd_cb.3 SSL_CTX_set_default_passwd_cb_userdata.3 +MLINKS+= SSL_CTX_set_default_passwd_cb.3 SSL_get_default_passwd_cb.3 +MLINKS+= SSL_CTX_set_default_passwd_cb.3 SSL_get_default_passwd_cb_userdata.3 +MLINKS+= SSL_CTX_set_default_passwd_cb.3 SSL_set_default_passwd_cb.3 +MLINKS+= SSL_CTX_set_default_passwd_cb.3 SSL_set_default_passwd_cb_userdata.3 +MLINKS+= SSL_CTX_set_ex_data.3 SSL_CTX_get_ex_data.3 +MLINKS+= SSL_CTX_set_ex_data.3 SSL_get_ex_data.3 +MLINKS+= SSL_CTX_set_ex_data.3 SSL_set_ex_data.3 +MLINKS+= SSL_CTX_set_generate_session_id.3 GEN_SESSION_CB.3 +MLINKS+= SSL_CTX_set_generate_session_id.3 SSL_has_matching_session_id.3 +MLINKS+= SSL_CTX_set_generate_session_id.3 SSL_set_generate_session_id.3 +MLINKS+= SSL_CTX_set_info_callback.3 SSL_CTX_get_info_callback.3 +MLINKS+= SSL_CTX_set_info_callback.3 SSL_get_info_callback.3 +MLINKS+= SSL_CTX_set_info_callback.3 SSL_set_info_callback.3 +MLINKS+= SSL_CTX_set_keylog_callback.3 SSL_CTX_get_keylog_callback.3 +MLINKS+= SSL_CTX_set_keylog_callback.3 SSL_CTX_keylog_cb_func.3 +MLINKS+= SSL_CTX_set_max_cert_list.3 SSL_CTX_get_max_cert_list.3 +MLINKS+= SSL_CTX_set_max_cert_list.3 SSL_get_max_cert_list.3 +MLINKS+= SSL_CTX_set_max_cert_list.3 SSL_set_max_cert_list.3 +MLINKS+= SSL_CTX_set_min_proto_version.3 SSL_CTX_get_max_proto_version.3 +MLINKS+= SSL_CTX_set_min_proto_version.3 SSL_CTX_get_min_proto_version.3 +MLINKS+= SSL_CTX_set_min_proto_version.3 SSL_CTX_set_max_proto_version.3 +MLINKS+= SSL_CTX_set_min_proto_version.3 SSL_get_max_proto_version.3 +MLINKS+= SSL_CTX_set_min_proto_version.3 SSL_get_min_proto_version.3 +MLINKS+= SSL_CTX_set_min_proto_version.3 SSL_set_max_proto_version.3 +MLINKS+= SSL_CTX_set_min_proto_version.3 SSL_set_min_proto_version.3 +MLINKS+= SSL_CTX_set_mode.3 SSL_CTX_clear_mode.3 +MLINKS+= SSL_CTX_set_mode.3 SSL_CTX_get_mode.3 +MLINKS+= SSL_CTX_set_mode.3 SSL_clear_mode.3 +MLINKS+= SSL_CTX_set_mode.3 SSL_get_mode.3 +MLINKS+= SSL_CTX_set_mode.3 SSL_set_mode.3 +MLINKS+= SSL_CTX_set_msg_callback.3 SSL_CTX_set_msg_callback_arg.3 +MLINKS+= SSL_CTX_set_msg_callback.3 SSL_set_msg_callback.3 +MLINKS+= SSL_CTX_set_msg_callback.3 SSL_set_msg_callback_arg.3 +MLINKS+= SSL_CTX_set_num_tickets.3 SSL_CTX_get_num_tickets.3 +MLINKS+= SSL_CTX_set_num_tickets.3 SSL_get_num_tickets.3 +MLINKS+= SSL_CTX_set_num_tickets.3 SSL_set_num_tickets.3 +MLINKS+= SSL_CTX_set_options.3 SSL_CTX_clear_options.3 +MLINKS+= SSL_CTX_set_options.3 SSL_CTX_get_options.3 +MLINKS+= SSL_CTX_set_options.3 SSL_clear_options.3 +MLINKS+= SSL_CTX_set_options.3 SSL_get_options.3 +MLINKS+= SSL_CTX_set_options.3 SSL_get_secure_renegotiation_support.3 +MLINKS+= SSL_CTX_set_options.3 SSL_set_options.3 +MLINKS+= SSL_CTX_set_psk_client_callback.3 SSL_CTX_set_psk_use_session_callback.3 +MLINKS+= SSL_CTX_set_psk_client_callback.3 SSL_psk_client_cb_func.3 +MLINKS+= SSL_CTX_set_psk_client_callback.3 SSL_psk_use_session_cb_func.3 +MLINKS+= SSL_CTX_set_psk_client_callback.3 SSL_set_psk_client_callback.3 +MLINKS+= SSL_CTX_set_psk_client_callback.3 SSL_set_psk_use_session_callback.3 +MLINKS+= SSL_CTX_set_quiet_shutdown.3 SSL_CTX_get_quiet_shutdown.3 +MLINKS+= SSL_CTX_set_quiet_shutdown.3 SSL_get_quiet_shutdown.3 +MLINKS+= SSL_CTX_set_quiet_shutdown.3 SSL_set_quiet_shutdown.3 +MLINKS+= SSL_CTX_set_read_ahead.3 SSL_CTX_get_default_read_ahead.3 +MLINKS+= SSL_CTX_set_read_ahead.3 SSL_CTX_get_read_ahead.3 +MLINKS+= SSL_CTX_set_read_ahead.3 SSL_get_read_ahead.3 +MLINKS+= SSL_CTX_set_read_ahead.3 SSL_set_read_ahead.3 +MLINKS+= SSL_CTX_set_record_padding_callback.3 SSL_CTX_get_record_padding_callback_arg.3 +MLINKS+= SSL_CTX_set_record_padding_callback.3 SSL_CTX_set_block_padding.3 +MLINKS+= SSL_CTX_set_record_padding_callback.3 SSL_CTX_set_record_padding_callback_arg.3 +MLINKS+= SSL_CTX_set_record_padding_callback.3 SSL_get_record_padding_callback_arg.3 +MLINKS+= SSL_CTX_set_record_padding_callback.3 SSL_set_block_padding.3 +MLINKS+= SSL_CTX_set_record_padding_callback.3 SSL_set_record_padding_callback.3 +MLINKS+= SSL_CTX_set_record_padding_callback.3 SSL_set_record_padding_callback_arg.3 +MLINKS+= SSL_CTX_set_security_level.3 SSL_CTX_get0_security_ex_data.3 +MLINKS+= SSL_CTX_set_security_level.3 SSL_CTX_get_security_callback.3 +MLINKS+= SSL_CTX_set_security_level.3 SSL_CTX_get_security_level.3 +MLINKS+= SSL_CTX_set_security_level.3 SSL_CTX_set0_security_ex_data.3 +MLINKS+= SSL_CTX_set_security_level.3 SSL_CTX_set_security_callback.3 +MLINKS+= SSL_CTX_set_security_level.3 SSL_get0_security_ex_data.3 +MLINKS+= SSL_CTX_set_security_level.3 SSL_get_security_callback.3 +MLINKS+= SSL_CTX_set_security_level.3 SSL_get_security_level.3 +MLINKS+= SSL_CTX_set_security_level.3 SSL_set0_security_ex_data.3 +MLINKS+= SSL_CTX_set_security_level.3 SSL_set_security_callback.3 +MLINKS+= SSL_CTX_set_security_level.3 SSL_set_security_level.3 +MLINKS+= SSL_CTX_set_session_cache_mode.3 SSL_CTX_get_session_cache_mode.3 +MLINKS+= SSL_CTX_set_session_id_context.3 SSL_set_session_id_context.3 +MLINKS+= SSL_CTX_set_session_ticket_cb.3 SSL_CTX_decrypt_session_ticket_fn.3 +MLINKS+= SSL_CTX_set_session_ticket_cb.3 SSL_CTX_generate_session_ticket_fn.3 +MLINKS+= SSL_CTX_set_session_ticket_cb.3 SSL_SESSION_get0_ticket_appdata.3 +MLINKS+= SSL_CTX_set_session_ticket_cb.3 SSL_SESSION_set1_ticket_appdata.3 +MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_CTX_set_default_read_buffer_len.3 +MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_CTX_set_max_pipelines.3 +MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_CTX_set_max_send_fragment.3 +MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_CTX_set_tlsext_max_fragment_length.3 +MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_SESSION_get_max_fragment_length.3 +MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_set_default_read_buffer_len.3 +MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_set_max_pipelines.3 +MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_set_max_send_fragment.3 +MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_set_split_send_fragment.3 +MLINKS+= SSL_CTX_set_split_send_fragment.3 SSL_set_tlsext_max_fragment_length.3 +MLINKS+= SSL_CTX_set_ssl_version.3 SSL_get_ssl_method.3 +MLINKS+= SSL_CTX_set_ssl_version.3 SSL_set_ssl_method.3 +MLINKS+= SSL_CTX_set_stateless_cookie_generate_cb.3 SSL_CTX_set_stateless_cookie_verify_cb.3 +MLINKS+= SSL_CTX_set_timeout.3 SSL_CTX_get_timeout.3 +MLINKS+= SSL_CTX_set_tlsext_servername_callback.3 SSL_CTX_set_tlsext_servername_arg.3 +MLINKS+= SSL_CTX_set_tlsext_servername_callback.3 SSL_get_servername.3 +MLINKS+= SSL_CTX_set_tlsext_servername_callback.3 SSL_get_servername_type.3 +MLINKS+= SSL_CTX_set_tlsext_servername_callback.3 SSL_set_tlsext_host_name.3 +MLINKS+= SSL_CTX_set_tlsext_status_cb.3 SSL_CTX_get_tlsext_status_arg.3 +MLINKS+= SSL_CTX_set_tlsext_status_cb.3 SSL_CTX_get_tlsext_status_cb.3 +MLINKS+= SSL_CTX_set_tlsext_status_cb.3 SSL_CTX_get_tlsext_status_type.3 +MLINKS+= SSL_CTX_set_tlsext_status_cb.3 SSL_CTX_set_tlsext_status_arg.3 +MLINKS+= SSL_CTX_set_tlsext_status_cb.3 SSL_CTX_set_tlsext_status_type.3 +MLINKS+= SSL_CTX_set_tlsext_status_cb.3 SSL_get_tlsext_status_ocsp_resp.3 +MLINKS+= SSL_CTX_set_tlsext_status_cb.3 SSL_get_tlsext_status_type.3 +MLINKS+= SSL_CTX_set_tlsext_status_cb.3 SSL_set_tlsext_status_ocsp_resp.3 +MLINKS+= SSL_CTX_set_tlsext_status_cb.3 SSL_set_tlsext_status_type.3 +MLINKS+= SSL_CTX_set_tlsext_use_srtp.3 SSL_get_selected_srtp_profile.3 +MLINKS+= SSL_CTX_set_tlsext_use_srtp.3 SSL_get_srtp_profiles.3 +MLINKS+= SSL_CTX_set_tlsext_use_srtp.3 SSL_set_tlsext_use_srtp.3 +MLINKS+= SSL_CTX_set_tmp_dh_callback.3 SSL_CTX_set_tmp_dh.3 +MLINKS+= SSL_CTX_set_tmp_dh_callback.3 SSL_set_tmp_dh.3 +MLINKS+= SSL_CTX_set_tmp_dh_callback.3 SSL_set_tmp_dh_callback.3 +MLINKS+= SSL_CTX_set_verify.3 SSL_CTX_set_post_handshake_auth.3 +MLINKS+= SSL_CTX_set_verify.3 SSL_CTX_set_verify_depth.3 +MLINKS+= SSL_CTX_set_verify.3 SSL_get_ex_data_X509_STORE_CTX_idx.3 +MLINKS+= SSL_CTX_set_verify.3 SSL_set_post_handshake_auth.3 +MLINKS+= SSL_CTX_set_verify.3 SSL_set_verify.3 +MLINKS+= SSL_CTX_set_verify.3 SSL_set_verify_depth.3 +MLINKS+= SSL_CTX_set_verify.3 SSL_verify_cb.3 +MLINKS+= SSL_CTX_set_verify.3 SSL_verify_client_post_handshake.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_check_private_key.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_PrivateKey.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_PrivateKey_ASN1.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_PrivateKey_file.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_RSAPrivateKey.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_RSAPrivateKey_ASN1.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_RSAPrivateKey_file.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_cert_and_key.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_certificate_ASN1.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_certificate_chain_file.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_CTX_use_certificate_file.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_check_private_key.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_use_PrivateKey.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_use_PrivateKey_ASN1.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_use_PrivateKey_file.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_use_RSAPrivateKey.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_use_RSAPrivateKey_ASN1.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_use_RSAPrivateKey_file.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_use_cert_and_key.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_use_certificate.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_use_certificate_ASN1.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_use_certificate_chain_file.3 +MLINKS+= SSL_CTX_use_certificate.3 SSL_use_certificate_file.3 +MLINKS+= SSL_CTX_use_psk_identity_hint.3 SSL_CTX_set_psk_find_session_callback.3 +MLINKS+= SSL_CTX_use_psk_identity_hint.3 SSL_CTX_set_psk_server_callback.3 +MLINKS+= SSL_CTX_use_psk_identity_hint.3 SSL_psk_find_session_cb_func.3 +MLINKS+= SSL_CTX_use_psk_identity_hint.3 SSL_psk_server_cb_func.3 +MLINKS+= SSL_CTX_use_psk_identity_hint.3 SSL_set_psk_find_session_callback.3 +MLINKS+= SSL_CTX_use_psk_identity_hint.3 SSL_set_psk_server_callback.3 +MLINKS+= SSL_CTX_use_psk_identity_hint.3 SSL_use_psk_identity_hint.3 +MLINKS+= SSL_CTX_use_serverinfo.3 SSL_CTX_use_serverinfo_ex.3 +MLINKS+= SSL_CTX_use_serverinfo.3 SSL_CTX_use_serverinfo_file.3 +MLINKS+= SSL_SESSION_free.3 SSL_SESSION_dup.3 +MLINKS+= SSL_SESSION_free.3 SSL_SESSION_new.3 +MLINKS+= SSL_SESSION_free.3 SSL_SESSION_up_ref.3 +MLINKS+= SSL_SESSION_get0_cipher.3 SSL_SESSION_set_cipher.3 +MLINKS+= SSL_SESSION_get0_hostname.3 SSL_SESSION_get0_alpn_selected.3 +MLINKS+= SSL_SESSION_get0_hostname.3 SSL_SESSION_set1_alpn_selected.3 +MLINKS+= SSL_SESSION_get0_hostname.3 SSL_SESSION_set1_hostname.3 +MLINKS+= SSL_SESSION_get0_id_context.3 SSL_SESSION_set1_id_context.3 +MLINKS+= SSL_SESSION_get_ex_data.3 SSL_SESSION_set_ex_data.3 +MLINKS+= SSL_SESSION_get_protocol_version.3 SSL_SESSION_set_protocol_version.3 +MLINKS+= SSL_SESSION_get_time.3 SSL_SESSION_get_timeout.3 +MLINKS+= SSL_SESSION_get_time.3 SSL_SESSION_set_time.3 +MLINKS+= SSL_SESSION_get_time.3 SSL_SESSION_set_timeout.3 +MLINKS+= SSL_SESSION_get_time.3 SSL_get_time.3 +MLINKS+= SSL_SESSION_get_time.3 SSL_get_timeout.3 +MLINKS+= SSL_SESSION_get_time.3 SSL_set_time.3 +MLINKS+= SSL_SESSION_get_time.3 SSL_set_timeout.3 +MLINKS+= SSL_SESSION_has_ticket.3 SSL_SESSION_get0_ticket.3 +MLINKS+= SSL_SESSION_has_ticket.3 SSL_SESSION_get_ticket_lifetime_hint.3 +MLINKS+= SSL_SESSION_print.3 SSL_SESSION_print_fp.3 +MLINKS+= SSL_SESSION_print.3 SSL_SESSION_print_keylog.3 +MLINKS+= SSL_SESSION_set1_id.3 SSL_SESSION_get_id.3 +MLINKS+= SSL_alert_type_string.3 SSL_alert_desc_string.3 +MLINKS+= SSL_alert_type_string.3 SSL_alert_desc_string_long.3 +MLINKS+= SSL_alert_type_string.3 SSL_alert_type_string_long.3 +MLINKS+= SSL_alloc_buffers.3 SSL_free_buffers.3 +MLINKS+= SSL_export_keying_material.3 SSL_export_keying_material_early.3 +MLINKS+= SSL_extension_supported.3 SSL_CTX_add_client_custom_ext.3 +MLINKS+= SSL_extension_supported.3 SSL_CTX_add_custom_ext.3 +MLINKS+= SSL_extension_supported.3 SSL_CTX_add_server_custom_ext.3 +MLINKS+= SSL_extension_supported.3 custom_ext_add_cb.3 +MLINKS+= SSL_extension_supported.3 custom_ext_free_cb.3 +MLINKS+= SSL_extension_supported.3 custom_ext_parse_cb.3 +MLINKS+= SSL_get_all_async_fds.3 SSL_get_changed_async_fds.3 +MLINKS+= SSL_get_all_async_fds.3 SSL_waiting_for_async.3 +MLINKS+= SSL_get_ciphers.3 SSL_CTX_get_ciphers.3 +MLINKS+= SSL_get_ciphers.3 SSL_bytes_to_cipher_list.3 +MLINKS+= SSL_get_ciphers.3 SSL_get1_supported_ciphers.3 +MLINKS+= SSL_get_ciphers.3 SSL_get_cipher_list.3 +MLINKS+= SSL_get_ciphers.3 SSL_get_client_ciphers.3 +MLINKS+= SSL_get_ciphers.3 SSL_get_shared_ciphers.3 +MLINKS+= SSL_get_client_random.3 SSL_SESSION_get_master_key.3 +MLINKS+= SSL_get_client_random.3 SSL_SESSION_set1_master_key.3 +MLINKS+= SSL_get_client_random.3 SSL_get_server_random.3 +MLINKS+= SSL_get_current_cipher.3 SSL_get_cipher.3 +MLINKS+= SSL_get_current_cipher.3 SSL_get_cipher_bits.3 +MLINKS+= SSL_get_current_cipher.3 SSL_get_cipher_name.3 +MLINKS+= SSL_get_current_cipher.3 SSL_get_cipher_version.3 +MLINKS+= SSL_get_current_cipher.3 SSL_get_pending_cipher.3 +MLINKS+= SSL_get_fd.3 SSL_get_rfd.3 +MLINKS+= SSL_get_fd.3 SSL_get_wfd.3 +MLINKS+= SSL_get_peer_cert_chain.3 SSL_get0_verified_chain.3 +MLINKS+= SSL_get_peer_signature_nid.3 SSL_get_peer_signature_type_nid.3 +MLINKS+= SSL_get_peer_signature_nid.3 SSL_get_signature_nid.3 +MLINKS+= SSL_get_peer_signature_nid.3 SSL_get_signature_type_nid.3 +MLINKS+= SSL_get_peer_tmp_key.3 SSL_get_server_tmp_key.3 +MLINKS+= SSL_get_peer_tmp_key.3 SSL_get_tmp_key.3 +MLINKS+= SSL_get_psk_identity.3 SSL_get_psk_identity_hint.3 +MLINKS+= SSL_get_rbio.3 SSL_get_wbio.3 +MLINKS+= SSL_get_session.3 SSL_get0_session.3 +MLINKS+= SSL_get_session.3 SSL_get1_session.3 +MLINKS+= SSL_get_shared_sigalgs.3 SSL_get_sigalgs.3 +MLINKS+= SSL_get_version.3 SSL_client_version.3 +MLINKS+= SSL_get_version.3 SSL_is_dtls.3 +MLINKS+= SSL_get_version.3 SSL_version.3 +MLINKS+= SSL_in_init.3 SSL_get_state.3 +MLINKS+= SSL_in_init.3 SSL_in_accept_init.3 +MLINKS+= SSL_in_init.3 SSL_in_before.3 +MLINKS+= SSL_in_init.3 SSL_in_connect_init.3 +MLINKS+= SSL_in_init.3 SSL_is_init_finished.3 +MLINKS+= SSL_key_update.3 SSL_get_key_update_type.3 +MLINKS+= SSL_key_update.3 SSL_renegotiate.3 +MLINKS+= SSL_key_update.3 SSL_renegotiate_abbreviated.3 +MLINKS+= SSL_key_update.3 SSL_renegotiate_pending.3 +MLINKS+= SSL_library_init.3 OpenSSL_add_ssl_algorithms.3 +MLINKS+= SSL_new.3 SSL_dup.3 +MLINKS+= SSL_new.3 SSL_up_ref.3 +MLINKS+= SSL_pending.3 SSL_has_pending.3 +MLINKS+= SSL_read.3 SSL_peek.3 +MLINKS+= SSL_read.3 SSL_peek_ex.3 +MLINKS+= SSL_read.3 SSL_read_ex.3 +MLINKS+= SSL_read_early_data.3 SSL_CTX_get_max_early_data.3 +MLINKS+= SSL_read_early_data.3 SSL_CTX_get_recv_max_early_data.3 +MLINKS+= SSL_read_early_data.3 SSL_CTX_set_allow_early_data_cb.3 +MLINKS+= SSL_read_early_data.3 SSL_CTX_set_max_early_data.3 +MLINKS+= SSL_read_early_data.3 SSL_CTX_set_recv_max_early_data.3 +MLINKS+= SSL_read_early_data.3 SSL_SESSION_get_max_early_data.3 +MLINKS+= SSL_read_early_data.3 SSL_SESSION_set_max_early_data.3 +MLINKS+= SSL_read_early_data.3 SSL_allow_early_data_cb_fn.3 +MLINKS+= SSL_read_early_data.3 SSL_get_early_data_status.3 +MLINKS+= SSL_read_early_data.3 SSL_get_max_early_data.3 +MLINKS+= SSL_read_early_data.3 SSL_get_recv_max_early_data.3 +MLINKS+= SSL_read_early_data.3 SSL_set_allow_early_data_cb.3 +MLINKS+= SSL_read_early_data.3 SSL_set_max_early_data.3 +MLINKS+= SSL_read_early_data.3 SSL_set_recv_max_early_data.3 +MLINKS+= SSL_read_early_data.3 SSL_write_early_data.3 +MLINKS+= SSL_rstate_string.3 SSL_rstate_string_long.3 +MLINKS+= SSL_set1_host.3 SSL_add1_host.3 +MLINKS+= SSL_set1_host.3 SSL_get0_peername.3 +MLINKS+= SSL_set1_host.3 SSL_set_hostflags.3 +MLINKS+= SSL_set_bio.3 SSL_set0_rbio.3 +MLINKS+= SSL_set_bio.3 SSL_set0_wbio.3 +MLINKS+= SSL_set_connect_state.3 SSL_is_server.3 +MLINKS+= SSL_set_connect_state.3 SSL_set_accept_state.3 +MLINKS+= SSL_set_fd.3 SSL_set_rfd.3 +MLINKS+= SSL_set_fd.3 SSL_set_wfd.3 +MLINKS+= SSL_set_shutdown.3 SSL_get_shutdown.3 +MLINKS+= SSL_state_string.3 SSL_state_string_long.3 +MLINKS+= SSL_want.3 SSL_want_async.3 +MLINKS+= SSL_want.3 SSL_want_async_job.3 +MLINKS+= SSL_want.3 SSL_want_client_hello_cb.3 +MLINKS+= SSL_want.3 SSL_want_nothing.3 +MLINKS+= SSL_want.3 SSL_want_read.3 +MLINKS+= SSL_want.3 SSL_want_write.3 +MLINKS+= SSL_want.3 SSL_want_x509_lookup.3 +MLINKS+= SSL_write.3 SSL_write_ex.3 +MLINKS+= UI_STRING.3 UI_get0_action_string.3 +MLINKS+= UI_STRING.3 UI_get0_output_string.3 +MLINKS+= UI_STRING.3 UI_get0_result_string.3 +MLINKS+= UI_STRING.3 UI_get0_test_string.3 +MLINKS+= UI_STRING.3 UI_get_input_flags.3 +MLINKS+= UI_STRING.3 UI_get_result_maxsize.3 +MLINKS+= UI_STRING.3 UI_get_result_minsize.3 +MLINKS+= UI_STRING.3 UI_get_result_string_length.3 +MLINKS+= UI_STRING.3 UI_get_string_type.3 +MLINKS+= UI_STRING.3 UI_set_result.3 +MLINKS+= UI_STRING.3 UI_set_result_ex.3 +MLINKS+= UI_STRING.3 UI_string_types.3 +MLINKS+= UI_UTIL_read_pw.3 UI_UTIL_read_pw_string.3 +MLINKS+= UI_UTIL_read_pw.3 UI_UTIL_wrap_read_pem_callback.3 +MLINKS+= UI_create_method.3 UI_METHOD.3 +MLINKS+= UI_create_method.3 UI_destroy_method.3 +MLINKS+= UI_create_method.3 UI_method_get_closer.3 +MLINKS+= UI_create_method.3 UI_method_get_data_destructor.3 +MLINKS+= UI_create_method.3 UI_method_get_data_duplicator.3 +MLINKS+= UI_create_method.3 UI_method_get_ex_data.3 +MLINKS+= UI_create_method.3 UI_method_get_flusher.3 +MLINKS+= UI_create_method.3 UI_method_get_opener.3 +MLINKS+= UI_create_method.3 UI_method_get_prompt_constructor.3 +MLINKS+= UI_create_method.3 UI_method_get_reader.3 +MLINKS+= UI_create_method.3 UI_method_get_writer.3 +MLINKS+= UI_create_method.3 UI_method_set_closer.3 +MLINKS+= UI_create_method.3 UI_method_set_data_duplicator.3 +MLINKS+= UI_create_method.3 UI_method_set_ex_data.3 +MLINKS+= UI_create_method.3 UI_method_set_flusher.3 +MLINKS+= UI_create_method.3 UI_method_set_opener.3 +MLINKS+= UI_create_method.3 UI_method_set_prompt_constructor.3 +MLINKS+= UI_create_method.3 UI_method_set_reader.3 +MLINKS+= UI_create_method.3 UI_method_set_writer.3 +MLINKS+= UI_new.3 UI.3 +MLINKS+= UI_new.3 UI_OpenSSL.3 +MLINKS+= UI_new.3 UI_add_error_string.3 +MLINKS+= UI_new.3 UI_add_info_string.3 +MLINKS+= UI_new.3 UI_add_input_boolean.3 +MLINKS+= UI_new.3 UI_add_input_string.3 +MLINKS+= UI_new.3 UI_add_user_data.3 +MLINKS+= UI_new.3 UI_add_verify_string.3 +MLINKS+= UI_new.3 UI_construct_prompt.3 +MLINKS+= UI_new.3 UI_ctrl.3 +MLINKS+= UI_new.3 UI_dup_error_string.3 +MLINKS+= UI_new.3 UI_dup_info_string.3 +MLINKS+= UI_new.3 UI_dup_input_boolean.3 +MLINKS+= UI_new.3 UI_dup_input_string.3 +MLINKS+= UI_new.3 UI_dup_user_data.3 +MLINKS+= UI_new.3 UI_dup_verify_string.3 +MLINKS+= UI_new.3 UI_free.3 +MLINKS+= UI_new.3 UI_get0_result.3 +MLINKS+= UI_new.3 UI_get0_user_data.3 +MLINKS+= UI_new.3 UI_get_default_method.3 +MLINKS+= UI_new.3 UI_get_method.3 +MLINKS+= UI_new.3 UI_get_result_length.3 +MLINKS+= UI_new.3 UI_new_method.3 +MLINKS+= UI_new.3 UI_null.3 +MLINKS+= UI_new.3 UI_process.3 +MLINKS+= UI_new.3 UI_set_default_method.3 +MLINKS+= UI_new.3 UI_set_method.3 +MLINKS+= X509V3_get_d2i.3 X509V3_EXT_d2i.3 +MLINKS+= X509V3_get_d2i.3 X509V3_EXT_i2d.3 +MLINKS+= X509V3_get_d2i.3 X509V3_add1_i2d.3 +MLINKS+= X509V3_get_d2i.3 X509_CRL_add1_ext_i2d.3 +MLINKS+= X509V3_get_d2i.3 X509_CRL_get0_extensions.3 +MLINKS+= X509V3_get_d2i.3 X509_CRL_get_ext_d2i.3 +MLINKS+= X509V3_get_d2i.3 X509_REVOKED_add1_ext_i2d.3 +MLINKS+= X509V3_get_d2i.3 X509_REVOKED_get0_extensions.3 +MLINKS+= X509V3_get_d2i.3 X509_REVOKED_get_ext_d2i.3 +MLINKS+= X509V3_get_d2i.3 X509_add1_ext_i2d.3 +MLINKS+= X509V3_get_d2i.3 X509_get0_extensions.3 +MLINKS+= X509V3_get_d2i.3 X509_get_ext_d2i.3 +MLINKS+= X509_ALGOR_dup.3 X509_ALGOR_cmp.3 +MLINKS+= X509_ALGOR_dup.3 X509_ALGOR_get0.3 +MLINKS+= X509_ALGOR_dup.3 X509_ALGOR_set0.3 +MLINKS+= X509_ALGOR_dup.3 X509_ALGOR_set_md.3 +MLINKS+= X509_CRL_get0_by_serial.3 X509_CRL_add0_revoked.3 +MLINKS+= X509_CRL_get0_by_serial.3 X509_CRL_get0_by_cert.3 +MLINKS+= X509_CRL_get0_by_serial.3 X509_CRL_get_REVOKED.3 +MLINKS+= X509_CRL_get0_by_serial.3 X509_CRL_sort.3 +MLINKS+= X509_CRL_get0_by_serial.3 X509_REVOKED_get0_revocationDate.3 +MLINKS+= X509_CRL_get0_by_serial.3 X509_REVOKED_get0_serialNumber.3 +MLINKS+= X509_CRL_get0_by_serial.3 X509_REVOKED_set_revocationDate.3 +MLINKS+= X509_CRL_get0_by_serial.3 X509_REVOKED_set_serialNumber.3 +MLINKS+= X509_EXTENSION_set_object.3 X509_EXTENSION_create_by_NID.3 +MLINKS+= X509_EXTENSION_set_object.3 X509_EXTENSION_create_by_OBJ.3 +MLINKS+= X509_EXTENSION_set_object.3 X509_EXTENSION_get_critical.3 +MLINKS+= X509_EXTENSION_set_object.3 X509_EXTENSION_get_data.3 +MLINKS+= X509_EXTENSION_set_object.3 X509_EXTENSION_get_object.3 +MLINKS+= X509_EXTENSION_set_object.3 X509_EXTENSION_set_critical.3 +MLINKS+= X509_EXTENSION_set_object.3 X509_EXTENSION_set_data.3 +MLINKS+= X509_LOOKUP_hash_dir.3 X509_LOOKUP_file.3 +MLINKS+= X509_LOOKUP_hash_dir.3 X509_load_cert_crl_file.3 +MLINKS+= X509_LOOKUP_hash_dir.3 X509_load_cert_file.3 +MLINKS+= X509_LOOKUP_hash_dir.3 X509_load_crl_file.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_ctrl_fn.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_get_by_alias_fn.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_get_by_fingerprint_fn.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_get_by_issuer_serial_fn.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_get_by_subject_fn.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_get_method_data.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_get_store.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_free.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_get_ctrl.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_get_free.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_get_get_by_alias.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_get_get_by_fingerprint.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_get_get_by_issuer_serial.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_get_get_by_subject.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_get_init.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_get_new_item.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_get_shutdown.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_set_ctrl.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_set_free.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_set_get_by_alias.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_set_get_by_fingerprint.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_set_get_by_issuer_serial.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_set_get_by_subject.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_set_init.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_set_new_item.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_meth_set_shutdown.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_LOOKUP_set_method_data.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_OBJECT_set1_X509.3 +MLINKS+= X509_LOOKUP_meth_new.3 X509_OBJECT_set1_X509_CRL.3 +MLINKS+= X509_NAME_ENTRY_get_object.3 X509_NAME_ENTRY_create_by_NID.3 +MLINKS+= X509_NAME_ENTRY_get_object.3 X509_NAME_ENTRY_create_by_OBJ.3 +MLINKS+= X509_NAME_ENTRY_get_object.3 X509_NAME_ENTRY_create_by_txt.3 +MLINKS+= X509_NAME_ENTRY_get_object.3 X509_NAME_ENTRY_get_data.3 +MLINKS+= X509_NAME_ENTRY_get_object.3 X509_NAME_ENTRY_set_data.3 +MLINKS+= X509_NAME_ENTRY_get_object.3 X509_NAME_ENTRY_set_object.3 +MLINKS+= X509_NAME_add_entry_by_txt.3 X509_NAME_add_entry.3 +MLINKS+= X509_NAME_add_entry_by_txt.3 X509_NAME_add_entry_by_NID.3 +MLINKS+= X509_NAME_add_entry_by_txt.3 X509_NAME_add_entry_by_OBJ.3 +MLINKS+= X509_NAME_add_entry_by_txt.3 X509_NAME_delete_entry.3 +MLINKS+= X509_NAME_get_index_by_NID.3 X509_NAME_entry_count.3 +MLINKS+= X509_NAME_get_index_by_NID.3 X509_NAME_get_entry.3 +MLINKS+= X509_NAME_get_index_by_NID.3 X509_NAME_get_index_by_OBJ.3 +MLINKS+= X509_NAME_get_index_by_NID.3 X509_NAME_get_text_by_NID.3 +MLINKS+= X509_NAME_get_index_by_NID.3 X509_NAME_get_text_by_OBJ.3 +MLINKS+= X509_NAME_print_ex.3 X509_NAME_oneline.3 +MLINKS+= X509_NAME_print_ex.3 X509_NAME_print.3 +MLINKS+= X509_NAME_print_ex.3 X509_NAME_print_ex_fp.3 +MLINKS+= X509_PUBKEY_new.3 X509_PUBKEY_free.3 +MLINKS+= X509_PUBKEY_new.3 X509_PUBKEY_get.3 +MLINKS+= X509_PUBKEY_new.3 X509_PUBKEY_get0.3 +MLINKS+= X509_PUBKEY_new.3 X509_PUBKEY_get0_param.3 +MLINKS+= X509_PUBKEY_new.3 X509_PUBKEY_set.3 +MLINKS+= X509_PUBKEY_new.3 X509_PUBKEY_set0_param.3 +MLINKS+= X509_PUBKEY_new.3 d2i_PUBKEY.3 +MLINKS+= X509_PUBKEY_new.3 d2i_PUBKEY_bio.3 +MLINKS+= X509_PUBKEY_new.3 d2i_PUBKEY_fp.3 +MLINKS+= X509_PUBKEY_new.3 i2d_PUBKEY.3 +MLINKS+= X509_PUBKEY_new.3 i2d_PUBKEY_bio.3 +MLINKS+= X509_PUBKEY_new.3 i2d_PUBKEY_fp.3 +MLINKS+= X509_SIG_get0.3 X509_SIG_getm.3 +MLINKS+= X509_STORE_CTX_get_error.3 X509_STORE_CTX_get0_cert.3 +MLINKS+= X509_STORE_CTX_get_error.3 X509_STORE_CTX_get1_chain.3 +MLINKS+= X509_STORE_CTX_get_error.3 X509_STORE_CTX_get_current_cert.3 +MLINKS+= X509_STORE_CTX_get_error.3 X509_STORE_CTX_get_error_depth.3 +MLINKS+= X509_STORE_CTX_get_error.3 X509_STORE_CTX_set_current_cert.3 +MLINKS+= X509_STORE_CTX_get_error.3 X509_STORE_CTX_set_error.3 +MLINKS+= X509_STORE_CTX_get_error.3 X509_STORE_CTX_set_error_depth.3 +MLINKS+= X509_STORE_CTX_get_error.3 X509_verify_cert_error_string.3 +MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_cleanup.3 +MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_free.3 +MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_get0_chain.3 +MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_get0_param.3 +MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_get0_untrusted.3 +MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_get_num_untrusted.3 +MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_init.3 +MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_set0_crls.3 +MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_set0_param.3 +MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_set0_trusted_stack.3 +MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_set0_untrusted.3 +MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_set0_verified_chain.3 +MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_set_cert.3 +MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_set_default.3 +MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_set_verify.3 +MLINKS+= X509_STORE_CTX_new.3 X509_STORE_CTX_verify_fn.3 +MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_cert_crl.3 +MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_check_crl.3 +MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_check_issued.3 +MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_check_policy.3 +MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_check_revocation.3 +MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_cleanup.3 +MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_get_crl.3 +MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_get_issuer.3 +MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_lookup_certs.3 +MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_lookup_crls.3 +MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_get_verify_cb.3 +MLINKS+= X509_STORE_CTX_set_verify_cb.3 X509_STORE_CTX_verify_cb.3 +MLINKS+= X509_STORE_add_cert.3 X509_STORE_add_crl.3 +MLINKS+= X509_STORE_add_cert.3 X509_STORE_load_locations.3 +MLINKS+= X509_STORE_add_cert.3 X509_STORE_set_default_paths.3 +MLINKS+= X509_STORE_add_cert.3 X509_STORE_set_depth.3 +MLINKS+= X509_STORE_add_cert.3 X509_STORE_set_flags.3 +MLINKS+= X509_STORE_add_cert.3 X509_STORE_set_purpose.3 +MLINKS+= X509_STORE_add_cert.3 X509_STORE_set_trust.3 +MLINKS+= X509_STORE_get0_param.3 X509_STORE_get0_objects.3 +MLINKS+= X509_STORE_get0_param.3 X509_STORE_set1_param.3 +MLINKS+= X509_STORE_new.3 X509_STORE_free.3 +MLINKS+= X509_STORE_new.3 X509_STORE_lock.3 +MLINKS+= X509_STORE_new.3 X509_STORE_unlock.3 +MLINKS+= X509_STORE_new.3 X509_STORE_up_ref.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_cert_crl_fn.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_check_crl_fn.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_check_issued_fn.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_check_policy_fn.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_check_revocation_fn.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_cleanup_fn.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_get_crl_fn.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_get_issuer_fn.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_get_verify.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_lookup_certs_fn.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_CTX_lookup_crls_fn.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_cert_crl.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_check_crl.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_check_issued.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_check_policy.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_check_revocation.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_cleanup.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_get_crl.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_get_issuer.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_lookup_certs.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_lookup_crls.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_get_verify_cb.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_cert_crl.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_check_crl.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_check_issued.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_check_policy.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_check_revocation.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_cleanup.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_get_crl.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_get_issuer.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_lookup_certs.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_lookup_crls.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_lookup_crls_cb.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_verify.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_verify_cb.3 +MLINKS+= X509_STORE_set_verify_cb_func.3 X509_STORE_set_verify_func.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_add0_policy.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_add1_host.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_clear_flags.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_get0_peername.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_get_auth_level.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_get_depth.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_get_flags.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_get_hostflags.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_get_inh_flags.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_get_time.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set1_email.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set1_host.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set1_ip.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set1_ip_asc.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set1_policies.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set_auth_level.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set_depth.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set_hostflags.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set_inh_flags.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set_purpose.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set_time.3 +MLINKS+= X509_VERIFY_PARAM_set_flags.3 X509_VERIFY_PARAM_set_trust.3 +MLINKS+= X509_check_host.3 X509_check_email.3 +MLINKS+= X509_check_host.3 X509_check_ip.3 +MLINKS+= X509_check_host.3 X509_check_ip_asc.3 +MLINKS+= X509_check_private_key.3 X509_REQ_check_private_key.3 +MLINKS+= X509_cmp.3 X509_CRL_cmp.3 +MLINKS+= X509_cmp.3 X509_CRL_match.3 +MLINKS+= X509_cmp.3 X509_NAME_cmp.3 +MLINKS+= X509_cmp.3 X509_issuer_and_serial_cmp.3 +MLINKS+= X509_cmp.3 X509_issuer_name_cmp.3 +MLINKS+= X509_cmp.3 X509_subject_name_cmp.3 +MLINKS+= X509_cmp_time.3 X509_cmp_current_time.3 +MLINKS+= X509_cmp_time.3 X509_time_adj.3 +MLINKS+= X509_cmp_time.3 X509_time_adj_ex.3 +MLINKS+= X509_digest.3 PKCS7_ISSUER_AND_SERIAL_digest.3 +MLINKS+= X509_digest.3 X509_CRL_digest.3 +MLINKS+= X509_digest.3 X509_NAME_digest.3 +MLINKS+= X509_digest.3 X509_REQ_digest.3 +MLINKS+= X509_digest.3 X509_pubkey_digest.3 +MLINKS+= X509_dup.3 ACCESS_DESCRIPTION_free.3 +MLINKS+= X509_dup.3 ACCESS_DESCRIPTION_new.3 +MLINKS+= X509_dup.3 ADMISSIONS_free.3 +MLINKS+= X509_dup.3 ADMISSIONS_new.3 +MLINKS+= X509_dup.3 ADMISSION_SYNTAX_free.3 +MLINKS+= X509_dup.3 ADMISSION_SYNTAX_new.3 +MLINKS+= X509_dup.3 ASIdOrRange_free.3 +MLINKS+= X509_dup.3 ASIdOrRange_new.3 +MLINKS+= X509_dup.3 ASIdentifierChoice_free.3 +MLINKS+= X509_dup.3 ASIdentifierChoice_new.3 +MLINKS+= X509_dup.3 ASIdentifiers_free.3 +MLINKS+= X509_dup.3 ASIdentifiers_new.3 +MLINKS+= X509_dup.3 ASN1_ITEM.3 +MLINKS+= X509_dup.3 ASRange_free.3 +MLINKS+= X509_dup.3 ASRange_new.3 +MLINKS+= X509_dup.3 AUTHORITY_INFO_ACCESS_free.3 +MLINKS+= X509_dup.3 AUTHORITY_INFO_ACCESS_new.3 +MLINKS+= X509_dup.3 AUTHORITY_KEYID_free.3 +MLINKS+= X509_dup.3 AUTHORITY_KEYID_new.3 +MLINKS+= X509_dup.3 BASIC_CONSTRAINTS_free.3 +MLINKS+= X509_dup.3 BASIC_CONSTRAINTS_new.3 +MLINKS+= X509_dup.3 CERTIFICATEPOLICIES_free.3 +MLINKS+= X509_dup.3 CERTIFICATEPOLICIES_new.3 +MLINKS+= X509_dup.3 CMS_ContentInfo_free.3 +MLINKS+= X509_dup.3 CMS_ContentInfo_new.3 +MLINKS+= X509_dup.3 CMS_ContentInfo_print_ctx.3 +MLINKS+= X509_dup.3 CMS_ReceiptRequest_free.3 +MLINKS+= X509_dup.3 CMS_ReceiptRequest_new.3 +MLINKS+= X509_dup.3 CRL_DIST_POINTS_free.3 +MLINKS+= X509_dup.3 CRL_DIST_POINTS_new.3 +MLINKS+= X509_dup.3 DECLARE_ASN1_FUNCTIONS.3 +MLINKS+= X509_dup.3 DIRECTORYSTRING_free.3 +MLINKS+= X509_dup.3 DIRECTORYSTRING_new.3 +MLINKS+= X509_dup.3 DISPLAYTEXT_free.3 +MLINKS+= X509_dup.3 DISPLAYTEXT_new.3 +MLINKS+= X509_dup.3 DIST_POINT_NAME_free.3 +MLINKS+= X509_dup.3 DIST_POINT_NAME_new.3 +MLINKS+= X509_dup.3 DIST_POINT_free.3 +MLINKS+= X509_dup.3 DIST_POINT_new.3 +MLINKS+= X509_dup.3 DSAparams_dup.3 +MLINKS+= X509_dup.3 ECPARAMETERS_free.3 +MLINKS+= X509_dup.3 ECPARAMETERS_new.3 +MLINKS+= X509_dup.3 ECPKPARAMETERS_free.3 +MLINKS+= X509_dup.3 ECPKPARAMETERS_new.3 +MLINKS+= X509_dup.3 EDIPARTYNAME_free.3 +MLINKS+= X509_dup.3 EDIPARTYNAME_new.3 +MLINKS+= X509_dup.3 ESS_CERT_ID_dup.3 +MLINKS+= X509_dup.3 ESS_CERT_ID_free.3 +MLINKS+= X509_dup.3 ESS_CERT_ID_new.3 +MLINKS+= X509_dup.3 ESS_ISSUER_SERIAL_dup.3 +MLINKS+= X509_dup.3 ESS_ISSUER_SERIAL_free.3 +MLINKS+= X509_dup.3 ESS_ISSUER_SERIAL_new.3 +MLINKS+= X509_dup.3 ESS_SIGNING_CERT_dup.3 +MLINKS+= X509_dup.3 ESS_SIGNING_CERT_free.3 +MLINKS+= X509_dup.3 ESS_SIGNING_CERT_new.3 +MLINKS+= X509_dup.3 EXTENDED_KEY_USAGE_free.3 +MLINKS+= X509_dup.3 EXTENDED_KEY_USAGE_new.3 +MLINKS+= X509_dup.3 GENERAL_NAMES_free.3 +MLINKS+= X509_dup.3 GENERAL_NAMES_new.3 +MLINKS+= X509_dup.3 GENERAL_NAME_dup.3 +MLINKS+= X509_dup.3 GENERAL_NAME_free.3 +MLINKS+= X509_dup.3 GENERAL_NAME_new.3 +MLINKS+= X509_dup.3 GENERAL_SUBTREE_free.3 +MLINKS+= X509_dup.3 GENERAL_SUBTREE_new.3 +MLINKS+= X509_dup.3 IMPLEMENT_ASN1_FUNCTIONS.3 +MLINKS+= X509_dup.3 IPAddressChoice_free.3 +MLINKS+= X509_dup.3 IPAddressChoice_new.3 +MLINKS+= X509_dup.3 IPAddressFamily_free.3 +MLINKS+= X509_dup.3 IPAddressFamily_new.3 +MLINKS+= X509_dup.3 IPAddressOrRange_free.3 +MLINKS+= X509_dup.3 IPAddressOrRange_new.3 +MLINKS+= X509_dup.3 IPAddressRange_free.3 +MLINKS+= X509_dup.3 IPAddressRange_new.3 +MLINKS+= X509_dup.3 ISSUING_DIST_POINT_free.3 +MLINKS+= X509_dup.3 ISSUING_DIST_POINT_new.3 +MLINKS+= X509_dup.3 NAME_CONSTRAINTS_free.3 +MLINKS+= X509_dup.3 NAME_CONSTRAINTS_new.3 +MLINKS+= X509_dup.3 NAMING_AUTHORITY_free.3 +MLINKS+= X509_dup.3 NAMING_AUTHORITY_new.3 +MLINKS+= X509_dup.3 NETSCAPE_CERT_SEQUENCE_free.3 +MLINKS+= X509_dup.3 NETSCAPE_CERT_SEQUENCE_new.3 +MLINKS+= X509_dup.3 NETSCAPE_SPKAC_free.3 +MLINKS+= X509_dup.3 NETSCAPE_SPKAC_new.3 +MLINKS+= X509_dup.3 NETSCAPE_SPKI_free.3 +MLINKS+= X509_dup.3 NETSCAPE_SPKI_new.3 +MLINKS+= X509_dup.3 NOTICEREF_free.3 +MLINKS+= X509_dup.3 NOTICEREF_new.3 +MLINKS+= X509_dup.3 OCSP_BASICRESP_free.3 +MLINKS+= X509_dup.3 OCSP_BASICRESP_new.3 +MLINKS+= X509_dup.3 OCSP_CERTID_dup.3 +MLINKS+= X509_dup.3 OCSP_CERTID_new.3 +MLINKS+= X509_dup.3 OCSP_CERTSTATUS_free.3 +MLINKS+= X509_dup.3 OCSP_CERTSTATUS_new.3 +MLINKS+= X509_dup.3 OCSP_CRLID_free.3 +MLINKS+= X509_dup.3 OCSP_CRLID_new.3 +MLINKS+= X509_dup.3 OCSP_ONEREQ_free.3 +MLINKS+= X509_dup.3 OCSP_ONEREQ_new.3 +MLINKS+= X509_dup.3 OCSP_REQINFO_free.3 +MLINKS+= X509_dup.3 OCSP_REQINFO_new.3 +MLINKS+= X509_dup.3 OCSP_RESPBYTES_free.3 +MLINKS+= X509_dup.3 OCSP_RESPBYTES_new.3 +MLINKS+= X509_dup.3 OCSP_RESPDATA_free.3 +MLINKS+= X509_dup.3 OCSP_RESPDATA_new.3 +MLINKS+= X509_dup.3 OCSP_RESPID_free.3 +MLINKS+= X509_dup.3 OCSP_RESPID_new.3 +MLINKS+= X509_dup.3 OCSP_RESPONSE_new.3 +MLINKS+= X509_dup.3 OCSP_REVOKEDINFO_free.3 +MLINKS+= X509_dup.3 OCSP_REVOKEDINFO_new.3 +MLINKS+= X509_dup.3 OCSP_SERVICELOC_free.3 +MLINKS+= X509_dup.3 OCSP_SERVICELOC_new.3 +MLINKS+= X509_dup.3 OCSP_SIGNATURE_free.3 +MLINKS+= X509_dup.3 OCSP_SIGNATURE_new.3 +MLINKS+= X509_dup.3 OCSP_SINGLERESP_free.3 +MLINKS+= X509_dup.3 OCSP_SINGLERESP_new.3 +MLINKS+= X509_dup.3 OTHERNAME_free.3 +MLINKS+= X509_dup.3 OTHERNAME_new.3 +MLINKS+= X509_dup.3 PBE2PARAM_free.3 +MLINKS+= X509_dup.3 PBE2PARAM_new.3 +MLINKS+= X509_dup.3 PBEPARAM_free.3 +MLINKS+= X509_dup.3 PBEPARAM_new.3 +MLINKS+= X509_dup.3 PBKDF2PARAM_free.3 +MLINKS+= X509_dup.3 PBKDF2PARAM_new.3 +MLINKS+= X509_dup.3 PKCS12_BAGS_free.3 +MLINKS+= X509_dup.3 PKCS12_BAGS_new.3 +MLINKS+= X509_dup.3 PKCS12_MAC_DATA_free.3 +MLINKS+= X509_dup.3 PKCS12_MAC_DATA_new.3 +MLINKS+= X509_dup.3 PKCS12_SAFEBAG_free.3 +MLINKS+= X509_dup.3 PKCS12_SAFEBAG_new.3 +MLINKS+= X509_dup.3 PKCS12_free.3 +MLINKS+= X509_dup.3 PKCS12_new.3 +MLINKS+= X509_dup.3 PKCS7_DIGEST_free.3 +MLINKS+= X509_dup.3 PKCS7_DIGEST_new.3 +MLINKS+= X509_dup.3 PKCS7_ENCRYPT_free.3 +MLINKS+= X509_dup.3 PKCS7_ENCRYPT_new.3 +MLINKS+= X509_dup.3 PKCS7_ENC_CONTENT_free.3 +MLINKS+= X509_dup.3 PKCS7_ENC_CONTENT_new.3 +MLINKS+= X509_dup.3 PKCS7_ENVELOPE_free.3 +MLINKS+= X509_dup.3 PKCS7_ENVELOPE_new.3 +MLINKS+= X509_dup.3 PKCS7_ISSUER_AND_SERIAL_free.3 +MLINKS+= X509_dup.3 PKCS7_ISSUER_AND_SERIAL_new.3 +MLINKS+= X509_dup.3 PKCS7_RECIP_INFO_free.3 +MLINKS+= X509_dup.3 PKCS7_RECIP_INFO_new.3 +MLINKS+= X509_dup.3 PKCS7_SIGNED_free.3 +MLINKS+= X509_dup.3 PKCS7_SIGNED_new.3 +MLINKS+= X509_dup.3 PKCS7_SIGNER_INFO_free.3 +MLINKS+= X509_dup.3 PKCS7_SIGNER_INFO_new.3 +MLINKS+= X509_dup.3 PKCS7_SIGN_ENVELOPE_free.3 +MLINKS+= X509_dup.3 PKCS7_SIGN_ENVELOPE_new.3 +MLINKS+= X509_dup.3 PKCS7_dup.3 +MLINKS+= X509_dup.3 PKCS7_free.3 +MLINKS+= X509_dup.3 PKCS7_new.3 +MLINKS+= X509_dup.3 PKCS7_print_ctx.3 +MLINKS+= X509_dup.3 PKCS8_PRIV_KEY_INFO_free.3 +MLINKS+= X509_dup.3 PKCS8_PRIV_KEY_INFO_new.3 +MLINKS+= X509_dup.3 PKEY_USAGE_PERIOD_free.3 +MLINKS+= X509_dup.3 PKEY_USAGE_PERIOD_new.3 +MLINKS+= X509_dup.3 POLICYINFO_free.3 +MLINKS+= X509_dup.3 POLICYINFO_new.3 +MLINKS+= X509_dup.3 POLICYQUALINFO_free.3 +MLINKS+= X509_dup.3 POLICYQUALINFO_new.3 +MLINKS+= X509_dup.3 POLICY_CONSTRAINTS_free.3 +MLINKS+= X509_dup.3 POLICY_CONSTRAINTS_new.3 +MLINKS+= X509_dup.3 POLICY_MAPPING_free.3 +MLINKS+= X509_dup.3 POLICY_MAPPING_new.3 +MLINKS+= X509_dup.3 PROFESSION_INFOS_free.3 +MLINKS+= X509_dup.3 PROFESSION_INFOS_new.3 +MLINKS+= X509_dup.3 PROFESSION_INFO_free.3 +MLINKS+= X509_dup.3 PROFESSION_INFO_new.3 +MLINKS+= X509_dup.3 PROXY_CERT_INFO_EXTENSION_free.3 +MLINKS+= X509_dup.3 PROXY_CERT_INFO_EXTENSION_new.3 +MLINKS+= X509_dup.3 PROXY_POLICY_free.3 +MLINKS+= X509_dup.3 PROXY_POLICY_new.3 +MLINKS+= X509_dup.3 RSAPrivateKey_dup.3 +MLINKS+= X509_dup.3 RSAPublicKey_dup.3 +MLINKS+= X509_dup.3 RSA_OAEP_PARAMS_free.3 +MLINKS+= X509_dup.3 RSA_OAEP_PARAMS_new.3 +MLINKS+= X509_dup.3 RSA_PSS_PARAMS_free.3 +MLINKS+= X509_dup.3 RSA_PSS_PARAMS_new.3 +MLINKS+= X509_dup.3 SCRYPT_PARAMS_free.3 +MLINKS+= X509_dup.3 SCRYPT_PARAMS_new.3 +MLINKS+= X509_dup.3 SXNETID_free.3 +MLINKS+= X509_dup.3 SXNETID_new.3 +MLINKS+= X509_dup.3 SXNET_free.3 +MLINKS+= X509_dup.3 SXNET_new.3 +MLINKS+= X509_dup.3 TLS_FEATURE_free.3 +MLINKS+= X509_dup.3 TLS_FEATURE_new.3 +MLINKS+= X509_dup.3 TS_ACCURACY_dup.3 +MLINKS+= X509_dup.3 TS_ACCURACY_free.3 +MLINKS+= X509_dup.3 TS_ACCURACY_new.3 +MLINKS+= X509_dup.3 TS_MSG_IMPRINT_dup.3 +MLINKS+= X509_dup.3 TS_MSG_IMPRINT_free.3 +MLINKS+= X509_dup.3 TS_MSG_IMPRINT_new.3 +MLINKS+= X509_dup.3 TS_REQ_dup.3 +MLINKS+= X509_dup.3 TS_REQ_free.3 +MLINKS+= X509_dup.3 TS_REQ_new.3 +MLINKS+= X509_dup.3 TS_RESP_dup.3 +MLINKS+= X509_dup.3 TS_RESP_free.3 +MLINKS+= X509_dup.3 TS_RESP_new.3 +MLINKS+= X509_dup.3 TS_STATUS_INFO_dup.3 +MLINKS+= X509_dup.3 TS_STATUS_INFO_free.3 +MLINKS+= X509_dup.3 TS_STATUS_INFO_new.3 +MLINKS+= X509_dup.3 TS_TST_INFO_dup.3 +MLINKS+= X509_dup.3 TS_TST_INFO_free.3 +MLINKS+= X509_dup.3 TS_TST_INFO_new.3 +MLINKS+= X509_dup.3 USERNOTICE_free.3 +MLINKS+= X509_dup.3 USERNOTICE_new.3 +MLINKS+= X509_dup.3 X509_ALGOR_free.3 +MLINKS+= X509_dup.3 X509_ALGOR_new.3 +MLINKS+= X509_dup.3 X509_ATTRIBUTE_dup.3 +MLINKS+= X509_dup.3 X509_ATTRIBUTE_free.3 +MLINKS+= X509_dup.3 X509_ATTRIBUTE_new.3 +MLINKS+= X509_dup.3 X509_CERT_AUX_free.3 +MLINKS+= X509_dup.3 X509_CERT_AUX_new.3 +MLINKS+= X509_dup.3 X509_CINF_free.3 +MLINKS+= X509_dup.3 X509_CINF_new.3 +MLINKS+= X509_dup.3 X509_CRL_INFO_free.3 +MLINKS+= X509_dup.3 X509_CRL_INFO_new.3 +MLINKS+= X509_dup.3 X509_CRL_dup.3 +MLINKS+= X509_dup.3 X509_CRL_free.3 +MLINKS+= X509_dup.3 X509_CRL_new.3 +MLINKS+= X509_dup.3 X509_EXTENSION_dup.3 +MLINKS+= X509_dup.3 X509_EXTENSION_free.3 +MLINKS+= X509_dup.3 X509_EXTENSION_new.3 +MLINKS+= X509_dup.3 X509_NAME_ENTRY_dup.3 +MLINKS+= X509_dup.3 X509_NAME_ENTRY_free.3 +MLINKS+= X509_dup.3 X509_NAME_ENTRY_new.3 +MLINKS+= X509_dup.3 X509_NAME_dup.3 +MLINKS+= X509_dup.3 X509_NAME_free.3 +MLINKS+= X509_dup.3 X509_NAME_new.3 +MLINKS+= X509_dup.3 X509_REQ_INFO_free.3 +MLINKS+= X509_dup.3 X509_REQ_INFO_new.3 +MLINKS+= X509_dup.3 X509_REQ_dup.3 +MLINKS+= X509_dup.3 X509_REQ_free.3 +MLINKS+= X509_dup.3 X509_REQ_new.3 +MLINKS+= X509_dup.3 X509_REVOKED_dup.3 +MLINKS+= X509_dup.3 X509_REVOKED_free.3 +MLINKS+= X509_dup.3 X509_REVOKED_new.3 +MLINKS+= X509_dup.3 X509_SIG_free.3 +MLINKS+= X509_dup.3 X509_SIG_new.3 +MLINKS+= X509_dup.3 X509_VAL_free.3 +MLINKS+= X509_dup.3 X509_VAL_new.3 +MLINKS+= X509_get0_notBefore.3 X509_CRL_get0_lastUpdate.3 +MLINKS+= X509_get0_notBefore.3 X509_CRL_get0_nextUpdate.3 +MLINKS+= X509_get0_notBefore.3 X509_CRL_set1_lastUpdate.3 +MLINKS+= X509_get0_notBefore.3 X509_CRL_set1_nextUpdate.3 +MLINKS+= X509_get0_notBefore.3 X509_get0_notAfter.3 +MLINKS+= X509_get0_notBefore.3 X509_getm_notAfter.3 +MLINKS+= X509_get0_notBefore.3 X509_getm_notBefore.3 +MLINKS+= X509_get0_notBefore.3 X509_set1_notAfter.3 +MLINKS+= X509_get0_notBefore.3 X509_set1_notBefore.3 +MLINKS+= X509_get0_signature.3 X509_CRL_get0_signature.3 +MLINKS+= X509_get0_signature.3 X509_CRL_get_signature_nid.3 +MLINKS+= X509_get0_signature.3 X509_REQ_get0_signature.3 +MLINKS+= X509_get0_signature.3 X509_REQ_get_signature_nid.3 +MLINKS+= X509_get0_signature.3 X509_SIG_INFO_get.3 +MLINKS+= X509_get0_signature.3 X509_SIG_INFO_set.3 +MLINKS+= X509_get0_signature.3 X509_get0_tbs_sigalg.3 +MLINKS+= X509_get0_signature.3 X509_get_signature_info.3 +MLINKS+= X509_get0_signature.3 X509_get_signature_nid.3 +MLINKS+= X509_get_extension_flags.3 X509_get0_authority_issuer.3 +MLINKS+= X509_get_extension_flags.3 X509_get0_authority_key_id.3 +MLINKS+= X509_get_extension_flags.3 X509_get0_authority_serial.3 +MLINKS+= X509_get_extension_flags.3 X509_get0_subject_key_id.3 +MLINKS+= X509_get_extension_flags.3 X509_get_extended_key_usage.3 +MLINKS+= X509_get_extension_flags.3 X509_get_key_usage.3 +MLINKS+= X509_get_extension_flags.3 X509_get_pathlen.3 +MLINKS+= X509_get_extension_flags.3 X509_get_proxy_pathlen.3 +MLINKS+= X509_get_extension_flags.3 X509_set_proxy_flag.3 +MLINKS+= X509_get_extension_flags.3 X509_set_proxy_pathlen.3 +MLINKS+= X509_get_pubkey.3 X509_REQ_get0_pubkey.3 +MLINKS+= X509_get_pubkey.3 X509_REQ_get_X509_PUBKEY.3 +MLINKS+= X509_get_pubkey.3 X509_REQ_get_pubkey.3 +MLINKS+= X509_get_pubkey.3 X509_REQ_set_pubkey.3 +MLINKS+= X509_get_pubkey.3 X509_get0_pubkey.3 +MLINKS+= X509_get_pubkey.3 X509_get_X509_PUBKEY.3 +MLINKS+= X509_get_pubkey.3 X509_set_pubkey.3 +MLINKS+= X509_get_serialNumber.3 X509_get0_serialNumber.3 +MLINKS+= X509_get_serialNumber.3 X509_set_serialNumber.3 +MLINKS+= X509_get_subject_name.3 X509_CRL_get_issuer.3 +MLINKS+= X509_get_subject_name.3 X509_CRL_set_issuer_name.3 +MLINKS+= X509_get_subject_name.3 X509_REQ_get_subject_name.3 +MLINKS+= X509_get_subject_name.3 X509_REQ_set_subject_name.3 +MLINKS+= X509_get_subject_name.3 X509_get_issuer_name.3 +MLINKS+= X509_get_subject_name.3 X509_set_issuer_name.3 +MLINKS+= X509_get_subject_name.3 X509_set_subject_name.3 +MLINKS+= X509_get_version.3 X509_CRL_get_version.3 +MLINKS+= X509_get_version.3 X509_CRL_set_version.3 +MLINKS+= X509_get_version.3 X509_REQ_get_version.3 +MLINKS+= X509_get_version.3 X509_REQ_set_version.3 +MLINKS+= X509_get_version.3 X509_set_version.3 +MLINKS+= X509_new.3 X509_chain_up_ref.3 +MLINKS+= X509_new.3 X509_free.3 +MLINKS+= X509_new.3 X509_up_ref.3 +MLINKS+= X509_sign.3 X509_CRL_sign.3 +MLINKS+= X509_sign.3 X509_CRL_sign_ctx.3 +MLINKS+= X509_sign.3 X509_CRL_verify.3 +MLINKS+= X509_sign.3 X509_REQ_sign.3 +MLINKS+= X509_sign.3 X509_REQ_sign_ctx.3 +MLINKS+= X509_sign.3 X509_REQ_verify.3 +MLINKS+= X509_sign.3 X509_sign_ctx.3 +MLINKS+= X509_sign.3 X509_verify.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_CRL_add_ext.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_CRL_delete_ext.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_CRL_get_ext.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_CRL_get_ext_by_NID.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_CRL_get_ext_by_OBJ.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_CRL_get_ext_by_critical.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_CRL_get_ext_count.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_REVOKED_add_ext.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_REVOKED_delete_ext.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_REVOKED_get_ext.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_REVOKED_get_ext_by_NID.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_REVOKED_get_ext_by_OBJ.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_REVOKED_get_ext_by_critical.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_REVOKED_get_ext_count.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_add_ext.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_delete_ext.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_get_ext.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_get_ext_by_NID.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_get_ext_by_OBJ.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_get_ext_by_critical.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509_get_ext_count.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509v3_add_ext.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509v3_delete_ext.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509v3_get_ext.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509v3_get_ext_by_OBJ.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509v3_get_ext_by_critical.3 +MLINKS+= X509v3_get_ext_by_NID.3 X509v3_get_ext_count.3 +MLINKS+= d2i_DHparams.3 i2d_DHparams.3 +MLINKS+= d2i_PKCS8PrivateKey_bio.3 d2i_PKCS8PrivateKey_fp.3 +MLINKS+= d2i_PKCS8PrivateKey_bio.3 i2d_PKCS8PrivateKey_bio.3 +MLINKS+= d2i_PKCS8PrivateKey_bio.3 i2d_PKCS8PrivateKey_fp.3 +MLINKS+= d2i_PKCS8PrivateKey_bio.3 i2d_PKCS8PrivateKey_nid_bio.3 +MLINKS+= d2i_PKCS8PrivateKey_bio.3 i2d_PKCS8PrivateKey_nid_fp.3 +MLINKS+= d2i_PrivateKey.3 d2i_AutoPrivateKey.3 +MLINKS+= d2i_PrivateKey.3 d2i_PrivateKey_bio.3 +MLINKS+= d2i_PrivateKey.3 d2i_PrivateKey_fp.3 +MLINKS+= d2i_PrivateKey.3 d2i_PublicKey.3 +MLINKS+= d2i_PrivateKey.3 i2d_PrivateKey.3 +MLINKS+= d2i_PrivateKey.3 i2d_PublicKey.3 +MLINKS+= d2i_SSL_SESSION.3 i2d_SSL_SESSION.3 +MLINKS+= d2i_X509.3 d2i_ACCESS_DESCRIPTION.3 +MLINKS+= d2i_X509.3 d2i_ADMISSIONS.3 +MLINKS+= d2i_X509.3 d2i_ADMISSION_SYNTAX.3 +MLINKS+= d2i_X509.3 d2i_ASIdOrRange.3 +MLINKS+= d2i_X509.3 d2i_ASIdentifierChoice.3 +MLINKS+= d2i_X509.3 d2i_ASIdentifiers.3 +MLINKS+= d2i_X509.3 d2i_ASN1_BIT_STRING.3 +MLINKS+= d2i_X509.3 d2i_ASN1_BMPSTRING.3 +MLINKS+= d2i_X509.3 d2i_ASN1_ENUMERATED.3 +MLINKS+= d2i_X509.3 d2i_ASN1_GENERALIZEDTIME.3 +MLINKS+= d2i_X509.3 d2i_ASN1_GENERALSTRING.3 +MLINKS+= d2i_X509.3 d2i_ASN1_IA5STRING.3 +MLINKS+= d2i_X509.3 d2i_ASN1_INTEGER.3 +MLINKS+= d2i_X509.3 d2i_ASN1_NULL.3 +MLINKS+= d2i_X509.3 d2i_ASN1_OBJECT.3 +MLINKS+= d2i_X509.3 d2i_ASN1_OCTET_STRING.3 +MLINKS+= d2i_X509.3 d2i_ASN1_PRINTABLE.3 +MLINKS+= d2i_X509.3 d2i_ASN1_PRINTABLESTRING.3 +MLINKS+= d2i_X509.3 d2i_ASN1_SEQUENCE_ANY.3 +MLINKS+= d2i_X509.3 d2i_ASN1_SET_ANY.3 +MLINKS+= d2i_X509.3 d2i_ASN1_T61STRING.3 +MLINKS+= d2i_X509.3 d2i_ASN1_TIME.3 +MLINKS+= d2i_X509.3 d2i_ASN1_TYPE.3 +MLINKS+= d2i_X509.3 d2i_ASN1_UINTEGER.3 +MLINKS+= d2i_X509.3 d2i_ASN1_UNIVERSALSTRING.3 +MLINKS+= d2i_X509.3 d2i_ASN1_UTCTIME.3 +MLINKS+= d2i_X509.3 d2i_ASN1_UTF8STRING.3 +MLINKS+= d2i_X509.3 d2i_ASN1_VISIBLESTRING.3 +MLINKS+= d2i_X509.3 d2i_ASRange.3 +MLINKS+= d2i_X509.3 d2i_AUTHORITY_INFO_ACCESS.3 +MLINKS+= d2i_X509.3 d2i_AUTHORITY_KEYID.3 +MLINKS+= d2i_X509.3 d2i_BASIC_CONSTRAINTS.3 +MLINKS+= d2i_X509.3 d2i_CERTIFICATEPOLICIES.3 +MLINKS+= d2i_X509.3 d2i_CMS_ContentInfo.3 +MLINKS+= d2i_X509.3 d2i_CMS_ReceiptRequest.3 +MLINKS+= d2i_X509.3 d2i_CMS_bio.3 +MLINKS+= d2i_X509.3 d2i_CRL_DIST_POINTS.3 +MLINKS+= d2i_X509.3 d2i_DHxparams.3 +MLINKS+= d2i_X509.3 d2i_DIRECTORYSTRING.3 +MLINKS+= d2i_X509.3 d2i_DISPLAYTEXT.3 +MLINKS+= d2i_X509.3 d2i_DIST_POINT.3 +MLINKS+= d2i_X509.3 d2i_DIST_POINT_NAME.3 +MLINKS+= d2i_X509.3 d2i_DSAPrivateKey.3 +MLINKS+= d2i_X509.3 d2i_DSAPrivateKey_bio.3 +MLINKS+= d2i_X509.3 d2i_DSAPrivateKey_fp.3 +MLINKS+= d2i_X509.3 d2i_DSAPublicKey.3 +MLINKS+= d2i_X509.3 d2i_DSA_PUBKEY.3 +MLINKS+= d2i_X509.3 d2i_DSA_PUBKEY_bio.3 +MLINKS+= d2i_X509.3 d2i_DSA_PUBKEY_fp.3 +MLINKS+= d2i_X509.3 d2i_DSA_SIG.3 +MLINKS+= d2i_X509.3 d2i_DSAparams.3 +MLINKS+= d2i_X509.3 d2i_ECDSA_SIG.3 +MLINKS+= d2i_X509.3 d2i_ECPKParameters.3 +MLINKS+= d2i_X509.3 d2i_ECParameters.3 +MLINKS+= d2i_X509.3 d2i_ECPrivateKey.3 +MLINKS+= d2i_X509.3 d2i_ECPrivateKey_bio.3 +MLINKS+= d2i_X509.3 d2i_ECPrivateKey_fp.3 +MLINKS+= d2i_X509.3 d2i_EC_PUBKEY.3 +MLINKS+= d2i_X509.3 d2i_EC_PUBKEY_bio.3 +MLINKS+= d2i_X509.3 d2i_EC_PUBKEY_fp.3 +MLINKS+= d2i_X509.3 d2i_EDIPARTYNAME.3 +MLINKS+= d2i_X509.3 d2i_ESS_CERT_ID.3 +MLINKS+= d2i_X509.3 d2i_ESS_ISSUER_SERIAL.3 +MLINKS+= d2i_X509.3 d2i_ESS_SIGNING_CERT.3 +MLINKS+= d2i_X509.3 d2i_EXTENDED_KEY_USAGE.3 +MLINKS+= d2i_X509.3 d2i_GENERAL_NAME.3 +MLINKS+= d2i_X509.3 d2i_GENERAL_NAMES.3 +MLINKS+= d2i_X509.3 d2i_IPAddressChoice.3 +MLINKS+= d2i_X509.3 d2i_IPAddressFamily.3 +MLINKS+= d2i_X509.3 d2i_IPAddressOrRange.3 +MLINKS+= d2i_X509.3 d2i_IPAddressRange.3 +MLINKS+= d2i_X509.3 d2i_ISSUING_DIST_POINT.3 +MLINKS+= d2i_X509.3 d2i_NAMING_AUTHORITY.3 +MLINKS+= d2i_X509.3 d2i_NETSCAPE_CERT_SEQUENCE.3 +MLINKS+= d2i_X509.3 d2i_NETSCAPE_SPKAC.3 +MLINKS+= d2i_X509.3 d2i_NETSCAPE_SPKI.3 +MLINKS+= d2i_X509.3 d2i_NOTICEREF.3 +MLINKS+= d2i_X509.3 d2i_OCSP_BASICRESP.3 +MLINKS+= d2i_X509.3 d2i_OCSP_CERTID.3 +MLINKS+= d2i_X509.3 d2i_OCSP_CERTSTATUS.3 +MLINKS+= d2i_X509.3 d2i_OCSP_CRLID.3 +MLINKS+= d2i_X509.3 d2i_OCSP_ONEREQ.3 +MLINKS+= d2i_X509.3 d2i_OCSP_REQINFO.3 +MLINKS+= d2i_X509.3 d2i_OCSP_REQUEST.3 +MLINKS+= d2i_X509.3 d2i_OCSP_RESPBYTES.3 +MLINKS+= d2i_X509.3 d2i_OCSP_RESPDATA.3 +MLINKS+= d2i_X509.3 d2i_OCSP_RESPID.3 +MLINKS+= d2i_X509.3 d2i_OCSP_RESPONSE.3 +MLINKS+= d2i_X509.3 d2i_OCSP_REVOKEDINFO.3 +MLINKS+= d2i_X509.3 d2i_OCSP_SERVICELOC.3 +MLINKS+= d2i_X509.3 d2i_OCSP_SIGNATURE.3 +MLINKS+= d2i_X509.3 d2i_OCSP_SINGLERESP.3 +MLINKS+= d2i_X509.3 d2i_OTHERNAME.3 +MLINKS+= d2i_X509.3 d2i_PBE2PARAM.3 +MLINKS+= d2i_X509.3 d2i_PBEPARAM.3 +MLINKS+= d2i_X509.3 d2i_PBKDF2PARAM.3 +MLINKS+= d2i_X509.3 d2i_PKCS12.3 +MLINKS+= d2i_X509.3 d2i_PKCS12_BAGS.3 +MLINKS+= d2i_X509.3 d2i_PKCS12_MAC_DATA.3 +MLINKS+= d2i_X509.3 d2i_PKCS12_SAFEBAG.3 +MLINKS+= d2i_X509.3 d2i_PKCS12_bio.3 +MLINKS+= d2i_X509.3 d2i_PKCS12_fp.3 +MLINKS+= d2i_X509.3 d2i_PKCS7.3 +MLINKS+= d2i_X509.3 d2i_PKCS7_DIGEST.3 +MLINKS+= d2i_X509.3 d2i_PKCS7_ENCRYPT.3 +MLINKS+= d2i_X509.3 d2i_PKCS7_ENC_CONTENT.3 +MLINKS+= d2i_X509.3 d2i_PKCS7_ENVELOPE.3 +MLINKS+= d2i_X509.3 d2i_PKCS7_ISSUER_AND_SERIAL.3 +MLINKS+= d2i_X509.3 d2i_PKCS7_RECIP_INFO.3 +MLINKS+= d2i_X509.3 d2i_PKCS7_SIGNED.3 +MLINKS+= d2i_X509.3 d2i_PKCS7_SIGNER_INFO.3 +MLINKS+= d2i_X509.3 d2i_PKCS7_SIGN_ENVELOPE.3 +MLINKS+= d2i_X509.3 d2i_PKCS7_bio.3 +MLINKS+= d2i_X509.3 d2i_PKCS7_fp.3 +MLINKS+= d2i_X509.3 d2i_PKCS8_PRIV_KEY_INFO.3 +MLINKS+= d2i_X509.3 d2i_PKCS8_PRIV_KEY_INFO_bio.3 +MLINKS+= d2i_X509.3 d2i_PKCS8_PRIV_KEY_INFO_fp.3 +MLINKS+= d2i_X509.3 d2i_PKCS8_bio.3 +MLINKS+= d2i_X509.3 d2i_PKCS8_fp.3 +MLINKS+= d2i_X509.3 d2i_PKEY_USAGE_PERIOD.3 +MLINKS+= d2i_X509.3 d2i_POLICYINFO.3 +MLINKS+= d2i_X509.3 d2i_POLICYQUALINFO.3 +MLINKS+= d2i_X509.3 d2i_PROFESSION_INFO.3 +MLINKS+= d2i_X509.3 d2i_PROXY_CERT_INFO_EXTENSION.3 +MLINKS+= d2i_X509.3 d2i_PROXY_POLICY.3 +MLINKS+= d2i_X509.3 d2i_RSAPrivateKey.3 +MLINKS+= d2i_X509.3 d2i_RSAPrivateKey_bio.3 +MLINKS+= d2i_X509.3 d2i_RSAPrivateKey_fp.3 +MLINKS+= d2i_X509.3 d2i_RSAPublicKey.3 +MLINKS+= d2i_X509.3 d2i_RSAPublicKey_bio.3 +MLINKS+= d2i_X509.3 d2i_RSAPublicKey_fp.3 +MLINKS+= d2i_X509.3 d2i_RSA_OAEP_PARAMS.3 +MLINKS+= d2i_X509.3 d2i_RSA_PSS_PARAMS.3 +MLINKS+= d2i_X509.3 d2i_RSA_PUBKEY.3 +MLINKS+= d2i_X509.3 d2i_RSA_PUBKEY_bio.3 +MLINKS+= d2i_X509.3 d2i_RSA_PUBKEY_fp.3 +MLINKS+= d2i_X509.3 d2i_SCRYPT_PARAMS.3 +MLINKS+= d2i_X509.3 d2i_SCT_LIST.3 +MLINKS+= d2i_X509.3 d2i_SXNET.3 +MLINKS+= d2i_X509.3 d2i_SXNETID.3 +MLINKS+= d2i_X509.3 d2i_TS_ACCURACY.3 +MLINKS+= d2i_X509.3 d2i_TS_MSG_IMPRINT.3 +MLINKS+= d2i_X509.3 d2i_TS_MSG_IMPRINT_bio.3 +MLINKS+= d2i_X509.3 d2i_TS_MSG_IMPRINT_fp.3 +MLINKS+= d2i_X509.3 d2i_TS_REQ.3 +MLINKS+= d2i_X509.3 d2i_TS_REQ_bio.3 +MLINKS+= d2i_X509.3 d2i_TS_REQ_fp.3 +MLINKS+= d2i_X509.3 d2i_TS_RESP.3 +MLINKS+= d2i_X509.3 d2i_TS_RESP_bio.3 +MLINKS+= d2i_X509.3 d2i_TS_RESP_fp.3 +MLINKS+= d2i_X509.3 d2i_TS_STATUS_INFO.3 +MLINKS+= d2i_X509.3 d2i_TS_TST_INFO.3 +MLINKS+= d2i_X509.3 d2i_TS_TST_INFO_bio.3 +MLINKS+= d2i_X509.3 d2i_TS_TST_INFO_fp.3 +MLINKS+= d2i_X509.3 d2i_USERNOTICE.3 +MLINKS+= d2i_X509.3 d2i_X509_ALGOR.3 +MLINKS+= d2i_X509.3 d2i_X509_ALGORS.3 +MLINKS+= d2i_X509.3 d2i_X509_ATTRIBUTE.3 +MLINKS+= d2i_X509.3 d2i_X509_CERT_AUX.3 +MLINKS+= d2i_X509.3 d2i_X509_CINF.3 +MLINKS+= d2i_X509.3 d2i_X509_CRL.3 +MLINKS+= d2i_X509.3 d2i_X509_CRL_INFO.3 +MLINKS+= d2i_X509.3 d2i_X509_CRL_bio.3 +MLINKS+= d2i_X509.3 d2i_X509_CRL_fp.3 +MLINKS+= d2i_X509.3 d2i_X509_EXTENSION.3 +MLINKS+= d2i_X509.3 d2i_X509_EXTENSIONS.3 +MLINKS+= d2i_X509.3 d2i_X509_NAME.3 +MLINKS+= d2i_X509.3 d2i_X509_NAME_ENTRY.3 +MLINKS+= d2i_X509.3 d2i_X509_PUBKEY.3 +MLINKS+= d2i_X509.3 d2i_X509_REQ.3 +MLINKS+= d2i_X509.3 d2i_X509_REQ_INFO.3 +MLINKS+= d2i_X509.3 d2i_X509_REQ_bio.3 +MLINKS+= d2i_X509.3 d2i_X509_REQ_fp.3 +MLINKS+= d2i_X509.3 d2i_X509_REVOKED.3 +MLINKS+= d2i_X509.3 d2i_X509_SIG.3 +MLINKS+= d2i_X509.3 d2i_X509_VAL.3 +MLINKS+= d2i_X509.3 i2d_ACCESS_DESCRIPTION.3 +MLINKS+= d2i_X509.3 i2d_ADMISSIONS.3 +MLINKS+= d2i_X509.3 i2d_ADMISSION_SYNTAX.3 +MLINKS+= d2i_X509.3 i2d_ASIdOrRange.3 +MLINKS+= d2i_X509.3 i2d_ASIdentifierChoice.3 +MLINKS+= d2i_X509.3 i2d_ASIdentifiers.3 +MLINKS+= d2i_X509.3 i2d_ASN1_BIT_STRING.3 +MLINKS+= d2i_X509.3 i2d_ASN1_BMPSTRING.3 +MLINKS+= d2i_X509.3 i2d_ASN1_ENUMERATED.3 +MLINKS+= d2i_X509.3 i2d_ASN1_GENERALIZEDTIME.3 +MLINKS+= d2i_X509.3 i2d_ASN1_GENERALSTRING.3 +MLINKS+= d2i_X509.3 i2d_ASN1_IA5STRING.3 +MLINKS+= d2i_X509.3 i2d_ASN1_INTEGER.3 +MLINKS+= d2i_X509.3 i2d_ASN1_NULL.3 +MLINKS+= d2i_X509.3 i2d_ASN1_OBJECT.3 +MLINKS+= d2i_X509.3 i2d_ASN1_OCTET_STRING.3 +MLINKS+= d2i_X509.3 i2d_ASN1_PRINTABLE.3 +MLINKS+= d2i_X509.3 i2d_ASN1_PRINTABLESTRING.3 +MLINKS+= d2i_X509.3 i2d_ASN1_SEQUENCE_ANY.3 +MLINKS+= d2i_X509.3 i2d_ASN1_SET_ANY.3 +MLINKS+= d2i_X509.3 i2d_ASN1_T61STRING.3 +MLINKS+= d2i_X509.3 i2d_ASN1_TIME.3 +MLINKS+= d2i_X509.3 i2d_ASN1_TYPE.3 +MLINKS+= d2i_X509.3 i2d_ASN1_UNIVERSALSTRING.3 +MLINKS+= d2i_X509.3 i2d_ASN1_UTCTIME.3 +MLINKS+= d2i_X509.3 i2d_ASN1_UTF8STRING.3 +MLINKS+= d2i_X509.3 i2d_ASN1_VISIBLESTRING.3 +MLINKS+= d2i_X509.3 i2d_ASN1_bio_stream.3 +MLINKS+= d2i_X509.3 i2d_ASRange.3 +MLINKS+= d2i_X509.3 i2d_AUTHORITY_INFO_ACCESS.3 +MLINKS+= d2i_X509.3 i2d_AUTHORITY_KEYID.3 +MLINKS+= d2i_X509.3 i2d_BASIC_CONSTRAINTS.3 +MLINKS+= d2i_X509.3 i2d_CERTIFICATEPOLICIES.3 +MLINKS+= d2i_X509.3 i2d_CMS_ContentInfo.3 +MLINKS+= d2i_X509.3 i2d_CMS_ReceiptRequest.3 +MLINKS+= d2i_X509.3 i2d_CMS_bio.3 +MLINKS+= d2i_X509.3 i2d_CRL_DIST_POINTS.3 +MLINKS+= d2i_X509.3 i2d_DHxparams.3 +MLINKS+= d2i_X509.3 i2d_DIRECTORYSTRING.3 +MLINKS+= d2i_X509.3 i2d_DISPLAYTEXT.3 +MLINKS+= d2i_X509.3 i2d_DIST_POINT.3 +MLINKS+= d2i_X509.3 i2d_DIST_POINT_NAME.3 +MLINKS+= d2i_X509.3 i2d_DSAPrivateKey.3 +MLINKS+= d2i_X509.3 i2d_DSAPrivateKey_bio.3 +MLINKS+= d2i_X509.3 i2d_DSAPrivateKey_fp.3 +MLINKS+= d2i_X509.3 i2d_DSAPublicKey.3 +MLINKS+= d2i_X509.3 i2d_DSA_PUBKEY.3 +MLINKS+= d2i_X509.3 i2d_DSA_PUBKEY_bio.3 +MLINKS+= d2i_X509.3 i2d_DSA_PUBKEY_fp.3 +MLINKS+= d2i_X509.3 i2d_DSA_SIG.3 +MLINKS+= d2i_X509.3 i2d_DSAparams.3 +MLINKS+= d2i_X509.3 i2d_ECDSA_SIG.3 +MLINKS+= d2i_X509.3 i2d_ECPKParameters.3 +MLINKS+= d2i_X509.3 i2d_ECParameters.3 +MLINKS+= d2i_X509.3 i2d_ECPrivateKey.3 +MLINKS+= d2i_X509.3 i2d_ECPrivateKey_bio.3 +MLINKS+= d2i_X509.3 i2d_ECPrivateKey_fp.3 +MLINKS+= d2i_X509.3 i2d_EC_PUBKEY.3 +MLINKS+= d2i_X509.3 i2d_EC_PUBKEY_bio.3 +MLINKS+= d2i_X509.3 i2d_EC_PUBKEY_fp.3 +MLINKS+= d2i_X509.3 i2d_EDIPARTYNAME.3 +MLINKS+= d2i_X509.3 i2d_ESS_CERT_ID.3 +MLINKS+= d2i_X509.3 i2d_ESS_ISSUER_SERIAL.3 +MLINKS+= d2i_X509.3 i2d_ESS_SIGNING_CERT.3 +MLINKS+= d2i_X509.3 i2d_EXTENDED_KEY_USAGE.3 +MLINKS+= d2i_X509.3 i2d_GENERAL_NAME.3 +MLINKS+= d2i_X509.3 i2d_GENERAL_NAMES.3 +MLINKS+= d2i_X509.3 i2d_IPAddressChoice.3 +MLINKS+= d2i_X509.3 i2d_IPAddressFamily.3 +MLINKS+= d2i_X509.3 i2d_IPAddressOrRange.3 +MLINKS+= d2i_X509.3 i2d_IPAddressRange.3 +MLINKS+= d2i_X509.3 i2d_ISSUING_DIST_POINT.3 +MLINKS+= d2i_X509.3 i2d_NAMING_AUTHORITY.3 +MLINKS+= d2i_X509.3 i2d_NETSCAPE_CERT_SEQUENCE.3 +MLINKS+= d2i_X509.3 i2d_NETSCAPE_SPKAC.3 +MLINKS+= d2i_X509.3 i2d_NETSCAPE_SPKI.3 +MLINKS+= d2i_X509.3 i2d_NOTICEREF.3 +MLINKS+= d2i_X509.3 i2d_OCSP_BASICRESP.3 +MLINKS+= d2i_X509.3 i2d_OCSP_CERTID.3 +MLINKS+= d2i_X509.3 i2d_OCSP_CERTSTATUS.3 +MLINKS+= d2i_X509.3 i2d_OCSP_CRLID.3 +MLINKS+= d2i_X509.3 i2d_OCSP_ONEREQ.3 +MLINKS+= d2i_X509.3 i2d_OCSP_REQINFO.3 +MLINKS+= d2i_X509.3 i2d_OCSP_REQUEST.3 +MLINKS+= d2i_X509.3 i2d_OCSP_RESPBYTES.3 +MLINKS+= d2i_X509.3 i2d_OCSP_RESPDATA.3 +MLINKS+= d2i_X509.3 i2d_OCSP_RESPID.3 +MLINKS+= d2i_X509.3 i2d_OCSP_RESPONSE.3 +MLINKS+= d2i_X509.3 i2d_OCSP_REVOKEDINFO.3 +MLINKS+= d2i_X509.3 i2d_OCSP_SERVICELOC.3 +MLINKS+= d2i_X509.3 i2d_OCSP_SIGNATURE.3 +MLINKS+= d2i_X509.3 i2d_OCSP_SINGLERESP.3 +MLINKS+= d2i_X509.3 i2d_OTHERNAME.3 +MLINKS+= d2i_X509.3 i2d_PBE2PARAM.3 +MLINKS+= d2i_X509.3 i2d_PBEPARAM.3 +MLINKS+= d2i_X509.3 i2d_PBKDF2PARAM.3 +MLINKS+= d2i_X509.3 i2d_PKCS12.3 +MLINKS+= d2i_X509.3 i2d_PKCS12_BAGS.3 +MLINKS+= d2i_X509.3 i2d_PKCS12_MAC_DATA.3 +MLINKS+= d2i_X509.3 i2d_PKCS12_SAFEBAG.3 +MLINKS+= d2i_X509.3 i2d_PKCS12_bio.3 +MLINKS+= d2i_X509.3 i2d_PKCS12_fp.3 +MLINKS+= d2i_X509.3 i2d_PKCS7.3 +MLINKS+= d2i_X509.3 i2d_PKCS7_DIGEST.3 +MLINKS+= d2i_X509.3 i2d_PKCS7_ENCRYPT.3 +MLINKS+= d2i_X509.3 i2d_PKCS7_ENC_CONTENT.3 +MLINKS+= d2i_X509.3 i2d_PKCS7_ENVELOPE.3 +MLINKS+= d2i_X509.3 i2d_PKCS7_ISSUER_AND_SERIAL.3 +MLINKS+= d2i_X509.3 i2d_PKCS7_NDEF.3 +MLINKS+= d2i_X509.3 i2d_PKCS7_RECIP_INFO.3 +MLINKS+= d2i_X509.3 i2d_PKCS7_SIGNED.3 +MLINKS+= d2i_X509.3 i2d_PKCS7_SIGNER_INFO.3 +MLINKS+= d2i_X509.3 i2d_PKCS7_SIGN_ENVELOPE.3 +MLINKS+= d2i_X509.3 i2d_PKCS7_bio.3 +MLINKS+= d2i_X509.3 i2d_PKCS7_fp.3 +MLINKS+= d2i_X509.3 i2d_PKCS8PrivateKeyInfo_bio.3 +MLINKS+= d2i_X509.3 i2d_PKCS8PrivateKeyInfo_fp.3 +MLINKS+= d2i_X509.3 i2d_PKCS8_PRIV_KEY_INFO.3 +MLINKS+= d2i_X509.3 i2d_PKCS8_PRIV_KEY_INFO_bio.3 +MLINKS+= d2i_X509.3 i2d_PKCS8_PRIV_KEY_INFO_fp.3 +MLINKS+= d2i_X509.3 i2d_PKCS8_bio.3 +MLINKS+= d2i_X509.3 i2d_PKCS8_fp.3 +MLINKS+= d2i_X509.3 i2d_PKEY_USAGE_PERIOD.3 +MLINKS+= d2i_X509.3 i2d_POLICYINFO.3 +MLINKS+= d2i_X509.3 i2d_POLICYQUALINFO.3 +MLINKS+= d2i_X509.3 i2d_PROFESSION_INFO.3 +MLINKS+= d2i_X509.3 i2d_PROXY_CERT_INFO_EXTENSION.3 +MLINKS+= d2i_X509.3 i2d_PROXY_POLICY.3 +MLINKS+= d2i_X509.3 i2d_RSAPrivateKey.3 +MLINKS+= d2i_X509.3 i2d_RSAPrivateKey_bio.3 +MLINKS+= d2i_X509.3 i2d_RSAPrivateKey_fp.3 +MLINKS+= d2i_X509.3 i2d_RSAPublicKey.3 +MLINKS+= d2i_X509.3 i2d_RSAPublicKey_bio.3 +MLINKS+= d2i_X509.3 i2d_RSAPublicKey_fp.3 +MLINKS+= d2i_X509.3 i2d_RSA_OAEP_PARAMS.3 +MLINKS+= d2i_X509.3 i2d_RSA_PSS_PARAMS.3 +MLINKS+= d2i_X509.3 i2d_RSA_PUBKEY.3 +MLINKS+= d2i_X509.3 i2d_RSA_PUBKEY_bio.3 +MLINKS+= d2i_X509.3 i2d_RSA_PUBKEY_fp.3 +MLINKS+= d2i_X509.3 i2d_SCRYPT_PARAMS.3 +MLINKS+= d2i_X509.3 i2d_SCT_LIST.3 +MLINKS+= d2i_X509.3 i2d_SXNET.3 +MLINKS+= d2i_X509.3 i2d_SXNETID.3 +MLINKS+= d2i_X509.3 i2d_TS_ACCURACY.3 +MLINKS+= d2i_X509.3 i2d_TS_MSG_IMPRINT.3 +MLINKS+= d2i_X509.3 i2d_TS_MSG_IMPRINT_bio.3 +MLINKS+= d2i_X509.3 i2d_TS_MSG_IMPRINT_fp.3 +MLINKS+= d2i_X509.3 i2d_TS_REQ.3 +MLINKS+= d2i_X509.3 i2d_TS_REQ_bio.3 +MLINKS+= d2i_X509.3 i2d_TS_REQ_fp.3 +MLINKS+= d2i_X509.3 i2d_TS_RESP.3 +MLINKS+= d2i_X509.3 i2d_TS_RESP_bio.3 +MLINKS+= d2i_X509.3 i2d_TS_RESP_fp.3 +MLINKS+= d2i_X509.3 i2d_TS_STATUS_INFO.3 +MLINKS+= d2i_X509.3 i2d_TS_TST_INFO.3 +MLINKS+= d2i_X509.3 i2d_TS_TST_INFO_bio.3 +MLINKS+= d2i_X509.3 i2d_TS_TST_INFO_fp.3 +MLINKS+= d2i_X509.3 i2d_USERNOTICE.3 +MLINKS+= d2i_X509.3 i2d_X509.3 +MLINKS+= d2i_X509.3 i2d_X509_ALGOR.3 +MLINKS+= d2i_X509.3 i2d_X509_ALGORS.3 +MLINKS+= d2i_X509.3 i2d_X509_ATTRIBUTE.3 +MLINKS+= d2i_X509.3 i2d_X509_CERT_AUX.3 +MLINKS+= d2i_X509.3 i2d_X509_CINF.3 +MLINKS+= d2i_X509.3 i2d_X509_CRL.3 +MLINKS+= d2i_X509.3 i2d_X509_CRL_INFO.3 +MLINKS+= d2i_X509.3 i2d_X509_CRL_bio.3 +MLINKS+= d2i_X509.3 i2d_X509_CRL_fp.3 +MLINKS+= d2i_X509.3 i2d_X509_EXTENSION.3 +MLINKS+= d2i_X509.3 i2d_X509_EXTENSIONS.3 +MLINKS+= d2i_X509.3 i2d_X509_NAME.3 +MLINKS+= d2i_X509.3 i2d_X509_NAME_ENTRY.3 +MLINKS+= d2i_X509.3 i2d_X509_PUBKEY.3 +MLINKS+= d2i_X509.3 i2d_X509_REQ.3 +MLINKS+= d2i_X509.3 i2d_X509_REQ_INFO.3 +MLINKS+= d2i_X509.3 i2d_X509_REQ_bio.3 +MLINKS+= d2i_X509.3 i2d_X509_REQ_fp.3 +MLINKS+= d2i_X509.3 i2d_X509_REVOKED.3 +MLINKS+= d2i_X509.3 i2d_X509_SIG.3 +MLINKS+= d2i_X509.3 i2d_X509_VAL.3 +MLINKS+= i2d_re_X509_tbs.3 d2i_X509_AUX.3 +MLINKS+= i2d_re_X509_tbs.3 i2d_X509_AUX.3 +MLINKS+= i2d_re_X509_tbs.3 i2d_re_X509_CRL_tbs.3 +MLINKS+= i2d_re_X509_tbs.3 i2d_re_X509_REQ_tbs.3 +MLINKS+= o2i_SCT_LIST.3 i2o_SCT.3 +MLINKS+= o2i_SCT_LIST.3 i2o_SCT_LIST.3 +MLINKS+= o2i_SCT_LIST.3 o2i_SCT.3 diff --git a/secure/lib/libcrypto/man/OBJ_nid2obj.3 b/secure/lib/libcrypto/man/man3/OBJ_nid2obj.3 index 626bf1acd2613..626bf1acd2613 100644 --- a/secure/lib/libcrypto/man/OBJ_nid2obj.3 +++ b/secure/lib/libcrypto/man/man3/OBJ_nid2obj.3 diff --git a/secure/lib/libcrypto/man/OCSP_REQUEST_new.3 b/secure/lib/libcrypto/man/man3/OCSP_REQUEST_new.3 index 7411aaa5561b7..7411aaa5561b7 100644 --- a/secure/lib/libcrypto/man/OCSP_REQUEST_new.3 +++ b/secure/lib/libcrypto/man/man3/OCSP_REQUEST_new.3 diff --git a/secure/lib/libcrypto/man/OCSP_cert_to_id.3 b/secure/lib/libcrypto/man/man3/OCSP_cert_to_id.3 index 4e363ece6a158..4e363ece6a158 100644 --- a/secure/lib/libcrypto/man/OCSP_cert_to_id.3 +++ b/secure/lib/libcrypto/man/man3/OCSP_cert_to_id.3 diff --git a/secure/lib/libcrypto/man/OCSP_request_add1_nonce.3 b/secure/lib/libcrypto/man/man3/OCSP_request_add1_nonce.3 index a79b659337daf..a79b659337daf 100644 --- a/secure/lib/libcrypto/man/OCSP_request_add1_nonce.3 +++ b/secure/lib/libcrypto/man/man3/OCSP_request_add1_nonce.3 diff --git a/secure/lib/libcrypto/man/OCSP_resp_find_status.3 b/secure/lib/libcrypto/man/man3/OCSP_resp_find_status.3 index 302ebaca82643..302ebaca82643 100644 --- a/secure/lib/libcrypto/man/OCSP_resp_find_status.3 +++ b/secure/lib/libcrypto/man/man3/OCSP_resp_find_status.3 diff --git a/secure/lib/libcrypto/man/OCSP_response_status.3 b/secure/lib/libcrypto/man/man3/OCSP_response_status.3 index 5a2283240bcae..5a2283240bcae 100644 --- a/secure/lib/libcrypto/man/OCSP_response_status.3 +++ b/secure/lib/libcrypto/man/man3/OCSP_response_status.3 diff --git a/secure/lib/libcrypto/man/OCSP_sendreq_new.3 b/secure/lib/libcrypto/man/man3/OCSP_sendreq_new.3 index ae83ab3b6d608..ae83ab3b6d608 100644 --- a/secure/lib/libcrypto/man/OCSP_sendreq_new.3 +++ b/secure/lib/libcrypto/man/man3/OCSP_sendreq_new.3 diff --git a/secure/lib/libcrypto/man/OPENSSL_Applink.3 b/secure/lib/libcrypto/man/man3/OPENSSL_Applink.3 index 90d634ad4c9f6..90d634ad4c9f6 100644 --- a/secure/lib/libcrypto/man/OPENSSL_Applink.3 +++ b/secure/lib/libcrypto/man/man3/OPENSSL_Applink.3 diff --git a/secure/lib/libcrypto/man/OPENSSL_LH_COMPFUNC.3 b/secure/lib/libcrypto/man/man3/OPENSSL_LH_COMPFUNC.3 index bf096f92889c3..bf096f92889c3 100644 --- a/secure/lib/libcrypto/man/OPENSSL_LH_COMPFUNC.3 +++ b/secure/lib/libcrypto/man/man3/OPENSSL_LH_COMPFUNC.3 diff --git a/secure/lib/libcrypto/man/OPENSSL_LH_stats.3 b/secure/lib/libcrypto/man/man3/OPENSSL_LH_stats.3 index db711b2092c26..db711b2092c26 100644 --- a/secure/lib/libcrypto/man/OPENSSL_LH_stats.3 +++ b/secure/lib/libcrypto/man/man3/OPENSSL_LH_stats.3 diff --git a/secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3 b/secure/lib/libcrypto/man/man3/OPENSSL_VERSION_NUMBER.3 index 0988b613a75eb..0988b613a75eb 100644 --- a/secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3 +++ b/secure/lib/libcrypto/man/man3/OPENSSL_VERSION_NUMBER.3 diff --git a/secure/lib/libcrypto/man/OPENSSL_config.3 b/secure/lib/libcrypto/man/man3/OPENSSL_config.3 index ea738358f6534..ea738358f6534 100644 --- a/secure/lib/libcrypto/man/OPENSSL_config.3 +++ b/secure/lib/libcrypto/man/man3/OPENSSL_config.3 diff --git a/secure/lib/libcrypto/man/OPENSSL_fork_prepare.3 b/secure/lib/libcrypto/man/man3/OPENSSL_fork_prepare.3 index 599dc0197990b..599dc0197990b 100644 --- a/secure/lib/libcrypto/man/OPENSSL_fork_prepare.3 +++ b/secure/lib/libcrypto/man/man3/OPENSSL_fork_prepare.3 diff --git a/secure/lib/libcrypto/man/OPENSSL_ia32cap.3 b/secure/lib/libcrypto/man/man3/OPENSSL_ia32cap.3 index c2e3b850f0ca1..c2e3b850f0ca1 100644 --- a/secure/lib/libcrypto/man/OPENSSL_ia32cap.3 +++ b/secure/lib/libcrypto/man/man3/OPENSSL_ia32cap.3 diff --git a/secure/lib/libcrypto/man/OPENSSL_init_crypto.3 b/secure/lib/libcrypto/man/man3/OPENSSL_init_crypto.3 index 18c08554a47ca..18c08554a47ca 100644 --- a/secure/lib/libcrypto/man/OPENSSL_init_crypto.3 +++ b/secure/lib/libcrypto/man/man3/OPENSSL_init_crypto.3 diff --git a/secure/lib/libcrypto/man/OPENSSL_init_ssl.3 b/secure/lib/libcrypto/man/man3/OPENSSL_init_ssl.3 index 349bbd3aae087..349bbd3aae087 100644 --- a/secure/lib/libcrypto/man/OPENSSL_init_ssl.3 +++ b/secure/lib/libcrypto/man/man3/OPENSSL_init_ssl.3 diff --git a/secure/lib/libcrypto/man/OPENSSL_instrument_bus.3 b/secure/lib/libcrypto/man/man3/OPENSSL_instrument_bus.3 index 8bd2a1e85a302..8bd2a1e85a302 100644 --- a/secure/lib/libcrypto/man/OPENSSL_instrument_bus.3 +++ b/secure/lib/libcrypto/man/man3/OPENSSL_instrument_bus.3 diff --git a/secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3 b/secure/lib/libcrypto/man/man3/OPENSSL_load_builtin_modules.3 index 6ae621919108d..6ae621919108d 100644 --- a/secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3 +++ b/secure/lib/libcrypto/man/man3/OPENSSL_load_builtin_modules.3 diff --git a/secure/lib/libcrypto/man/OPENSSL_malloc.3 b/secure/lib/libcrypto/man/man3/OPENSSL_malloc.3 index d4d9cc8b38ffb..d4d9cc8b38ffb 100644 --- a/secure/lib/libcrypto/man/OPENSSL_malloc.3 +++ b/secure/lib/libcrypto/man/man3/OPENSSL_malloc.3 diff --git a/secure/lib/libcrypto/man/OPENSSL_secure_malloc.3 b/secure/lib/libcrypto/man/man3/OPENSSL_secure_malloc.3 index 032d205fd7858..032d205fd7858 100644 --- a/secure/lib/libcrypto/man/OPENSSL_secure_malloc.3 +++ b/secure/lib/libcrypto/man/man3/OPENSSL_secure_malloc.3 diff --git a/secure/lib/libcrypto/man/OSSL_STORE_INFO.3 b/secure/lib/libcrypto/man/man3/OSSL_STORE_INFO.3 index ea47f5858d9e3..ea47f5858d9e3 100644 --- a/secure/lib/libcrypto/man/OSSL_STORE_INFO.3 +++ b/secure/lib/libcrypto/man/man3/OSSL_STORE_INFO.3 diff --git a/secure/lib/libcrypto/man/OSSL_STORE_LOADER.3 b/secure/lib/libcrypto/man/man3/OSSL_STORE_LOADER.3 index 45b15c3a644ab..45b15c3a644ab 100644 --- a/secure/lib/libcrypto/man/OSSL_STORE_LOADER.3 +++ b/secure/lib/libcrypto/man/man3/OSSL_STORE_LOADER.3 diff --git a/secure/lib/libcrypto/man/OSSL_STORE_SEARCH.3 b/secure/lib/libcrypto/man/man3/OSSL_STORE_SEARCH.3 index b707a97cd9be8..b707a97cd9be8 100644 --- a/secure/lib/libcrypto/man/OSSL_STORE_SEARCH.3 +++ b/secure/lib/libcrypto/man/man3/OSSL_STORE_SEARCH.3 diff --git a/secure/lib/libcrypto/man/OSSL_STORE_expect.3 b/secure/lib/libcrypto/man/man3/OSSL_STORE_expect.3 index 3a6ae5f85a79c..3a6ae5f85a79c 100644 --- a/secure/lib/libcrypto/man/OSSL_STORE_expect.3 +++ b/secure/lib/libcrypto/man/man3/OSSL_STORE_expect.3 diff --git a/secure/lib/libcrypto/man/OSSL_STORE_open.3 b/secure/lib/libcrypto/man/man3/OSSL_STORE_open.3 index b69fe039e4214..b69fe039e4214 100644 --- a/secure/lib/libcrypto/man/OSSL_STORE_open.3 +++ b/secure/lib/libcrypto/man/man3/OSSL_STORE_open.3 diff --git a/secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3 b/secure/lib/libcrypto/man/man3/OpenSSL_add_all_algorithms.3 index 262ded0944e80..262ded0944e80 100644 --- a/secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3 +++ b/secure/lib/libcrypto/man/man3/OpenSSL_add_all_algorithms.3 diff --git a/secure/lib/libcrypto/man/PEM_bytes_read_bio.3 b/secure/lib/libcrypto/man/man3/PEM_bytes_read_bio.3 index 08eb6eb4bbdc1..08eb6eb4bbdc1 100644 --- a/secure/lib/libcrypto/man/PEM_bytes_read_bio.3 +++ b/secure/lib/libcrypto/man/man3/PEM_bytes_read_bio.3 diff --git a/secure/lib/libcrypto/man/PEM_read.3 b/secure/lib/libcrypto/man/man3/PEM_read.3 index 3b8dbd89ac054..3b8dbd89ac054 100644 --- a/secure/lib/libcrypto/man/PEM_read.3 +++ b/secure/lib/libcrypto/man/man3/PEM_read.3 diff --git a/secure/lib/libcrypto/man/PEM_read_CMS.3 b/secure/lib/libcrypto/man/man3/PEM_read_CMS.3 index 40005ae8c6b9d..40005ae8c6b9d 100644 --- a/secure/lib/libcrypto/man/PEM_read_CMS.3 +++ b/secure/lib/libcrypto/man/man3/PEM_read_CMS.3 diff --git a/secure/lib/libcrypto/man/PEM_read_bio_PrivateKey.3 b/secure/lib/libcrypto/man/man3/PEM_read_bio_PrivateKey.3 index 675bfcce7eb50..675bfcce7eb50 100644 --- a/secure/lib/libcrypto/man/PEM_read_bio_PrivateKey.3 +++ b/secure/lib/libcrypto/man/man3/PEM_read_bio_PrivateKey.3 diff --git a/secure/lib/libcrypto/man/PEM_read_bio_ex.3 b/secure/lib/libcrypto/man/man3/PEM_read_bio_ex.3 index f70f75118bc0d..f70f75118bc0d 100644 --- a/secure/lib/libcrypto/man/PEM_read_bio_ex.3 +++ b/secure/lib/libcrypto/man/man3/PEM_read_bio_ex.3 diff --git a/secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.3 b/secure/lib/libcrypto/man/man3/PEM_write_bio_CMS_stream.3 index 19c4dab8d38a3..19c4dab8d38a3 100644 --- a/secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.3 +++ b/secure/lib/libcrypto/man/man3/PEM_write_bio_CMS_stream.3 diff --git a/secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3 b/secure/lib/libcrypto/man/man3/PEM_write_bio_PKCS7_stream.3 index ec4423998ddac..ec4423998ddac 100644 --- a/secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3 +++ b/secure/lib/libcrypto/man/man3/PEM_write_bio_PKCS7_stream.3 diff --git a/secure/lib/libcrypto/man/PKCS12_create.3 b/secure/lib/libcrypto/man/man3/PKCS12_create.3 index 6bb17b22ac78e..6bb17b22ac78e 100644 --- a/secure/lib/libcrypto/man/PKCS12_create.3 +++ b/secure/lib/libcrypto/man/man3/PKCS12_create.3 diff --git a/secure/lib/libcrypto/man/PKCS12_newpass.3 b/secure/lib/libcrypto/man/man3/PKCS12_newpass.3 index ee2f83dab2e1e..ee2f83dab2e1e 100644 --- a/secure/lib/libcrypto/man/PKCS12_newpass.3 +++ b/secure/lib/libcrypto/man/man3/PKCS12_newpass.3 diff --git a/secure/lib/libcrypto/man/PKCS12_parse.3 b/secure/lib/libcrypto/man/man3/PKCS12_parse.3 index b4859dffd6fde..b4859dffd6fde 100644 --- a/secure/lib/libcrypto/man/PKCS12_parse.3 +++ b/secure/lib/libcrypto/man/man3/PKCS12_parse.3 diff --git a/secure/lib/libcrypto/man/PKCS5_PBKDF2_HMAC.3 b/secure/lib/libcrypto/man/man3/PKCS5_PBKDF2_HMAC.3 index 6dad8bbcb7ea3..6dad8bbcb7ea3 100644 --- a/secure/lib/libcrypto/man/PKCS5_PBKDF2_HMAC.3 +++ b/secure/lib/libcrypto/man/man3/PKCS5_PBKDF2_HMAC.3 diff --git a/secure/lib/libcrypto/man/PKCS7_decrypt.3 b/secure/lib/libcrypto/man/man3/PKCS7_decrypt.3 index fe851a464d0c1..fe851a464d0c1 100644 --- a/secure/lib/libcrypto/man/PKCS7_decrypt.3 +++ b/secure/lib/libcrypto/man/man3/PKCS7_decrypt.3 diff --git a/secure/lib/libcrypto/man/PKCS7_encrypt.3 b/secure/lib/libcrypto/man/man3/PKCS7_encrypt.3 index 32925ae972bdd..32925ae972bdd 100644 --- a/secure/lib/libcrypto/man/PKCS7_encrypt.3 +++ b/secure/lib/libcrypto/man/man3/PKCS7_encrypt.3 diff --git a/secure/lib/libcrypto/man/PKCS7_sign.3 b/secure/lib/libcrypto/man/man3/PKCS7_sign.3 index 68ff3757dc525..68ff3757dc525 100644 --- a/secure/lib/libcrypto/man/PKCS7_sign.3 +++ b/secure/lib/libcrypto/man/man3/PKCS7_sign.3 diff --git a/secure/lib/libcrypto/man/PKCS7_sign_add_signer.3 b/secure/lib/libcrypto/man/man3/PKCS7_sign_add_signer.3 index 0383e9379c4a9..0383e9379c4a9 100644 --- a/secure/lib/libcrypto/man/PKCS7_sign_add_signer.3 +++ b/secure/lib/libcrypto/man/man3/PKCS7_sign_add_signer.3 diff --git a/secure/lib/libcrypto/man/PKCS7_verify.3 b/secure/lib/libcrypto/man/man3/PKCS7_verify.3 index f4e703cabf27f..f4e703cabf27f 100644 --- a/secure/lib/libcrypto/man/PKCS7_verify.3 +++ b/secure/lib/libcrypto/man/man3/PKCS7_verify.3 diff --git a/secure/lib/libcrypto/man/RAND_DRBG_generate.3 b/secure/lib/libcrypto/man/man3/RAND_DRBG_generate.3 index 5fe6de9269402..5fe6de9269402 100644 --- a/secure/lib/libcrypto/man/RAND_DRBG_generate.3 +++ b/secure/lib/libcrypto/man/man3/RAND_DRBG_generate.3 diff --git a/secure/lib/libcrypto/man/RAND_DRBG_get0_master.3 b/secure/lib/libcrypto/man/man3/RAND_DRBG_get0_master.3 index 06ce851352191..06ce851352191 100644 --- a/secure/lib/libcrypto/man/RAND_DRBG_get0_master.3 +++ b/secure/lib/libcrypto/man/man3/RAND_DRBG_get0_master.3 diff --git a/secure/lib/libcrypto/man/RAND_DRBG_new.3 b/secure/lib/libcrypto/man/man3/RAND_DRBG_new.3 index 592206cfd92a6..592206cfd92a6 100644 --- a/secure/lib/libcrypto/man/RAND_DRBG_new.3 +++ b/secure/lib/libcrypto/man/man3/RAND_DRBG_new.3 diff --git a/secure/lib/libcrypto/man/RAND_DRBG_reseed.3 b/secure/lib/libcrypto/man/man3/RAND_DRBG_reseed.3 index 06925afeb2180..06925afeb2180 100644 --- a/secure/lib/libcrypto/man/RAND_DRBG_reseed.3 +++ b/secure/lib/libcrypto/man/man3/RAND_DRBG_reseed.3 diff --git a/secure/lib/libcrypto/man/RAND_DRBG_set_callbacks.3 b/secure/lib/libcrypto/man/man3/RAND_DRBG_set_callbacks.3 index 49a765968cebb..49a765968cebb 100644 --- a/secure/lib/libcrypto/man/RAND_DRBG_set_callbacks.3 +++ b/secure/lib/libcrypto/man/man3/RAND_DRBG_set_callbacks.3 diff --git a/secure/lib/libcrypto/man/RAND_DRBG_set_ex_data.3 b/secure/lib/libcrypto/man/man3/RAND_DRBG_set_ex_data.3 index cd94b4a2af1b5..cd94b4a2af1b5 100644 --- a/secure/lib/libcrypto/man/RAND_DRBG_set_ex_data.3 +++ b/secure/lib/libcrypto/man/man3/RAND_DRBG_set_ex_data.3 diff --git a/secure/lib/libcrypto/man/RAND_add.3 b/secure/lib/libcrypto/man/man3/RAND_add.3 index d7d2cd0a64363..d7d2cd0a64363 100644 --- a/secure/lib/libcrypto/man/RAND_add.3 +++ b/secure/lib/libcrypto/man/man3/RAND_add.3 diff --git a/secure/lib/libcrypto/man/RAND_bytes.3 b/secure/lib/libcrypto/man/man3/RAND_bytes.3 index a90138882f5de..a90138882f5de 100644 --- a/secure/lib/libcrypto/man/RAND_bytes.3 +++ b/secure/lib/libcrypto/man/man3/RAND_bytes.3 diff --git a/secure/lib/libcrypto/man/RAND_cleanup.3 b/secure/lib/libcrypto/man/man3/RAND_cleanup.3 index 8a4c7f7d035f1..8a4c7f7d035f1 100644 --- a/secure/lib/libcrypto/man/RAND_cleanup.3 +++ b/secure/lib/libcrypto/man/man3/RAND_cleanup.3 diff --git a/secure/lib/libcrypto/man/RAND_egd.3 b/secure/lib/libcrypto/man/man3/RAND_egd.3 index 17cc7cee6732a..17cc7cee6732a 100644 --- a/secure/lib/libcrypto/man/RAND_egd.3 +++ b/secure/lib/libcrypto/man/man3/RAND_egd.3 diff --git a/secure/lib/libcrypto/man/RAND_load_file.3 b/secure/lib/libcrypto/man/man3/RAND_load_file.3 index 07bf78761f4ad..07bf78761f4ad 100644 --- a/secure/lib/libcrypto/man/RAND_load_file.3 +++ b/secure/lib/libcrypto/man/man3/RAND_load_file.3 diff --git a/secure/lib/libcrypto/man/RAND_set_rand_method.3 b/secure/lib/libcrypto/man/man3/RAND_set_rand_method.3 index e9c414f8e7da1..e9c414f8e7da1 100644 --- a/secure/lib/libcrypto/man/RAND_set_rand_method.3 +++ b/secure/lib/libcrypto/man/man3/RAND_set_rand_method.3 diff --git a/secure/lib/libcrypto/man/RC4_set_key.3 b/secure/lib/libcrypto/man/man3/RC4_set_key.3 index e2ed19a87ec65..e2ed19a87ec65 100644 --- a/secure/lib/libcrypto/man/RC4_set_key.3 +++ b/secure/lib/libcrypto/man/man3/RC4_set_key.3 diff --git a/secure/lib/libcrypto/man/RIPEMD160_Init.3 b/secure/lib/libcrypto/man/man3/RIPEMD160_Init.3 index 1de93985960bf..1de93985960bf 100644 --- a/secure/lib/libcrypto/man/RIPEMD160_Init.3 +++ b/secure/lib/libcrypto/man/man3/RIPEMD160_Init.3 diff --git a/secure/lib/libcrypto/man/RSA_blinding_on.3 b/secure/lib/libcrypto/man/man3/RSA_blinding_on.3 index eb950af7ce6bb..eb950af7ce6bb 100644 --- a/secure/lib/libcrypto/man/RSA_blinding_on.3 +++ b/secure/lib/libcrypto/man/man3/RSA_blinding_on.3 diff --git a/secure/lib/libcrypto/man/RSA_check_key.3 b/secure/lib/libcrypto/man/man3/RSA_check_key.3 index 1044c5dcc1901..1044c5dcc1901 100644 --- a/secure/lib/libcrypto/man/RSA_check_key.3 +++ b/secure/lib/libcrypto/man/man3/RSA_check_key.3 diff --git a/secure/lib/libcrypto/man/RSA_generate_key.3 b/secure/lib/libcrypto/man/man3/RSA_generate_key.3 index 5abf9b196a708..5abf9b196a708 100644 --- a/secure/lib/libcrypto/man/RSA_generate_key.3 +++ b/secure/lib/libcrypto/man/man3/RSA_generate_key.3 diff --git a/secure/lib/libcrypto/man/RSA_get0_key.3 b/secure/lib/libcrypto/man/man3/RSA_get0_key.3 index 036edf25a1389..036edf25a1389 100644 --- a/secure/lib/libcrypto/man/RSA_get0_key.3 +++ b/secure/lib/libcrypto/man/man3/RSA_get0_key.3 diff --git a/secure/lib/libcrypto/man/RSA_meth_new.3 b/secure/lib/libcrypto/man/man3/RSA_meth_new.3 index 78f324356590d..78f324356590d 100644 --- a/secure/lib/libcrypto/man/RSA_meth_new.3 +++ b/secure/lib/libcrypto/man/man3/RSA_meth_new.3 diff --git a/secure/lib/libcrypto/man/RSA_new.3 b/secure/lib/libcrypto/man/man3/RSA_new.3 index fe37bcc9d2fe6..fe37bcc9d2fe6 100644 --- a/secure/lib/libcrypto/man/RSA_new.3 +++ b/secure/lib/libcrypto/man/man3/RSA_new.3 diff --git a/secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3 b/secure/lib/libcrypto/man/man3/RSA_padding_add_PKCS1_type_1.3 index 419fe86f04450..419fe86f04450 100644 --- a/secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3 +++ b/secure/lib/libcrypto/man/man3/RSA_padding_add_PKCS1_type_1.3 diff --git a/secure/lib/libcrypto/man/RSA_print.3 b/secure/lib/libcrypto/man/man3/RSA_print.3 index cd740a5a73cdb..cd740a5a73cdb 100644 --- a/secure/lib/libcrypto/man/RSA_print.3 +++ b/secure/lib/libcrypto/man/man3/RSA_print.3 diff --git a/secure/lib/libcrypto/man/RSA_private_encrypt.3 b/secure/lib/libcrypto/man/man3/RSA_private_encrypt.3 index 9fb76a68059a9..9fb76a68059a9 100644 --- a/secure/lib/libcrypto/man/RSA_private_encrypt.3 +++ b/secure/lib/libcrypto/man/man3/RSA_private_encrypt.3 diff --git a/secure/lib/libcrypto/man/RSA_public_encrypt.3 b/secure/lib/libcrypto/man/man3/RSA_public_encrypt.3 index a58a81bea2897..a58a81bea2897 100644 --- a/secure/lib/libcrypto/man/RSA_public_encrypt.3 +++ b/secure/lib/libcrypto/man/man3/RSA_public_encrypt.3 diff --git a/secure/lib/libcrypto/man/RSA_set_method.3 b/secure/lib/libcrypto/man/man3/RSA_set_method.3 index 5a87cc5e1610f..5a87cc5e1610f 100644 --- a/secure/lib/libcrypto/man/RSA_set_method.3 +++ b/secure/lib/libcrypto/man/man3/RSA_set_method.3 diff --git a/secure/lib/libcrypto/man/RSA_sign.3 b/secure/lib/libcrypto/man/man3/RSA_sign.3 index edb5431df9736..edb5431df9736 100644 --- a/secure/lib/libcrypto/man/RSA_sign.3 +++ b/secure/lib/libcrypto/man/man3/RSA_sign.3 diff --git a/secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3 b/secure/lib/libcrypto/man/man3/RSA_sign_ASN1_OCTET_STRING.3 index e4c5e8b12e668..e4c5e8b12e668 100644 --- a/secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3 +++ b/secure/lib/libcrypto/man/man3/RSA_sign_ASN1_OCTET_STRING.3 diff --git a/secure/lib/libcrypto/man/RSA_size.3 b/secure/lib/libcrypto/man/man3/RSA_size.3 index 023b799d556bf..023b799d556bf 100644 --- a/secure/lib/libcrypto/man/RSA_size.3 +++ b/secure/lib/libcrypto/man/man3/RSA_size.3 diff --git a/secure/lib/libcrypto/man/SCT_new.3 b/secure/lib/libcrypto/man/man3/SCT_new.3 index 268e489a840c7..268e489a840c7 100644 --- a/secure/lib/libcrypto/man/SCT_new.3 +++ b/secure/lib/libcrypto/man/man3/SCT_new.3 diff --git a/secure/lib/libcrypto/man/SCT_print.3 b/secure/lib/libcrypto/man/man3/SCT_print.3 index 9fba55dcd2cae..9fba55dcd2cae 100644 --- a/secure/lib/libcrypto/man/SCT_print.3 +++ b/secure/lib/libcrypto/man/man3/SCT_print.3 diff --git a/secure/lib/libcrypto/man/SCT_validate.3 b/secure/lib/libcrypto/man/man3/SCT_validate.3 index 44c7608323420..44c7608323420 100644 --- a/secure/lib/libcrypto/man/SCT_validate.3 +++ b/secure/lib/libcrypto/man/man3/SCT_validate.3 diff --git a/secure/lib/libcrypto/man/SHA256_Init.3 b/secure/lib/libcrypto/man/man3/SHA256_Init.3 index 8e07cce30a807..8e07cce30a807 100644 --- a/secure/lib/libcrypto/man/SHA256_Init.3 +++ b/secure/lib/libcrypto/man/man3/SHA256_Init.3 diff --git a/secure/lib/libcrypto/man/SMIME_read_CMS.3 b/secure/lib/libcrypto/man/man3/SMIME_read_CMS.3 index 3dc53482cd07b..3dc53482cd07b 100644 --- a/secure/lib/libcrypto/man/SMIME_read_CMS.3 +++ b/secure/lib/libcrypto/man/man3/SMIME_read_CMS.3 diff --git a/secure/lib/libcrypto/man/SMIME_read_PKCS7.3 b/secure/lib/libcrypto/man/man3/SMIME_read_PKCS7.3 index ded4ed00e6996..ded4ed00e6996 100644 --- a/secure/lib/libcrypto/man/SMIME_read_PKCS7.3 +++ b/secure/lib/libcrypto/man/man3/SMIME_read_PKCS7.3 diff --git a/secure/lib/libcrypto/man/SMIME_write_CMS.3 b/secure/lib/libcrypto/man/man3/SMIME_write_CMS.3 index 2a93267c4d92a..2a93267c4d92a 100644 --- a/secure/lib/libcrypto/man/SMIME_write_CMS.3 +++ b/secure/lib/libcrypto/man/man3/SMIME_write_CMS.3 diff --git a/secure/lib/libcrypto/man/SMIME_write_PKCS7.3 b/secure/lib/libcrypto/man/man3/SMIME_write_PKCS7.3 index 0d88ddd007b57..0d88ddd007b57 100644 --- a/secure/lib/libcrypto/man/SMIME_write_PKCS7.3 +++ b/secure/lib/libcrypto/man/man3/SMIME_write_PKCS7.3 diff --git a/secure/lib/libcrypto/man/SSL_CIPHER_get_name.3 b/secure/lib/libcrypto/man/man3/SSL_CIPHER_get_name.3 index e82e668e4df85..e82e668e4df85 100644 --- a/secure/lib/libcrypto/man/SSL_CIPHER_get_name.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CIPHER_get_name.3 diff --git a/secure/lib/libcrypto/man/SSL_COMP_add_compression_method.3 b/secure/lib/libcrypto/man/man3/SSL_COMP_add_compression_method.3 index 5a2b59079f24f..5a2b59079f24f 100644 --- a/secure/lib/libcrypto/man/SSL_COMP_add_compression_method.3 +++ b/secure/lib/libcrypto/man/man3/SSL_COMP_add_compression_method.3 diff --git a/secure/lib/libcrypto/man/SSL_CONF_CTX_new.3 b/secure/lib/libcrypto/man/man3/SSL_CONF_CTX_new.3 index fb4b99400d353..fb4b99400d353 100644 --- a/secure/lib/libcrypto/man/SSL_CONF_CTX_new.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CONF_CTX_new.3 diff --git a/secure/lib/libcrypto/man/SSL_CONF_CTX_set1_prefix.3 b/secure/lib/libcrypto/man/man3/SSL_CONF_CTX_set1_prefix.3 index df9298ca67506..df9298ca67506 100644 --- a/secure/lib/libcrypto/man/SSL_CONF_CTX_set1_prefix.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CONF_CTX_set1_prefix.3 diff --git a/secure/lib/libcrypto/man/SSL_CONF_CTX_set_flags.3 b/secure/lib/libcrypto/man/man3/SSL_CONF_CTX_set_flags.3 index 07db6d80339a8..07db6d80339a8 100644 --- a/secure/lib/libcrypto/man/SSL_CONF_CTX_set_flags.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CONF_CTX_set_flags.3 diff --git a/secure/lib/libcrypto/man/SSL_CONF_CTX_set_ssl_ctx.3 b/secure/lib/libcrypto/man/man3/SSL_CONF_CTX_set_ssl_ctx.3 index c35de3599c944..c35de3599c944 100644 --- a/secure/lib/libcrypto/man/SSL_CONF_CTX_set_ssl_ctx.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CONF_CTX_set_ssl_ctx.3 diff --git a/secure/lib/libcrypto/man/SSL_CONF_cmd.3 b/secure/lib/libcrypto/man/man3/SSL_CONF_cmd.3 index 928984d31b7ce..928984d31b7ce 100644 --- a/secure/lib/libcrypto/man/SSL_CONF_cmd.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CONF_cmd.3 diff --git a/secure/lib/libcrypto/man/SSL_CONF_cmd_argv.3 b/secure/lib/libcrypto/man/man3/SSL_CONF_cmd_argv.3 index 8df0077f8f7ca..8df0077f8f7ca 100644 --- a/secure/lib/libcrypto/man/SSL_CONF_cmd_argv.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CONF_cmd_argv.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_add1_chain_cert.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_add1_chain_cert.3 index 824827113bd4f..824827113bd4f 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_add1_chain_cert.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_add1_chain_cert.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_add_extra_chain_cert.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_add_extra_chain_cert.3 index 3466d37a64b34..3466d37a64b34 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_add_extra_chain_cert.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_add_extra_chain_cert.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_add_session.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_add_session.3 index 961d612c48956..961d612c48956 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_add_session.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_add_session.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_config.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_config.3 index b66d54e99729e..b66d54e99729e 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_config.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_config.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_ctrl.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_ctrl.3 index be101b014709b..be101b014709b 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_ctrl.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_ctrl.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_dane_enable.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_dane_enable.3 index 230333d55cd94..230333d55cd94 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_dane_enable.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_dane_enable.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_flush_sessions.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_flush_sessions.3 index 93c857189752d..93c857189752d 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_flush_sessions.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_flush_sessions.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_free.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_free.3 index a9ede4208d0ac..a9ede4208d0ac 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_free.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_free.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_get0_param.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_get0_param.3 index 0075c6a566b74..0075c6a566b74 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_get0_param.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_get0_param.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_get_verify_mode.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_get_verify_mode.3 index 14b776021b9c0..14b776021b9c0 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_get_verify_mode.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_get_verify_mode.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_has_client_custom_ext.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_has_client_custom_ext.3 index bc89d874942f5..bc89d874942f5 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_has_client_custom_ext.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_has_client_custom_ext.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_load_verify_locations.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_load_verify_locations.3 index 47c67cc2f572c..47c67cc2f572c 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_load_verify_locations.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_load_verify_locations.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_new.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_new.3 index 6126859c8104e..6126859c8104e 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_new.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_new.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_sess_number.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_sess_number.3 index be8aa4da19a28..be8aa4da19a28 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_sess_number.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_sess_number.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_sess_set_cache_size.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_sess_set_cache_size.3 index 54da3301e959e..54da3301e959e 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_sess_set_cache_size.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_sess_set_cache_size.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_sess_set_get_cb.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_sess_set_get_cb.3 index 6e612b67cbfa2..6e612b67cbfa2 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_sess_set_get_cb.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_sess_set_get_cb.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_sessions.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_sessions.3 index d20de0f09b21d..d20de0f09b21d 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_sessions.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_sessions.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set0_CA_list.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set0_CA_list.3 index f123d0a00359a..f123d0a00359a 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set0_CA_list.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set0_CA_list.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set1_curves.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set1_curves.3 index 7999810c736d9..7999810c736d9 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set1_curves.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set1_curves.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set1_sigalgs.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set1_sigalgs.3 index 9dd61cd9bc974..9dd61cd9bc974 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set1_sigalgs.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set1_sigalgs.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set1_verify_cert_store.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set1_verify_cert_store.3 index ecae59de70f0c..ecae59de70f0c 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set1_verify_cert_store.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set1_verify_cert_store.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_alpn_select_cb.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_alpn_select_cb.3 index 6bfbd20db37d5..6bfbd20db37d5 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_alpn_select_cb.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_alpn_select_cb.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_cert_cb.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_cert_cb.3 index b2cee6af31bb4..b2cee6af31bb4 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_cert_cb.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_cert_cb.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_cert_store.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_cert_store.3 index 50afa6b0a815d..50afa6b0a815d 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_cert_store.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_cert_store.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_cert_verify_callback.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_cert_verify_callback.3 index 79339b0eb09bf..79339b0eb09bf 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_cert_verify_callback.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_cert_verify_callback.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_cipher_list.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_cipher_list.3 index 8d43da2e06fbf..8d43da2e06fbf 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_cipher_list.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_cipher_list.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_client_cert_cb.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_client_cert_cb.3 index a91cc5e9af9d5..a91cc5e9af9d5 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_client_cert_cb.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_client_cert_cb.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_client_hello_cb.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_client_hello_cb.3 index 1a2b18a81c7cc..1a2b18a81c7cc 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_client_hello_cb.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_client_hello_cb.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_ct_validation_callback.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_ct_validation_callback.3 index e0fdf43e2cd33..e0fdf43e2cd33 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_ct_validation_callback.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_ct_validation_callback.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_ctlog_list_file.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_ctlog_list_file.3 index 3bdd74ecebc07..3bdd74ecebc07 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_ctlog_list_file.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_ctlog_list_file.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_default_passwd_cb.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_default_passwd_cb.3 index 3485cdb6edc1a..3485cdb6edc1a 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_default_passwd_cb.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_default_passwd_cb.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_ex_data.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_ex_data.3 index 5985e6665802f..5985e6665802f 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_ex_data.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_ex_data.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_generate_session_id.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_generate_session_id.3 index f8396c00f5cb6..f8396c00f5cb6 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_generate_session_id.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_generate_session_id.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_info_callback.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_info_callback.3 index e435ea52e379e..e435ea52e379e 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_info_callback.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_info_callback.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_keylog_callback.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_keylog_callback.3 index 1b8b17e2f61e3..1b8b17e2f61e3 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_keylog_callback.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_keylog_callback.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_max_cert_list.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_max_cert_list.3 index 60b97757e99c9..60b97757e99c9 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_max_cert_list.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_max_cert_list.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_min_proto_version.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_min_proto_version.3 index 5efc3acf76dd7..5efc3acf76dd7 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_min_proto_version.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_min_proto_version.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_mode.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_mode.3 index 0f0ceaeeaf25c..0f0ceaeeaf25c 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_mode.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_mode.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_msg_callback.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_msg_callback.3 index 1270177030a7b..1270177030a7b 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_msg_callback.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_msg_callback.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_num_tickets.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_num_tickets.3 index 153474a35e2c8..153474a35e2c8 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_num_tickets.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_num_tickets.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_options.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_options.3 index 305cad4f518e5..305cad4f518e5 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_options.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_options.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_psk_client_callback.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_psk_client_callback.3 index 3caa1bbb92f50..3caa1bbb92f50 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_psk_client_callback.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_psk_client_callback.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_quiet_shutdown.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_quiet_shutdown.3 index 8fd992798ca32..8fd992798ca32 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_quiet_shutdown.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_quiet_shutdown.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_read_ahead.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_read_ahead.3 index 1607028aa487f..1607028aa487f 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_read_ahead.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_read_ahead.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_record_padding_callback.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_record_padding_callback.3 index 35156c891bb6f..35156c891bb6f 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_record_padding_callback.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_record_padding_callback.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_security_level.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_security_level.3 index 63202d7e4d597..63202d7e4d597 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_security_level.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_security_level.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_session_cache_mode.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_session_cache_mode.3 index 1b11b9a1859e6..1b11b9a1859e6 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_session_cache_mode.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_session_cache_mode.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_session_id_context.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_session_id_context.3 index aa394e1330595..aa394e1330595 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_session_id_context.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_session_id_context.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_session_ticket_cb.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_session_ticket_cb.3 index d71e9c1375345..d71e9c1375345 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_session_ticket_cb.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_session_ticket_cb.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_split_send_fragment.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_split_send_fragment.3 index b44ace46f3251..b44ace46f3251 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_split_send_fragment.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_split_send_fragment.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_ssl_version.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_ssl_version.3 index 44b993569654a..44b993569654a 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_ssl_version.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_ssl_version.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_stateless_cookie_generate_cb.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_stateless_cookie_generate_cb.3 index 24e74e8f4ee53..24e74e8f4ee53 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_stateless_cookie_generate_cb.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_stateless_cookie_generate_cb.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_timeout.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_timeout.3 index d570a55d44ef5..d570a55d44ef5 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_timeout.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_timeout.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_tlsext_servername_callback.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_tlsext_servername_callback.3 index cd619b0f5a974..cd619b0f5a974 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_tlsext_servername_callback.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_tlsext_servername_callback.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_tlsext_status_cb.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_tlsext_status_cb.3 index 25053e2f88fe1..25053e2f88fe1 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_tlsext_status_cb.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_tlsext_status_cb.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_tlsext_ticket_key_cb.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3 index d86500b0e4d7c..d86500b0e4d7c 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_tlsext_ticket_key_cb.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_tlsext_use_srtp.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_tlsext_use_srtp.3 index a7c747c01289d..a7c747c01289d 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_tlsext_use_srtp.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_tlsext_use_srtp.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_tmp_dh_callback.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_tmp_dh_callback.3 index ef6c569a920fc..ef6c569a920fc 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_tmp_dh_callback.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_tmp_dh_callback.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_set_verify.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_set_verify.3 index 30a09f7748731..30a09f7748731 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_set_verify.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_set_verify.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_use_certificate.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_use_certificate.3 index 2adc7071de396..2adc7071de396 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_use_certificate.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_use_certificate.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_use_psk_identity_hint.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_use_psk_identity_hint.3 index eecfefa5774f5..eecfefa5774f5 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_use_psk_identity_hint.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_use_psk_identity_hint.3 diff --git a/secure/lib/libcrypto/man/SSL_CTX_use_serverinfo.3 b/secure/lib/libcrypto/man/man3/SSL_CTX_use_serverinfo.3 index 6493233ed82f6..6493233ed82f6 100644 --- a/secure/lib/libcrypto/man/SSL_CTX_use_serverinfo.3 +++ b/secure/lib/libcrypto/man/man3/SSL_CTX_use_serverinfo.3 diff --git a/secure/lib/libcrypto/man/SSL_SESSION_free.3 b/secure/lib/libcrypto/man/man3/SSL_SESSION_free.3 index 212ba5c9e78ee..212ba5c9e78ee 100644 --- a/secure/lib/libcrypto/man/SSL_SESSION_free.3 +++ b/secure/lib/libcrypto/man/man3/SSL_SESSION_free.3 diff --git a/secure/lib/libcrypto/man/SSL_SESSION_get0_cipher.3 b/secure/lib/libcrypto/man/man3/SSL_SESSION_get0_cipher.3 index 021eb8a99f040..021eb8a99f040 100644 --- a/secure/lib/libcrypto/man/SSL_SESSION_get0_cipher.3 +++ b/secure/lib/libcrypto/man/man3/SSL_SESSION_get0_cipher.3 diff --git a/secure/lib/libcrypto/man/SSL_SESSION_get0_hostname.3 b/secure/lib/libcrypto/man/man3/SSL_SESSION_get0_hostname.3 index 81f3cf9f0adf3..81f3cf9f0adf3 100644 --- a/secure/lib/libcrypto/man/SSL_SESSION_get0_hostname.3 +++ b/secure/lib/libcrypto/man/man3/SSL_SESSION_get0_hostname.3 diff --git a/secure/lib/libcrypto/man/SSL_SESSION_get0_id_context.3 b/secure/lib/libcrypto/man/man3/SSL_SESSION_get0_id_context.3 index 08e6b1e1a9a66..08e6b1e1a9a66 100644 --- a/secure/lib/libcrypto/man/SSL_SESSION_get0_id_context.3 +++ b/secure/lib/libcrypto/man/man3/SSL_SESSION_get0_id_context.3 diff --git a/secure/lib/libcrypto/man/SSL_SESSION_get0_peer.3 b/secure/lib/libcrypto/man/man3/SSL_SESSION_get0_peer.3 index 10492f60d8ef0..10492f60d8ef0 100644 --- a/secure/lib/libcrypto/man/SSL_SESSION_get0_peer.3 +++ b/secure/lib/libcrypto/man/man3/SSL_SESSION_get0_peer.3 diff --git a/secure/lib/libcrypto/man/SSL_SESSION_get_compress_id.3 b/secure/lib/libcrypto/man/man3/SSL_SESSION_get_compress_id.3 index 7cfcd71fa3e0a..7cfcd71fa3e0a 100644 --- a/secure/lib/libcrypto/man/SSL_SESSION_get_compress_id.3 +++ b/secure/lib/libcrypto/man/man3/SSL_SESSION_get_compress_id.3 diff --git a/secure/lib/libcrypto/man/SSL_SESSION_get_ex_data.3 b/secure/lib/libcrypto/man/man3/SSL_SESSION_get_ex_data.3 index b38fe75ba97ec..b38fe75ba97ec 100644 --- a/secure/lib/libcrypto/man/SSL_SESSION_get_ex_data.3 +++ b/secure/lib/libcrypto/man/man3/SSL_SESSION_get_ex_data.3 diff --git a/secure/lib/libcrypto/man/SSL_SESSION_get_protocol_version.3 b/secure/lib/libcrypto/man/man3/SSL_SESSION_get_protocol_version.3 index d4affa087015d..d4affa087015d 100644 --- a/secure/lib/libcrypto/man/SSL_SESSION_get_protocol_version.3 +++ b/secure/lib/libcrypto/man/man3/SSL_SESSION_get_protocol_version.3 diff --git a/secure/lib/libcrypto/man/SSL_SESSION_get_time.3 b/secure/lib/libcrypto/man/man3/SSL_SESSION_get_time.3 index 52234cc258f7c..52234cc258f7c 100644 --- a/secure/lib/libcrypto/man/SSL_SESSION_get_time.3 +++ b/secure/lib/libcrypto/man/man3/SSL_SESSION_get_time.3 diff --git a/secure/lib/libcrypto/man/SSL_SESSION_has_ticket.3 b/secure/lib/libcrypto/man/man3/SSL_SESSION_has_ticket.3 index 383cd2cdc568a..383cd2cdc568a 100644 --- a/secure/lib/libcrypto/man/SSL_SESSION_has_ticket.3 +++ b/secure/lib/libcrypto/man/man3/SSL_SESSION_has_ticket.3 diff --git a/secure/lib/libcrypto/man/SSL_SESSION_is_resumable.3 b/secure/lib/libcrypto/man/man3/SSL_SESSION_is_resumable.3 index 59bcb792ce238..59bcb792ce238 100644 --- a/secure/lib/libcrypto/man/SSL_SESSION_is_resumable.3 +++ b/secure/lib/libcrypto/man/man3/SSL_SESSION_is_resumable.3 diff --git a/secure/lib/libcrypto/man/SSL_SESSION_print.3 b/secure/lib/libcrypto/man/man3/SSL_SESSION_print.3 index ce1dc38f3083b..ce1dc38f3083b 100644 --- a/secure/lib/libcrypto/man/SSL_SESSION_print.3 +++ b/secure/lib/libcrypto/man/man3/SSL_SESSION_print.3 diff --git a/secure/lib/libcrypto/man/SSL_SESSION_set1_id.3 b/secure/lib/libcrypto/man/man3/SSL_SESSION_set1_id.3 index dd1f1f758e74a..dd1f1f758e74a 100644 --- a/secure/lib/libcrypto/man/SSL_SESSION_set1_id.3 +++ b/secure/lib/libcrypto/man/man3/SSL_SESSION_set1_id.3 diff --git a/secure/lib/libcrypto/man/SSL_accept.3 b/secure/lib/libcrypto/man/man3/SSL_accept.3 index bd49f996741bd..bd49f996741bd 100644 --- a/secure/lib/libcrypto/man/SSL_accept.3 +++ b/secure/lib/libcrypto/man/man3/SSL_accept.3 diff --git a/secure/lib/libcrypto/man/SSL_alert_type_string.3 b/secure/lib/libcrypto/man/man3/SSL_alert_type_string.3 index cfb15a0b84ed3..cfb15a0b84ed3 100644 --- a/secure/lib/libcrypto/man/SSL_alert_type_string.3 +++ b/secure/lib/libcrypto/man/man3/SSL_alert_type_string.3 diff --git a/secure/lib/libcrypto/man/SSL_alloc_buffers.3 b/secure/lib/libcrypto/man/man3/SSL_alloc_buffers.3 index 7846926ec896f..7846926ec896f 100644 --- a/secure/lib/libcrypto/man/SSL_alloc_buffers.3 +++ b/secure/lib/libcrypto/man/man3/SSL_alloc_buffers.3 diff --git a/secure/lib/libcrypto/man/SSL_check_chain.3 b/secure/lib/libcrypto/man/man3/SSL_check_chain.3 index 96fa735735d41..96fa735735d41 100644 --- a/secure/lib/libcrypto/man/SSL_check_chain.3 +++ b/secure/lib/libcrypto/man/man3/SSL_check_chain.3 diff --git a/secure/lib/libcrypto/man/SSL_clear.3 b/secure/lib/libcrypto/man/man3/SSL_clear.3 index 50dd9bf0b090f..50dd9bf0b090f 100644 --- a/secure/lib/libcrypto/man/SSL_clear.3 +++ b/secure/lib/libcrypto/man/man3/SSL_clear.3 diff --git a/secure/lib/libcrypto/man/SSL_connect.3 b/secure/lib/libcrypto/man/man3/SSL_connect.3 index 3cf6cb35c962a..3cf6cb35c962a 100644 --- a/secure/lib/libcrypto/man/SSL_connect.3 +++ b/secure/lib/libcrypto/man/man3/SSL_connect.3 diff --git a/secure/lib/libcrypto/man/SSL_do_handshake.3 b/secure/lib/libcrypto/man/man3/SSL_do_handshake.3 index 7b1bc59ab3ddb..7b1bc59ab3ddb 100644 --- a/secure/lib/libcrypto/man/SSL_do_handshake.3 +++ b/secure/lib/libcrypto/man/man3/SSL_do_handshake.3 diff --git a/secure/lib/libcrypto/man/SSL_export_keying_material.3 b/secure/lib/libcrypto/man/man3/SSL_export_keying_material.3 index fa4cdfdb179e9..fa4cdfdb179e9 100644 --- a/secure/lib/libcrypto/man/SSL_export_keying_material.3 +++ b/secure/lib/libcrypto/man/man3/SSL_export_keying_material.3 diff --git a/secure/lib/libcrypto/man/SSL_extension_supported.3 b/secure/lib/libcrypto/man/man3/SSL_extension_supported.3 index 34691c5a330ae..34691c5a330ae 100644 --- a/secure/lib/libcrypto/man/SSL_extension_supported.3 +++ b/secure/lib/libcrypto/man/man3/SSL_extension_supported.3 diff --git a/secure/lib/libcrypto/man/SSL_free.3 b/secure/lib/libcrypto/man/man3/SSL_free.3 index ed1596765f981..ed1596765f981 100644 --- a/secure/lib/libcrypto/man/SSL_free.3 +++ b/secure/lib/libcrypto/man/man3/SSL_free.3 diff --git a/secure/lib/libcrypto/man/SSL_get0_peer_scts.3 b/secure/lib/libcrypto/man/man3/SSL_get0_peer_scts.3 index 8797c4e1168b0..8797c4e1168b0 100644 --- a/secure/lib/libcrypto/man/SSL_get0_peer_scts.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get0_peer_scts.3 diff --git a/secure/lib/libcrypto/man/SSL_get_SSL_CTX.3 b/secure/lib/libcrypto/man/man3/SSL_get_SSL_CTX.3 index 3da243622bb9a..3da243622bb9a 100644 --- a/secure/lib/libcrypto/man/SSL_get_SSL_CTX.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_SSL_CTX.3 diff --git a/secure/lib/libcrypto/man/SSL_get_all_async_fds.3 b/secure/lib/libcrypto/man/man3/SSL_get_all_async_fds.3 index 29f672ad1d1fc..29f672ad1d1fc 100644 --- a/secure/lib/libcrypto/man/SSL_get_all_async_fds.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_all_async_fds.3 diff --git a/secure/lib/libcrypto/man/SSL_get_ciphers.3 b/secure/lib/libcrypto/man/man3/SSL_get_ciphers.3 index 3975bcf0b93b5..3975bcf0b93b5 100644 --- a/secure/lib/libcrypto/man/SSL_get_ciphers.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_ciphers.3 diff --git a/secure/lib/libcrypto/man/SSL_get_client_random.3 b/secure/lib/libcrypto/man/man3/SSL_get_client_random.3 index 87717bcc0dfa5..87717bcc0dfa5 100644 --- a/secure/lib/libcrypto/man/SSL_get_client_random.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_client_random.3 diff --git a/secure/lib/libcrypto/man/SSL_get_current_cipher.3 b/secure/lib/libcrypto/man/man3/SSL_get_current_cipher.3 index c91ba56a04c5d..c91ba56a04c5d 100644 --- a/secure/lib/libcrypto/man/SSL_get_current_cipher.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_current_cipher.3 diff --git a/secure/lib/libcrypto/man/SSL_get_default_timeout.3 b/secure/lib/libcrypto/man/man3/SSL_get_default_timeout.3 index 1949f4f60289c..1949f4f60289c 100644 --- a/secure/lib/libcrypto/man/SSL_get_default_timeout.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_default_timeout.3 diff --git a/secure/lib/libcrypto/man/SSL_get_error.3 b/secure/lib/libcrypto/man/man3/SSL_get_error.3 index 981e5a55d23a4..981e5a55d23a4 100644 --- a/secure/lib/libcrypto/man/SSL_get_error.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_error.3 diff --git a/secure/lib/libcrypto/man/SSL_get_extms_support.3 b/secure/lib/libcrypto/man/man3/SSL_get_extms_support.3 index e35972e489cf4..e35972e489cf4 100644 --- a/secure/lib/libcrypto/man/SSL_get_extms_support.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_extms_support.3 diff --git a/secure/lib/libcrypto/man/SSL_get_fd.3 b/secure/lib/libcrypto/man/man3/SSL_get_fd.3 index 1dcd5bab8d2d9..1dcd5bab8d2d9 100644 --- a/secure/lib/libcrypto/man/SSL_get_fd.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_fd.3 diff --git a/secure/lib/libcrypto/man/SSL_get_peer_cert_chain.3 b/secure/lib/libcrypto/man/man3/SSL_get_peer_cert_chain.3 index 4f8fe4632a944..4f8fe4632a944 100644 --- a/secure/lib/libcrypto/man/SSL_get_peer_cert_chain.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_peer_cert_chain.3 diff --git a/secure/lib/libcrypto/man/SSL_get_peer_certificate.3 b/secure/lib/libcrypto/man/man3/SSL_get_peer_certificate.3 index 01eae91d8f679..01eae91d8f679 100644 --- a/secure/lib/libcrypto/man/SSL_get_peer_certificate.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_peer_certificate.3 diff --git a/secure/lib/libcrypto/man/SSL_get_peer_signature_nid.3 b/secure/lib/libcrypto/man/man3/SSL_get_peer_signature_nid.3 index a9c1cde0a6af4..a9c1cde0a6af4 100644 --- a/secure/lib/libcrypto/man/SSL_get_peer_signature_nid.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_peer_signature_nid.3 diff --git a/secure/lib/libcrypto/man/SSL_get_peer_tmp_key.3 b/secure/lib/libcrypto/man/man3/SSL_get_peer_tmp_key.3 index fc37dd06cf840..fc37dd06cf840 100644 --- a/secure/lib/libcrypto/man/SSL_get_peer_tmp_key.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_peer_tmp_key.3 diff --git a/secure/lib/libcrypto/man/SSL_get_psk_identity.3 b/secure/lib/libcrypto/man/man3/SSL_get_psk_identity.3 index 3b61985d2d008..3b61985d2d008 100644 --- a/secure/lib/libcrypto/man/SSL_get_psk_identity.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_psk_identity.3 diff --git a/secure/lib/libcrypto/man/SSL_get_rbio.3 b/secure/lib/libcrypto/man/man3/SSL_get_rbio.3 index 0347858466532..0347858466532 100644 --- a/secure/lib/libcrypto/man/SSL_get_rbio.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_rbio.3 diff --git a/secure/lib/libcrypto/man/SSL_get_session.3 b/secure/lib/libcrypto/man/man3/SSL_get_session.3 index edf036fc0ab09..edf036fc0ab09 100644 --- a/secure/lib/libcrypto/man/SSL_get_session.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_session.3 diff --git a/secure/lib/libcrypto/man/SSL_get_shared_sigalgs.3 b/secure/lib/libcrypto/man/man3/SSL_get_shared_sigalgs.3 index c4084ee1c21be..c4084ee1c21be 100644 --- a/secure/lib/libcrypto/man/SSL_get_shared_sigalgs.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_shared_sigalgs.3 diff --git a/secure/lib/libcrypto/man/SSL_get_verify_result.3 b/secure/lib/libcrypto/man/man3/SSL_get_verify_result.3 index 3231f4f9380c2..3231f4f9380c2 100644 --- a/secure/lib/libcrypto/man/SSL_get_verify_result.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_verify_result.3 diff --git a/secure/lib/libcrypto/man/SSL_get_version.3 b/secure/lib/libcrypto/man/man3/SSL_get_version.3 index 00c4800b61cbf..00c4800b61cbf 100644 --- a/secure/lib/libcrypto/man/SSL_get_version.3 +++ b/secure/lib/libcrypto/man/man3/SSL_get_version.3 diff --git a/secure/lib/libcrypto/man/SSL_in_init.3 b/secure/lib/libcrypto/man/man3/SSL_in_init.3 index 5c22629c168fe..5c22629c168fe 100644 --- a/secure/lib/libcrypto/man/SSL_in_init.3 +++ b/secure/lib/libcrypto/man/man3/SSL_in_init.3 diff --git a/secure/lib/libcrypto/man/SSL_key_update.3 b/secure/lib/libcrypto/man/man3/SSL_key_update.3 index b69af2cdad35c..b69af2cdad35c 100644 --- a/secure/lib/libcrypto/man/SSL_key_update.3 +++ b/secure/lib/libcrypto/man/man3/SSL_key_update.3 diff --git a/secure/lib/libcrypto/man/SSL_library_init.3 b/secure/lib/libcrypto/man/man3/SSL_library_init.3 index fc2c884623a91..fc2c884623a91 100644 --- a/secure/lib/libcrypto/man/SSL_library_init.3 +++ b/secure/lib/libcrypto/man/man3/SSL_library_init.3 diff --git a/secure/lib/libcrypto/man/SSL_load_client_CA_file.3 b/secure/lib/libcrypto/man/man3/SSL_load_client_CA_file.3 index 3d39648af7fcb..3d39648af7fcb 100644 --- a/secure/lib/libcrypto/man/SSL_load_client_CA_file.3 +++ b/secure/lib/libcrypto/man/man3/SSL_load_client_CA_file.3 diff --git a/secure/lib/libcrypto/man/SSL_new.3 b/secure/lib/libcrypto/man/man3/SSL_new.3 index 4595a101f1213..4595a101f1213 100644 --- a/secure/lib/libcrypto/man/SSL_new.3 +++ b/secure/lib/libcrypto/man/man3/SSL_new.3 diff --git a/secure/lib/libcrypto/man/SSL_pending.3 b/secure/lib/libcrypto/man/man3/SSL_pending.3 index 7ef93680808e2..7ef93680808e2 100644 --- a/secure/lib/libcrypto/man/SSL_pending.3 +++ b/secure/lib/libcrypto/man/man3/SSL_pending.3 diff --git a/secure/lib/libcrypto/man/SSL_read.3 b/secure/lib/libcrypto/man/man3/SSL_read.3 index 0acfe6574ccb5..0acfe6574ccb5 100644 --- a/secure/lib/libcrypto/man/SSL_read.3 +++ b/secure/lib/libcrypto/man/man3/SSL_read.3 diff --git a/secure/lib/libcrypto/man/SSL_read_early_data.3 b/secure/lib/libcrypto/man/man3/SSL_read_early_data.3 index d2c487130cb18..d2c487130cb18 100644 --- a/secure/lib/libcrypto/man/SSL_read_early_data.3 +++ b/secure/lib/libcrypto/man/man3/SSL_read_early_data.3 diff --git a/secure/lib/libcrypto/man/SSL_rstate_string.3 b/secure/lib/libcrypto/man/man3/SSL_rstate_string.3 index 3696f4f4e3532..3696f4f4e3532 100644 --- a/secure/lib/libcrypto/man/SSL_rstate_string.3 +++ b/secure/lib/libcrypto/man/man3/SSL_rstate_string.3 diff --git a/secure/lib/libcrypto/man/SSL_session_reused.3 b/secure/lib/libcrypto/man/man3/SSL_session_reused.3 index 9a7bb5f6bac6f..9a7bb5f6bac6f 100644 --- a/secure/lib/libcrypto/man/SSL_session_reused.3 +++ b/secure/lib/libcrypto/man/man3/SSL_session_reused.3 diff --git a/secure/lib/libcrypto/man/SSL_set1_host.3 b/secure/lib/libcrypto/man/man3/SSL_set1_host.3 index 01621f4679c0c..01621f4679c0c 100644 --- a/secure/lib/libcrypto/man/SSL_set1_host.3 +++ b/secure/lib/libcrypto/man/man3/SSL_set1_host.3 diff --git a/secure/lib/libcrypto/man/SSL_set_bio.3 b/secure/lib/libcrypto/man/man3/SSL_set_bio.3 index df9bba45a8711..df9bba45a8711 100644 --- a/secure/lib/libcrypto/man/SSL_set_bio.3 +++ b/secure/lib/libcrypto/man/man3/SSL_set_bio.3 diff --git a/secure/lib/libcrypto/man/SSL_set_connect_state.3 b/secure/lib/libcrypto/man/man3/SSL_set_connect_state.3 index 850c360e2632a..850c360e2632a 100644 --- a/secure/lib/libcrypto/man/SSL_set_connect_state.3 +++ b/secure/lib/libcrypto/man/man3/SSL_set_connect_state.3 diff --git a/secure/lib/libcrypto/man/SSL_set_fd.3 b/secure/lib/libcrypto/man/man3/SSL_set_fd.3 index bbab70ce8a9f5..bbab70ce8a9f5 100644 --- a/secure/lib/libcrypto/man/SSL_set_fd.3 +++ b/secure/lib/libcrypto/man/man3/SSL_set_fd.3 diff --git a/secure/lib/libcrypto/man/SSL_set_session.3 b/secure/lib/libcrypto/man/man3/SSL_set_session.3 index 0d0533c866ee5..0d0533c866ee5 100644 --- a/secure/lib/libcrypto/man/SSL_set_session.3 +++ b/secure/lib/libcrypto/man/man3/SSL_set_session.3 diff --git a/secure/lib/libcrypto/man/SSL_set_shutdown.3 b/secure/lib/libcrypto/man/man3/SSL_set_shutdown.3 index e76e2b68bdab6..e76e2b68bdab6 100644 --- a/secure/lib/libcrypto/man/SSL_set_shutdown.3 +++ b/secure/lib/libcrypto/man/man3/SSL_set_shutdown.3 diff --git a/secure/lib/libcrypto/man/SSL_set_verify_result.3 b/secure/lib/libcrypto/man/man3/SSL_set_verify_result.3 index 09552f2f8db64..09552f2f8db64 100644 --- a/secure/lib/libcrypto/man/SSL_set_verify_result.3 +++ b/secure/lib/libcrypto/man/man3/SSL_set_verify_result.3 diff --git a/secure/lib/libcrypto/man/SSL_shutdown.3 b/secure/lib/libcrypto/man/man3/SSL_shutdown.3 index f74ea8d095b83..f74ea8d095b83 100644 --- a/secure/lib/libcrypto/man/SSL_shutdown.3 +++ b/secure/lib/libcrypto/man/man3/SSL_shutdown.3 diff --git a/secure/lib/libcrypto/man/SSL_state_string.3 b/secure/lib/libcrypto/man/man3/SSL_state_string.3 index a331aa5443461..a331aa5443461 100644 --- a/secure/lib/libcrypto/man/SSL_state_string.3 +++ b/secure/lib/libcrypto/man/man3/SSL_state_string.3 diff --git a/secure/lib/libcrypto/man/SSL_want.3 b/secure/lib/libcrypto/man/man3/SSL_want.3 index 6a801319b9589..6a801319b9589 100644 --- a/secure/lib/libcrypto/man/SSL_want.3 +++ b/secure/lib/libcrypto/man/man3/SSL_want.3 diff --git a/secure/lib/libcrypto/man/SSL_write.3 b/secure/lib/libcrypto/man/man3/SSL_write.3 index 763769e638279..763769e638279 100644 --- a/secure/lib/libcrypto/man/SSL_write.3 +++ b/secure/lib/libcrypto/man/man3/SSL_write.3 diff --git a/secure/lib/libcrypto/man/UI_STRING.3 b/secure/lib/libcrypto/man/man3/UI_STRING.3 index 61109cec98bb1..61109cec98bb1 100644 --- a/secure/lib/libcrypto/man/UI_STRING.3 +++ b/secure/lib/libcrypto/man/man3/UI_STRING.3 diff --git a/secure/lib/libcrypto/man/UI_UTIL_read_pw.3 b/secure/lib/libcrypto/man/man3/UI_UTIL_read_pw.3 index 40591abccc8c9..40591abccc8c9 100644 --- a/secure/lib/libcrypto/man/UI_UTIL_read_pw.3 +++ b/secure/lib/libcrypto/man/man3/UI_UTIL_read_pw.3 diff --git a/secure/lib/libcrypto/man/UI_create_method.3 b/secure/lib/libcrypto/man/man3/UI_create_method.3 index 0595e32610237..0595e32610237 100644 --- a/secure/lib/libcrypto/man/UI_create_method.3 +++ b/secure/lib/libcrypto/man/man3/UI_create_method.3 diff --git a/secure/lib/libcrypto/man/UI_new.3 b/secure/lib/libcrypto/man/man3/UI_new.3 index 957dc5243ada5..957dc5243ada5 100644 --- a/secure/lib/libcrypto/man/UI_new.3 +++ b/secure/lib/libcrypto/man/man3/UI_new.3 diff --git a/secure/lib/libcrypto/man/X509V3_get_d2i.3 b/secure/lib/libcrypto/man/man3/X509V3_get_d2i.3 index cb8e597984e26..cb8e597984e26 100644 --- a/secure/lib/libcrypto/man/X509V3_get_d2i.3 +++ b/secure/lib/libcrypto/man/man3/X509V3_get_d2i.3 diff --git a/secure/lib/libcrypto/man/X509_ALGOR_dup.3 b/secure/lib/libcrypto/man/man3/X509_ALGOR_dup.3 index 3342bff2ea5f7..3342bff2ea5f7 100644 --- a/secure/lib/libcrypto/man/X509_ALGOR_dup.3 +++ b/secure/lib/libcrypto/man/man3/X509_ALGOR_dup.3 diff --git a/secure/lib/libcrypto/man/X509_CRL_get0_by_serial.3 b/secure/lib/libcrypto/man/man3/X509_CRL_get0_by_serial.3 index 511585c2568a9..511585c2568a9 100644 --- a/secure/lib/libcrypto/man/X509_CRL_get0_by_serial.3 +++ b/secure/lib/libcrypto/man/man3/X509_CRL_get0_by_serial.3 diff --git a/secure/lib/libcrypto/man/X509_EXTENSION_set_object.3 b/secure/lib/libcrypto/man/man3/X509_EXTENSION_set_object.3 index 3c612c6840e78..3c612c6840e78 100644 --- a/secure/lib/libcrypto/man/X509_EXTENSION_set_object.3 +++ b/secure/lib/libcrypto/man/man3/X509_EXTENSION_set_object.3 diff --git a/secure/lib/libcrypto/man/X509_LOOKUP_hash_dir.3 b/secure/lib/libcrypto/man/man3/X509_LOOKUP_hash_dir.3 index d3f4d8ed599b8..d3f4d8ed599b8 100644 --- a/secure/lib/libcrypto/man/X509_LOOKUP_hash_dir.3 +++ b/secure/lib/libcrypto/man/man3/X509_LOOKUP_hash_dir.3 diff --git a/secure/lib/libcrypto/man/X509_LOOKUP_meth_new.3 b/secure/lib/libcrypto/man/man3/X509_LOOKUP_meth_new.3 index 98105df74981c..98105df74981c 100644 --- a/secure/lib/libcrypto/man/X509_LOOKUP_meth_new.3 +++ b/secure/lib/libcrypto/man/man3/X509_LOOKUP_meth_new.3 diff --git a/secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3 b/secure/lib/libcrypto/man/man3/X509_NAME_ENTRY_get_object.3 index 9f9720d81da60..9f9720d81da60 100644 --- a/secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3 +++ b/secure/lib/libcrypto/man/man3/X509_NAME_ENTRY_get_object.3 diff --git a/secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3 b/secure/lib/libcrypto/man/man3/X509_NAME_add_entry_by_txt.3 index 0e8f8f88ca31a..0e8f8f88ca31a 100644 --- a/secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3 +++ b/secure/lib/libcrypto/man/man3/X509_NAME_add_entry_by_txt.3 diff --git a/secure/lib/libcrypto/man/X509_NAME_get0_der.3 b/secure/lib/libcrypto/man/man3/X509_NAME_get0_der.3 index 4e0f4e1aa8e3c..4e0f4e1aa8e3c 100644 --- a/secure/lib/libcrypto/man/X509_NAME_get0_der.3 +++ b/secure/lib/libcrypto/man/man3/X509_NAME_get0_der.3 diff --git a/secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3 b/secure/lib/libcrypto/man/man3/X509_NAME_get_index_by_NID.3 index 4bdf4f791297b..4bdf4f791297b 100644 --- a/secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3 +++ b/secure/lib/libcrypto/man/man3/X509_NAME_get_index_by_NID.3 diff --git a/secure/lib/libcrypto/man/X509_NAME_print_ex.3 b/secure/lib/libcrypto/man/man3/X509_NAME_print_ex.3 index 105de0571f670..105de0571f670 100644 --- a/secure/lib/libcrypto/man/X509_NAME_print_ex.3 +++ b/secure/lib/libcrypto/man/man3/X509_NAME_print_ex.3 diff --git a/secure/lib/libcrypto/man/X509_PUBKEY_new.3 b/secure/lib/libcrypto/man/man3/X509_PUBKEY_new.3 index 0e4ca164ac888..0e4ca164ac888 100644 --- a/secure/lib/libcrypto/man/X509_PUBKEY_new.3 +++ b/secure/lib/libcrypto/man/man3/X509_PUBKEY_new.3 diff --git a/secure/lib/libcrypto/man/X509_SIG_get0.3 b/secure/lib/libcrypto/man/man3/X509_SIG_get0.3 index 08e5529eb61dd..08e5529eb61dd 100644 --- a/secure/lib/libcrypto/man/X509_SIG_get0.3 +++ b/secure/lib/libcrypto/man/man3/X509_SIG_get0.3 diff --git a/secure/lib/libcrypto/man/X509_STORE_CTX_get_error.3 b/secure/lib/libcrypto/man/man3/X509_STORE_CTX_get_error.3 index 152e9d9a82946..152e9d9a82946 100644 --- a/secure/lib/libcrypto/man/X509_STORE_CTX_get_error.3 +++ b/secure/lib/libcrypto/man/man3/X509_STORE_CTX_get_error.3 diff --git a/secure/lib/libcrypto/man/X509_STORE_CTX_new.3 b/secure/lib/libcrypto/man/man3/X509_STORE_CTX_new.3 index 836196cc4ff44..836196cc4ff44 100644 --- a/secure/lib/libcrypto/man/X509_STORE_CTX_new.3 +++ b/secure/lib/libcrypto/man/man3/X509_STORE_CTX_new.3 diff --git a/secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.3 b/secure/lib/libcrypto/man/man3/X509_STORE_CTX_set_verify_cb.3 index df7e6a6e19420..df7e6a6e19420 100644 --- a/secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.3 +++ b/secure/lib/libcrypto/man/man3/X509_STORE_CTX_set_verify_cb.3 diff --git a/secure/lib/libcrypto/man/X509_STORE_add_cert.3 b/secure/lib/libcrypto/man/man3/X509_STORE_add_cert.3 index 5ec34234c3294..5ec34234c3294 100644 --- a/secure/lib/libcrypto/man/X509_STORE_add_cert.3 +++ b/secure/lib/libcrypto/man/man3/X509_STORE_add_cert.3 diff --git a/secure/lib/libcrypto/man/X509_STORE_get0_param.3 b/secure/lib/libcrypto/man/man3/X509_STORE_get0_param.3 index 8196f17935a6d..8196f17935a6d 100644 --- a/secure/lib/libcrypto/man/X509_STORE_get0_param.3 +++ b/secure/lib/libcrypto/man/man3/X509_STORE_get0_param.3 diff --git a/secure/lib/libcrypto/man/X509_STORE_new.3 b/secure/lib/libcrypto/man/man3/X509_STORE_new.3 index 291660b75abe7..291660b75abe7 100644 --- a/secure/lib/libcrypto/man/X509_STORE_new.3 +++ b/secure/lib/libcrypto/man/man3/X509_STORE_new.3 diff --git a/secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.3 b/secure/lib/libcrypto/man/man3/X509_STORE_set_verify_cb_func.3 index afdc359fdb8d6..afdc359fdb8d6 100644 --- a/secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.3 +++ b/secure/lib/libcrypto/man/man3/X509_STORE_set_verify_cb_func.3 diff --git a/secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.3 b/secure/lib/libcrypto/man/man3/X509_VERIFY_PARAM_set_flags.3 index 09d0211d2d366..09d0211d2d366 100644 --- a/secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.3 +++ b/secure/lib/libcrypto/man/man3/X509_VERIFY_PARAM_set_flags.3 diff --git a/secure/lib/libcrypto/man/X509_check_ca.3 b/secure/lib/libcrypto/man/man3/X509_check_ca.3 index 289b9369d0686..289b9369d0686 100644 --- a/secure/lib/libcrypto/man/X509_check_ca.3 +++ b/secure/lib/libcrypto/man/man3/X509_check_ca.3 diff --git a/secure/lib/libcrypto/man/X509_check_host.3 b/secure/lib/libcrypto/man/man3/X509_check_host.3 index 9f6b088d42944..9f6b088d42944 100644 --- a/secure/lib/libcrypto/man/X509_check_host.3 +++ b/secure/lib/libcrypto/man/man3/X509_check_host.3 diff --git a/secure/lib/libcrypto/man/X509_check_issued.3 b/secure/lib/libcrypto/man/man3/X509_check_issued.3 index e109f1dfcb40e..e109f1dfcb40e 100644 --- a/secure/lib/libcrypto/man/X509_check_issued.3 +++ b/secure/lib/libcrypto/man/man3/X509_check_issued.3 diff --git a/secure/lib/libcrypto/man/X509_check_private_key.3 b/secure/lib/libcrypto/man/man3/X509_check_private_key.3 index 7f00cf473eb4b..7f00cf473eb4b 100644 --- a/secure/lib/libcrypto/man/X509_check_private_key.3 +++ b/secure/lib/libcrypto/man/man3/X509_check_private_key.3 diff --git a/secure/lib/libcrypto/man/X509_cmp.3 b/secure/lib/libcrypto/man/man3/X509_cmp.3 index 74c3882ea3221..74c3882ea3221 100644 --- a/secure/lib/libcrypto/man/X509_cmp.3 +++ b/secure/lib/libcrypto/man/man3/X509_cmp.3 diff --git a/secure/lib/libcrypto/man/X509_cmp_time.3 b/secure/lib/libcrypto/man/man3/X509_cmp_time.3 index aa0e6c9e32e80..aa0e6c9e32e80 100644 --- a/secure/lib/libcrypto/man/X509_cmp_time.3 +++ b/secure/lib/libcrypto/man/man3/X509_cmp_time.3 diff --git a/secure/lib/libcrypto/man/X509_digest.3 b/secure/lib/libcrypto/man/man3/X509_digest.3 index a976fca38ae7f..a976fca38ae7f 100644 --- a/secure/lib/libcrypto/man/X509_digest.3 +++ b/secure/lib/libcrypto/man/man3/X509_digest.3 diff --git a/secure/lib/libcrypto/man/X509_dup.3 b/secure/lib/libcrypto/man/man3/X509_dup.3 index 291044d591cac..291044d591cac 100644 --- a/secure/lib/libcrypto/man/X509_dup.3 +++ b/secure/lib/libcrypto/man/man3/X509_dup.3 diff --git a/secure/lib/libcrypto/man/X509_get0_notBefore.3 b/secure/lib/libcrypto/man/man3/X509_get0_notBefore.3 index e9f67eb3cd84a..e9f67eb3cd84a 100644 --- a/secure/lib/libcrypto/man/X509_get0_notBefore.3 +++ b/secure/lib/libcrypto/man/man3/X509_get0_notBefore.3 diff --git a/secure/lib/libcrypto/man/X509_get0_signature.3 b/secure/lib/libcrypto/man/man3/X509_get0_signature.3 index da6a641fa2fdf..da6a641fa2fdf 100644 --- a/secure/lib/libcrypto/man/X509_get0_signature.3 +++ b/secure/lib/libcrypto/man/man3/X509_get0_signature.3 diff --git a/secure/lib/libcrypto/man/X509_get0_uids.3 b/secure/lib/libcrypto/man/man3/X509_get0_uids.3 index cf86bfafea674..cf86bfafea674 100644 --- a/secure/lib/libcrypto/man/X509_get0_uids.3 +++ b/secure/lib/libcrypto/man/man3/X509_get0_uids.3 diff --git a/secure/lib/libcrypto/man/X509_get_extension_flags.3 b/secure/lib/libcrypto/man/man3/X509_get_extension_flags.3 index 7d132afcb6f46..7d132afcb6f46 100644 --- a/secure/lib/libcrypto/man/X509_get_extension_flags.3 +++ b/secure/lib/libcrypto/man/man3/X509_get_extension_flags.3 diff --git a/secure/lib/libcrypto/man/X509_get_pubkey.3 b/secure/lib/libcrypto/man/man3/X509_get_pubkey.3 index 201d862f60729..201d862f60729 100644 --- a/secure/lib/libcrypto/man/X509_get_pubkey.3 +++ b/secure/lib/libcrypto/man/man3/X509_get_pubkey.3 diff --git a/secure/lib/libcrypto/man/X509_get_serialNumber.3 b/secure/lib/libcrypto/man/man3/X509_get_serialNumber.3 index 9f7d1700c5eb6..9f7d1700c5eb6 100644 --- a/secure/lib/libcrypto/man/X509_get_serialNumber.3 +++ b/secure/lib/libcrypto/man/man3/X509_get_serialNumber.3 diff --git a/secure/lib/libcrypto/man/X509_get_subject_name.3 b/secure/lib/libcrypto/man/man3/X509_get_subject_name.3 index 778f302bf29ad..778f302bf29ad 100644 --- a/secure/lib/libcrypto/man/X509_get_subject_name.3 +++ b/secure/lib/libcrypto/man/man3/X509_get_subject_name.3 diff --git a/secure/lib/libcrypto/man/X509_get_version.3 b/secure/lib/libcrypto/man/man3/X509_get_version.3 index 2c20c6df2d5c1..2c20c6df2d5c1 100644 --- a/secure/lib/libcrypto/man/X509_get_version.3 +++ b/secure/lib/libcrypto/man/man3/X509_get_version.3 diff --git a/secure/lib/libcrypto/man/X509_new.3 b/secure/lib/libcrypto/man/man3/X509_new.3 index ad0412dbd854b..ad0412dbd854b 100644 --- a/secure/lib/libcrypto/man/X509_new.3 +++ b/secure/lib/libcrypto/man/man3/X509_new.3 diff --git a/secure/lib/libcrypto/man/X509_sign.3 b/secure/lib/libcrypto/man/man3/X509_sign.3 index 81bfc191e03f9..81bfc191e03f9 100644 --- a/secure/lib/libcrypto/man/X509_sign.3 +++ b/secure/lib/libcrypto/man/man3/X509_sign.3 diff --git a/secure/lib/libcrypto/man/X509_verify_cert.3 b/secure/lib/libcrypto/man/man3/X509_verify_cert.3 index d745211a3bf23..d745211a3bf23 100644 --- a/secure/lib/libcrypto/man/X509_verify_cert.3 +++ b/secure/lib/libcrypto/man/man3/X509_verify_cert.3 diff --git a/secure/lib/libcrypto/man/X509v3_get_ext_by_NID.3 b/secure/lib/libcrypto/man/man3/X509v3_get_ext_by_NID.3 index 9de93b5ce8b27..9de93b5ce8b27 100644 --- a/secure/lib/libcrypto/man/X509v3_get_ext_by_NID.3 +++ b/secure/lib/libcrypto/man/man3/X509v3_get_ext_by_NID.3 diff --git a/secure/lib/libcrypto/man/d2i_DHparams.3 b/secure/lib/libcrypto/man/man3/d2i_DHparams.3 index d4ba9be40c31a..d4ba9be40c31a 100644 --- a/secure/lib/libcrypto/man/d2i_DHparams.3 +++ b/secure/lib/libcrypto/man/man3/d2i_DHparams.3 diff --git a/secure/lib/libcrypto/man/d2i_PKCS8PrivateKey_bio.3 b/secure/lib/libcrypto/man/man3/d2i_PKCS8PrivateKey_bio.3 index aabcf3a27a674..aabcf3a27a674 100644 --- a/secure/lib/libcrypto/man/d2i_PKCS8PrivateKey_bio.3 +++ b/secure/lib/libcrypto/man/man3/d2i_PKCS8PrivateKey_bio.3 diff --git a/secure/lib/libcrypto/man/d2i_PrivateKey.3 b/secure/lib/libcrypto/man/man3/d2i_PrivateKey.3 index fe1f6493b36d9..fe1f6493b36d9 100644 --- a/secure/lib/libcrypto/man/d2i_PrivateKey.3 +++ b/secure/lib/libcrypto/man/man3/d2i_PrivateKey.3 diff --git a/secure/lib/libcrypto/man/d2i_SSL_SESSION.3 b/secure/lib/libcrypto/man/man3/d2i_SSL_SESSION.3 index 1c12812fe9734..1c12812fe9734 100644 --- a/secure/lib/libcrypto/man/d2i_SSL_SESSION.3 +++ b/secure/lib/libcrypto/man/man3/d2i_SSL_SESSION.3 diff --git a/secure/lib/libcrypto/man/d2i_X509.3 b/secure/lib/libcrypto/man/man3/d2i_X509.3 index 024c8dcefd636..024c8dcefd636 100644 --- a/secure/lib/libcrypto/man/d2i_X509.3 +++ b/secure/lib/libcrypto/man/man3/d2i_X509.3 diff --git a/secure/lib/libcrypto/man/i2d_CMS_bio_stream.3 b/secure/lib/libcrypto/man/man3/i2d_CMS_bio_stream.3 index 36903b121e1a7..36903b121e1a7 100644 --- a/secure/lib/libcrypto/man/i2d_CMS_bio_stream.3 +++ b/secure/lib/libcrypto/man/man3/i2d_CMS_bio_stream.3 diff --git a/secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.3 b/secure/lib/libcrypto/man/man3/i2d_PKCS7_bio_stream.3 index 96e62e7fb4c9f..96e62e7fb4c9f 100644 --- a/secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.3 +++ b/secure/lib/libcrypto/man/man3/i2d_PKCS7_bio_stream.3 diff --git a/secure/lib/libcrypto/man/i2d_re_X509_tbs.3 b/secure/lib/libcrypto/man/man3/i2d_re_X509_tbs.3 index 9fcbc89df3b54..9fcbc89df3b54 100644 --- a/secure/lib/libcrypto/man/i2d_re_X509_tbs.3 +++ b/secure/lib/libcrypto/man/man3/i2d_re_X509_tbs.3 diff --git a/secure/lib/libcrypto/man/o2i_SCT_LIST.3 b/secure/lib/libcrypto/man/man3/o2i_SCT_LIST.3 index aefa717ba74a4..aefa717ba74a4 100644 --- a/secure/lib/libcrypto/man/o2i_SCT_LIST.3 +++ b/secure/lib/libcrypto/man/man3/o2i_SCT_LIST.3 diff --git a/secure/lib/libcrypto/man/man5/Makefile b/secure/lib/libcrypto/man/man5/Makefile new file mode 100644 index 0000000000000..099b7fad81f1b --- /dev/null +++ b/secure/lib/libcrypto/man/man5/Makefile @@ -0,0 +1,3 @@ +# $FreeBSD$ +# MAN+= config.5 +MAN+= x509v3_config.5 diff --git a/secure/lib/libcrypto/man/man5/x509v3_config.5 b/secure/lib/libcrypto/man/man5/x509v3_config.5 new file mode 100644 index 0000000000000..c0fda6e92019f --- /dev/null +++ b/secure/lib/libcrypto/man/man5/x509v3_config.5 @@ -0,0 +1,704 @@ +.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.40) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "X509V3_CONFIG 5" +.TH X509V3_CONFIG 5 "2019-09-10" "1.1.1d" "OpenSSL" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +x509v3_config \- X509 V3 certificate extension configuration format +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +Several of the OpenSSL utilities can add extensions to a certificate or +certificate request based on the contents of a configuration file. +.PP +Typically the application will contain an option to point to an extension +section. Each line of the extension section takes the form: +.PP +.Vb 1 +\& extension_name=[critical,] extension_options +.Ve +.PP +If \fBcritical\fR is present then the extension will be critical. +.PP +The format of \fBextension_options\fR depends on the value of \fBextension_name\fR. +.PP +There are four main types of extension: \fIstring\fR extensions, \fImulti-valued\fR +extensions, \fIraw\fR and \fIarbitrary\fR extensions. +.PP +String extensions simply have a string which contains either the value itself +or how it is obtained. +.PP +For example: +.PP +.Vb 1 +\& nsComment="This is a Comment" +.Ve +.PP +Multi-valued extensions have a short form and a long form. The short form +is a list of names and values: +.PP +.Vb 1 +\& basicConstraints=critical,CA:true,pathlen:1 +.Ve +.PP +The long form allows the values to be placed in a separate section: +.PP +.Vb 1 +\& basicConstraints=critical,@bs_section +\& +\& [bs_section] +\& +\& CA=true +\& pathlen=1 +.Ve +.PP +Both forms are equivalent. +.PP +The syntax of raw extensions is governed by the extension code: it can +for example contain data in multiple sections. The correct syntax to +use is defined by the extension code itself: check out the certificate +policies extension for an example. +.PP +If an extension type is unsupported then the \fIarbitrary\fR extension syntax +must be used, see the \s-1ARBITRARY EXTENSIONS\s0 section for more details. +.SH "STANDARD EXTENSIONS" +.IX Header "STANDARD EXTENSIONS" +The following sections describe each supported extension in detail. +.SS "Basic Constraints." +.IX Subsection "Basic Constraints." +This is a multi valued extension which indicates whether a certificate is +a \s-1CA\s0 certificate. The first (mandatory) name is \fB\s-1CA\s0\fR followed by \fB\s-1TRUE\s0\fR or +\&\fB\s-1FALSE\s0\fR. If \fB\s-1CA\s0\fR is \fB\s-1TRUE\s0\fR then an optional \fBpathlen\fR name followed by an +non-negative value can be included. +.PP +For example: +.PP +.Vb 1 +\& basicConstraints=CA:TRUE +\& +\& basicConstraints=CA:FALSE +\& +\& basicConstraints=critical,CA:TRUE, pathlen:0 +.Ve +.PP +A \s-1CA\s0 certificate \fBmust\fR include the basicConstraints value with the \s-1CA\s0 field +set to \s-1TRUE.\s0 An end user certificate must either set \s-1CA\s0 to \s-1FALSE\s0 or exclude the +extension entirely. Some software may require the inclusion of basicConstraints +with \s-1CA\s0 set to \s-1FALSE\s0 for end entity certificates. +.PP +The pathlen parameter indicates the maximum number of CAs that can appear +below this one in a chain. So if you have a \s-1CA\s0 with a pathlen of zero it can +only be used to sign end user certificates and not further CAs. +.SS "Key Usage." +.IX Subsection "Key Usage." +Key usage is a multi valued extension consisting of a list of names of the +permitted key usages. +.PP +The supported names are: digitalSignature, nonRepudiation, keyEncipherment, +dataEncipherment, keyAgreement, keyCertSign, cRLSign, encipherOnly +and decipherOnly. +.PP +Examples: +.PP +.Vb 1 +\& keyUsage=digitalSignature, nonRepudiation +\& +\& keyUsage=critical, keyCertSign +.Ve +.SS "Extended Key Usage." +.IX Subsection "Extended Key Usage." +This extensions consists of a list of usages indicating purposes for which +the certificate public key can be used for, +.PP +These can either be object short names or the dotted numerical form of OIDs. +While any \s-1OID\s0 can be used only certain values make sense. In particular the +following \s-1PKIX, NS\s0 and \s-1MS\s0 values are meaningful: +.PP +.Vb 10 +\& Value Meaning +\& \-\-\-\-\- \-\-\-\-\-\-\- +\& serverAuth SSL/TLS Web Server Authentication. +\& clientAuth SSL/TLS Web Client Authentication. +\& codeSigning Code signing. +\& emailProtection E\-mail Protection (S/MIME). +\& timeStamping Trusted Timestamping +\& OCSPSigning OCSP Signing +\& ipsecIKE ipsec Internet Key Exchange +\& msCodeInd Microsoft Individual Code Signing (authenticode) +\& msCodeCom Microsoft Commercial Code Signing (authenticode) +\& msCTLSign Microsoft Trust List Signing +\& msEFS Microsoft Encrypted File System +.Ve +.PP +Examples: +.PP +.Vb 2 +\& extendedKeyUsage=critical,codeSigning,1.2.3.4 +\& extendedKeyUsage=serverAuth,clientAuth +.Ve +.SS "Subject Key Identifier." +.IX Subsection "Subject Key Identifier." +This is really a string extension and can take two possible values. Either +the word \fBhash\fR which will automatically follow the guidelines in \s-1RFC3280\s0 +or a hex string giving the extension value to include. The use of the hex +string is strongly discouraged. +.PP +Example: +.PP +.Vb 1 +\& subjectKeyIdentifier=hash +.Ve +.SS "Authority Key Identifier." +.IX Subsection "Authority Key Identifier." +The authority key identifier extension permits two options. keyid and issuer: +both can take the optional value \*(L"always\*(R". +.PP +If the keyid option is present an attempt is made to copy the subject key +identifier from the parent certificate. If the value \*(L"always\*(R" is present +then an error is returned if the option fails. +.PP +The issuer option copies the issuer and serial number from the issuer +certificate. This will only be done if the keyid option fails or +is not included unless the \*(L"always\*(R" flag will always include the value. +.PP +Example: +.PP +.Vb 1 +\& authorityKeyIdentifier=keyid,issuer +.Ve +.SS "Subject Alternative Name." +.IX Subsection "Subject Alternative Name." +The subject alternative name extension allows various literal values to be +included in the configuration file. These include \fBemail\fR (an email address) +\&\fB\s-1URI\s0\fR a uniform resource indicator, \fB\s-1DNS\s0\fR (a \s-1DNS\s0 domain name), \fB\s-1RID\s0\fR (a +registered \s-1ID: OBJECT IDENTIFIER\s0), \fB\s-1IP\s0\fR (an \s-1IP\s0 address), \fBdirName\fR +(a distinguished name) and otherName. +.PP +The email option include a special 'copy' value. This will automatically +include any email addresses contained in the certificate subject name in +the extension. +.PP +The \s-1IP\s0 address used in the \fB\s-1IP\s0\fR options can be in either IPv4 or IPv6 format. +.PP +The value of \fBdirName\fR should point to a section containing the distinguished +name to use as a set of name value pairs. Multi values AVAs can be formed by +prefacing the name with a \fB+\fR character. +.PP +otherName can include arbitrary data associated with an \s-1OID:\s0 the value +should be the \s-1OID\s0 followed by a semicolon and the content in standard +\&\fBASN1_generate_nconf\fR\|(3) format. +.PP +Examples: +.PP +.Vb 5 +\& subjectAltName=email:copy,email:my@other.address,URI:http://my.url.here/ +\& subjectAltName=IP:192.168.7.1 +\& subjectAltName=IP:13::17 +\& subjectAltName=email:my@other.address,RID:1.2.3.4 +\& subjectAltName=otherName:1.2.3.4;UTF8:some other identifier +\& +\& subjectAltName=dirName:dir_sect +\& +\& [dir_sect] +\& C=UK +\& O=My Organization +\& OU=My Unit +\& CN=My Name +.Ve +.SS "Issuer Alternative Name." +.IX Subsection "Issuer Alternative Name." +The issuer alternative name option supports all the literal options of +subject alternative name. It does \fBnot\fR support the email:copy option because +that would not make sense. It does support an additional issuer:copy option +that will copy all the subject alternative name values from the issuer +certificate (if possible). +.PP +Example: +.PP +.Vb 1 +\& issuerAltName = issuer:copy +.Ve +.SS "Authority Info Access." +.IX Subsection "Authority Info Access." +The authority information access extension gives details about how to access +certain information relating to the \s-1CA.\s0 Its syntax is accessOID;location +where \fIlocation\fR has the same syntax as subject alternative name (except +that email:copy is not supported). accessOID can be any valid \s-1OID\s0 but only +certain values are meaningful, for example \s-1OCSP\s0 and caIssuers. +.PP +Example: +.PP +.Vb 2 +\& authorityInfoAccess = OCSP;URI:http://ocsp.my.host/ +\& authorityInfoAccess = caIssuers;URI:http://my.ca/ca.html +.Ve +.SS "\s-1CRL\s0 distribution points" +.IX Subsection "CRL distribution points" +This is a multi-valued extension whose options can be either in name:value pair +using the same form as subject alternative name or a single value representing +a section name containing all the distribution point fields. +.PP +For a name:value pair a new DistributionPoint with the fullName field set to +the given value both the cRLissuer and reasons fields are omitted in this case. +.PP +In the single option case the section indicated contains values for each +field. In this section: +.PP +If the name is \*(L"fullname\*(R" the value field should contain the full name +of the distribution point in the same format as subject alternative name. +.PP +If the name is \*(L"relativename\*(R" then the value field should contain a section +name whose contents represent a \s-1DN\s0 fragment to be placed in this field. +.PP +The name \*(L"CRLIssuer\*(R" if present should contain a value for this field in +subject alternative name format. +.PP +If the name is \*(L"reasons\*(R" the value field should consist of a comma +separated field containing the reasons. Valid reasons are: \*(L"keyCompromise\*(R", +\&\*(L"CACompromise\*(R", \*(L"affiliationChanged\*(R", \*(L"superseded\*(R", \*(L"cessationOfOperation\*(R", +\&\*(L"certificateHold\*(R", \*(L"privilegeWithdrawn\*(R" and \*(L"AACompromise\*(R". +.PP +Simple examples: +.PP +.Vb 2 +\& crlDistributionPoints=URI:http://myhost.com/myca.crl +\& crlDistributionPoints=URI:http://my.com/my.crl,URI:http://oth.com/my.crl +.Ve +.PP +Full distribution point example: +.PP +.Vb 1 +\& crlDistributionPoints=crldp1_section +\& +\& [crldp1_section] +\& +\& fullname=URI:http://myhost.com/myca.crl +\& CRLissuer=dirName:issuer_sect +\& reasons=keyCompromise, CACompromise +\& +\& [issuer_sect] +\& C=UK +\& O=Organisation +\& CN=Some Name +.Ve +.SS "Issuing Distribution Point" +.IX Subsection "Issuing Distribution Point" +This extension should only appear in CRLs. It is a multi valued extension +whose syntax is similar to the \*(L"section\*(R" pointed to by the \s-1CRL\s0 distribution +points extension with a few differences. +.PP +The names \*(L"reasons\*(R" and \*(L"CRLissuer\*(R" are not recognized. +.PP +The name \*(L"onlysomereasons\*(R" is accepted which sets this field. The value is +in the same format as the \s-1CRL\s0 distribution point \*(L"reasons\*(R" field. +.PP +The names \*(L"onlyuser\*(R", \*(L"onlyCA\*(R", \*(L"onlyAA\*(R" and \*(L"indirectCRL\*(R" are also accepted +the values should be a boolean value (\s-1TRUE\s0 or \s-1FALSE\s0) to indicate the value of +the corresponding field. +.PP +Example: +.PP +.Vb 1 +\& issuingDistributionPoint=critical, @idp_section +\& +\& [idp_section] +\& +\& fullname=URI:http://myhost.com/myca.crl +\& indirectCRL=TRUE +\& onlysomereasons=keyCompromise, CACompromise +\& +\& [issuer_sect] +\& C=UK +\& O=Organisation +\& CN=Some Name +.Ve +.SS "Certificate Policies." +.IX Subsection "Certificate Policies." +This is a \fIraw\fR extension. All the fields of this extension can be set by +using the appropriate syntax. +.PP +If you follow the \s-1PKIX\s0 recommendations and just using one \s-1OID\s0 then you just +include the value of that \s-1OID.\s0 Multiple OIDs can be set separated by commas, +for example: +.PP +.Vb 1 +\& certificatePolicies= 1.2.4.5, 1.1.3.4 +.Ve +.PP +If you wish to include qualifiers then the policy \s-1OID\s0 and qualifiers need to +be specified in a separate section: this is done by using the \f(CW@section\fR syntax +instead of a literal \s-1OID\s0 value. +.PP +The section referred to must include the policy \s-1OID\s0 using the name +policyIdentifier, cPSuri qualifiers can be included using the syntax: +.PP +.Vb 1 +\& CPS.nnn=value +.Ve +.PP +userNotice qualifiers can be set using the syntax: +.PP +.Vb 1 +\& userNotice.nnn=@notice +.Ve +.PP +The value of the userNotice qualifier is specified in the relevant section. +This section can include explicitText, organization and noticeNumbers +options. explicitText and organization are text strings, noticeNumbers is a +comma separated list of numbers. The organization and noticeNumbers options +(if included) must \s-1BOTH\s0 be present. If you use the userNotice option with \s-1IE5\s0 +then you need the 'ia5org' option at the top level to modify the encoding: +otherwise it will not be interpreted properly. +.PP +Example: +.PP +.Vb 1 +\& certificatePolicies=ia5org,1.2.3.4,1.5.6.7.8,@polsect +\& +\& [polsect] +\& +\& policyIdentifier = 1.3.5.8 +\& CPS.1="http://my.host.name/" +\& CPS.2="http://my.your.name/" +\& userNotice.1=@notice +\& +\& [notice] +\& +\& explicitText="Explicit Text Here" +\& organization="Organisation Name" +\& noticeNumbers=1,2,3,4 +.Ve +.PP +The \fBia5org\fR option changes the type of the \fIorganization\fR field. In \s-1RFC2459\s0 +it can only be of type DisplayText. In \s-1RFC3280\s0 IA5String is also permissible. +Some software (for example some versions of \s-1MSIE\s0) may require ia5org. +.PP +\&\s-1ASN1\s0 type of explicitText can be specified by prepending \fB\s-1UTF8\s0\fR, +\&\fB\s-1BMP\s0\fR or \fB\s-1VISIBLE\s0\fR prefix followed by colon. For example: +.PP +.Vb 2 +\& [notice] +\& explicitText="UTF8:Explicit Text Here" +.Ve +.SS "Policy Constraints" +.IX Subsection "Policy Constraints" +This is a multi-valued extension which consisting of the names +\&\fBrequireExplicitPolicy\fR or \fBinhibitPolicyMapping\fR and a non negative integer +value. At least one component must be present. +.PP +Example: +.PP +.Vb 1 +\& policyConstraints = requireExplicitPolicy:3 +.Ve +.SS "Inhibit Any Policy" +.IX Subsection "Inhibit Any Policy" +This is a string extension whose value must be a non negative integer. +.PP +Example: +.PP +.Vb 1 +\& inhibitAnyPolicy = 2 +.Ve +.SS "Name Constraints" +.IX Subsection "Name Constraints" +The name constraints extension is a multi-valued extension. The name should +begin with the word \fBpermitted\fR or \fBexcluded\fR followed by a \fB;\fR. The rest of +the name and the value follows the syntax of subjectAltName except email:copy +is not supported and the \fB\s-1IP\s0\fR form should consist of an \s-1IP\s0 addresses and +subnet mask separated by a \fB/\fR. +.PP +Examples: +.PP +.Vb 1 +\& nameConstraints=permitted;IP:192.168.0.0/255.255.0.0 +\& +\& nameConstraints=permitted;email:.somedomain.com +\& +\& nameConstraints=excluded;email:.com +.Ve +.SS "\s-1OCSP\s0 No Check" +.IX Subsection "OCSP No Check" +The \s-1OCSP\s0 No Check extension is a string extension but its value is ignored. +.PP +Example: +.PP +.Vb 1 +\& noCheck = ignored +.Ve +.SS "\s-1TLS\s0 Feature (aka Must Staple)" +.IX Subsection "TLS Feature (aka Must Staple)" +This is a multi-valued extension consisting of a list of \s-1TLS\s0 extension +identifiers. Each identifier may be a number (0..65535) or a supported name. +When a \s-1TLS\s0 client sends a listed extension, the \s-1TLS\s0 server is expected to +include that extension in its reply. +.PP +The supported names are: \fBstatus_request\fR and \fBstatus_request_v2\fR. +.PP +Example: +.PP +.Vb 1 +\& tlsfeature = status_request +.Ve +.SH "DEPRECATED EXTENSIONS" +.IX Header "DEPRECATED EXTENSIONS" +The following extensions are non standard, Netscape specific and largely +obsolete. Their use in new applications is discouraged. +.SS "Netscape String extensions." +.IX Subsection "Netscape String extensions." +Netscape Comment (\fBnsComment\fR) is a string extension containing a comment +which will be displayed when the certificate is viewed in some browsers. +.PP +Example: +.PP +.Vb 1 +\& nsComment = "Some Random Comment" +.Ve +.PP +Other supported extensions in this category are: \fBnsBaseUrl\fR, +\&\fBnsRevocationUrl\fR, \fBnsCaRevocationUrl\fR, \fBnsRenewalUrl\fR, \fBnsCaPolicyUrl\fR +and \fBnsSslServerName\fR. +.SS "Netscape Certificate Type" +.IX Subsection "Netscape Certificate Type" +This is a multi-valued extensions which consists of a list of flags to be +included. It was used to indicate the purposes for which a certificate could +be used. The basicConstraints, keyUsage and extended key usage extensions are +now used instead. +.PP +Acceptable values for nsCertType are: \fBclient\fR, \fBserver\fR, \fBemail\fR, +\&\fBobjsign\fR, \fBreserved\fR, \fBsslCA\fR, \fBemailCA\fR, \fBobjCA\fR. +.SH "ARBITRARY EXTENSIONS" +.IX Header "ARBITRARY EXTENSIONS" +If an extension is not supported by the OpenSSL code then it must be encoded +using the arbitrary extension format. It is also possible to use the arbitrary +format for supported extensions. Extreme care should be taken to ensure that +the data is formatted correctly for the given extension type. +.PP +There are two ways to encode arbitrary extensions. +.PP +The first way is to use the word \s-1ASN1\s0 followed by the extension content +using the same syntax as \fBASN1_generate_nconf\fR\|(3). +For example: +.PP +.Vb 1 +\& 1.2.3.4=critical,ASN1:UTF8String:Some random data +\& +\& 1.2.3.4=ASN1:SEQUENCE:seq_sect +\& +\& [seq_sect] +\& +\& field1 = UTF8:field1 +\& field2 = UTF8:field2 +.Ve +.PP +It is also possible to use the word \s-1DER\s0 to include the raw encoded data in any +extension. +.PP +.Vb 2 +\& 1.2.3.4=critical,DER:01:02:03:04 +\& 1.2.3.4=DER:01020304 +.Ve +.PP +The value following \s-1DER\s0 is a hex dump of the \s-1DER\s0 encoding of the extension +Any extension can be placed in this form to override the default behaviour. +For example: +.PP +.Vb 1 +\& basicConstraints=critical,DER:00:01:02:03 +.Ve +.SH "WARNINGS" +.IX Header "WARNINGS" +There is no guarantee that a specific implementation will process a given +extension. It may therefore be sometimes possible to use certificates for +purposes prohibited by their extensions because a specific application does +not recognize or honour the values of the relevant extensions. +.PP +The \s-1DER\s0 and \s-1ASN1\s0 options should be used with caution. It is possible to create +totally invalid extensions if they are not used carefully. +.SH "NOTES" +.IX Header "NOTES" +If an extension is multi-value and a field value must contain a comma the long +form must be used otherwise the comma would be misinterpreted as a field +separator. For example: +.PP +.Vb 1 +\& subjectAltName=URI:ldap://somehost.com/CN=foo,OU=bar +.Ve +.PP +will produce an error but the equivalent form: +.PP +.Vb 1 +\& subjectAltName=@subject_alt_section +\& +\& [subject_alt_section] +\& subjectAltName=URI:ldap://somehost.com/CN=foo,OU=bar +.Ve +.PP +is valid. +.PP +Due to the behaviour of the OpenSSL \fBconf\fR library the same field name +can only occur once in a section. This means that: +.PP +.Vb 1 +\& subjectAltName=@alt_section +\& +\& [alt_section] +\& +\& email=steve@here +\& email=steve@there +.Ve +.PP +will only recognize the last value. This can be worked around by using the form: +.PP +.Vb 1 +\& [alt_section] +\& +\& email.1=steve@here +\& email.2=steve@there +.Ve +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fBreq\fR\|(1), \fBca\fR\|(1), \fBx509\fR\|(1), +\&\fBASN1_generate_nconf\fR\|(3) +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright 2004\-2019 The OpenSSL Project Authors. All Rights Reserved. +.PP +Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file \s-1LICENSE\s0 in the source distribution or at +<https://www.openssl.org/source/license.html>. diff --git a/secure/lib/libcrypto/man/man7/Ed25519.7 b/secure/lib/libcrypto/man/man7/Ed25519.7 new file mode 100644 index 0000000000000..20fe73d686ec4 --- /dev/null +++ b/secure/lib/libcrypto/man/man7/Ed25519.7 @@ -0,0 +1,221 @@ +.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.40) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "ED25519 7" +.TH ED25519 7 "2019-09-10" "1.1.1d" "OpenSSL" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +Ed25519, Ed448 \&\- EVP_PKEY Ed25519 and Ed448 support +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The \fBEd25519\fR and \fBEd448\fR \s-1EVP_PKEY\s0 implementation supports key generation, +one-shot digest sign and digest verify using PureEdDSA and \fBEd25519\fR or \fBEd448\fR +(see \s-1RFC8032\s0). It has associated private and public key formats compatible with +draft\-ietf\-curdle\-pkix\-04. +.PP +No additional parameters can be set during key generation, one-shot signing or +verification. In particular, because PureEdDSA is used, a digest must \fB\s-1NOT\s0\fR be +specified when signing or verifying. +.SH "NOTES" +.IX Header "NOTES" +The PureEdDSA algorithm does not support the streaming mechanism +of other signature algorithms using, for example, \fBEVP_DigestUpdate()\fR. +The message to sign or verify must be passed using the one-shot +\&\fBEVP_DigestSign()\fR and \fBEVP_DigestVerify()\fR functions. +.PP +When calling \fBEVP_DigestSignInit()\fR or \fBEVP_DigestVerifyInit()\fR, the +digest \fBtype\fR parameter \fB\s-1MUST\s0\fR be set to \fB\s-1NULL\s0\fR. +.PP +Applications wishing to sign certificates (or other structures such as +CRLs or certificate requests) using Ed25519 or Ed448 can either use \fBX509_sign()\fR +or \fBX509_sign_ctx()\fR in the usual way. +.PP +A context for the \fBEd25519\fR algorithm can be obtained by calling: +.PP +.Vb 1 +\& EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_ED25519, NULL); +.Ve +.PP +For the \fBEd448\fR algorithm a context can be obtained by calling: +.PP +.Vb 1 +\& EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_ED448, NULL); +.Ve +.PP +Ed25519 or Ed448 private keys can be set directly using +\&\fBEVP_PKEY_new_raw_private_key\fR\|(3) or loaded from a PKCS#8 private key file +using \fBPEM_read_bio_PrivateKey\fR\|(3) (or similar function). Completely new keys +can also be generated (see the example below). Setting a private key also sets +the associated public key. +.PP +Ed25519 or Ed448 public keys can be set directly using +\&\fBEVP_PKEY_new_raw_public_key\fR\|(3) or loaded from a SubjectPublicKeyInfo +structure in a \s-1PEM\s0 file using \fBPEM_read_bio_PUBKEY\fR\|(3) (or similar function). +.PP +Ed25519 and Ed448 can be tested within \fBspeed\fR\|(1) application since version 1.1.1. +Valid algorithm names are \fBed25519\fR, \fBed448\fR and \fBeddsa\fR. If \fBeddsa\fR is +specified, then both Ed25519 and Ed448 are benchmarked. +.SH "EXAMPLES" +.IX Header "EXAMPLES" +This example generates an \fB\s-1ED25519\s0\fR private key and writes it to standard +output in \s-1PEM\s0 format: +.PP +.Vb 9 +\& #include <openssl/evp.h> +\& #include <openssl/pem.h> +\& ... +\& EVP_PKEY *pkey = NULL; +\& EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_ED25519, NULL); +\& EVP_PKEY_keygen_init(pctx); +\& EVP_PKEY_keygen(pctx, &pkey); +\& EVP_PKEY_CTX_free(pctx); +\& PEM_write_PrivateKey(stdout, pkey, NULL, NULL, 0, NULL, NULL); +.Ve +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fBEVP_PKEY_CTX_new\fR\|(3), +\&\fBEVP_PKEY_keygen\fR\|(3), +\&\fBEVP_DigestSignInit\fR\|(3), +\&\fBEVP_DigestVerifyInit\fR\|(3), +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright 2017\-2019 The OpenSSL Project Authors. All Rights Reserved. +.PP +Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file \s-1LICENSE\s0 in the source distribution or at +<https://www.openssl.org/source/license.html>. diff --git a/secure/lib/libcrypto/man/man7/Makefile b/secure/lib/libcrypto/man/man7/Makefile new file mode 100644 index 0000000000000..34c0ff786be68 --- /dev/null +++ b/secure/lib/libcrypto/man/man7/Makefile @@ -0,0 +1,20 @@ +# $FreeBSD$ +MAN+= Ed25519.7 +MAN+= RAND.7 +MAN+= RAND_DRBG.7 +MAN+= RSA-PSS.7 +MAN+= SM2.7 +MAN+= X25519.7 +MAN+= bio.7 +# MAN+= crypto.7 +MAN+= ct.7 +MAN+= des_modes.7 +MAN+= evp.7 +MAN+= ossl_store-file.7 +MAN+= ossl_store.7 +MAN+= passphrase-encoding.7 +MAN+= scrypt.7 +MAN+= ssl.7 +MAN+= x509.7 +MLINKS+= Ed25519.7 Ed448.7 +MLINKS+= X25519.7 X448.7 diff --git a/secure/lib/libcrypto/man/man7/RAND.7 b/secure/lib/libcrypto/man/man7/RAND.7 new file mode 100644 index 0000000000000..9352e577af896 --- /dev/null +++ b/secure/lib/libcrypto/man/man7/RAND.7 @@ -0,0 +1,210 @@ +.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.40) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "RAND 7" +.TH RAND 7 "2019-09-10" "1.1.1d" "OpenSSL" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +RAND \&\- the OpenSSL random generator +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +Random numbers are a vital part of cryptography, they are needed to provide +unpredictability for tasks like key generation, creating salts, and many more. +Software-based generators must be seeded with external randomness before they +can be used as a cryptographically-secure pseudo-random number generator +(\s-1CSPRNG\s0). +The availability of common hardware with special instructions and +modern operating systems, which may use items such as interrupt jitter +and network packet timings, can be reasonable sources of seeding material. +.PP +OpenSSL comes with a default implementation of the \s-1RAND API\s0 which is based on +the deterministic random bit generator (\s-1DRBG\s0) model as described in +[\s-1NIST SP 800\-90A\s0 Rev. 1]. The default random generator will initialize +automatically on first use and will be fully functional without having +to be initialized ('seeded') explicitly. +It seeds and reseeds itself automatically using trusted random sources +provided by the operating system. +.PP +As a normal application developer, you do not have to worry about any details, +just use \fBRAND_bytes\fR\|(3) to obtain random data. +Having said that, there is one important rule to obey: Always check the error +return value of \fBRAND_bytes\fR\|(3) and do not take randomness for granted. +Although (re\-)seeding is automatic, it can fail because no trusted random source +is available or the trusted source(s) temporarily fail to provide sufficient +random seed material. +In this case the \s-1CSPRNG\s0 enters an error state and ceases to provide output, +until it is able to recover from the error by reseeding itself. +For more details on reseeding and error recovery, see \s-1\fBRAND_DRBG\s0\fR\|(7). +.PP +For values that should remain secret, you can use \fBRAND_priv_bytes\fR\|(3) +instead. +This method does not provide 'better' randomness, it uses the same type of \s-1CSPRNG.\s0 +The intention behind using a dedicated \s-1CSPRNG\s0 exclusively for private +values is that none of its output should be visible to an attacker (e.g., +used as salt value), in order to reveal as little information as +possible about its internal state, and that a compromise of the \*(L"public\*(R" +\&\s-1CSPRNG\s0 instance will not affect the secrecy of these private values. +.PP +In the rare case where the default implementation does not satisfy your special +requirements, there are two options: +.IP "\(bu" 2 +Replace the default \s-1RAND\s0 method by your own \s-1RAND\s0 method using +\&\fBRAND_set_rand_method\fR\|(3). +.IP "\(bu" 2 +Modify the default settings of the OpenSSL \s-1RAND\s0 method by modifying the security +parameters of the underlying \s-1DRBG,\s0 which is described in detail in \s-1\fBRAND_DRBG\s0\fR\|(7). +.PP +Changing the default random generator or its default parameters should be necessary +only in exceptional cases and is not recommended, unless you have a profound knowledge +of cryptographic principles and understand the implications of your changes. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fBRAND_add\fR\|(3), +\&\fBRAND_bytes\fR\|(3), +\&\fBRAND_priv_bytes\fR\|(3), +\&\fBRAND_get_rand_method\fR\|(3), +\&\fBRAND_set_rand_method\fR\|(3), +\&\fBRAND_OpenSSL\fR\|(3), +\&\s-1\fBRAND_DRBG\s0\fR\|(7) +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright 2018\-2019 The OpenSSL Project Authors. All Rights Reserved. +.PP +Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file \s-1LICENSE\s0 in the source distribution or at +<https://www.openssl.org/source/license.html>. diff --git a/secure/lib/libcrypto/man/man7/RAND_DRBG.7 b/secure/lib/libcrypto/man/man7/RAND_DRBG.7 new file mode 100644 index 0000000000000..aab4f1dbf8568 --- /dev/null +++ b/secure/lib/libcrypto/man/man7/RAND_DRBG.7 @@ -0,0 +1,396 @@ +.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.40) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "RAND_DRBG 7" +.TH RAND_DRBG 7 "2019-09-10" "1.1.1d" "OpenSSL" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +RAND_DRBG \- the deterministic random bit generator +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +.Vb 1 +\& #include <openssl/rand_drbg.h> +.Ve +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The default OpenSSL \s-1RAND\s0 method is based on the \s-1RAND_DRBG\s0 class, +which implements a deterministic random bit generator (\s-1DRBG\s0). +A \s-1DRBG\s0 is a certain type of cryptographically-secure pseudo-random +number generator (\s-1CSPRNG\s0), which is described in +[\s-1NIST SP 800\-90A\s0 Rev. 1]. +.PP +While the \s-1RAND API\s0 is the 'frontend' which is intended to be used by +application developers for obtaining random bytes, the \s-1RAND_DRBG API\s0 +serves as the 'backend', connecting the former with the operating +systems's entropy sources and providing access to the \s-1DRBG\s0's +configuration parameters. +.SS "Disclaimer" +.IX Subsection "Disclaimer" +Unless you have very specific requirements for your random generator, +it is in general not necessary to utilize the \s-1RAND_DRBG API\s0 directly. +The usual way to obtain random bytes is to use \fBRAND_bytes\fR\|(3) or +\&\fBRAND_priv_bytes\fR\|(3), see also \s-1\fBRAND\s0\fR\|(7). +.SS "Typical Use Cases" +.IX Subsection "Typical Use Cases" +Typical examples for such special use cases are the following: +.IP "\(bu" 2 +You want to use your own private \s-1DRBG\s0 instances. +Multiple \s-1DRBG\s0 instances which are accessed only by a single thread provide +additional security (because their internal states are independent) and +better scalability in multithreaded applications (because they don't need +to be locked). +.IP "\(bu" 2 +You need to integrate a previously unsupported entropy source. +.IP "\(bu" 2 +You need to change the default settings of the standard OpenSSL \s-1RAND\s0 +implementation to meet specific requirements. +.SH "CHAINING" +.IX Header "CHAINING" +A \s-1DRBG\s0 instance can be used as the entropy source of another \s-1DRBG\s0 instance, +provided it has itself access to a valid entropy source. +The \s-1DRBG\s0 instance which acts as entropy source is called the \fIparent\fR \s-1DRBG,\s0 +the other instance the \fIchild\fR \s-1DRBG.\s0 +.PP +This is called chaining. A chained \s-1DRBG\s0 instance is created by passing +a pointer to the parent \s-1DRBG\s0 as argument to the \fBRAND_DRBG_new()\fR call. +It is possible to create chains of more than two \s-1DRBG\s0 in a row. +.SH "THE THREE SHARED DRBG INSTANCES" +.IX Header "THE THREE SHARED DRBG INSTANCES" +Currently, there are three shared \s-1DRBG\s0 instances, +the <master>, <public>, and <private> \s-1DRBG.\s0 +While the <master> \s-1DRBG\s0 is a single global instance, the <public> and <private> +\&\s-1DRBG\s0 are created per thread and accessed through thread-local storage. +.PP +By default, the functions \fBRAND_bytes\fR\|(3) and \fBRAND_priv_bytes\fR\|(3) use +the thread-local <public> and <private> \s-1DRBG\s0 instance, respectively. +.SS "The <master> \s-1DRBG\s0 instance" +.IX Subsection "The <master> DRBG instance" +The <master> \s-1DRBG\s0 is not used directly by the application, only for reseeding +the two other two \s-1DRBG\s0 instances. It reseeds itself by obtaining randomness +either from os entropy sources or by consuming randomness which was added +previously by \fBRAND_add\fR\|(3). +.SS "The <public> \s-1DRBG\s0 instance" +.IX Subsection "The <public> DRBG instance" +This instance is used per default by \fBRAND_bytes\fR\|(3). +.SS "The <private> \s-1DRBG\s0 instance" +.IX Subsection "The <private> DRBG instance" +This instance is used per default by \fBRAND_priv_bytes\fR\|(3) +.SH "LOCKING" +.IX Header "LOCKING" +The <master> \s-1DRBG\s0 is intended to be accessed concurrently for reseeding +by its child \s-1DRBG\s0 instances. The necessary locking is done internally. +It is \fInot\fR thread-safe to access the <master> \s-1DRBG\s0 directly via the +\&\s-1RAND_DRBG\s0 interface. +The <public> and <private> \s-1DRBG\s0 are thread-local, i.e. there is an +instance of each per thread. So they can safely be accessed without +locking via the \s-1RAND_DRBG\s0 interface. +.PP +Pointers to these \s-1DRBG\s0 instances can be obtained using +\&\fBRAND_DRBG_get0_master()\fR, +\&\fBRAND_DRBG_get0_public()\fR, and +\&\fBRAND_DRBG_get0_private()\fR, respectively. +Note that it is not allowed to store a pointer to one of the thread-local +\&\s-1DRBG\s0 instances in a variable or other memory location where it will be +accessed and used by multiple threads. +.PP +All other \s-1DRBG\s0 instances created by an application don't support locking, +because they are intended to be used by a single thread. +Instead of accessing a single \s-1DRBG\s0 instance concurrently from different +threads, it is recommended to instantiate a separate \s-1DRBG\s0 instance per +thread. Using the <master> \s-1DRBG\s0 as entropy source for multiple \s-1DRBG\s0 +instances on different threads is thread-safe, because the \s-1DRBG\s0 instance +will lock the <master> \s-1DRBG\s0 automatically for obtaining random input. +.SH "THE OVERALL PICTURE" +.IX Header "THE OVERALL PICTURE" +The following picture gives an overview over how the \s-1DRBG\s0 instances work +together and are being used. +.PP +.Vb 10 +\& +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ +\& | os entropy sources | +\& +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ +\& | +\& v +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ +\& RAND_add() ==> <master> <\-| shared DRBG (with locking) | +\& / \e +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ +\& / \e +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ +\& <public> <private> <\- | per\-thread DRBG instances | +\& | | +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ +\& v v +\& RAND_bytes() RAND_priv_bytes() +\& | ^ +\& | | +\& +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ +\& | general purpose | | used for secrets like session keys | +\& | random generator | | and private keys for certificates | +\& +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ +.Ve +.PP +The usual way to obtain random bytes is to call RAND_bytes(...) or +RAND_priv_bytes(...). These calls are roughly equivalent to calling +RAND_DRBG_bytes(<public>, ...) and RAND_DRBG_bytes(<private>, ...), +respectively. The method \fBRAND_DRBG_bytes\fR\|(3) is a convenience method +wrapping the \fBRAND_DRBG_generate\fR\|(3) function, which serves the actual +request for random data. +.SH "RESEEDING" +.IX Header "RESEEDING" +A \s-1DRBG\s0 instance seeds itself automatically, pulling random input from +its entropy source. The entropy source can be either a trusted operating +system entropy source, or another \s-1DRBG\s0 with access to such a source. +.PP +Automatic reseeding occurs after a predefined number of generate requests. +The selection of the trusted entropy sources is configured at build +time using the \-\-with\-rand\-seed option. The following sections explain +the reseeding process in more detail. +.SS "Automatic Reseeding" +.IX Subsection "Automatic Reseeding" +Before satisfying a generate request (\fBRAND_DRBG_generate\fR\|(3)), the \s-1DRBG\s0 +reseeds itself automatically, if one of the following conditions holds: +.PP +\&\- the \s-1DRBG\s0 was not instantiated (=seeded) yet or has been uninstantiated. +.PP +\&\- the number of generate requests since the last reseeding exceeds a +certain threshold, the so called \fIreseed_interval\fR. +This behaviour can be disabled by setting the \fIreseed_interval\fR to 0. +.PP +\&\- the time elapsed since the last reseeding exceeds a certain time +interval, the so called \fIreseed_time_interval\fR. +This can be disabled by setting the \fIreseed_time_interval\fR to 0. +.PP +\&\- the \s-1DRBG\s0 is in an error state. +.PP +\&\fBNote\fR: An error state is entered if the entropy source fails while +the \s-1DRBG\s0 is seeding or reseeding. +The last case ensures that the \s-1DRBG\s0 automatically recovers +from the error as soon as the entropy source is available again. +.SS "Manual Reseeding" +.IX Subsection "Manual Reseeding" +In addition to automatic reseeding, the caller can request an immediate +reseeding of the \s-1DRBG\s0 with fresh entropy by setting the +\&\fIprediction resistance\fR parameter to 1 when calling \fBRAND_DRBG_generate\fR\|(3). +.PP +The document [\s-1NIST SP 800\-90C\s0] describes prediction resistance requests +in detail and imposes strict conditions on the entropy sources that are +approved for providing prediction resistance. +Since the default \s-1DRBG\s0 implementation does not have access to such an approved +entropy source, a request for prediction resistance will currently always fail. +In other words, prediction resistance is currently not supported yet by the \s-1DRBG.\s0 +.PP +For the three shared DRBGs (and only for these) there is another way to +reseed them manually: +If \fBRAND_add\fR\|(3) is called with a positive \fIrandomness\fR argument +(or \fBRAND_seed\fR\|(3)), then this will immediately reseed the <master> \s-1DRBG.\s0 +The <public> and <private> \s-1DRBG\s0 will detect this on their next generate +call and reseed, pulling randomness from <master>. +.PP +The last feature has been added to support the common practice used with +previous OpenSSL versions to call \fBRAND_add()\fR before calling \fBRAND_bytes()\fR. +.SS "Entropy Input vs. Additional Data" +.IX Subsection "Entropy Input vs. Additional Data" +The \s-1DRBG\s0 distinguishes two different types of random input: \fIentropy\fR, +which comes from a trusted source, and \fIadditional input\fR', +which can optionally be added by the user and is considered untrusted. +It is possible to add \fIadditional input\fR not only during reseeding, +but also for every generate request. +This is in fact done automatically by \fBRAND_DRBG_bytes\fR\|(3). +.SS "Configuring the Random Seed Source" +.IX Subsection "Configuring the Random Seed Source" +In most cases OpenSSL will automatically choose a suitable seed source +for automatically seeding and reseeding its <master> \s-1DRBG.\s0 In some cases +however, it will be necessary to explicitly specify a seed source during +configuration, using the \-\-with\-rand\-seed option. For more information, +see the \s-1INSTALL\s0 instructions. There are also operating systems where no +seed source is available and automatic reseeding is disabled by default. +.PP +The following two sections describe the reseeding process of the master +\&\s-1DRBG,\s0 depending on whether automatic reseeding is available or not. +.SS "Reseeding the master \s-1DRBG\s0 with automatic seeding enabled" +.IX Subsection "Reseeding the master DRBG with automatic seeding enabled" +Calling \fBRAND_poll()\fR or \fBRAND_add()\fR is not necessary, because the \s-1DRBG\s0 +pulls the necessary entropy from its source automatically. +However, both calls are permitted, and do reseed the \s-1RNG.\s0 +.PP +\&\fBRAND_add()\fR can be used to add both kinds of random input, depending on the +value of the \fBrandomness\fR argument: +.IP "randomness == 0:" 4 +.IX Item "randomness == 0:" +The random bytes are mixed as additional input into the current state of +the \s-1DRBG.\s0 +Mixing in additional input is not considered a full reseeding, hence the +reseed counter is not reset. +.IP "randomness > 0:" 4 +.IX Item "randomness > 0:" +The random bytes are used as entropy input for a full reseeding +(resp. reinstantiation) if the \s-1DRBG\s0 is instantiated +(resp. uninstantiated or in an error state). +The number of random bits required for reseeding is determined by the +security strength of the \s-1DRBG.\s0 Currently it defaults to 256 bits (32 bytes). +It is possible to provide less randomness than required. +In this case the missing randomness will be obtained by pulling random input +from the trusted entropy sources. +.SS "Reseeding the master \s-1DRBG\s0 with automatic seeding disabled" +.IX Subsection "Reseeding the master DRBG with automatic seeding disabled" +Calling \fBRAND_poll()\fR will always fail. +.PP +\&\fBRAND_add()\fR needs to be called for initial seeding and periodic reseeding. +At least 48 bytes (384 bits) of randomness have to be provided, otherwise +the (re\-)seeding of the \s-1DRBG\s0 will fail. This corresponds to one and a half +times the security strength of the \s-1DRBG.\s0 The extra half is used for the +nonce during instantiation. +.PP +More precisely, the number of bytes needed for seeding depend on the +\&\fIsecurity strength\fR of the \s-1DRBG,\s0 which is set to 256 by default. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fBRAND_DRBG_bytes\fR\|(3), +\&\fBRAND_DRBG_generate\fR\|(3), +\&\fBRAND_DRBG_reseed\fR\|(3), +\&\fBRAND_DRBG_get0_master\fR\|(3), +\&\fBRAND_DRBG_get0_public\fR\|(3), +\&\fBRAND_DRBG_get0_private\fR\|(3), +\&\fBRAND_DRBG_set_reseed_interval\fR\|(3), +\&\fBRAND_DRBG_set_reseed_time_interval\fR\|(3), +\&\fBRAND_DRBG_set_reseed_defaults\fR\|(3), +\&\s-1\fBRAND\s0\fR\|(7), +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright 2017\-2018 The OpenSSL Project Authors. All Rights Reserved. +.PP +Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file \s-1LICENSE\s0 in the source distribution or at +<https://www.openssl.org/source/license.html>. diff --git a/secure/lib/libcrypto/man/man7/RSA-PSS.7 b/secure/lib/libcrypto/man/man7/RSA-PSS.7 new file mode 100644 index 0000000000000..6be71bad5ba0e --- /dev/null +++ b/secure/lib/libcrypto/man/man7/RSA-PSS.7 @@ -0,0 +1,189 @@ +.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.40) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "RSA-PSS 7" +.TH RSA-PSS 7 "2019-09-10" "1.1.1d" "OpenSSL" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +RSA\-PSS \- EVP_PKEY RSA\-PSS algorithm support +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The \fBRSA-PSS\fR \s-1EVP_PKEY\s0 implementation is a restricted version of the \s-1RSA\s0 +algorithm which only supports signing, verification and key generation +using \s-1PSS\s0 padding modes with optional parameter restrictions. +.PP +It has associated private key and public key formats. +.PP +This algorithm shares several control operations with the \fB\s-1RSA\s0\fR algorithm +but with some restrictions described below. +.SS "Signing and Verification" +.IX Subsection "Signing and Verification" +Signing and verification is similar to the \fB\s-1RSA\s0\fR algorithm except the +padding mode is always \s-1PSS.\s0 If the key in use has parameter restrictions then +the corresponding signature parameters are set to the restrictions: +for example, if the key can only be used with digest \s-1SHA256, MGF1 SHA256\s0 +and minimum salt length 32 then the digest, \s-1MGF1\s0 digest and salt length +will be set to \s-1SHA256, SHA256\s0 and 32 respectively. +.SS "Key Generation" +.IX Subsection "Key Generation" +By default no parameter restrictions are placed on the generated key. +.SH "NOTES" +.IX Header "NOTES" +The public key format is documented in \s-1RFC4055.\s0 +.PP +The PKCS#8 private key format used for RSA-PSS keys is similar to the \s-1RSA\s0 +format except it uses the \fBid-RSASSA-PSS\fR \s-1OID\s0 and the parameters field, if +present, restricts the key parameters in the same way as the public key. +.SH "CONFORMING TO" +.IX Header "CONFORMING TO" +\&\s-1RFC 4055\s0 +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fBEVP_PKEY_CTX_set_rsa_pss_keygen_md\fR\|(3), +\&\fBEVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md\fR\|(3), +\&\fBEVP_PKEY_CTX_set_rsa_pss_keygen_saltlen\fR\|(3), +\&\fBEVP_PKEY_CTX_new\fR\|(3), +\&\fBEVP_PKEY_CTX_ctrl_str\fR\|(3), +\&\fBEVP_PKEY_derive\fR\|(3) +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright 2017\-2018 The OpenSSL Project Authors. All Rights Reserved. +.PP +Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file \s-1LICENSE\s0 in the source distribution or at +<https://www.openssl.org/source/license.html>. diff --git a/secure/lib/libcrypto/man/man7/SM2.7 b/secure/lib/libcrypto/man/man7/SM2.7 new file mode 100644 index 0000000000000..228278eb46f08 --- /dev/null +++ b/secure/lib/libcrypto/man/man7/SM2.7 @@ -0,0 +1,217 @@ +.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.40) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "SM2 7" +.TH SM2 7 "2019-09-10" "1.1.1d" "OpenSSL" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +SM2 \- Chinese SM2 signature and encryption algorithm support +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The \fB\s-1SM2\s0\fR algorithm was first defined by the Chinese national standard \s-1GM/T +0003\-2012\s0 and was later standardized by \s-1ISO\s0 as \s-1ISO/IEC 14888.\s0 \fB\s-1SM2\s0\fR is actually +an elliptic curve based algorithm. The current implementation in OpenSSL supports +both signature and encryption schemes via the \s-1EVP\s0 interface. +.PP +When doing the \fB\s-1SM2\s0\fR signature algorithm, it requires a distinguishing identifier +to form the message prefix which is hashed before the real message is hashed. +.SH "NOTES" +.IX Header "NOTES" +\&\fB\s-1SM2\s0\fR signatures can be generated by using the 'DigestSign' series of APIs, for +instance, \fBEVP_DigestSignInit()\fR, \fBEVP_DigestSignUpdate()\fR and \fBEVP_DigestSignFinal()\fR. +Ditto for the verification process by calling the 'DigestVerify' series of APIs. +.PP +There are several special steps that need to be done before computing an \fB\s-1SM2\s0\fR +signature. +.PP +The \fB\s-1EVP_PKEY\s0\fR structure will default to using \s-1ECDSA\s0 for signatures when it is +created. It should be set to \fB\s-1EVP_PKEY_SM2\s0\fR by calling: +.PP +.Vb 1 +\& EVP_PKEY_set_alias_type(pkey, EVP_PKEY_SM2); +.Ve +.PP +Then an \s-1ID\s0 should be set by calling: +.PP +.Vb 1 +\& EVP_PKEY_CTX_set1_id(pctx, id, id_len); +.Ve +.PP +When calling the \fBEVP_DigestSignInit()\fR or \fBEVP_DigestVerifyInit()\fR functions, a +pre-allocated \fB\s-1EVP_PKEY_CTX\s0\fR should be assigned to the \fB\s-1EVP_MD_CTX\s0\fR. This is +done by calling: +.PP +.Vb 1 +\& EVP_MD_CTX_set_pkey_ctx(mctx, pctx); +.Ve +.PP +And normally there is no need to pass a \fBpctx\fR parameter to \fBEVP_DigestSignInit()\fR +or \fBEVP_DigestVerifyInit()\fR in such a scenario. +.SH "EXAMPLES" +.IX Header "EXAMPLES" +This example demonstrates the calling sequence for using an \fB\s-1EVP_PKEY\s0\fR to verify +a message with the \s-1SM2\s0 signature algorithm and the \s-1SM3\s0 hash algorithm: +.PP +.Vb 1 +\& #include <openssl/evp.h> +\& +\& /* obtain an EVP_PKEY using whatever methods... */ +\& EVP_PKEY_set_alias_type(pkey, EVP_PKEY_SM2); +\& mctx = EVP_MD_CTX_new(); +\& pctx = EVP_PKEY_CTX_new(pkey, NULL); +\& EVP_PKEY_CTX_set1_id(pctx, id, id_len); +\& EVP_MD_CTX_set_pkey_ctx(mctx, pctx);; +\& EVP_DigestVerifyInit(mctx, NULL, EVP_sm3(), NULL, pkey); +\& EVP_DigestVerifyUpdate(mctx, msg, msg_len); +\& EVP_DigestVerifyFinal(mctx, sig, sig_len) +.Ve +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fBEVP_PKEY_CTX_new\fR\|(3), +\&\fBEVP_PKEY_set_alias_type\fR\|(3), +\&\fBEVP_DigestSignInit\fR\|(3), +\&\fBEVP_DigestVerifyInit\fR\|(3), +\&\fBEVP_PKEY_CTX_set1_id\fR\|(3), +\&\fBEVP_MD_CTX_set_pkey_ctx\fR\|(3) +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright 2018\-2019 The OpenSSL Project Authors. All Rights Reserved. +.PP +Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file \s-1LICENSE\s0 in the source distribution or at +<https://www.openssl.org/source/license.html>. diff --git a/secure/lib/libcrypto/man/man7/X25519.7 b/secure/lib/libcrypto/man/man7/X25519.7 new file mode 100644 index 0000000000000..4fcedf08dddde --- /dev/null +++ b/secure/lib/libcrypto/man/man7/X25519.7 @@ -0,0 +1,208 @@ +.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.40) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "X25519 7" +.TH X25519 7 "2019-09-10" "1.1.1d" "OpenSSL" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +X25519, X448 \&\- EVP_PKEY X25519 and X448 support +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The \fBX25519\fR and \fBX448\fR \s-1EVP_PKEY\s0 implementation supports key generation and +key derivation using \fBX25519\fR and \fBX448\fR. It has associated private and public +key formats compatible with draft\-ietf\-curdle\-pkix\-03. +.PP +No additional parameters can be set during key generation. +.PP +The peer public key must be set using \fBEVP_PKEY_derive_set_peer()\fR when +performing key derivation. +.SH "NOTES" +.IX Header "NOTES" +A context for the \fBX25519\fR algorithm can be obtained by calling: +.PP +.Vb 1 +\& EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_X25519, NULL); +.Ve +.PP +For the \fBX448\fR algorithm a context can be obtained by calling: +.PP +.Vb 1 +\& EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_X448, NULL); +.Ve +.PP +X25519 or X448 private keys can be set directly using +\&\fBEVP_PKEY_new_raw_private_key\fR\|(3) or loaded from a PKCS#8 private key file +using \fBPEM_read_bio_PrivateKey\fR\|(3) (or similar function). Completely new keys +can also be generated (see the example below). Setting a private key also sets +the associated public key. +.PP +X25519 or X448 public keys can be set directly using +\&\fBEVP_PKEY_new_raw_public_key\fR\|(3) or loaded from a SubjectPublicKeyInfo +structure in a \s-1PEM\s0 file using \fBPEM_read_bio_PUBKEY\fR\|(3) (or similar function). +.SH "EXAMPLES" +.IX Header "EXAMPLES" +This example generates an \fBX25519\fR private key and writes it to standard +output in \s-1PEM\s0 format: +.PP +.Vb 9 +\& #include <openssl/evp.h> +\& #include <openssl/pem.h> +\& ... +\& EVP_PKEY *pkey = NULL; +\& EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_X25519, NULL); +\& EVP_PKEY_keygen_init(pctx); +\& EVP_PKEY_keygen(pctx, &pkey); +\& EVP_PKEY_CTX_free(pctx); +\& PEM_write_PrivateKey(stdout, pkey, NULL, NULL, 0, NULL, NULL); +.Ve +.PP +The key derivation example in \fBEVP_PKEY_derive\fR\|(3) can be used with +\&\fBX25519\fR and \fBX448\fR. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fBEVP_PKEY_CTX_new\fR\|(3), +\&\fBEVP_PKEY_keygen\fR\|(3), +\&\fBEVP_PKEY_derive\fR\|(3), +\&\fBEVP_PKEY_derive_set_peer\fR\|(3) +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright 2017\-2019 The OpenSSL Project Authors. All Rights Reserved. +.PP +Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file \s-1LICENSE\s0 in the source distribution or at +<https://www.openssl.org/source/license.html>. diff --git a/secure/lib/libcrypto/man/man7/bio.7 b/secure/lib/libcrypto/man/man7/bio.7 new file mode 100644 index 0000000000000..2d16323f72a20 --- /dev/null +++ b/secure/lib/libcrypto/man/man7/bio.7 @@ -0,0 +1,217 @@ +.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.40) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "BIO 7" +.TH BIO 7 "2019-09-10" "1.1.1d" "OpenSSL" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +bio \- Basic I/O abstraction +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +.Vb 1 +\& #include <openssl/bio.h> +.Ve +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +A \s-1BIO\s0 is an I/O abstraction, it hides many of the underlying I/O +details from an application. If an application uses a \s-1BIO\s0 for its +I/O it can transparently handle \s-1SSL\s0 connections, unencrypted network +connections and file I/O. +.PP +There are two type of \s-1BIO,\s0 a source/sink \s-1BIO\s0 and a filter \s-1BIO.\s0 +.PP +As its name implies a source/sink \s-1BIO\s0 is a source and/or sink of data, +examples include a socket \s-1BIO\s0 and a file \s-1BIO.\s0 +.PP +A filter \s-1BIO\s0 takes data from one \s-1BIO\s0 and passes it through to +another, or the application. The data may be left unmodified (for +example a message digest \s-1BIO\s0) or translated (for example an +encryption \s-1BIO\s0). The effect of a filter \s-1BIO\s0 may change according +to the I/O operation it is performing: for example an encryption +\&\s-1BIO\s0 will encrypt data if it is being written to and decrypt data +if it is being read from. +.PP +BIOs can be joined together to form a chain (a single \s-1BIO\s0 is a chain +with one component). A chain normally consist of one source/sink +\&\s-1BIO\s0 and one or more filter BIOs. Data read from or written to the +first \s-1BIO\s0 then traverses the chain to the end (normally a source/sink +\&\s-1BIO\s0). +.PP +Some BIOs (such as memory BIOs) can be used immediately after calling +\&\fBBIO_new()\fR. Others (such as file BIOs) need some additional initialization, +and frequently a utility function exists to create and initialize such BIOs. +.PP +If \fBBIO_free()\fR is called on a \s-1BIO\s0 chain it will only free one \s-1BIO\s0 resulting +in a memory leak. +.PP +Calling \fBBIO_free_all()\fR on a single \s-1BIO\s0 has the same effect as calling +\&\fBBIO_free()\fR on it other than the discarded return value. +.PP +Normally the \fBtype\fR argument is supplied by a function which returns a +pointer to a \s-1BIO_METHOD.\s0 There is a naming convention for such functions: +a source/sink \s-1BIO\s0 is normally called BIO_s_*() and a filter \s-1BIO\s0 +BIO_f_*(); +.SH "EXAMPLES" +.IX Header "EXAMPLES" +Create a memory \s-1BIO:\s0 +.PP +.Vb 1 +\& BIO *mem = BIO_new(BIO_s_mem()); +.Ve +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fBBIO_ctrl\fR\|(3), +\&\fBBIO_f_base64\fR\|(3), \fBBIO_f_buffer\fR\|(3), +\&\fBBIO_f_cipher\fR\|(3), \fBBIO_f_md\fR\|(3), +\&\fBBIO_f_null\fR\|(3), \fBBIO_f_ssl\fR\|(3), +\&\fBBIO_find_type\fR\|(3), \fBBIO_new\fR\|(3), +\&\fBBIO_new_bio_pair\fR\|(3), +\&\fBBIO_push\fR\|(3), \fBBIO_read_ex\fR\|(3), +\&\fBBIO_s_accept\fR\|(3), \fBBIO_s_bio\fR\|(3), +\&\fBBIO_s_connect\fR\|(3), \fBBIO_s_fd\fR\|(3), +\&\fBBIO_s_file\fR\|(3), \fBBIO_s_mem\fR\|(3), +\&\fBBIO_s_null\fR\|(3), \fBBIO_s_socket\fR\|(3), +\&\fBBIO_set_callback\fR\|(3), +\&\fBBIO_should_retry\fR\|(3) +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright 2000\-2019 The OpenSSL Project Authors. All Rights Reserved. +.PP +Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file \s-1LICENSE\s0 in the source distribution or at +<https://www.openssl.org/source/license.html>. diff --git a/secure/lib/libcrypto/man/man7/ct.7 b/secure/lib/libcrypto/man/man7/ct.7 new file mode 100644 index 0000000000000..f8005393a6079 --- /dev/null +++ b/secure/lib/libcrypto/man/man7/ct.7 @@ -0,0 +1,185 @@ +.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.40) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "CT 7" +.TH CT 7 "2019-09-10" "1.1.1d" "OpenSSL" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +ct \- Certificate Transparency +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +.Vb 1 +\& #include <openssl/ct.h> +.Ve +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +This library implements Certificate Transparency (\s-1CT\s0) verification for \s-1TLS\s0 +clients, as defined in \s-1RFC 6962.\s0 This verification can provide some confidence +that a certificate has been publicly logged in a set of \s-1CT\s0 logs. +.PP +By default, these checks are disabled. They can be enabled using +\&\fBSSL_CTX_enable_ct\fR\|(3) or \fBSSL_enable_ct\fR\|(3). +.PP +This library can also be used to parse and examine \s-1CT\s0 data structures, such as +Signed Certificate Timestamps (SCTs), or to read a list of \s-1CT\s0 logs. There are +functions for: +\&\- decoding and encoding SCTs in \s-1DER\s0 and \s-1TLS\s0 wire format. +\&\- printing SCTs. +\&\- verifying the authenticity of SCTs. +\&\- loading a \s-1CT\s0 log list from a \s-1CONF\s0 file. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fBd2i_SCT_LIST\fR\|(3), +\&\fBCTLOG_STORE_new\fR\|(3), +\&\fBCTLOG_STORE_get0_log_by_id\fR\|(3), +\&\fBSCT_new\fR\|(3), +\&\fBSCT_print\fR\|(3), +\&\fBSCT_validate\fR\|(3), +\&\fBSCT_validate\fR\|(3), +\&\fBCT_POLICY_EVAL_CTX_new\fR\|(3), +\&\fBSSL_CTX_set_ct_validation_callback\fR\|(3) +.SH "HISTORY" +.IX Header "HISTORY" +The ct library was added in OpenSSL 1.1.0. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright 2016\-2017 The OpenSSL Project Authors. All Rights Reserved. +.PP +Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file \s-1LICENSE\s0 in the source distribution or at +<https://www.openssl.org/source/license.html>. diff --git a/secure/lib/libcrypto/man/man7/des_modes.7 b/secure/lib/libcrypto/man/man7/des_modes.7 new file mode 100644 index 0000000000000..da9a50aefbb38 --- /dev/null +++ b/secure/lib/libcrypto/man/man7/des_modes.7 @@ -0,0 +1,295 @@ +.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.40) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "DES_MODES 7" +.TH DES_MODES 7 "2019-09-10" "1.1.1d" "OpenSSL" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +des_modes \- the variants of DES and other crypto algorithms of OpenSSL +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +Several crypto algorithms for OpenSSL can be used in a number of modes. Those +are used for using block ciphers in a way similar to stream ciphers, among +other things. +.SH "OVERVIEW" +.IX Header "OVERVIEW" +.SS "Electronic Codebook Mode (\s-1ECB\s0)" +.IX Subsection "Electronic Codebook Mode (ECB)" +Normally, this is found as the function \fIalgorithm\fR\fB_ecb_encrypt()\fR. +.IP "\(bu" 2 +64 bits are enciphered at a time. +.IP "\(bu" 2 +The order of the blocks can be rearranged without detection. +.IP "\(bu" 2 +The same plaintext block always produces the same ciphertext block +(for the same key) making it vulnerable to a 'dictionary attack'. +.IP "\(bu" 2 +An error will only affect one ciphertext block. +.SS "Cipher Block Chaining Mode (\s-1CBC\s0)" +.IX Subsection "Cipher Block Chaining Mode (CBC)" +Normally, this is found as the function \fIalgorithm\fR\fB_cbc_encrypt()\fR. +Be aware that \fBdes_cbc_encrypt()\fR is not really \s-1DES CBC\s0 (it does +not update the \s-1IV\s0); use \fBdes_ncbc_encrypt()\fR instead. +.IP "\(bu" 2 +a multiple of 64 bits are enciphered at a time. +.IP "\(bu" 2 +The \s-1CBC\s0 mode produces the same ciphertext whenever the same +plaintext is encrypted using the same key and starting variable. +.IP "\(bu" 2 +The chaining operation makes the ciphertext blocks dependent on the +current and all preceding plaintext blocks and therefore blocks can not +be rearranged. +.IP "\(bu" 2 +The use of different starting variables prevents the same plaintext +enciphering to the same ciphertext. +.IP "\(bu" 2 +An error will affect the current and the following ciphertext blocks. +.SS "Cipher Feedback Mode (\s-1CFB\s0)" +.IX Subsection "Cipher Feedback Mode (CFB)" +Normally, this is found as the function \fIalgorithm\fR\fB_cfb_encrypt()\fR. +.IP "\(bu" 2 +a number of bits (j) <= 64 are enciphered at a time. +.IP "\(bu" 2 +The \s-1CFB\s0 mode produces the same ciphertext whenever the same +plaintext is encrypted using the same key and starting variable. +.IP "\(bu" 2 +The chaining operation makes the ciphertext variables dependent on the +current and all preceding variables and therefore j\-bit variables are +chained together and can not be rearranged. +.IP "\(bu" 2 +The use of different starting variables prevents the same plaintext +enciphering to the same ciphertext. +.IP "\(bu" 2 +The strength of the \s-1CFB\s0 mode depends on the size of k (maximal if +j == k). In my implementation this is always the case. +.IP "\(bu" 2 +Selection of a small value for j will require more cycles through +the encipherment algorithm per unit of plaintext and thus cause +greater processing overheads. +.IP "\(bu" 2 +Only multiples of j bits can be enciphered. +.IP "\(bu" 2 +An error will affect the current and the following ciphertext variables. +.SS "Output Feedback Mode (\s-1OFB\s0)" +.IX Subsection "Output Feedback Mode (OFB)" +Normally, this is found as the function \fIalgorithm\fR\fB_ofb_encrypt()\fR. +.IP "\(bu" 2 +a number of bits (j) <= 64 are enciphered at a time. +.IP "\(bu" 2 +The \s-1OFB\s0 mode produces the same ciphertext whenever the same +plaintext enciphered using the same key and starting variable. More +over, in the \s-1OFB\s0 mode the same key stream is produced when the same +key and start variable are used. Consequently, for security reasons +a specific start variable should be used only once for a given key. +.IP "\(bu" 2 +The absence of chaining makes the \s-1OFB\s0 more vulnerable to specific attacks. +.IP "\(bu" 2 +The use of different start variables values prevents the same +plaintext enciphering to the same ciphertext, by producing different +key streams. +.IP "\(bu" 2 +Selection of a small value for j will require more cycles through +the encipherment algorithm per unit of plaintext and thus cause +greater processing overheads. +.IP "\(bu" 2 +Only multiples of j bits can be enciphered. +.IP "\(bu" 2 +\&\s-1OFB\s0 mode of operation does not extend ciphertext errors in the +resultant plaintext output. Every bit error in the ciphertext causes +only one bit to be in error in the deciphered plaintext. +.IP "\(bu" 2 +\&\s-1OFB\s0 mode is not self-synchronizing. If the two operation of +encipherment and decipherment get out of synchronism, the system needs +to be re-initialized. +.IP "\(bu" 2 +Each re-initialization should use a value of the start variable +different from the start variable values used before with the same +key. The reason for this is that an identical bit stream would be +produced each time from the same parameters. This would be +susceptible to a 'known plaintext' attack. +.SS "Triple \s-1ECB\s0 Mode" +.IX Subsection "Triple ECB Mode" +Normally, this is found as the function \fIalgorithm\fR\fB_ecb3_encrypt()\fR. +.IP "\(bu" 2 +Encrypt with key1, decrypt with key2 and encrypt with key3 again. +.IP "\(bu" 2 +As for \s-1ECB\s0 encryption but increases the key length to 168 bits. +There are theoretic attacks that can be used that make the effective +key length 112 bits, but this attack also requires 2^56 blocks of +memory, not very likely, even for the \s-1NSA.\s0 +.IP "\(bu" 2 +If both keys are the same it is equivalent to encrypting once with +just one key. +.IP "\(bu" 2 +If the first and last key are the same, the key length is 112 bits. +There are attacks that could reduce the effective key strength +to only slightly more than 56 bits, but these require a lot of memory. +.IP "\(bu" 2 +If all 3 keys are the same, this is effectively the same as normal +ecb mode. +.SS "Triple \s-1CBC\s0 Mode" +.IX Subsection "Triple CBC Mode" +Normally, this is found as the function \fIalgorithm\fR\fB_ede3_cbc_encrypt()\fR. +.IP "\(bu" 2 +Encrypt with key1, decrypt with key2 and then encrypt with key3. +.IP "\(bu" 2 +As for \s-1CBC\s0 encryption but increases the key length to 168 bits with +the same restrictions as for triple ecb mode. +.SH "NOTES" +.IX Header "NOTES" +This text was been written in large parts by Eric Young in his original +documentation for SSLeay, the predecessor of OpenSSL. In turn, he attributed +it to: +.PP +.Vb 5 +\& AS 2805.5.2 +\& Australian Standard +\& Electronic funds transfer \- Requirements for interfaces, +\& Part 5.2: Modes of operation for an n\-bit block cipher algorithm +\& Appendix A +.Ve +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fBBF_encrypt\fR\|(3), \fBDES_crypt\fR\|(3) +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright 2000\-2017 The OpenSSL Project Authors. All Rights Reserved. +.PP +Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file \s-1LICENSE\s0 in the source distribution or at +<https://www.openssl.org/source/license.html>. diff --git a/secure/lib/libcrypto/man/man7/evp.7 b/secure/lib/libcrypto/man/man7/evp.7 new file mode 100644 index 0000000000000..165b60f35b201 --- /dev/null +++ b/secure/lib/libcrypto/man/man7/evp.7 @@ -0,0 +1,236 @@ +.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.40) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "EVP 7" +.TH EVP 7 "2019-09-10" "1.1.1d" "OpenSSL" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +evp \- high\-level cryptographic functions +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +.Vb 1 +\& #include <openssl/evp.h> +.Ve +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The \s-1EVP\s0 library provides a high-level interface to cryptographic +functions. +.PP +The \fBEVP_Seal\fR\fI\s-1XXX\s0\fR and \fBEVP_Open\fR\fI\s-1XXX\s0\fR +functions provide public key encryption and decryption to implement digital \*(L"envelopes\*(R". +.PP +The \fBEVP_DigestSign\fR\fI\s-1XXX\s0\fR and +\&\fBEVP_DigestVerify\fR\fI\s-1XXX\s0\fR functions implement +digital signatures and Message Authentication Codes (MACs). Also see the older +\&\fBEVP_Sign\fR\fI\s-1XXX\s0\fR and \fBEVP_Verify\fR\fI\s-1XXX\s0\fR +functions. +.PP +Symmetric encryption is available with the \fBEVP_Encrypt\fR\fI\s-1XXX\s0\fR +functions. The \fBEVP_Digest\fR\fI\s-1XXX\s0\fR functions provide message digests. +.PP +The \fB\s-1EVP_PKEY\s0\fR\fI\s-1XXX\s0\fR functions provide a high level interface to +asymmetric algorithms. To create a new \s-1EVP_PKEY\s0 see +\&\fBEVP_PKEY_new\fR\|(3). EVP_PKEYs can be associated +with a private key of a particular algorithm by using the functions +described on the \fBEVP_PKEY_set1_RSA\fR\|(3) page, or +new keys can be generated using \fBEVP_PKEY_keygen\fR\|(3). +EVP_PKEYs can be compared using \fBEVP_PKEY_cmp\fR\|(3), or printed using +\&\fBEVP_PKEY_print_private\fR\|(3). +.PP +The \s-1EVP_PKEY\s0 functions support the full range of asymmetric algorithm operations: +.IP "For key agreement see \fBEVP_PKEY_derive\fR\|(3)" 4 +.IX Item "For key agreement see EVP_PKEY_derive" +.PD 0 +.IP "For signing and verifying see \fBEVP_PKEY_sign\fR\|(3), \fBEVP_PKEY_verify\fR\|(3) and \fBEVP_PKEY_verify_recover\fR\|(3). However, note that these functions do not perform a digest of the data to be signed. Therefore normally you would use the \fBEVP_DigestSignInit\fR\|(3) functions for this purpose." 4 +.IX Item "For signing and verifying see EVP_PKEY_sign, EVP_PKEY_verify and EVP_PKEY_verify_recover. However, note that these functions do not perform a digest of the data to be signed. Therefore normally you would use the EVP_DigestSignInit functions for this purpose." +.ie n .IP "For encryption and decryption see \fBEVP_PKEY_encrypt\fR\|(3) and \fBEVP_PKEY_decrypt\fR\|(3) respectively. However, note that these functions perform encryption and decryption only. As public key encryption is an expensive operation, normally you would wrap an encrypted message in a ""digital envelope"" using the \fBEVP_SealInit\fR\|(3) and \fBEVP_OpenInit\fR\|(3) functions." 4 +.el .IP "For encryption and decryption see \fBEVP_PKEY_encrypt\fR\|(3) and \fBEVP_PKEY_decrypt\fR\|(3) respectively. However, note that these functions perform encryption and decryption only. As public key encryption is an expensive operation, normally you would wrap an encrypted message in a ``digital envelope'' using the \fBEVP_SealInit\fR\|(3) and \fBEVP_OpenInit\fR\|(3) functions." 4 +.IX Item "For encryption and decryption see EVP_PKEY_encrypt and EVP_PKEY_decrypt respectively. However, note that these functions perform encryption and decryption only. As public key encryption is an expensive operation, normally you would wrap an encrypted message in a digital envelope using the EVP_SealInit and EVP_OpenInit functions." +.PD +.PP +The \fBEVP_BytesToKey\fR\|(3) function provides some limited support for password +based encryption. Careful selection of the parameters will provide a PKCS#5 \s-1PBKDF1\s0 compatible +implementation. However, new applications should not typically use this (preferring, for example, +\&\s-1PBKDF2\s0 from PCKS#5). +.PP +The \fBEVP_Encode\fR\fI\s-1XXX\s0\fR and +\&\fBEVP_Decode\fR\fI\s-1XXX\s0\fR functions implement base 64 encoding +and decoding. +.PP +All the symmetric algorithms (ciphers), digests and asymmetric algorithms +(public key algorithms) can be replaced by \s-1ENGINE\s0 modules providing alternative +implementations. If \s-1ENGINE\s0 implementations of ciphers or digests are registered +as defaults, then the various \s-1EVP\s0 functions will automatically use those +implementations automatically in preference to built in software +implementations. For more information, consult the \fBengine\fR\|(3) man page. +.PP +Although low level algorithm specific functions exist for many algorithms +their use is discouraged. They cannot be used with an \s-1ENGINE\s0 and \s-1ENGINE\s0 +versions of new algorithms cannot be accessed using the low level functions. +Also makes code harder to adapt to new algorithms and some options are not +cleanly supported at the low level and some operations are more efficient +using the high level interface. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fBEVP_DigestInit\fR\|(3), +\&\fBEVP_EncryptInit\fR\|(3), +\&\fBEVP_OpenInit\fR\|(3), +\&\fBEVP_SealInit\fR\|(3), +\&\fBEVP_DigestSignInit\fR\|(3), +\&\fBEVP_SignInit\fR\|(3), +\&\fBEVP_VerifyInit\fR\|(3), +\&\fBEVP_EncodeInit\fR\|(3), +\&\fBEVP_PKEY_new\fR\|(3), +\&\fBEVP_PKEY_set1_RSA\fR\|(3), +\&\fBEVP_PKEY_keygen\fR\|(3), +\&\fBEVP_PKEY_print_private\fR\|(3), +\&\fBEVP_PKEY_decrypt\fR\|(3), +\&\fBEVP_PKEY_encrypt\fR\|(3), +\&\fBEVP_PKEY_sign\fR\|(3), +\&\fBEVP_PKEY_verify\fR\|(3), +\&\fBEVP_PKEY_verify_recover\fR\|(3), +\&\fBEVP_PKEY_derive\fR\|(3), +\&\fBEVP_BytesToKey\fR\|(3), +\&\fBENGINE_by_id\fR\|(3) +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright 2000\-2018 The OpenSSL Project Authors. All Rights Reserved. +.PP +Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file \s-1LICENSE\s0 in the source distribution or at +<https://www.openssl.org/source/license.html>. diff --git a/secure/lib/libcrypto/man/man7/ossl_store-file.7 b/secure/lib/libcrypto/man/man7/ossl_store-file.7 new file mode 100644 index 0000000000000..3185ac380bbf5 --- /dev/null +++ b/secure/lib/libcrypto/man/man7/ossl_store-file.7 @@ -0,0 +1,191 @@ +.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.40) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "OSSL_STORE-FILE 7" +.TH OSSL_STORE-FILE 7 "2019-09-10" "1.1.1d" "OpenSSL" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +ossl_store\-file \- The store 'file' scheme loader +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +#include <openssl/store.h> +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +Support for the 'file' scheme is built into \f(CW\*(C`libcrypto\*(C'\fR. +Since files come in all kinds of formats and content types, the 'file' +scheme has its own layer of functionality called \*(L"file handlers\*(R", +which are used to try to decode diverse types of file contents. +.PP +In case a file is formatted as \s-1PEM,\s0 each called file handler receives +the \s-1PEM\s0 name (everything following any '\f(CW\*(C`\-\-\-\-\-BEGIN \*(C'\fR') as well as +possible \s-1PEM\s0 headers, together with the decoded \s-1PEM\s0 body. Since \s-1PEM\s0 +formatted files can contain more than one object, the file handlers +are called upon for each such object. +.PP +If the file isn't determined to be formatted as \s-1PEM,\s0 the content is +loaded in raw form in its entirety and passed to the available file +handlers as is, with no \s-1PEM\s0 name or headers. +.PP +Each file handler is expected to handle \s-1PEM\s0 and non-PEM content as +appropriate. Some may refuse non-PEM content for the sake of +determinism (for example, there are keys out in the wild that are +represented as an \s-1ASN.1 OCTET STRING.\s0 In raw form, it's not easily +possible to distinguish those from any other data coming as an \s-1ASN.1 +OCTET STRING,\s0 so such keys would naturally be accepted as \s-1PEM\s0 files +only). +.SH "NOTES" +.IX Header "NOTES" +When needed, the 'file' scheme loader will require a pass phrase by +using the \f(CW\*(C`UI_METHOD\*(C'\fR that was passed via \fBOSSL_STORE_open()\fR. +This pass phrase is expected to be \s-1UTF\-8\s0 encoded, anything else will +give an undefined result. +The files made accessible through this loader are expected to be +standard compliant with regards to pass phrase encoding. +Files that aren't should be re-generated with a correctly encoded pass +phrase. +See \fBpassphrase\-encoding\fR\|(7) for more information. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fBossl_store\fR\|(7), \fBpassphrase\-encoding\fR\|(7) +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. +.PP +Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file \s-1LICENSE\s0 in the source distribution or at +<https://www.openssl.org/source/license.html>. diff --git a/secure/lib/libcrypto/man/man7/ossl_store.7 b/secure/lib/libcrypto/man/man7/ossl_store.7 new file mode 100644 index 0000000000000..c8ab5a70b3df2 --- /dev/null +++ b/secure/lib/libcrypto/man/man7/ossl_store.7 @@ -0,0 +1,215 @@ +.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.40) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "OSSL_STORE 7" +.TH OSSL_STORE 7 "2019-09-10" "1.1.1d" "OpenSSL" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +ossl_store \- Store retrieval functions +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +#include <openssl/store.h> +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +.SS "General" +.IX Subsection "General" +A \s-1STORE\s0 is a layer of functionality to retrieve a number of supported +objects from a repository of any kind, addressable as a file name or +as a \s-1URI.\s0 +.PP +The functionality supports the pattern \*(L"open a channel to the +repository\*(R", \*(L"loop and retrieve one object at a time\*(R", and \*(L"finish up +by closing the channel\*(R". +.PP +The retrieved objects are returned as a wrapper type \fB\s-1OSSL_STORE_INFO\s0\fR, +from which an OpenSSL type can be retrieved. +.SS "\s-1URI\s0 schemes and loaders" +.IX Subsection "URI schemes and loaders" +Support for a \s-1URI\s0 scheme is called a \s-1STORE\s0 \*(L"loader\*(R", and can be added +dynamically from the calling application or from a loadable engine. +.PP +Support for the 'file' scheme is built into \f(CW\*(C`libcrypto\*(C'\fR. +See \fBossl_store\-file\fR\|(7) for more information. +.SS "\s-1UI_METHOD\s0 and pass phrases" +.IX Subsection "UI_METHOD and pass phrases" +The \fB\s-1OSS_STORE\s0\fR \s-1API\s0 does nothing to enforce any specific format or +encoding on the pass phrase that the \fB\s-1UI_METHOD\s0\fR provides. However, +the pass phrase is expected to be \s-1UTF\-8\s0 encoded. The result of any +other encoding is undefined. +.SH "EXAMPLES" +.IX Header "EXAMPLES" +.SS "A generic call" +.IX Subsection "A generic call" +.Vb 1 +\& OSSL_STORE_CTX *ctx = OSSL_STORE_open("file:/foo/bar/data.pem"); +\& +\& /* +\& * OSSL_STORE_eof() simulates file semantics for any repository to signal +\& * that no more data can be expected +\& */ +\& while (!OSSL_STORE_eof(ctx)) { +\& OSSL_STORE_INFO *info = OSSL_STORE_load(ctx); +\& +\& /* +\& * Do whatever is necessary with the OSSL_STORE_INFO, +\& * here just one example +\& */ +\& switch (OSSL_STORE_INFO_get_type(info)) { +\& case OSSL_STORE_INFO_X509: +\& /* Print the X.509 certificate text */ +\& X509_print_fp(stdout, OSSL_STORE_INFO_get0_CERT(info)); +\& /* Print the X.509 certificate PEM output */ +\& PEM_write_X509(stdout, OSSL_STORE_INFO_get0_CERT(info)); +\& break; +\& } +\& } +\& +\& OSSL_STORE_close(ctx); +.Ve +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\s-1\fBOSSL_STORE_INFO\s0\fR\|(3), \s-1\fBOSSL_STORE_LOADER\s0\fR\|(3), +\&\fBOSSL_STORE_open\fR\|(3), \fBOSSL_STORE_expect\fR\|(3), +\&\s-1\fBOSSL_STORE_SEARCH\s0\fR\|(3) +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright 2016\-2018 The OpenSSL Project Authors. All Rights Reserved. +.PP +Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file \s-1LICENSE\s0 in the source distribution or at +<https://www.openssl.org/source/license.html>. diff --git a/secure/lib/libcrypto/man/man7/passphrase-encoding.7 b/secure/lib/libcrypto/man/man7/passphrase-encoding.7 new file mode 100644 index 0000000000000..a9975f240b42a --- /dev/null +++ b/secure/lib/libcrypto/man/man7/passphrase-encoding.7 @@ -0,0 +1,287 @@ +.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.40) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "PASSPHRASE-ENCODING 7" +.TH PASSPHRASE-ENCODING 7 "2019-09-10" "1.1.1d" "OpenSSL" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +passphrase\-encoding \&\- How diverse parts of OpenSSL treat pass phrases character encoding +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +In a modern world with all sorts of character encodings, the treatment of pass +phrases has become increasingly complex. +This manual page attempts to give an overview over how this problem is +currently addressed in different parts of the OpenSSL library. +.SS "The general case" +.IX Subsection "The general case" +The OpenSSL library doesn't treat pass phrases in any special way as a general +rule, and trusts the application or user to choose a suitable character set +and stick to that throughout the lifetime of affected objects. +This means that for an object that was encrypted using a pass phrase encoded in +\&\s-1ISO\-8859\-1,\s0 that object needs to be decrypted using a pass phrase encoded in +\&\s-1ISO\-8859\-1.\s0 +Using the wrong encoding is expected to cause a decryption failure. +.SS "PKCS#12" +.IX Subsection "PKCS#12" +PKCS#12 is a bit different regarding pass phrase encoding. +The standard stipulates that the pass phrase shall be encoded as an \s-1ASN.1\s0 +BMPString, which consists of the code points of the basic multilingual plane, +encoded in big endian (\s-1UCS\-2 BE\s0). +.PP +OpenSSL tries to adapt to this requirements in one of the following manners: +.IP "1." 4 +Treats the received pass phrase as \s-1UTF\-8\s0 encoded and tries to re-encode it to +\&\s-1UTF\-16\s0 (which is the same as \s-1UCS\-2\s0 for characters U+0000 to U+D7FF and U+E000 +to U+FFFF, but becomes an expansion for any other character), or failing that, +proceeds with step 2. +.IP "2." 4 +Assumes that the pass phrase is encoded in \s-1ASCII\s0 or \s-1ISO\-8859\-1\s0 and +opportunistically prepends each byte with a zero byte to obtain the \s-1UCS\-2\s0 +encoding of the characters, which it stores as a BMPString. +.Sp +Note that since there is no check of your locale, this may produce \s-1UCS\-2 / +UTF\-16\s0 characters that do not correspond to the original pass phrase characters +for other character sets, such as any \s-1ISO\-8859\-X\s0 encoding other than +\&\s-1ISO\-8859\-1\s0 (or for Windows, \s-1CP 1252\s0 with exception for the extra \*(L"graphical\*(R" +characters in the 0x80\-0x9F range). +.PP +OpenSSL versions older than 1.1.0 do variant 2 only, and that is the reason why +OpenSSL still does this, to be able to read files produced with older versions. +.PP +It should be noted that this approach isn't entirely fault free. +.PP +A pass phrase encoded in \s-1ISO\-8859\-2\s0 could very well have a sequence such as +0xC3 0xAF (which is the two characters \*(L"\s-1LATIN CAPITAL LETTER A WITH BREVE\*(R"\s0 +and \*(L"\s-1LATIN CAPITAL LETTER Z WITH DOT ABOVE\*(R"\s0 in \s-1ISO\-8859\-2\s0 encoding), but would +be misinterpreted as the perfectly valid \s-1UTF\-8\s0 encoded code point U+00EF (\s-1LATIN +SMALL LETTER I WITH DIARESIS\s0) \fIif the pass phrase doesn't contain anything that +would be invalid \s-1UTF\-8\s0\fR. +A pass phrase that contains this kind of byte sequence will give a different +outcome in OpenSSL 1.1.0 and newer than in OpenSSL older than 1.1.0. +.PP +.Vb 2 +\& 0x00 0xC3 0x00 0xAF # OpenSSL older than 1.1.0 +\& 0x00 0xEF # OpenSSL 1.1.0 and newer +.Ve +.PP +On the same accord, anything encoded in \s-1UTF\-8\s0 that was given to OpenSSL older +than 1.1.0 was misinterpreted as \s-1ISO\-8859\-1\s0 sequences. +.SS "\s-1OSSL_STORE\s0" +.IX Subsection "OSSL_STORE" +\&\fBossl_store\fR\|(7) acts as a general interface to access all kinds of objects, +potentially protected with a pass phrase, a \s-1PIN\s0 or something else. +This \s-1API\s0 stipulates that pass phrases should be \s-1UTF\-8\s0 encoded, and that any +other pass phrase encoding may give undefined results. +This \s-1API\s0 relies on the application to ensure \s-1UTF\-8\s0 encoding, and doesn't check +that this is the case, so what it gets, it will also pass to the underlying +loader. +.SH "RECOMMENDATIONS" +.IX Header "RECOMMENDATIONS" +This section assumes that you know what pass phrase was used for encryption, +but that it may have been encoded in a different character encoding than the +one used by your current input method. +For example, the pass phrase may have been used at a time when your default +encoding was \s-1ISO\-8859\-1\s0 (i.e. \*(L"nai\*:ve\*(R" resulting in the byte sequence 0x6E 0x61 +0xEF 0x76 0x65), and you're now in an environment where your default encoding +is \s-1UTF\-8\s0 (i.e. \*(L"nai\*:ve\*(R" resulting in the byte sequence 0x6E 0x61 0xC3 0xAF 0x76 +0x65). +Whenever it's mentioned that you should use a certain character encoding, it +should be understood that you either change the input method to use the +mentioned encoding when you type in your pass phrase, or use some suitable tool +to convert your pass phrase from your default encoding to the target encoding. +.PP +Also note that the sub-sections below discuss human readable pass phrases. +This is particularly relevant for PKCS#12 objects, where human readable pass +phrases are assumed. +For other objects, it's as legitimate to use any byte sequence (such as a +sequence of bytes from `/dev/urandom` that's been saved away), which makes any +character encoding discussion irrelevant; in such cases, simply use the same +byte sequence as it is. +.SS "Creating new objects" +.IX Subsection "Creating new objects" +For creating new pass phrase protected objects, make sure the pass phrase is +encoded using \s-1UTF\-8.\s0 +This is default on most modern Unixes, but may involve an effort on other +platforms. +Specifically for Windows, setting the environment variable +\&\f(CW\*(C`OPENSSL_WIN32_UTF8\*(C'\fR will have anything entered on [Windows] console prompt +converted to \s-1UTF\-8\s0 (command line and separately prompted pass phrases alike). +.SS "Opening existing objects" +.IX Subsection "Opening existing objects" +For opening pass phrase protected objects where you know what character +encoding was used for the encryption pass phrase, make sure to use the same +encoding again. +.PP +For opening pass phrase protected objects where the character encoding that was +used is unknown, or where the producing application is unknown, try one of the +following: +.IP "1." 4 +Try the pass phrase that you have as it is in the character encoding of your +environment. +It's possible that its byte sequence is exactly right. +.IP "2." 4 +Convert the pass phrase to \s-1UTF\-8\s0 and try with the result. +Specifically with PKCS#12, this should open up any object that was created +according to the specification. +.IP "3." 4 +Do a nai\*:ve (i.e. purely mathematical) \s-1ISO\-8859\-1\s0 to \s-1UTF\-8\s0 conversion and try +with the result. +This differs from the previous attempt because \s-1ISO\-8859\-1\s0 maps directly to +U+0000 to U+00FF, which other non\-UTF\-8 character sets do not. +.Sp +This also takes care of the case when a \s-1UTF\-8\s0 encoded string was used with +OpenSSL older than 1.1.0. +(for example, \f(CW\*(C`i\*:\*(C'\fR, which is 0xC3 0xAF when encoded in \s-1UTF\-8,\s0 would become 0xC3 +0x83 0xC2 0xAF when re-encoded in the nai\*:ve manner. +The conversion to BMPString would then yield 0x00 0xC3 0x00 0xA4 0x00 0x00, the +erroneous/non\-compliant encoding used by OpenSSL older than 1.1.0) +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fBevp\fR\|(7), +\&\fBossl_store\fR\|(7), +\&\fBEVP_BytesToKey\fR\|(3), \fBEVP_DecryptInit\fR\|(3), +\&\fBPEM_do_header\fR\|(3), +\&\fBPKCS12_parse\fR\|(3), \fBPKCS12_newpass\fR\|(3), +\&\fBd2i_PKCS8PrivateKey_bio\fR\|(3) +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. +.PP +Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file \s-1LICENSE\s0 in the source distribution or at +<https://www.openssl.org/source/license.html>. diff --git a/secure/lib/libcrypto/man/man7/scrypt.7 b/secure/lib/libcrypto/man/man7/scrypt.7 new file mode 100644 index 0000000000000..fd73e3aa5fa40 --- /dev/null +++ b/secure/lib/libcrypto/man/man7/scrypt.7 @@ -0,0 +1,248 @@ +.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.40) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "SCRYPT 7" +.TH SCRYPT 7 "2019-09-10" "1.1.1d" "OpenSSL" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +scrypt \- EVP_PKEY scrypt KDF support +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The \s-1EVP_PKEY_SCRYPT\s0 algorithm implements the scrypt password based key +derivation function, as described in \s-1RFC 7914.\s0 It is memory-hard in the sense +that it deliberately requires a significant amount of \s-1RAM\s0 for efficient +computation. The intention of this is to render brute forcing of passwords on +systems that lack large amounts of main memory (such as GPUs or ASICs) +computationally infeasible. +.PP +scrypt provides three work factors that can be customized: N, r and p. N, which +has to be a positive power of two, is the general work factor and scales \s-1CPU\s0 +time in an approximately linear fashion. r is the block size of the internally +used hash function and p is the parallelization factor. Both r and p need to be +greater than zero. The amount of \s-1RAM\s0 that scrypt requires for its computation +is roughly (128 * N * r * p) bytes. +.PP +In the original paper of Colin Percival (\*(L"Stronger Key Derivation via +Sequential Memory-Hard Functions\*(R", 2009), the suggested values that give a +computation time of less than 5 seconds on a 2.5 GHz Intel Core 2 Duo are N = +2^20 = 1048576, r = 8, p = 1. Consequently, the required amount of memory for +this computation is roughly 1 GiB. On a more recent \s-1CPU\s0 (Intel i7\-5930K at 3.5 +GHz), this computation takes about 3 seconds. When N, r or p are not specified, +they default to 1048576, 8, and 1, respectively. The default amount of \s-1RAM\s0 that +may be used by scrypt defaults to 1025 MiB. +.SH "NOTES" +.IX Header "NOTES" +A context for scrypt can be obtained by calling: +.PP +.Vb 1 +\& EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_SCRYPT, NULL); +.Ve +.PP +The output length of an scrypt key derivation is specified via the +length parameter to the \fBEVP_PKEY_derive\fR\|(3) function. +.SH "EXAMPLES" +.IX Header "EXAMPLES" +This example derives a 64\-byte long test vector using scrypt using the password +\&\*(L"password\*(R", salt \*(L"NaCl\*(R" and N = 1024, r = 8, p = 16. +.PP +.Vb 2 +\& EVP_PKEY_CTX *pctx; +\& unsigned char out[64]; +\& +\& size_t outlen = sizeof(out); +\& pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_SCRYPT, NULL); +\& +\& if (EVP_PKEY_derive_init(pctx) <= 0) { +\& error("EVP_PKEY_derive_init"); +\& } +\& if (EVP_PKEY_CTX_set1_pbe_pass(pctx, "password", 8) <= 0) { +\& error("EVP_PKEY_CTX_set1_pbe_pass"); +\& } +\& if (EVP_PKEY_CTX_set1_scrypt_salt(pctx, "NaCl", 4) <= 0) { +\& error("EVP_PKEY_CTX_set1_scrypt_salt"); +\& } +\& if (EVP_PKEY_CTX_set_scrypt_N(pctx, 1024) <= 0) { +\& error("EVP_PKEY_CTX_set_scrypt_N"); +\& } +\& if (EVP_PKEY_CTX_set_scrypt_r(pctx, 8) <= 0) { +\& error("EVP_PKEY_CTX_set_scrypt_r"); +\& } +\& if (EVP_PKEY_CTX_set_scrypt_p(pctx, 16) <= 0) { +\& error("EVP_PKEY_CTX_set_scrypt_p"); +\& } +\& if (EVP_PKEY_derive(pctx, out, &outlen) <= 0) { +\& error("EVP_PKEY_derive"); +\& } +\& +\& { +\& const unsigned char expected[sizeof(out)] = { +\& 0xfd, 0xba, 0xbe, 0x1c, 0x9d, 0x34, 0x72, 0x00, +\& 0x78, 0x56, 0xe7, 0x19, 0x0d, 0x01, 0xe9, 0xfe, +\& 0x7c, 0x6a, 0xd7, 0xcb, 0xc8, 0x23, 0x78, 0x30, +\& 0xe7, 0x73, 0x76, 0x63, 0x4b, 0x37, 0x31, 0x62, +\& 0x2e, 0xaf, 0x30, 0xd9, 0x2e, 0x22, 0xa3, 0x88, +\& 0x6f, 0xf1, 0x09, 0x27, 0x9d, 0x98, 0x30, 0xda, +\& 0xc7, 0x27, 0xaf, 0xb9, 0x4a, 0x83, 0xee, 0x6d, +\& 0x83, 0x60, 0xcb, 0xdf, 0xa2, 0xcc, 0x06, 0x40 +\& }; +\& +\& assert(!memcmp(out, expected, sizeof(out))); +\& } +\& +\& EVP_PKEY_CTX_free(pctx); +.Ve +.SH "CONFORMING TO" +.IX Header "CONFORMING TO" +\&\s-1RFC 7914\s0 +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fBEVP_PKEY_CTX_set1_scrypt_salt\fR\|(3), +\&\fBEVP_PKEY_CTX_set_scrypt_N\fR\|(3), +\&\fBEVP_PKEY_CTX_set_scrypt_r\fR\|(3), +\&\fBEVP_PKEY_CTX_set_scrypt_p\fR\|(3), +\&\fBEVP_PKEY_CTX_set_scrypt_maxmem_bytes\fR\|(3), +\&\fBEVP_PKEY_CTX_new\fR\|(3), +\&\fBEVP_PKEY_CTX_ctrl_str\fR\|(3), +\&\fBEVP_PKEY_derive\fR\|(3) +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright 2017\-2019 The OpenSSL Project Authors. All Rights Reserved. +.PP +Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file \s-1LICENSE\s0 in the source distribution or at +<https://www.openssl.org/source/license.html>. diff --git a/secure/lib/libcrypto/man/man7/ssl.7 b/secure/lib/libcrypto/man/man7/ssl.7 new file mode 100644 index 0000000000000..95fcdc10a1165 --- /dev/null +++ b/secure/lib/libcrypto/man/man7/ssl.7 @@ -0,0 +1,914 @@ +.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.40) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "SSL 7" +.TH SSL 7 "2019-09-10" "1.1.1d" "OpenSSL" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +ssl \- OpenSSL SSL/TLS library +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +See the individual manual pages for details. +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The OpenSSL \fBssl\fR library implements the Secure Sockets Layer (\s-1SSL\s0 v2/v3) and +Transport Layer Security (\s-1TLS\s0 v1) protocols. It provides a rich \s-1API\s0 which is +documented here. +.PP +An \fB\s-1SSL_CTX\s0\fR object is created as a framework to establish +\&\s-1TLS/SSL\s0 enabled connections (see \fBSSL_CTX_new\fR\|(3)). +Various options regarding certificates, algorithms etc. can be set +in this object. +.PP +When a network connection has been created, it can be assigned to an +\&\fB\s-1SSL\s0\fR object. After the \fB\s-1SSL\s0\fR object has been created using +\&\fBSSL_new\fR\|(3), \fBSSL_set_fd\fR\|(3) or +\&\fBSSL_set_bio\fR\|(3) can be used to associate the network +connection with the object. +.PP +When the \s-1TLS/SSL\s0 handshake is performed using +\&\fBSSL_accept\fR\|(3) or \fBSSL_connect\fR\|(3) +respectively. +\&\fBSSL_read_ex\fR\|(3), \fBSSL_read\fR\|(3), \fBSSL_write_ex\fR\|(3) and \fBSSL_write\fR\|(3) are +used to read and write data on the \s-1TLS/SSL\s0 connection. +\&\fBSSL_shutdown\fR\|(3) can be used to shut down the +\&\s-1TLS/SSL\s0 connection. +.SH "DATA STRUCTURES" +.IX Header "DATA STRUCTURES" +Currently the OpenSSL \fBssl\fR library functions deals with the following data +structures: +.IP "\fB\s-1SSL_METHOD\s0\fR (\s-1SSL\s0 Method)" 4 +.IX Item "SSL_METHOD (SSL Method)" +This is a dispatch structure describing the internal \fBssl\fR library +methods/functions which implement the various protocol versions (SSLv3 +TLSv1, ...). It's needed to create an \fB\s-1SSL_CTX\s0\fR. +.IP "\fB\s-1SSL_CIPHER\s0\fR (\s-1SSL\s0 Cipher)" 4 +.IX Item "SSL_CIPHER (SSL Cipher)" +This structure holds the algorithm information for a particular cipher which +are a core part of the \s-1SSL/TLS\s0 protocol. The available ciphers are configured +on a \fB\s-1SSL_CTX\s0\fR basis and the actual ones used are then part of the +\&\fB\s-1SSL_SESSION\s0\fR. +.IP "\fB\s-1SSL_CTX\s0\fR (\s-1SSL\s0 Context)" 4 +.IX Item "SSL_CTX (SSL Context)" +This is the global context structure which is created by a server or client +once per program life-time and which holds mainly default values for the +\&\fB\s-1SSL\s0\fR structures which are later created for the connections. +.IP "\fB\s-1SSL_SESSION\s0\fR (\s-1SSL\s0 Session)" 4 +.IX Item "SSL_SESSION (SSL Session)" +This is a structure containing the current \s-1TLS/SSL\s0 session details for a +connection: \fB\s-1SSL_CIPHER\s0\fRs, client and server certificates, keys, etc. +.IP "\fB\s-1SSL\s0\fR (\s-1SSL\s0 Connection)" 4 +.IX Item "SSL (SSL Connection)" +This is the main \s-1SSL/TLS\s0 structure which is created by a server or client per +established connection. This actually is the core structure in the \s-1SSL API.\s0 +At run-time the application usually deals with this structure which has +links to mostly all other structures. +.SH "HEADER FILES" +.IX Header "HEADER FILES" +Currently the OpenSSL \fBssl\fR library provides the following C header files +containing the prototypes for the data structures and functions: +.IP "\fBssl.h\fR" 4 +.IX Item "ssl.h" +This is the common header file for the \s-1SSL/TLS API.\s0 Include it into your +program to make the \s-1API\s0 of the \fBssl\fR library available. It internally +includes both more private \s-1SSL\s0 headers and headers from the \fBcrypto\fR library. +Whenever you need hard-core details on the internals of the \s-1SSL API,\s0 look +inside this header file. +.IP "\fBssl2.h\fR" 4 +.IX Item "ssl2.h" +Unused. Present for backwards compatibility only. +.IP "\fBssl3.h\fR" 4 +.IX Item "ssl3.h" +This is the sub header file dealing with the SSLv3 protocol only. +\&\fIUsually you don't have to include it explicitly because +it's already included by ssl.h\fR. +.IP "\fBtls1.h\fR" 4 +.IX Item "tls1.h" +This is the sub header file dealing with the TLSv1 protocol only. +\&\fIUsually you don't have to include it explicitly because +it's already included by ssl.h\fR. +.SH "API FUNCTIONS" +.IX Header "API FUNCTIONS" +Currently the OpenSSL \fBssl\fR library exports 214 \s-1API\s0 functions. +They are documented in the following: +.SS "Dealing with Protocol Methods" +.IX Subsection "Dealing with Protocol Methods" +Here we document the various \s-1API\s0 functions which deal with the \s-1SSL/TLS\s0 +protocol methods defined in \fB\s-1SSL_METHOD\s0\fR structures. +.IP "const \s-1SSL_METHOD\s0 *\fBTLS_method\fR(void);" 4 +.IX Item "const SSL_METHOD *TLS_method(void);" +Constructor for the \fIversion-flexible\fR \s-1SSL_METHOD\s0 structure for clients, +servers or both. +See \fBSSL_CTX_new\fR\|(3) for details. +.IP "const \s-1SSL_METHOD\s0 *\fBTLS_client_method\fR(void);" 4 +.IX Item "const SSL_METHOD *TLS_client_method(void);" +Constructor for the \fIversion-flexible\fR \s-1SSL_METHOD\s0 structure for clients. +Must be used to support the TLSv1.3 protocol. +.IP "const \s-1SSL_METHOD\s0 *\fBTLS_server_method\fR(void);" 4 +.IX Item "const SSL_METHOD *TLS_server_method(void);" +Constructor for the \fIversion-flexible\fR \s-1SSL_METHOD\s0 structure for servers. +Must be used to support the TLSv1.3 protocol. +.IP "const \s-1SSL_METHOD\s0 *\fBTLSv1_2_method\fR(void);" 4 +.IX Item "const SSL_METHOD *TLSv1_2_method(void);" +Constructor for the TLSv1.2 \s-1SSL_METHOD\s0 structure for clients, servers or both. +.IP "const \s-1SSL_METHOD\s0 *\fBTLSv1_2_client_method\fR(void);" 4 +.IX Item "const SSL_METHOD *TLSv1_2_client_method(void);" +Constructor for the TLSv1.2 \s-1SSL_METHOD\s0 structure for clients. +.IP "const \s-1SSL_METHOD\s0 *\fBTLSv1_2_server_method\fR(void);" 4 +.IX Item "const SSL_METHOD *TLSv1_2_server_method(void);" +Constructor for the TLSv1.2 \s-1SSL_METHOD\s0 structure for servers. +.IP "const \s-1SSL_METHOD\s0 *\fBTLSv1_1_method\fR(void);" 4 +.IX Item "const SSL_METHOD *TLSv1_1_method(void);" +Constructor for the TLSv1.1 \s-1SSL_METHOD\s0 structure for clients, servers or both. +.IP "const \s-1SSL_METHOD\s0 *\fBTLSv1_1_client_method\fR(void);" 4 +.IX Item "const SSL_METHOD *TLSv1_1_client_method(void);" +Constructor for the TLSv1.1 \s-1SSL_METHOD\s0 structure for clients. +.IP "const \s-1SSL_METHOD\s0 *\fBTLSv1_1_server_method\fR(void);" 4 +.IX Item "const SSL_METHOD *TLSv1_1_server_method(void);" +Constructor for the TLSv1.1 \s-1SSL_METHOD\s0 structure for servers. +.IP "const \s-1SSL_METHOD\s0 *\fBTLSv1_method\fR(void);" 4 +.IX Item "const SSL_METHOD *TLSv1_method(void);" +Constructor for the TLSv1 \s-1SSL_METHOD\s0 structure for clients, servers or both. +.IP "const \s-1SSL_METHOD\s0 *\fBTLSv1_client_method\fR(void);" 4 +.IX Item "const SSL_METHOD *TLSv1_client_method(void);" +Constructor for the TLSv1 \s-1SSL_METHOD\s0 structure for clients. +.IP "const \s-1SSL_METHOD\s0 *\fBTLSv1_server_method\fR(void);" 4 +.IX Item "const SSL_METHOD *TLSv1_server_method(void);" +Constructor for the TLSv1 \s-1SSL_METHOD\s0 structure for servers. +.IP "const \s-1SSL_METHOD\s0 *\fBSSLv3_method\fR(void);" 4 +.IX Item "const SSL_METHOD *SSLv3_method(void);" +Constructor for the SSLv3 \s-1SSL_METHOD\s0 structure for clients, servers or both. +.IP "const \s-1SSL_METHOD\s0 *\fBSSLv3_client_method\fR(void);" 4 +.IX Item "const SSL_METHOD *SSLv3_client_method(void);" +Constructor for the SSLv3 \s-1SSL_METHOD\s0 structure for clients. +.IP "const \s-1SSL_METHOD\s0 *\fBSSLv3_server_method\fR(void);" 4 +.IX Item "const SSL_METHOD *SSLv3_server_method(void);" +Constructor for the SSLv3 \s-1SSL_METHOD\s0 structure for servers. +.SS "Dealing with Ciphers" +.IX Subsection "Dealing with Ciphers" +Here we document the various \s-1API\s0 functions which deal with the \s-1SSL/TLS\s0 +ciphers defined in \fB\s-1SSL_CIPHER\s0\fR structures. +.IP "char *\fBSSL_CIPHER_description\fR(\s-1SSL_CIPHER\s0 *cipher, char *buf, int len);" 4 +.IX Item "char *SSL_CIPHER_description(SSL_CIPHER *cipher, char *buf, int len);" +Write a string to \fIbuf\fR (with a maximum size of \fIlen\fR) containing a human +readable description of \fIcipher\fR. Returns \fIbuf\fR. +.IP "int \fBSSL_CIPHER_get_bits\fR(\s-1SSL_CIPHER\s0 *cipher, int *alg_bits);" 4 +.IX Item "int SSL_CIPHER_get_bits(SSL_CIPHER *cipher, int *alg_bits);" +Determine the number of bits in \fIcipher\fR. Because of export crippled ciphers +there are two bits: The bits the algorithm supports in general (stored to +\&\fIalg_bits\fR) and the bits which are actually used (the return value). +.IP "const char *\fBSSL_CIPHER_get_name\fR(\s-1SSL_CIPHER\s0 *cipher);" 4 +.IX Item "const char *SSL_CIPHER_get_name(SSL_CIPHER *cipher);" +Return the internal name of \fIcipher\fR as a string. These are the various +strings defined by the \fISSL3_TXT_xxx\fR and \fITLS1_TXT_xxx\fR +definitions in the header files. +.IP "const char *\fBSSL_CIPHER_get_version\fR(\s-1SSL_CIPHER\s0 *cipher);" 4 +.IX Item "const char *SSL_CIPHER_get_version(SSL_CIPHER *cipher);" +Returns a string like "\f(CW\*(C`SSLv3\*(C'\fR\*(L" or \*(R"\f(CW\*(C`TLSv1.2\*(C'\fR" which indicates the +\&\s-1SSL/TLS\s0 protocol version to which \fIcipher\fR belongs (i.e. where it was defined +in the specification the first time). +.SS "Dealing with Protocol Contexts" +.IX Subsection "Dealing with Protocol Contexts" +Here we document the various \s-1API\s0 functions which deal with the \s-1SSL/TLS\s0 +protocol context defined in the \fB\s-1SSL_CTX\s0\fR structure. +.IP "int \fBSSL_CTX_add_client_CA\fR(\s-1SSL_CTX\s0 *ctx, X509 *x);" 4 +.IX Item "int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x);" +.PD 0 +.IP "long \fBSSL_CTX_add_extra_chain_cert\fR(\s-1SSL_CTX\s0 *ctx, X509 *x509);" 4 +.IX Item "long SSL_CTX_add_extra_chain_cert(SSL_CTX *ctx, X509 *x509);" +.IP "int \fBSSL_CTX_add_session\fR(\s-1SSL_CTX\s0 *ctx, \s-1SSL_SESSION\s0 *c);" 4 +.IX Item "int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *c);" +.IP "int \fBSSL_CTX_check_private_key\fR(const \s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_check_private_key(const SSL_CTX *ctx);" +.IP "long \fBSSL_CTX_ctrl\fR(\s-1SSL_CTX\s0 *ctx, int cmd, long larg, char *parg);" 4 +.IX Item "long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, char *parg);" +.IP "void \fBSSL_CTX_flush_sessions\fR(\s-1SSL_CTX\s0 *s, long t);" 4 +.IX Item "void SSL_CTX_flush_sessions(SSL_CTX *s, long t);" +.IP "void \fBSSL_CTX_free\fR(\s-1SSL_CTX\s0 *a);" 4 +.IX Item "void SSL_CTX_free(SSL_CTX *a);" +.IP "char *\fBSSL_CTX_get_app_data\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "char *SSL_CTX_get_app_data(SSL_CTX *ctx);" +.IP "X509_STORE *\fBSSL_CTX_get_cert_store\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "X509_STORE *SSL_CTX_get_cert_store(SSL_CTX *ctx);" +.IP "\s-1STACK\s0 *\fBSSL_CTX_get_ciphers\fR(const \s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "STACK *SSL_CTX_get_ciphers(const SSL_CTX *ctx);" +.IP "\s-1STACK\s0 *\fBSSL_CTX_get_client_CA_list\fR(const \s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "STACK *SSL_CTX_get_client_CA_list(const SSL_CTX *ctx);" +.IP "int (*\fBSSL_CTX_get_client_cert_cb\fR(\s-1SSL_CTX\s0 *ctx))(\s-1SSL\s0 *ssl, X509 **x509, \s-1EVP_PKEY\s0 **pkey);" 4 +.IX Item "int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx))(SSL *ssl, X509 **x509, EVP_PKEY **pkey);" +.IP "void \fBSSL_CTX_get_default_read_ahead\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "void SSL_CTX_get_default_read_ahead(SSL_CTX *ctx);" +.IP "char *\fBSSL_CTX_get_ex_data\fR(const \s-1SSL_CTX\s0 *s, int idx);" 4 +.IX Item "char *SSL_CTX_get_ex_data(const SSL_CTX *s, int idx);" +.IP "int \fBSSL_CTX_get_ex_new_index\fR(long argl, char *argp, int (*new_func);(void), int (*dup_func)(void), void (*free_func)(void))" 4 +.IX Item "int SSL_CTX_get_ex_new_index(long argl, char *argp, int (*new_func);(void), int (*dup_func)(void), void (*free_func)(void))" +.IP "void (*\fBSSL_CTX_get_info_callback\fR(\s-1SSL_CTX\s0 *ctx))(\s-1SSL\s0 *ssl, int cb, int ret);" 4 +.IX Item "void (*SSL_CTX_get_info_callback(SSL_CTX *ctx))(SSL *ssl, int cb, int ret);" +.IP "int \fBSSL_CTX_get_quiet_shutdown\fR(const \s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx);" +.IP "void \fBSSL_CTX_get_read_ahead\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "void SSL_CTX_get_read_ahead(SSL_CTX *ctx);" +.IP "int \fBSSL_CTX_get_session_cache_mode\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_get_session_cache_mode(SSL_CTX *ctx);" +.IP "long \fBSSL_CTX_get_timeout\fR(const \s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "long SSL_CTX_get_timeout(const SSL_CTX *ctx);" +.IP "int (*\fBSSL_CTX_get_verify_callback\fR(const \s-1SSL_CTX\s0 *ctx))(int ok, X509_STORE_CTX *ctx);" 4 +.IX Item "int (*SSL_CTX_get_verify_callback(const SSL_CTX *ctx))(int ok, X509_STORE_CTX *ctx);" +.IP "int \fBSSL_CTX_get_verify_mode\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_get_verify_mode(SSL_CTX *ctx);" +.IP "int \fBSSL_CTX_load_verify_locations\fR(\s-1SSL_CTX\s0 *ctx, const char *CAfile, const char *CApath);" 4 +.IX Item "int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, const char *CApath);" +.IP "\s-1SSL_CTX\s0 *\fBSSL_CTX_new\fR(const \s-1SSL_METHOD\s0 *meth);" 4 +.IX Item "SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth);" +.IP "int SSL_CTX_up_ref(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_up_ref(SSL_CTX *ctx);" +.IP "int \fBSSL_CTX_remove_session\fR(\s-1SSL_CTX\s0 *ctx, \s-1SSL_SESSION\s0 *c);" 4 +.IX Item "int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *c);" +.IP "int \fBSSL_CTX_sess_accept\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_sess_accept(SSL_CTX *ctx);" +.IP "int \fBSSL_CTX_sess_accept_good\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_sess_accept_good(SSL_CTX *ctx);" +.IP "int \fBSSL_CTX_sess_accept_renegotiate\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_sess_accept_renegotiate(SSL_CTX *ctx);" +.IP "int \fBSSL_CTX_sess_cache_full\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_sess_cache_full(SSL_CTX *ctx);" +.IP "int \fBSSL_CTX_sess_cb_hits\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_sess_cb_hits(SSL_CTX *ctx);" +.IP "int \fBSSL_CTX_sess_connect\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_sess_connect(SSL_CTX *ctx);" +.IP "int \fBSSL_CTX_sess_connect_good\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_sess_connect_good(SSL_CTX *ctx);" +.IP "int \fBSSL_CTX_sess_connect_renegotiate\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_sess_connect_renegotiate(SSL_CTX *ctx);" +.IP "int \fBSSL_CTX_sess_get_cache_size\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_sess_get_cache_size(SSL_CTX *ctx);" +.IP "\s-1SSL_SESSION\s0 *(*\fBSSL_CTX_sess_get_get_cb\fR(\s-1SSL_CTX\s0 *ctx))(\s-1SSL\s0 *ssl, unsigned char *data, int len, int *copy);" 4 +.IX Item "SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx))(SSL *ssl, unsigned char *data, int len, int *copy);" +.IP "int (*\fBSSL_CTX_sess_get_new_cb\fR(\s-1SSL_CTX\s0 *ctx)(\s-1SSL\s0 *ssl, \s-1SSL_SESSION\s0 *sess);" 4 +.IX Item "int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)(SSL *ssl, SSL_SESSION *sess);" +.IP "void (*\fBSSL_CTX_sess_get_remove_cb\fR(\s-1SSL_CTX\s0 *ctx)(\s-1SSL_CTX\s0 *ctx, \s-1SSL_SESSION\s0 *sess);" 4 +.IX Item "void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)(SSL_CTX *ctx, SSL_SESSION *sess);" +.IP "int \fBSSL_CTX_sess_hits\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_sess_hits(SSL_CTX *ctx);" +.IP "int \fBSSL_CTX_sess_misses\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_sess_misses(SSL_CTX *ctx);" +.IP "int \fBSSL_CTX_sess_number\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_sess_number(SSL_CTX *ctx);" +.IP "void \fBSSL_CTX_sess_set_cache_size\fR(\s-1SSL_CTX\s0 *ctx, t);" 4 +.IX Item "void SSL_CTX_sess_set_cache_size(SSL_CTX *ctx, t);" +.IP "void \fBSSL_CTX_sess_set_get_cb\fR(\s-1SSL_CTX\s0 *ctx, \s-1SSL_SESSION\s0 *(*cb)(\s-1SSL\s0 *ssl, unsigned char *data, int len, int *copy));" 4 +.IX Item "void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, SSL_SESSION *(*cb)(SSL *ssl, unsigned char *data, int len, int *copy));" +.IP "void \fBSSL_CTX_sess_set_new_cb\fR(\s-1SSL_CTX\s0 *ctx, int (*cb)(\s-1SSL\s0 *ssl, \s-1SSL_SESSION\s0 *sess));" 4 +.IX Item "void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, int (*cb)(SSL *ssl, SSL_SESSION *sess));" +.IP "void \fBSSL_CTX_sess_set_remove_cb\fR(\s-1SSL_CTX\s0 *ctx, void (*cb)(\s-1SSL_CTX\s0 *ctx, \s-1SSL_SESSION\s0 *sess));" 4 +.IX Item "void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, void (*cb)(SSL_CTX *ctx, SSL_SESSION *sess));" +.IP "int \fBSSL_CTX_sess_timeouts\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_sess_timeouts(SSL_CTX *ctx);" +.IP "\s-1LHASH\s0 *\fBSSL_CTX_sessions\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "LHASH *SSL_CTX_sessions(SSL_CTX *ctx);" +.IP "int \fBSSL_CTX_set_app_data\fR(\s-1SSL_CTX\s0 *ctx, void *arg);" 4 +.IX Item "int SSL_CTX_set_app_data(SSL_CTX *ctx, void *arg);" +.IP "void \fBSSL_CTX_set_cert_store\fR(\s-1SSL_CTX\s0 *ctx, X509_STORE *cs);" 4 +.IX Item "void SSL_CTX_set_cert_store(SSL_CTX *ctx, X509_STORE *cs);" +.IP "void \fBSSL_CTX_set1_cert_store\fR(\s-1SSL_CTX\s0 *ctx, X509_STORE *cs);" 4 +.IX Item "void SSL_CTX_set1_cert_store(SSL_CTX *ctx, X509_STORE *cs);" +.IP "void \fBSSL_CTX_set_cert_verify_cb\fR(\s-1SSL_CTX\s0 *ctx, int (*cb)(), char *arg)" 4 +.IX Item "void SSL_CTX_set_cert_verify_cb(SSL_CTX *ctx, int (*cb)(), char *arg)" +.IP "int \fBSSL_CTX_set_cipher_list\fR(\s-1SSL_CTX\s0 *ctx, char *str);" 4 +.IX Item "int SSL_CTX_set_cipher_list(SSL_CTX *ctx, char *str);" +.IP "void \fBSSL_CTX_set_client_CA_list\fR(\s-1SSL_CTX\s0 *ctx, \s-1STACK\s0 *list);" 4 +.IX Item "void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK *list);" +.IP "void \fBSSL_CTX_set_client_cert_cb\fR(\s-1SSL_CTX\s0 *ctx, int (*cb)(\s-1SSL\s0 *ssl, X509 **x509, \s-1EVP_PKEY\s0 **pkey));" 4 +.IX Item "void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, int (*cb)(SSL *ssl, X509 **x509, EVP_PKEY **pkey));" +.IP "int \fBSSL_CTX_set_ct_validation_callback\fR(\s-1SSL_CTX\s0 *ctx, ssl_ct_validation_cb callback, void *arg);" 4 +.IX Item "int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx, ssl_ct_validation_cb callback, void *arg);" +.IP "void \fBSSL_CTX_set_default_passwd_cb\fR(\s-1SSL_CTX\s0 *ctx, int (*cb);(void))" 4 +.IX Item "void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, int (*cb);(void))" +.IP "void \fBSSL_CTX_set_default_read_ahead\fR(\s-1SSL_CTX\s0 *ctx, int m);" 4 +.IX Item "void SSL_CTX_set_default_read_ahead(SSL_CTX *ctx, int m);" +.IP "int \fBSSL_CTX_set_default_verify_paths\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx);" +.PD +Use the default paths to locate trusted \s-1CA\s0 certificates. There is one default +directory path and one default file path. Both are set via this call. +.IP "int \fBSSL_CTX_set_default_verify_dir\fR(\s-1SSL_CTX\s0 *ctx)" 4 +.IX Item "int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx)" +Use the default directory path to locate trusted \s-1CA\s0 certificates. +.IP "int \fBSSL_CTX_set_default_verify_file\fR(\s-1SSL_CTX\s0 *ctx)" 4 +.IX Item "int SSL_CTX_set_default_verify_file(SSL_CTX *ctx)" +Use the file path to locate trusted \s-1CA\s0 certificates. +.IP "int \fBSSL_CTX_set_ex_data\fR(\s-1SSL_CTX\s0 *s, int idx, char *arg);" 4 +.IX Item "int SSL_CTX_set_ex_data(SSL_CTX *s, int idx, char *arg);" +.PD 0 +.IP "void \fBSSL_CTX_set_info_callback\fR(\s-1SSL_CTX\s0 *ctx, void (*cb)(\s-1SSL\s0 *ssl, int cb, int ret));" 4 +.IX Item "void SSL_CTX_set_info_callback(SSL_CTX *ctx, void (*cb)(SSL *ssl, int cb, int ret));" +.IP "void \fBSSL_CTX_set_msg_callback\fR(\s-1SSL_CTX\s0 *ctx, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, \s-1SSL\s0 *ssl, void *arg));" 4 +.IX Item "void SSL_CTX_set_msg_callback(SSL_CTX *ctx, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg));" +.IP "void \fBSSL_CTX_set_msg_callback_arg\fR(\s-1SSL_CTX\s0 *ctx, void *arg);" 4 +.IX Item "void SSL_CTX_set_msg_callback_arg(SSL_CTX *ctx, void *arg);" +.IP "unsigned long \fBSSL_CTX_clear_options\fR(\s-1SSL_CTX\s0 *ctx, unsigned long op);" 4 +.IX Item "unsigned long SSL_CTX_clear_options(SSL_CTX *ctx, unsigned long op);" +.IP "unsigned long \fBSSL_CTX_get_options\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "unsigned long SSL_CTX_get_options(SSL_CTX *ctx);" +.IP "unsigned long \fBSSL_CTX_set_options\fR(\s-1SSL_CTX\s0 *ctx, unsigned long op);" 4 +.IX Item "unsigned long SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op);" +.IP "void \fBSSL_CTX_set_quiet_shutdown\fR(\s-1SSL_CTX\s0 *ctx, int mode);" 4 +.IX Item "void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode);" +.IP "void \fBSSL_CTX_set_read_ahead\fR(\s-1SSL_CTX\s0 *ctx, int m);" 4 +.IX Item "void SSL_CTX_set_read_ahead(SSL_CTX *ctx, int m);" +.IP "void \fBSSL_CTX_set_session_cache_mode\fR(\s-1SSL_CTX\s0 *ctx, int mode);" 4 +.IX Item "void SSL_CTX_set_session_cache_mode(SSL_CTX *ctx, int mode);" +.IP "int \fBSSL_CTX_set_ssl_version\fR(\s-1SSL_CTX\s0 *ctx, const \s-1SSL_METHOD\s0 *meth);" 4 +.IX Item "int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth);" +.IP "void \fBSSL_CTX_set_timeout\fR(\s-1SSL_CTX\s0 *ctx, long t);" 4 +.IX Item "void SSL_CTX_set_timeout(SSL_CTX *ctx, long t);" +.IP "long \fBSSL_CTX_set_tmp_dh\fR(SSL_CTX* ctx, \s-1DH\s0 *dh);" 4 +.IX Item "long SSL_CTX_set_tmp_dh(SSL_CTX* ctx, DH *dh);" +.IP "long \fBSSL_CTX_set_tmp_dh_callback\fR(\s-1SSL_CTX\s0 *ctx, \s-1DH\s0 *(*cb)(void));" 4 +.IX Item "long SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, DH *(*cb)(void));" +.IP "void \fBSSL_CTX_set_verify\fR(\s-1SSL_CTX\s0 *ctx, int mode, int (*cb);(void))" 4 +.IX Item "void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, int (*cb);(void))" +.IP "int \fBSSL_CTX_use_PrivateKey\fR(\s-1SSL_CTX\s0 *ctx, \s-1EVP_PKEY\s0 *pkey);" 4 +.IX Item "int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey);" +.IP "int \fBSSL_CTX_use_PrivateKey_ASN1\fR(int type, \s-1SSL_CTX\s0 *ctx, unsigned char *d, long len);" 4 +.IX Item "int SSL_CTX_use_PrivateKey_ASN1(int type, SSL_CTX *ctx, unsigned char *d, long len);" +.IP "int \fBSSL_CTX_use_PrivateKey_file\fR(\s-1SSL_CTX\s0 *ctx, const char *file, int type);" 4 +.IX Item "int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type);" +.IP "int \fBSSL_CTX_use_RSAPrivateKey\fR(\s-1SSL_CTX\s0 *ctx, \s-1RSA\s0 *rsa);" 4 +.IX Item "int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa);" +.IP "int \fBSSL_CTX_use_RSAPrivateKey_ASN1\fR(\s-1SSL_CTX\s0 *ctx, unsigned char *d, long len);" 4 +.IX Item "int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, unsigned char *d, long len);" +.IP "int \fBSSL_CTX_use_RSAPrivateKey_file\fR(\s-1SSL_CTX\s0 *ctx, const char *file, int type);" 4 +.IX Item "int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, int type);" +.IP "int \fBSSL_CTX_use_certificate\fR(\s-1SSL_CTX\s0 *ctx, X509 *x);" 4 +.IX Item "int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x);" +.IP "int \fBSSL_CTX_use_certificate_ASN1\fR(\s-1SSL_CTX\s0 *ctx, int len, unsigned char *d);" 4 +.IX Item "int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, unsigned char *d);" +.IP "int \fBSSL_CTX_use_certificate_file\fR(\s-1SSL_CTX\s0 *ctx, const char *file, int type);" 4 +.IX Item "int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type);" +.IP "int \fBSSL_CTX_use_cert_and_key\fR(\s-1SSL_CTX\s0 *ctx, X509 *x, \s-1EVP_PKEY\s0 *pkey, \s-1STACK_OF\s0(X509) *chain, int override);" 4 +.IX Item "int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x, EVP_PKEY *pkey, STACK_OF(X509) *chain, int override);" +.IP "X509 *\fBSSL_CTX_get0_certificate\fR(const \s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx);" +.IP "\s-1EVP_PKEY\s0 *\fBSSL_CTX_get0_privatekey\fR(const \s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx);" +.IP "void \fBSSL_CTX_set_psk_client_callback\fR(\s-1SSL_CTX\s0 *ctx, unsigned int (*callback)(\s-1SSL\s0 *ssl, const char *hint, char *identity, unsigned int max_identity_len, unsigned char *psk, unsigned int max_psk_len));" 4 +.IX Item "void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, unsigned int (*callback)(SSL *ssl, const char *hint, char *identity, unsigned int max_identity_len, unsigned char *psk, unsigned int max_psk_len));" +.IP "int \fBSSL_CTX_use_psk_identity_hint\fR(\s-1SSL_CTX\s0 *ctx, const char *hint);" 4 +.IX Item "int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *hint);" +.IP "void \fBSSL_CTX_set_psk_server_callback\fR(\s-1SSL_CTX\s0 *ctx, unsigned int (*callback)(\s-1SSL\s0 *ssl, const char *identity, unsigned char *psk, int max_psk_len));" 4 +.IX Item "void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, unsigned int (*callback)(SSL *ssl, const char *identity, unsigned char *psk, int max_psk_len));" +.PD +.SS "Dealing with Sessions" +.IX Subsection "Dealing with Sessions" +Here we document the various \s-1API\s0 functions which deal with the \s-1SSL/TLS\s0 +sessions defined in the \fB\s-1SSL_SESSION\s0\fR structures. +.IP "int \fBSSL_SESSION_cmp\fR(const \s-1SSL_SESSION\s0 *a, const \s-1SSL_SESSION\s0 *b);" 4 +.IX Item "int SSL_SESSION_cmp(const SSL_SESSION *a, const SSL_SESSION *b);" +.PD 0 +.IP "void \fBSSL_SESSION_free\fR(\s-1SSL_SESSION\s0 *ss);" 4 +.IX Item "void SSL_SESSION_free(SSL_SESSION *ss);" +.IP "char *\fBSSL_SESSION_get_app_data\fR(\s-1SSL_SESSION\s0 *s);" 4 +.IX Item "char *SSL_SESSION_get_app_data(SSL_SESSION *s);" +.IP "char *\fBSSL_SESSION_get_ex_data\fR(const \s-1SSL_SESSION\s0 *s, int idx);" 4 +.IX Item "char *SSL_SESSION_get_ex_data(const SSL_SESSION *s, int idx);" +.IP "int \fBSSL_SESSION_get_ex_new_index\fR(long argl, char *argp, int (*new_func);(void), int (*dup_func)(void), void (*free_func)(void))" 4 +.IX Item "int SSL_SESSION_get_ex_new_index(long argl, char *argp, int (*new_func);(void), int (*dup_func)(void), void (*free_func)(void))" +.IP "long \fBSSL_SESSION_get_time\fR(const \s-1SSL_SESSION\s0 *s);" 4 +.IX Item "long SSL_SESSION_get_time(const SSL_SESSION *s);" +.IP "long \fBSSL_SESSION_get_timeout\fR(const \s-1SSL_SESSION\s0 *s);" 4 +.IX Item "long SSL_SESSION_get_timeout(const SSL_SESSION *s);" +.IP "unsigned long \fBSSL_SESSION_hash\fR(const \s-1SSL_SESSION\s0 *a);" 4 +.IX Item "unsigned long SSL_SESSION_hash(const SSL_SESSION *a);" +.IP "\s-1SSL_SESSION\s0 *\fBSSL_SESSION_new\fR(void);" 4 +.IX Item "SSL_SESSION *SSL_SESSION_new(void);" +.IP "int \fBSSL_SESSION_print\fR(\s-1BIO\s0 *bp, const \s-1SSL_SESSION\s0 *x);" 4 +.IX Item "int SSL_SESSION_print(BIO *bp, const SSL_SESSION *x);" +.IP "int \fBSSL_SESSION_print_fp\fR(\s-1FILE\s0 *fp, const \s-1SSL_SESSION\s0 *x);" 4 +.IX Item "int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *x);" +.IP "int \fBSSL_SESSION_set_app_data\fR(\s-1SSL_SESSION\s0 *s, char *a);" 4 +.IX Item "int SSL_SESSION_set_app_data(SSL_SESSION *s, char *a);" +.IP "int \fBSSL_SESSION_set_ex_data\fR(\s-1SSL_SESSION\s0 *s, int idx, char *arg);" 4 +.IX Item "int SSL_SESSION_set_ex_data(SSL_SESSION *s, int idx, char *arg);" +.IP "long \fBSSL_SESSION_set_time\fR(\s-1SSL_SESSION\s0 *s, long t);" 4 +.IX Item "long SSL_SESSION_set_time(SSL_SESSION *s, long t);" +.IP "long \fBSSL_SESSION_set_timeout\fR(\s-1SSL_SESSION\s0 *s, long t);" 4 +.IX Item "long SSL_SESSION_set_timeout(SSL_SESSION *s, long t);" +.PD +.SS "Dealing with Connections" +.IX Subsection "Dealing with Connections" +Here we document the various \s-1API\s0 functions which deal with the \s-1SSL/TLS\s0 +connection defined in the \fB\s-1SSL\s0\fR structure. +.IP "int \fBSSL_accept\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_accept(SSL *ssl);" +.PD 0 +.IP "int \fBSSL_add_dir_cert_subjects_to_stack\fR(\s-1STACK\s0 *stack, const char *dir);" 4 +.IX Item "int SSL_add_dir_cert_subjects_to_stack(STACK *stack, const char *dir);" +.IP "int \fBSSL_add_file_cert_subjects_to_stack\fR(\s-1STACK\s0 *stack, const char *file);" 4 +.IX Item "int SSL_add_file_cert_subjects_to_stack(STACK *stack, const char *file);" +.IP "int \fBSSL_add_client_CA\fR(\s-1SSL\s0 *ssl, X509 *x);" 4 +.IX Item "int SSL_add_client_CA(SSL *ssl, X509 *x);" +.IP "char *\fBSSL_alert_desc_string\fR(int value);" 4 +.IX Item "char *SSL_alert_desc_string(int value);" +.IP "char *\fBSSL_alert_desc_string_long\fR(int value);" 4 +.IX Item "char *SSL_alert_desc_string_long(int value);" +.IP "char *\fBSSL_alert_type_string\fR(int value);" 4 +.IX Item "char *SSL_alert_type_string(int value);" +.IP "char *\fBSSL_alert_type_string_long\fR(int value);" 4 +.IX Item "char *SSL_alert_type_string_long(int value);" +.IP "int \fBSSL_check_private_key\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_check_private_key(const SSL *ssl);" +.IP "void \fBSSL_clear\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "void SSL_clear(SSL *ssl);" +.IP "long \fBSSL_clear_num_renegotiations\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "long SSL_clear_num_renegotiations(SSL *ssl);" +.IP "int \fBSSL_connect\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_connect(SSL *ssl);" +.IP "int \fBSSL_copy_session_id\fR(\s-1SSL\s0 *t, const \s-1SSL\s0 *f);" 4 +.IX Item "int SSL_copy_session_id(SSL *t, const SSL *f);" +.PD +Sets the session details for \fBt\fR to be the same as in \fBf\fR. Returns 1 on +success or 0 on failure. +.IP "long \fBSSL_ctrl\fR(\s-1SSL\s0 *ssl, int cmd, long larg, char *parg);" 4 +.IX Item "long SSL_ctrl(SSL *ssl, int cmd, long larg, char *parg);" +.PD 0 +.IP "int \fBSSL_do_handshake\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_do_handshake(SSL *ssl);" +.IP "\s-1SSL\s0 *\fBSSL_dup\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "SSL *SSL_dup(SSL *ssl);" +.PD +\&\fBSSL_dup()\fR allows applications to configure an \s-1SSL\s0 handle for use +in multiple \s-1SSL\s0 connections, and then duplicate it prior to initiating +each connection with the duplicated handle. +Use of \fBSSL_dup()\fR avoids the need to repeat the configuration of the +handles for each connection. +.Sp +For \fBSSL_dup()\fR to work, the connection \s-1MUST\s0 be in its initial state +and \s-1MUST NOT\s0 have not yet have started the \s-1SSL\s0 handshake. +For connections that are not in their initial state \fBSSL_dup()\fR just +increments an internal reference count and returns the \fIsame\fR +handle. +It may be possible to use \fBSSL_clear\fR\|(3) to recycle an \s-1SSL\s0 handle +that is not in its initial state for re-use, but this is best +avoided. +Instead, save and restore the session, if desired, and construct a +fresh handle for each connection. +.IP "\s-1STACK\s0 *\fBSSL_dup_CA_list\fR(\s-1STACK\s0 *sk);" 4 +.IX Item "STACK *SSL_dup_CA_list(STACK *sk);" +.PD 0 +.IP "void \fBSSL_free\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "void SSL_free(SSL *ssl);" +.IP "\s-1SSL_CTX\s0 *\fBSSL_get_SSL_CTX\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl);" +.IP "char *\fBSSL_get_app_data\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "char *SSL_get_app_data(SSL *ssl);" +.IP "X509 *\fBSSL_get_certificate\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "X509 *SSL_get_certificate(const SSL *ssl);" +.IP "const char *\fBSSL_get_cipher\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "const char *SSL_get_cipher(const SSL *ssl);" +.IP "int \fBSSL_is_dtls\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_is_dtls(const SSL *ssl);" +.IP "int \fBSSL_get_cipher_bits\fR(const \s-1SSL\s0 *ssl, int *alg_bits);" 4 +.IX Item "int SSL_get_cipher_bits(const SSL *ssl, int *alg_bits);" +.IP "char *\fBSSL_get_cipher_list\fR(const \s-1SSL\s0 *ssl, int n);" 4 +.IX Item "char *SSL_get_cipher_list(const SSL *ssl, int n);" +.IP "char *\fBSSL_get_cipher_name\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "char *SSL_get_cipher_name(const SSL *ssl);" +.IP "char *\fBSSL_get_cipher_version\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "char *SSL_get_cipher_version(const SSL *ssl);" +.IP "\s-1STACK\s0 *\fBSSL_get_ciphers\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "STACK *SSL_get_ciphers(const SSL *ssl);" +.IP "\s-1STACK\s0 *\fBSSL_get_client_CA_list\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "STACK *SSL_get_client_CA_list(const SSL *ssl);" +.IP "\s-1SSL_CIPHER\s0 *\fBSSL_get_current_cipher\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "SSL_CIPHER *SSL_get_current_cipher(SSL *ssl);" +.IP "long \fBSSL_get_default_timeout\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "long SSL_get_default_timeout(const SSL *ssl);" +.IP "int \fBSSL_get_error\fR(const \s-1SSL\s0 *ssl, int i);" 4 +.IX Item "int SSL_get_error(const SSL *ssl, int i);" +.IP "char *\fBSSL_get_ex_data\fR(const \s-1SSL\s0 *ssl, int idx);" 4 +.IX Item "char *SSL_get_ex_data(const SSL *ssl, int idx);" +.IP "int \fBSSL_get_ex_data_X509_STORE_CTX_idx\fR(void);" 4 +.IX Item "int SSL_get_ex_data_X509_STORE_CTX_idx(void);" +.IP "int \fBSSL_get_ex_new_index\fR(long argl, char *argp, int (*new_func);(void), int (*dup_func)(void), void (*free_func)(void))" 4 +.IX Item "int SSL_get_ex_new_index(long argl, char *argp, int (*new_func);(void), int (*dup_func)(void), void (*free_func)(void))" +.IP "int \fBSSL_get_fd\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_get_fd(const SSL *ssl);" +.IP "void (*\fBSSL_get_info_callback\fR(const \s-1SSL\s0 *ssl);)()" 4 +.IX Item "void (*SSL_get_info_callback(const SSL *ssl);)()" +.IP "int \fBSSL_get_key_update_type\fR(\s-1SSL\s0 *s);" 4 +.IX Item "int SSL_get_key_update_type(SSL *s);" +.IP "\s-1STACK\s0 *\fBSSL_get_peer_cert_chain\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "STACK *SSL_get_peer_cert_chain(const SSL *ssl);" +.IP "X509 *\fBSSL_get_peer_certificate\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "X509 *SSL_get_peer_certificate(const SSL *ssl);" +.IP "const \s-1STACK_OF\s0(\s-1SCT\s0) *\fBSSL_get0_peer_scts\fR(\s-1SSL\s0 *s);" 4 +.IX Item "const STACK_OF(SCT) *SSL_get0_peer_scts(SSL *s);" +.IP "\s-1EVP_PKEY\s0 *\fBSSL_get_privatekey\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "EVP_PKEY *SSL_get_privatekey(const SSL *ssl);" +.IP "int \fBSSL_get_quiet_shutdown\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_get_quiet_shutdown(const SSL *ssl);" +.IP "\s-1BIO\s0 *\fBSSL_get_rbio\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "BIO *SSL_get_rbio(const SSL *ssl);" +.IP "int \fBSSL_get_read_ahead\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_get_read_ahead(const SSL *ssl);" +.IP "\s-1SSL_SESSION\s0 *\fBSSL_get_session\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "SSL_SESSION *SSL_get_session(const SSL *ssl);" +.IP "char *\fBSSL_get_shared_ciphers\fR(const \s-1SSL\s0 *ssl, char *buf, int size);" 4 +.IX Item "char *SSL_get_shared_ciphers(const SSL *ssl, char *buf, int size);" +.IP "int \fBSSL_get_shutdown\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_get_shutdown(const SSL *ssl);" +.IP "const \s-1SSL_METHOD\s0 *\fBSSL_get_ssl_method\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "const SSL_METHOD *SSL_get_ssl_method(SSL *ssl);" +.IP "int \fBSSL_get_state\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_get_state(const SSL *ssl);" +.IP "long \fBSSL_get_time\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "long SSL_get_time(const SSL *ssl);" +.IP "long \fBSSL_get_timeout\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "long SSL_get_timeout(const SSL *ssl);" +.IP "int (*\fBSSL_get_verify_callback\fR(const \s-1SSL\s0 *ssl))(int, X509_STORE_CTX *)" 4 +.IX Item "int (*SSL_get_verify_callback(const SSL *ssl))(int, X509_STORE_CTX *)" +.IP "int \fBSSL_get_verify_mode\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_get_verify_mode(const SSL *ssl);" +.IP "long \fBSSL_get_verify_result\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "long SSL_get_verify_result(const SSL *ssl);" +.IP "char *\fBSSL_get_version\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "char *SSL_get_version(const SSL *ssl);" +.IP "\s-1BIO\s0 *\fBSSL_get_wbio\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "BIO *SSL_get_wbio(const SSL *ssl);" +.IP "int \fBSSL_in_accept_init\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_in_accept_init(SSL *ssl);" +.IP "int \fBSSL_in_before\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_in_before(SSL *ssl);" +.IP "int \fBSSL_in_connect_init\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_in_connect_init(SSL *ssl);" +.IP "int \fBSSL_in_init\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_in_init(SSL *ssl);" +.IP "int \fBSSL_is_init_finished\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_is_init_finished(SSL *ssl);" +.IP "int \fBSSL_key_update\fR(\s-1SSL\s0 *s, int updatetype);" 4 +.IX Item "int SSL_key_update(SSL *s, int updatetype);" +.IP "\s-1STACK\s0 *\fBSSL_load_client_CA_file\fR(const char *file);" 4 +.IX Item "STACK *SSL_load_client_CA_file(const char *file);" +.IP "\s-1SSL\s0 *\fBSSL_new\fR(\s-1SSL_CTX\s0 *ctx);" 4 +.IX Item "SSL *SSL_new(SSL_CTX *ctx);" +.IP "int SSL_up_ref(\s-1SSL\s0 *s);" 4 +.IX Item "int SSL_up_ref(SSL *s);" +.IP "long \fBSSL_num_renegotiations\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "long SSL_num_renegotiations(SSL *ssl);" +.IP "int \fBSSL_peek\fR(\s-1SSL\s0 *ssl, void *buf, int num);" 4 +.IX Item "int SSL_peek(SSL *ssl, void *buf, int num);" +.IP "int \fBSSL_pending\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_pending(const SSL *ssl);" +.IP "int \fBSSL_read\fR(\s-1SSL\s0 *ssl, void *buf, int num);" 4 +.IX Item "int SSL_read(SSL *ssl, void *buf, int num);" +.IP "int \fBSSL_renegotiate\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_renegotiate(SSL *ssl);" +.IP "char *\fBSSL_rstate_string\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "char *SSL_rstate_string(SSL *ssl);" +.IP "char *\fBSSL_rstate_string_long\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "char *SSL_rstate_string_long(SSL *ssl);" +.IP "long \fBSSL_session_reused\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "long SSL_session_reused(SSL *ssl);" +.IP "void \fBSSL_set_accept_state\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "void SSL_set_accept_state(SSL *ssl);" +.IP "void \fBSSL_set_app_data\fR(\s-1SSL\s0 *ssl, char *arg);" 4 +.IX Item "void SSL_set_app_data(SSL *ssl, char *arg);" +.IP "void \fBSSL_set_bio\fR(\s-1SSL\s0 *ssl, \s-1BIO\s0 *rbio, \s-1BIO\s0 *wbio);" 4 +.IX Item "void SSL_set_bio(SSL *ssl, BIO *rbio, BIO *wbio);" +.IP "int \fBSSL_set_cipher_list\fR(\s-1SSL\s0 *ssl, char *str);" 4 +.IX Item "int SSL_set_cipher_list(SSL *ssl, char *str);" +.IP "void \fBSSL_set_client_CA_list\fR(\s-1SSL\s0 *ssl, \s-1STACK\s0 *list);" 4 +.IX Item "void SSL_set_client_CA_list(SSL *ssl, STACK *list);" +.IP "void \fBSSL_set_connect_state\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "void SSL_set_connect_state(SSL *ssl);" +.IP "int \fBSSL_set_ct_validation_callback\fR(\s-1SSL\s0 *ssl, ssl_ct_validation_cb callback, void *arg);" 4 +.IX Item "int SSL_set_ct_validation_callback(SSL *ssl, ssl_ct_validation_cb callback, void *arg);" +.IP "int \fBSSL_set_ex_data\fR(\s-1SSL\s0 *ssl, int idx, char *arg);" 4 +.IX Item "int SSL_set_ex_data(SSL *ssl, int idx, char *arg);" +.IP "int \fBSSL_set_fd\fR(\s-1SSL\s0 *ssl, int fd);" 4 +.IX Item "int SSL_set_fd(SSL *ssl, int fd);" +.IP "void \fBSSL_set_info_callback\fR(\s-1SSL\s0 *ssl, void (*cb);(void))" 4 +.IX Item "void SSL_set_info_callback(SSL *ssl, void (*cb);(void))" +.IP "void \fBSSL_set_msg_callback\fR(\s-1SSL\s0 *ctx, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, \s-1SSL\s0 *ssl, void *arg));" 4 +.IX Item "void SSL_set_msg_callback(SSL *ctx, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg));" +.IP "void \fBSSL_set_msg_callback_arg\fR(\s-1SSL\s0 *ctx, void *arg);" 4 +.IX Item "void SSL_set_msg_callback_arg(SSL *ctx, void *arg);" +.IP "unsigned long \fBSSL_clear_options\fR(\s-1SSL\s0 *ssl, unsigned long op);" 4 +.IX Item "unsigned long SSL_clear_options(SSL *ssl, unsigned long op);" +.IP "unsigned long \fBSSL_get_options\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "unsigned long SSL_get_options(SSL *ssl);" +.IP "unsigned long \fBSSL_set_options\fR(\s-1SSL\s0 *ssl, unsigned long op);" 4 +.IX Item "unsigned long SSL_set_options(SSL *ssl, unsigned long op);" +.IP "void \fBSSL_set_quiet_shutdown\fR(\s-1SSL\s0 *ssl, int mode);" 4 +.IX Item "void SSL_set_quiet_shutdown(SSL *ssl, int mode);" +.IP "void \fBSSL_set_read_ahead\fR(\s-1SSL\s0 *ssl, int yes);" 4 +.IX Item "void SSL_set_read_ahead(SSL *ssl, int yes);" +.IP "int \fBSSL_set_rfd\fR(\s-1SSL\s0 *ssl, int fd);" 4 +.IX Item "int SSL_set_rfd(SSL *ssl, int fd);" +.IP "int \fBSSL_set_session\fR(\s-1SSL\s0 *ssl, \s-1SSL_SESSION\s0 *session);" 4 +.IX Item "int SSL_set_session(SSL *ssl, SSL_SESSION *session);" +.IP "void \fBSSL_set_shutdown\fR(\s-1SSL\s0 *ssl, int mode);" 4 +.IX Item "void SSL_set_shutdown(SSL *ssl, int mode);" +.IP "int \fBSSL_set_ssl_method\fR(\s-1SSL\s0 *ssl, const \s-1SSL_METHOD\s0 *meth);" 4 +.IX Item "int SSL_set_ssl_method(SSL *ssl, const SSL_METHOD *meth);" +.IP "void \fBSSL_set_time\fR(\s-1SSL\s0 *ssl, long t);" 4 +.IX Item "void SSL_set_time(SSL *ssl, long t);" +.IP "void \fBSSL_set_timeout\fR(\s-1SSL\s0 *ssl, long t);" 4 +.IX Item "void SSL_set_timeout(SSL *ssl, long t);" +.IP "void \fBSSL_set_verify\fR(\s-1SSL\s0 *ssl, int mode, int (*callback);(void))" 4 +.IX Item "void SSL_set_verify(SSL *ssl, int mode, int (*callback);(void))" +.IP "void \fBSSL_set_verify_result\fR(\s-1SSL\s0 *ssl, long arg);" 4 +.IX Item "void SSL_set_verify_result(SSL *ssl, long arg);" +.IP "int \fBSSL_set_wfd\fR(\s-1SSL\s0 *ssl, int fd);" 4 +.IX Item "int SSL_set_wfd(SSL *ssl, int fd);" +.IP "int \fBSSL_shutdown\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_shutdown(SSL *ssl);" +.IP "\s-1OSSL_HANDSHAKE_STATE\s0 \fBSSL_get_state\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl);" +.PD +Returns the current handshake state. +.IP "char *\fBSSL_state_string\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "char *SSL_state_string(const SSL *ssl);" +.PD 0 +.IP "char *\fBSSL_state_string_long\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "char *SSL_state_string_long(const SSL *ssl);" +.IP "long \fBSSL_total_renegotiations\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "long SSL_total_renegotiations(SSL *ssl);" +.IP "int \fBSSL_use_PrivateKey\fR(\s-1SSL\s0 *ssl, \s-1EVP_PKEY\s0 *pkey);" 4 +.IX Item "int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey);" +.IP "int \fBSSL_use_PrivateKey_ASN1\fR(int type, \s-1SSL\s0 *ssl, unsigned char *d, long len);" 4 +.IX Item "int SSL_use_PrivateKey_ASN1(int type, SSL *ssl, unsigned char *d, long len);" +.IP "int \fBSSL_use_PrivateKey_file\fR(\s-1SSL\s0 *ssl, const char *file, int type);" 4 +.IX Item "int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type);" +.IP "int \fBSSL_use_RSAPrivateKey\fR(\s-1SSL\s0 *ssl, \s-1RSA\s0 *rsa);" 4 +.IX Item "int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa);" +.IP "int \fBSSL_use_RSAPrivateKey_ASN1\fR(\s-1SSL\s0 *ssl, unsigned char *d, long len);" 4 +.IX Item "int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *d, long len);" +.IP "int \fBSSL_use_RSAPrivateKey_file\fR(\s-1SSL\s0 *ssl, const char *file, int type);" 4 +.IX Item "int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type);" +.IP "int \fBSSL_use_certificate\fR(\s-1SSL\s0 *ssl, X509 *x);" 4 +.IX Item "int SSL_use_certificate(SSL *ssl, X509 *x);" +.IP "int \fBSSL_use_certificate_ASN1\fR(\s-1SSL\s0 *ssl, int len, unsigned char *d);" 4 +.IX Item "int SSL_use_certificate_ASN1(SSL *ssl, int len, unsigned char *d);" +.IP "int \fBSSL_use_certificate_file\fR(\s-1SSL\s0 *ssl, const char *file, int type);" 4 +.IX Item "int SSL_use_certificate_file(SSL *ssl, const char *file, int type);" +.IP "int \fBSSL_use_cert_and_key\fR(\s-1SSL\s0 *ssl, X509 *x, \s-1EVP_PKEY\s0 *pkey, \s-1STACK_OF\s0(X509) *chain, int override);" 4 +.IX Item "int SSL_use_cert_and_key(SSL *ssl, X509 *x, EVP_PKEY *pkey, STACK_OF(X509) *chain, int override);" +.IP "int \fBSSL_version\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_version(const SSL *ssl);" +.IP "int \fBSSL_want\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_want(const SSL *ssl);" +.IP "int \fBSSL_want_nothing\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_want_nothing(const SSL *ssl);" +.IP "int \fBSSL_want_read\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_want_read(const SSL *ssl);" +.IP "int \fBSSL_want_write\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_want_write(const SSL *ssl);" +.IP "int \fBSSL_want_x509_lookup\fR(const \s-1SSL\s0 *ssl);" 4 +.IX Item "int SSL_want_x509_lookup(const SSL *ssl);" +.IP "int \fBSSL_write\fR(\s-1SSL\s0 *ssl, const void *buf, int num);" 4 +.IX Item "int SSL_write(SSL *ssl, const void *buf, int num);" +.IP "void \fBSSL_set_psk_client_callback\fR(\s-1SSL\s0 *ssl, unsigned int (*callback)(\s-1SSL\s0 *ssl, const char *hint, char *identity, unsigned int max_identity_len, unsigned char *psk, unsigned int max_psk_len));" 4 +.IX Item "void SSL_set_psk_client_callback(SSL *ssl, unsigned int (*callback)(SSL *ssl, const char *hint, char *identity, unsigned int max_identity_len, unsigned char *psk, unsigned int max_psk_len));" +.IP "int \fBSSL_use_psk_identity_hint\fR(\s-1SSL\s0 *ssl, const char *hint);" 4 +.IX Item "int SSL_use_psk_identity_hint(SSL *ssl, const char *hint);" +.IP "void \fBSSL_set_psk_server_callback\fR(\s-1SSL\s0 *ssl, unsigned int (*callback)(\s-1SSL\s0 *ssl, const char *identity, unsigned char *psk, int max_psk_len));" 4 +.IX Item "void SSL_set_psk_server_callback(SSL *ssl, unsigned int (*callback)(SSL *ssl, const char *identity, unsigned char *psk, int max_psk_len));" +.IP "const char *\fBSSL_get_psk_identity_hint\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "const char *SSL_get_psk_identity_hint(SSL *ssl);" +.IP "const char *\fBSSL_get_psk_identity\fR(\s-1SSL\s0 *ssl);" 4 +.IX Item "const char *SSL_get_psk_identity(SSL *ssl);" +.PD +.SH "RETURN VALUES" +.IX Header "RETURN VALUES" +See the individual manual pages for details. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fBopenssl\fR\|(1), \fBcrypto\fR\|(7), +\&\fBCRYPTO_get_ex_new_index\fR\|(3), +\&\fBSSL_accept\fR\|(3), \fBSSL_clear\fR\|(3), +\&\fBSSL_connect\fR\|(3), +\&\fBSSL_CIPHER_get_name\fR\|(3), +\&\fBSSL_COMP_add_compression_method\fR\|(3), +\&\fBSSL_CTX_add_extra_chain_cert\fR\|(3), +\&\fBSSL_CTX_add_session\fR\|(3), +\&\fBSSL_CTX_ctrl\fR\|(3), +\&\fBSSL_CTX_flush_sessions\fR\|(3), +\&\fBSSL_CTX_get_verify_mode\fR\|(3), +\&\fBSSL_CTX_load_verify_locations\fR\|(3) +\&\fBSSL_CTX_new\fR\|(3), +\&\fBSSL_CTX_sess_number\fR\|(3), +\&\fBSSL_CTX_sess_set_cache_size\fR\|(3), +\&\fBSSL_CTX_sess_set_get_cb\fR\|(3), +\&\fBSSL_CTX_sessions\fR\|(3), +\&\fBSSL_CTX_set_cert_store\fR\|(3), +\&\fBSSL_CTX_set_cert_verify_callback\fR\|(3), +\&\fBSSL_CTX_set_cipher_list\fR\|(3), +\&\fBSSL_CTX_set_client_CA_list\fR\|(3), +\&\fBSSL_CTX_set_client_cert_cb\fR\|(3), +\&\fBSSL_CTX_set_default_passwd_cb\fR\|(3), +\&\fBSSL_CTX_set_generate_session_id\fR\|(3), +\&\fBSSL_CTX_set_info_callback\fR\|(3), +\&\fBSSL_CTX_set_max_cert_list\fR\|(3), +\&\fBSSL_CTX_set_mode\fR\|(3), +\&\fBSSL_CTX_set_msg_callback\fR\|(3), +\&\fBSSL_CTX_set_options\fR\|(3), +\&\fBSSL_CTX_set_quiet_shutdown\fR\|(3), +\&\fBSSL_CTX_set_read_ahead\fR\|(3), +\&\fBSSL_CTX_set_security_level\fR\|(3), +\&\fBSSL_CTX_set_session_cache_mode\fR\|(3), +\&\fBSSL_CTX_set_session_id_context\fR\|(3), +\&\fBSSL_CTX_set_ssl_version\fR\|(3), +\&\fBSSL_CTX_set_timeout\fR\|(3), +\&\fBSSL_CTX_set_tmp_dh_callback\fR\|(3), +\&\fBSSL_CTX_set_verify\fR\|(3), +\&\fBSSL_CTX_use_certificate\fR\|(3), +\&\fBSSL_alert_type_string\fR\|(3), +\&\fBSSL_do_handshake\fR\|(3), +\&\fBSSL_enable_ct\fR\|(3), +\&\fBSSL_get_SSL_CTX\fR\|(3), +\&\fBSSL_get_ciphers\fR\|(3), +\&\fBSSL_get_client_CA_list\fR\|(3), +\&\fBSSL_get_default_timeout\fR\|(3), +\&\fBSSL_get_error\fR\|(3), +\&\fBSSL_get_ex_data_X509_STORE_CTX_idx\fR\|(3), +\&\fBSSL_get_fd\fR\|(3), +\&\fBSSL_get_peer_cert_chain\fR\|(3), +\&\fBSSL_get_rbio\fR\|(3), +\&\fBSSL_get_session\fR\|(3), +\&\fBSSL_get_verify_result\fR\|(3), +\&\fBSSL_get_version\fR\|(3), +\&\fBSSL_load_client_CA_file\fR\|(3), +\&\fBSSL_new\fR\|(3), +\&\fBSSL_pending\fR\|(3), +\&\fBSSL_read_ex\fR\|(3), +\&\fBSSL_read\fR\|(3), +\&\fBSSL_rstate_string\fR\|(3), +\&\fBSSL_session_reused\fR\|(3), +\&\fBSSL_set_bio\fR\|(3), +\&\fBSSL_set_connect_state\fR\|(3), +\&\fBSSL_set_fd\fR\|(3), +\&\fBSSL_set_session\fR\|(3), +\&\fBSSL_set_shutdown\fR\|(3), +\&\fBSSL_shutdown\fR\|(3), +\&\fBSSL_state_string\fR\|(3), +\&\fBSSL_want\fR\|(3), +\&\fBSSL_write_ex\fR\|(3), +\&\fBSSL_write\fR\|(3), +\&\fBSSL_SESSION_free\fR\|(3), +\&\fBSSL_SESSION_get_time\fR\|(3), +\&\fBd2i_SSL_SESSION\fR\|(3), +\&\fBSSL_CTX_set_psk_client_callback\fR\|(3), +\&\fBSSL_CTX_use_psk_identity_hint\fR\|(3), +\&\fBSSL_get_psk_identity\fR\|(3), +\&\fBDTLSv1_listen\fR\|(3) +.SH "HISTORY" +.IX Header "HISTORY" +\&\fBSSLv2_client_method\fR, \fBSSLv2_server_method\fR and \fBSSLv2_method\fR were removed +in OpenSSL 1.1.0. +.PP +The return type of \fBSSL_copy_session_id\fR was changed from void to int in +OpenSSL 1.1.0. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright 2000\-2018 The OpenSSL Project Authors. All Rights Reserved. +.PP +Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file \s-1LICENSE\s0 in the source distribution or at +<https://www.openssl.org/source/license.html>. diff --git a/secure/lib/libcrypto/man/man7/x509.7 b/secure/lib/libcrypto/man/man7/x509.7 new file mode 100644 index 0000000000000..6d493eba9a0c8 --- /dev/null +++ b/secure/lib/libcrypto/man/man7/x509.7 @@ -0,0 +1,206 @@ +.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.40) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "X509 7" +.TH X509 7 "2019-09-10" "1.1.1d" "OpenSSL" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +x509 \- X.509 certificate handling +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +.Vb 1 +\& #include <openssl/x509.h> +.Ve +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +An X.509 certificate is a structured grouping of information about +an individual, a device, or anything one can imagine. A X.509 \s-1CRL\s0 +(certificate revocation list) is a tool to help determine if a +certificate is still valid. The exact definition of those can be +found in the X.509 document from ITU-T, or in \s-1RFC3280\s0 from \s-1PKIX.\s0 +In OpenSSL, the type X509 is used to express such a certificate, and +the type X509_CRL is used to express a \s-1CRL.\s0 +.PP +A related structure is a certificate request, defined in PKCS#10 from +\&\s-1RSA\s0 Security, Inc, also reflected in \s-1RFC2896.\s0 In OpenSSL, the type +X509_REQ is used to express such a certificate request. +.PP +To handle some complex parts of a certificate, there are the types +X509_NAME (to express a certificate name), X509_ATTRIBUTE (to express +a certificate attributes), X509_EXTENSION (to express a certificate +extension) and a few more. +.PP +Finally, there's the supertype X509_INFO, which can contain a \s-1CRL,\s0 a +certificate and a corresponding private key. +.PP +\&\fBX509_\fR\fI\s-1XXX\s0\fR, \fBd2i_X509_\fR\fI\s-1XXX\s0\fR, and \fBi2d_X509_\fR\fI\s-1XXX\s0\fR functions +handle X.509 certificates, with some exceptions, shown below. +.PP +\&\fBX509_CRL_\fR\fI\s-1XXX\s0\fR, \fBd2i_X509_CRL_\fR\fI\s-1XXX\s0\fR, and \fBi2d_X509_CRL_\fR\fI\s-1XXX\s0\fR +functions handle X.509 CRLs. +.PP +\&\fBX509_REQ_\fR\fI\s-1XXX\s0\fR, \fBd2i_X509_REQ_\fR\fI\s-1XXX\s0\fR, and \fBi2d_X509_REQ_\fR\fI\s-1XXX\s0\fR +functions handle PKCS#10 certificate requests. +.PP +\&\fBX509_NAME_\fR\fI\s-1XXX\s0\fR functions handle certificate names. +.PP +\&\fBX509_ATTRIBUTE_\fR\fI\s-1XXX\s0\fR functions handle certificate attributes. +.PP +\&\fBX509_EXTENSION_\fR\fI\s-1XXX\s0\fR functions handle certificate extensions. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fBX509_NAME_ENTRY_get_object\fR\|(3), +\&\fBX509_NAME_add_entry_by_txt\fR\|(3), +\&\fBX509_NAME_add_entry_by_NID\fR\|(3), +\&\fBX509_NAME_print_ex\fR\|(3), +\&\fBX509_NAME_new\fR\|(3), +\&\fBd2i_X509\fR\|(3), +\&\fBd2i_X509_ALGOR\fR\|(3), +\&\fBd2i_X509_CRL\fR\|(3), +\&\fBd2i_X509_NAME\fR\|(3), +\&\fBd2i_X509_REQ\fR\|(3), +\&\fBd2i_X509_SIG\fR\|(3), +\&\fBX509v3\fR\|(3), +\&\fBcrypto\fR\|(7) +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright 2003\-2017 The OpenSSL Project Authors. All Rights Reserved. +.PP +Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file \s-1LICENSE\s0 in the source distribution or at +<https://www.openssl.org/source/license.html>. diff --git a/share/man/man4/cpufreq.4 b/share/man/man4/cpufreq.4 index 850660e1b1190..88467dbd66d19 100644 --- a/share/man/man4/cpufreq.4 +++ b/share/man/man4/cpufreq.4 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 3, 2006 +.Dd January 22, 2020 .Dt CPUFREQ 4 .Os .Sh NAME @@ -85,6 +85,10 @@ sysctl entry. .Bl -tag -width indent .It Va dev.cpu.%d.freq Current active CPU frequency in MHz. +.It Va dev.cpu.%d.freq_driver +The specific +.Nm +driver used by this cpu. .It Va dev.cpu.%d.freq_levels Currently available levels for the CPU (frequency/power usage). Values are in units of MHz and milliwatts. diff --git a/share/man/man4/hwpstate_intel.4 b/share/man/man4/hwpstate_intel.4 new file mode 100644 index 0000000000000..a6b0c5beb27c9 --- /dev/null +++ b/share/man/man4/hwpstate_intel.4 @@ -0,0 +1,89 @@ +.\" +.\" Copyright (c) 2019 Intel Corporation +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd January 22, 2020 +.Dt HWPSTATE_INTEL 4 +.Os +.Sh NAME +.Nm hwpstate_intel +.Nd Intel Speed Shift Technology driver +.Sh SYNOPSIS +To compile this driver into your kernel +place the following line in your kernel +configuration file: +.Bd -ragged -offset indent +.Cd "device cpufreq" +.Ed +.Sh DESCRIPTION +The +.Nm +driver provides support for hardware-controlled performance states on Intel +platforms, also known as Intel Speed Shift Technology. +.Sh LOADER TUNABLES +.Bl -tag -width indent +.It Va hint.hwpstate_intel.0.disabled +Can be used to disable +.Nm , +allowing other compatible drivers to manage performance states, like +.Xr est 4 . +.Pq default 0 +.El +.Sh SYSCTL VARIABLES +The following +.Xr sysctl 8 +values are available +.Bl -tag -width indent +.It Va dev.hwpstate_intel.%d.\%desc +Describes the attached driver +.It dev.hwpstate_intel.0.%desc: Intel Speed Shift +.It Va dev.hwpstate_intel.%d.\%driver +Driver in use, always hwpstate_intel. +.It dev.hwpstate_intel.0.%driver: hwpstate_intel +.It Va dev.hwpstate_intel.%d.\%parent +.It dev.hwpstate_intel.0.%parent: cpu0 +The cpu that is exposing these frequencies. +For example +.Va cpu0 . +.It Va dev.hwpstate_intel.%d.epp +Energy/Performance Preference. +Valid values range from 0 to 100. +Setting this field conveys a hint to the hardware regarding a preference towards +performance (at value 0), energy efficiency (at value 100), or somewhere in +between. +.It dev.hwpstate_intel.0.epp: 0 +.El +.Sh COMPATIBILITY +.Nm +is only found on supported Intel CPUs. +.Sh SEE ALSO +.Xr cpufreq 4 +.Rs +.%T "Intel 64 and IA-32 Architectures Software Developer Manuals" +.%U "http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html" +.Re +.Sh AUTHORS +This manual page was written by +.An D Scott Phillips Aq Mt scottph@FreeBSD.org . diff --git a/share/man/man4/netmap.4 b/share/man/man4/netmap.4 index 54ebf2ba5f033..91c0e3728cda7 100644 --- a/share/man/man4/netmap.4 +++ b/share/man/man4/netmap.4 @@ -985,7 +985,7 @@ interfaces, as in or even connect the NIC to the host stack using netmap .Dl bridge -i netmap:ix0 .Ss USING THE NATIVE API -The following code implements a traffic generator +The following code implements a traffic generator: .Pp .Bd -literal -compact #include <net/netmap_user.h> @@ -1020,7 +1020,8 @@ void sender(void) } .Ed .Ss HELPER FUNCTIONS -A simple receiver can be implemented using the helper functions +A simple receiver can be implemented using the helper functions: +.Pp .Bd -literal -compact #define NETMAP_WITH_LIBS #include <net/netmap_user.h> @@ -1049,6 +1050,7 @@ it is possible to do packet forwarding between ports swapping buffers. The buffer from the transmit ring is used to replenish the receive ring: +.Pp .Bd -literal -compact uint32_t tmp; struct netmap_slot *src, *dst; diff --git a/share/man/man4/ng_nat.4 b/share/man/man4/ng_nat.4 index 018d4521eed28..b7c65fe89b205 100644 --- a/share/man/man4/ng_nat.4 +++ b/share/man/man4/ng_nat.4 @@ -35,7 +35,7 @@ .Sh DESCRIPTION An .Nm -node performs network address translation (NAT) of packets +node performs network address translation (NAT) of IPv4 packets passing through it. A .Nm nat diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile index 3e77d73215091..bb203eab9d0f2 100644 --- a/share/man/man9/Makefile +++ b/share/man/man9/Makefile @@ -770,7 +770,6 @@ MLINKS+=callout.9 callout_active.9 \ callout.9 callout_async_drain.9 \ callout.9 callout_deactivate.9 \ callout.9 callout_drain.9 \ - callout.9 callout_handle_init.9 \ callout.9 callout_init.9 \ callout.9 callout_init_mtx.9 \ callout.9 callout_init_rm.9 \ diff --git a/share/man/man9/callout.9 b/share/man/man9/callout.9 index 26130bfd5fdd2..9e0cf5e6dc5e3 100644 --- a/share/man/man9/callout.9 +++ b/share/man/man9/callout.9 @@ -37,7 +37,6 @@ .Nm callout_deactivate , .Nm callout_async_drain , .Nm callout_drain , -.Nm callout_handle_init , .Nm callout_init , .Nm callout_init_mtx , .Nm callout_init_rm , @@ -73,11 +72,6 @@ typedef void callout_func_t (void *); .Ft int .Fn callout_drain "struct callout *c" .Ft void -.Fn callout_handle_init "struct callout_handle *handle" -.Bd -literal -struct callout_handle handle = CALLOUT_HANDLE_INITIALIZER(&handle); -.Ed -.Ft void .Fn callout_init "struct callout *c" "int mpsafe" .Ft void .Fn callout_init_mtx "struct callout *c" "struct mtx *mtx" "int flags" diff --git a/share/man/man9/epoch.9 b/share/man/man9/epoch.9 index ca3886c9860c5..7ea7dec0471e1 100644 --- a/share/man/man9/epoch.9 +++ b/share/man/man9/epoch.9 @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 27, 2019 +.Dd January 16, 2020 .Dt EPOCH 9 .Os .Sh NAME @@ -60,6 +60,7 @@ struct epoch_context { }; .Ed .Vt typedef "struct epoch_context *epoch_context_t" ; +.Vt typedef "void epoch_callback_t(epoch_context_t)" ; .Bd -literal struct epoch_tracker; /* Opaque */ .Ed @@ -82,7 +83,7 @@ struct epoch_tracker; /* Opaque */ .Ft void .Fn epoch_wait_preempt "epoch_t epoch" .Ft void -.Fn epoch_call "epoch_t epoch" "epoch_context_t ctx" "void (*callback)(epoch_context_t)" +.Fn epoch_call "epoch_t epoch" "epoch_callback_t callback" "epoch_context_t ctx" .Ft void .Fn epoch_drain_callbacks "epoch_t epoch" .Ft int @@ -254,7 +255,7 @@ ifa_free(struct ifaddr *ifa) { if (refcount_release(&ifa->ifa_refcnt)) - epoch_call(net_epoch, &ifa->ifa_epoch_ctx, ifa_destroy); + epoch_call(net_epoch, ifa_destroy, &ifa->ifa_epoch_ctx); } void diff --git a/share/man/man9/fetch.9 b/share/man/man9/fetch.9 index 778b80c98cf6b..5384c4f9204e2 100644 --- a/share/man/man9/fetch.9 +++ b/share/man/man9/fetch.9 @@ -34,7 +34,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 17, 2018 +.Dd January 23, 2020 .Dt FETCH 9 .Os .Sh NAME @@ -61,11 +61,11 @@ .Fn fuword32 "volatile const void *base" .Ft int64_t .Fn fuword64 "volatile const void *base" -.Ft long +.Ft int .Fn fueword "volatile const void *base" "long *val" -.Ft int32_t +.Ft int .Fn fueword32 "volatile const void *base" "int32_t *val" -.Ft int64_t +.Ft int .Fn fueword64 "volatile const void *base" "int64_t *val" .In sys/resourcevar.h .Sh DESCRIPTION diff --git a/share/termcap/Makefile b/share/termcap/Makefile index 9b1e09c2c1784..c261da5e79218 100644 --- a/share/termcap/Makefile +++ b/share/termcap/Makefile @@ -19,6 +19,7 @@ termcap.db: termcap cap_mkdb ${CAP_MKDB_ENDIAN} -f ${.TARGET:R} ${.ALLSRC} etc-termcap: - ${INSTALL_SYMLINK} ${BINDIR}/misc/termcap ${DESTDIR}/etc/termcap + ${INSTALL_SYMLINK} -T "package=runtime" \ + ${BINDIR}/misc/termcap ${DESTDIR}/etc/termcap .include <bsd.prog.mk> diff --git a/stand/i386/libi386/bootinfo64.c b/stand/i386/libi386/bootinfo64.c index c9e61cac74142..93723a6943e3c 100644 --- a/stand/i386/libi386/bootinfo64.c +++ b/stand/i386/libi386/bootinfo64.c @@ -158,6 +158,7 @@ bi_checkcpu(void) /* Check for vendors that support AMD features. */ if (strncmp(cpu_vendor, INTEL_VENDOR_ID, 12) != 0 && strncmp(cpu_vendor, AMD_VENDOR_ID, 12) != 0 && + strncmp(cpu_vendor, HYGON_VENDOR_ID, 12) != 0 && strncmp(cpu_vendor, CENTAUR_VENDOR_ID, 12) != 0) return (0); diff --git a/stand/lua/config.lua b/stand/lua/config.lua index 873e778810b1d..77603ee24c84e 100644 --- a/stand/lua/config.lua +++ b/stand/lua/config.lua @@ -623,7 +623,7 @@ end function config.loadelf() local xen_kernel = loader.getenv('xen_kernel') local kernel = config.kernel_selected or config.kernel_loaded - local loaded + local loaded, status if xen_kernel ~= nil then print(MSG_XENKERNLOADING) @@ -640,9 +640,12 @@ function config.loadelf() end print(MSG_MODLOADING) - return loadModule(modules, not config.verbose) + status = loadModule(modules, not config.verbose) + hook.runAll("modules.loaded") + return status end hook.registerType("config.loaded") hook.registerType("config.reloaded") +hook.registerType("modules.loaded") return config diff --git a/stand/lua/loader.lua b/stand/lua/loader.lua index c875f63a1b4a7..dacabe96e62fe 100644 --- a/stand/lua/loader.lua +++ b/stand/lua/loader.lua @@ -42,14 +42,14 @@ local password = require("password") -- need it. local menu -try_include("local") - config.load() + -- Our console may have been setup for a different color scheme before we get -- here, so make sure we set the default. if color.isEnabled() then printc(color.default()) end +try_include("local") if not core.isMenuSkipped() then menu = require("menu") end diff --git a/stand/usb/usbcore.mk b/stand/usb/usbcore.mk index b43d9d2471019..7e0cc989228ba 100644 --- a/stand/usb/usbcore.mk +++ b/stand/usb/usbcore.mk @@ -1,7 +1,7 @@ # # $FreeBSD$ # -# Copyright (c) 2013 Hans Petter Selasky. +# Copyright (c) 2013-2020 Hans Petter Selasky. # Copyright (c) 2014 SRI International # All rights reserved. # @@ -162,6 +162,8 @@ KSRCS+= usb_template_audio.c KSRCS+= usb_template_phone.c KSRCS+= usb_template_serialnet.c KSRCS+= usb_template_midi.c +KSRCS+= usb_template_multi.c +KSRCS+= usb_template_cdceem.c # # USB mass storage support diff --git a/sys/amd64/amd64/initcpu.c b/sys/amd64/amd64/initcpu.c index 2de9cc35f3b7d..cb7226e3cc54b 100644 --- a/sys/amd64/amd64/initcpu.c +++ b/sys/amd64/amd64/initcpu.c @@ -171,7 +171,8 @@ init_amd(void) */ if (lower_sharedpage_init == 0) { lower_sharedpage_init = 1; - if (CPUID_TO_FAMILY(cpu_id) == 0x17) { + if (CPUID_TO_FAMILY(cpu_id) == 0x17 || + CPUID_TO_FAMILY(cpu_id) == 0x18) { hw_lower_amd64_sharedpage = 1; } } @@ -259,6 +260,7 @@ initializecpu(void) amd64_syscall_ret_flush_l1d_recalc(); switch (cpu_vendor_id) { case CPU_VENDOR_AMD: + case CPU_VENDOR_HYGON: init_amd(); break; case CPU_VENDOR_CENTAUR: diff --git a/sys/amd64/linux32/linux32_machdep.c b/sys/amd64/linux32/linux32_machdep.c index 10cd7344a0a75..b62a300191cbe 100644 --- a/sys/amd64/linux32/linux32_machdep.c +++ b/sys/amd64/linux32/linux32_machdep.c @@ -593,13 +593,6 @@ linux_sigaltstack(struct thread *td, struct linux_sigaltstack_args *uap) } int -linux_ftruncate64(struct thread *td, struct linux_ftruncate64_args *args) -{ - - return (kern_ftruncate(td, args->fd, args->length)); -} - -int linux_gettimeofday(struct thread *td, struct linux_gettimeofday_args *uap) { struct timeval atv; diff --git a/sys/amd64/linux32/linux32_proto.h b/sys/amd64/linux32/linux32_proto.h index 47cd33e9b3603..ed89d8dbc5549 100644 --- a/sys/amd64/linux32/linux32_proto.h +++ b/sys/amd64/linux32/linux32_proto.h @@ -574,13 +574,15 @@ struct linux_pread_args { char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)]; char nbyte_l_[PADL_(l_size_t)]; l_size_t nbyte; char nbyte_r_[PADR_(l_size_t)]; - char offset_l_[PADL_(l_loff_t)]; l_loff_t offset; char offset_r_[PADR_(l_loff_t)]; + char offset1_l_[PADL_(uint32_t)]; uint32_t offset1; char offset1_r_[PADR_(uint32_t)]; + char offset2_l_[PADL_(uint32_t)]; uint32_t offset2; char offset2_r_[PADR_(uint32_t)]; }; struct linux_pwrite_args { char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)]; char nbyte_l_[PADL_(l_size_t)]; l_size_t nbyte; char nbyte_r_[PADR_(l_size_t)]; - char offset_l_[PADL_(l_loff_t)]; l_loff_t offset; char offset_r_[PADR_(l_loff_t)]; + char offset1_l_[PADL_(uint32_t)]; uint32_t offset1; char offset1_r_[PADR_(uint32_t)]; + char offset2_l_[PADL_(uint32_t)]; uint32_t offset2; char offset2_r_[PADR_(uint32_t)]; }; struct linux_chown16_args { char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; @@ -623,11 +625,13 @@ struct linux_mmap2_args { }; struct linux_truncate64_args { char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; - char length_l_[PADL_(l_loff_t)]; l_loff_t length; char length_r_[PADR_(l_loff_t)]; + char length1_l_[PADL_(uint32_t)]; uint32_t length1; char length1_r_[PADR_(uint32_t)]; + char length2_l_[PADL_(uint32_t)]; uint32_t length2; char length2_r_[PADR_(uint32_t)]; }; struct linux_ftruncate64_args { char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; - char length_l_[PADL_(l_loff_t)]; l_loff_t length; char length_r_[PADR_(l_loff_t)]; + char length1_l_[PADL_(uint32_t)]; uint32_t length1; char length1_r_[PADR_(uint32_t)]; + char length2_l_[PADL_(uint32_t)]; uint32_t length2; char length2_r_[PADR_(uint32_t)]; }; struct linux_stat64_args { char filename_l_[PADL_(const char *)]; const char * filename; char filename_r_[PADR_(const char *)]; @@ -756,7 +760,8 @@ struct linux_set_thread_area_args { }; struct linux_fadvise64_args { char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; - char offset_l_[PADL_(l_loff_t)]; l_loff_t offset; char offset_r_[PADR_(l_loff_t)]; + char offset1_l_[PADL_(uint32_t)]; uint32_t offset1; char offset1_r_[PADR_(uint32_t)]; + char offset2_l_[PADL_(uint32_t)]; uint32_t offset2; char offset2_r_[PADR_(uint32_t)]; char len_l_[PADL_(l_size_t)]; l_size_t len; char len_r_[PADR_(l_size_t)]; char advice_l_[PADL_(int)]; int advice; char advice_r_[PADR_(int)]; }; @@ -847,8 +852,10 @@ struct linux_utimes_args { }; struct linux_fadvise64_64_args { char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; - char offset_l_[PADL_(l_loff_t)]; l_loff_t offset; char offset_r_[PADR_(l_loff_t)]; - char len_l_[PADL_(l_loff_t)]; l_loff_t len; char len_r_[PADR_(l_loff_t)]; + char offset1_l_[PADL_(uint32_t)]; uint32_t offset1; char offset1_r_[PADR_(uint32_t)]; + char offset2_l_[PADL_(uint32_t)]; uint32_t offset2; char offset2_r_[PADR_(uint32_t)]; + char len1_l_[PADL_(uint32_t)]; uint32_t len1; char len1_r_[PADR_(uint32_t)]; + char len2_l_[PADL_(uint32_t)]; uint32_t len2; char len2_r_[PADR_(uint32_t)]; char advice_l_[PADL_(int)]; int advice; char advice_r_[PADR_(int)]; }; struct linux_mbind_args { @@ -1021,8 +1028,10 @@ struct linux_splice_args { }; struct linux_sync_file_range_args { char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)]; - char offset_l_[PADL_(l_loff_t)]; l_loff_t offset; char offset_r_[PADR_(l_loff_t)]; - char nbytes_l_[PADL_(l_loff_t)]; l_loff_t nbytes; char nbytes_r_[PADR_(l_loff_t)]; + char offset1_l_[PADL_(uint32_t)]; uint32_t offset1; char offset1_r_[PADR_(uint32_t)]; + char offset2_l_[PADL_(uint32_t)]; uint32_t offset2; char offset2_r_[PADR_(uint32_t)]; + char nbytes1_l_[PADL_(uint32_t)]; uint32_t nbytes1; char nbytes1_r_[PADR_(uint32_t)]; + char nbytes2_l_[PADL_(uint32_t)]; uint32_t nbytes2; char nbytes2_r_[PADR_(uint32_t)]; char flags_l_[PADL_(unsigned int)]; unsigned int flags; char flags_r_[PADR_(unsigned int)]; }; struct linux_tee_args { @@ -1066,8 +1075,10 @@ struct linux_eventfd_args { struct linux_fallocate_args { char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)]; char mode_l_[PADL_(l_int)]; l_int mode; char mode_r_[PADR_(l_int)]; - char offset_l_[PADL_(l_loff_t)]; l_loff_t offset; char offset_r_[PADR_(l_loff_t)]; - char len_l_[PADL_(l_loff_t)]; l_loff_t len; char len_r_[PADR_(l_loff_t)]; + char offset1_l_[PADL_(uint32_t)]; uint32_t offset1; char offset1_r_[PADR_(uint32_t)]; + char offset2_l_[PADL_(uint32_t)]; uint32_t offset2; char offset2_r_[PADR_(uint32_t)]; + char len1_l_[PADL_(uint32_t)]; uint32_t len1; char len1_r_[PADR_(uint32_t)]; + char len2_l_[PADL_(uint32_t)]; uint32_t len2; char len2_r_[PADR_(uint32_t)]; }; struct linux_timerfd_settime_args { char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)]; diff --git a/sys/amd64/linux32/linux32_systrace_args.c b/sys/amd64/linux32/linux32_systrace_args.c index 93bea63ca38d8..d7b7fdc29ad37 100644 --- a/sys/amd64/linux32/linux32_systrace_args.c +++ b/sys/amd64/linux32/linux32_systrace_args.c @@ -1235,8 +1235,9 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args) iarg[0] = p->fd; /* l_uint */ uarg[1] = (intptr_t) p->buf; /* char * */ iarg[2] = p->nbyte; /* l_size_t */ - iarg[3] = p->offset; /* l_loff_t */ - *n_args = 4; + uarg[3] = p->offset1; /* uint32_t */ + uarg[4] = p->offset2; /* uint32_t */ + *n_args = 5; break; } /* linux_pwrite */ @@ -1245,8 +1246,9 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args) iarg[0] = p->fd; /* l_uint */ uarg[1] = (intptr_t) p->buf; /* char * */ iarg[2] = p->nbyte; /* l_size_t */ - iarg[3] = p->offset; /* l_loff_t */ - *n_args = 4; + uarg[3] = p->offset1; /* uint32_t */ + uarg[4] = p->offset2; /* uint32_t */ + *n_args = 5; break; } /* linux_chown16 */ @@ -1324,16 +1326,18 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args) case 193: { struct linux_truncate64_args *p = params; uarg[0] = (intptr_t) p->path; /* char * */ - iarg[1] = p->length; /* l_loff_t */ - *n_args = 2; + uarg[1] = p->length1; /* uint32_t */ + uarg[2] = p->length2; /* uint32_t */ + *n_args = 3; break; } /* linux_ftruncate64 */ case 194: { struct linux_ftruncate64_args *p = params; iarg[0] = p->fd; /* l_uint */ - iarg[1] = p->length; /* l_loff_t */ - *n_args = 2; + uarg[1] = p->length1; /* uint32_t */ + uarg[2] = p->length2; /* uint32_t */ + *n_args = 3; break; } /* linux_stat64 */ @@ -1657,10 +1661,11 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args) case 250: { struct linux_fadvise64_args *p = params; iarg[0] = p->fd; /* int */ - iarg[1] = p->offset; /* l_loff_t */ - iarg[2] = p->len; /* l_size_t */ - iarg[3] = p->advice; /* int */ - *n_args = 4; + uarg[1] = p->offset1; /* uint32_t */ + uarg[2] = p->offset2; /* uint32_t */ + iarg[3] = p->len; /* l_size_t */ + iarg[4] = p->advice; /* int */ + *n_args = 5; break; } /* linux_exit_group */ @@ -1828,10 +1833,12 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args) case 272: { struct linux_fadvise64_64_args *p = params; iarg[0] = p->fd; /* int */ - iarg[1] = p->offset; /* l_loff_t */ - iarg[2] = p->len; /* l_loff_t */ - iarg[3] = p->advice; /* int */ - *n_args = 4; + uarg[1] = p->offset1; /* uint32_t */ + uarg[2] = p->offset2; /* uint32_t */ + uarg[3] = p->len1; /* uint32_t */ + uarg[4] = p->len2; /* uint32_t */ + iarg[5] = p->advice; /* int */ + *n_args = 6; break; } /* linux_mbind */ @@ -2120,10 +2127,12 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args) case 314: { struct linux_sync_file_range_args *p = params; iarg[0] = p->fd; /* l_int */ - iarg[1] = p->offset; /* l_loff_t */ - iarg[2] = p->nbytes; /* l_loff_t */ - uarg[3] = p->flags; /* unsigned int */ - *n_args = 4; + uarg[1] = p->offset1; /* uint32_t */ + uarg[2] = p->offset2; /* uint32_t */ + uarg[3] = p->nbytes1; /* uint32_t */ + uarg[4] = p->nbytes2; /* uint32_t */ + uarg[5] = p->flags; /* unsigned int */ + *n_args = 6; break; } /* linux_tee */ @@ -2197,9 +2206,11 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args) struct linux_fallocate_args *p = params; iarg[0] = p->fd; /* l_int */ iarg[1] = p->mode; /* l_int */ - iarg[2] = p->offset; /* l_loff_t */ - iarg[3] = p->len; /* l_loff_t */ - *n_args = 4; + uarg[2] = p->offset1; /* uint32_t */ + uarg[3] = p->offset2; /* uint32_t */ + uarg[4] = p->len1; /* uint32_t */ + uarg[5] = p->len2; /* uint32_t */ + *n_args = 6; break; } /* linux_timerfd_settime */ @@ -4875,7 +4886,10 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) p = "l_size_t"; break; case 3: - p = "l_loff_t"; + p = "uint32_t"; + break; + case 4: + p = "uint32_t"; break; default: break; @@ -4894,7 +4908,10 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) p = "l_size_t"; break; case 3: - p = "l_loff_t"; + p = "uint32_t"; + break; + case 4: + p = "uint32_t"; break; default: break; @@ -5019,7 +5036,10 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) p = "userland char *"; break; case 1: - p = "l_loff_t"; + p = "uint32_t"; + break; + case 2: + p = "uint32_t"; break; default: break; @@ -5032,7 +5052,10 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) p = "l_uint"; break; case 1: - p = "l_loff_t"; + p = "uint32_t"; + break; + case 2: + p = "uint32_t"; break; default: break; @@ -5483,12 +5506,15 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) p = "int"; break; case 1: - p = "l_loff_t"; + p = "uint32_t"; break; case 2: - p = "l_size_t"; + p = "uint32_t"; break; case 3: + p = "l_size_t"; + break; + case 4: p = "int"; break; default: @@ -5763,12 +5789,18 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) p = "int"; break; case 1: - p = "l_loff_t"; + p = "uint32_t"; break; case 2: - p = "l_loff_t"; + p = "uint32_t"; break; case 3: + p = "uint32_t"; + break; + case 4: + p = "uint32_t"; + break; + case 5: p = "int"; break; default: @@ -6178,12 +6210,18 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) p = "l_int"; break; case 1: - p = "l_loff_t"; + p = "uint32_t"; break; case 2: - p = "l_loff_t"; + p = "uint32_t"; break; case 3: + p = "uint32_t"; + break; + case 4: + p = "uint32_t"; + break; + case 5: p = "unsigned int"; break; default: @@ -6295,10 +6333,16 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) p = "l_int"; break; case 2: - p = "l_loff_t"; + p = "uint32_t"; break; case 3: - p = "l_loff_t"; + p = "uint32_t"; + break; + case 4: + p = "uint32_t"; + break; + case 5: + p = "uint32_t"; break; default: break; diff --git a/sys/amd64/linux32/syscalls.master b/sys/amd64/linux32/syscalls.master index b923b7e25ad53..602c514472143 100644 --- a/sys/amd64/linux32/syscalls.master +++ b/sys/amd64/linux32/syscalls.master @@ -325,9 +325,9 @@ l_sigset_t *newset, \ l_size_t sigsetsize); } 180 AUE_PREAD STD { int linux_pread(l_uint fd, char *buf, \ - l_size_t nbyte, l_loff_t offset); } + l_size_t nbyte, uint32_t offset1, uint32_t offset2); } 181 AUE_PWRITE STD { int linux_pwrite(l_uint fd, char *buf, \ - l_size_t nbyte, l_loff_t offset); } + l_size_t nbyte, uint32_t offset1, uint32_t offset2); } 182 AUE_CHOWN STD { int linux_chown16(char *path, \ l_uid16_t uid, l_gid16_t gid); } 183 AUE_GETCWD STD { int linux_getcwd(char *buf, \ @@ -349,9 +349,9 @@ l_ulong prot, l_ulong flags, l_ulong fd, \ l_ulong pgoff); } 193 AUE_TRUNCATE STD { int linux_truncate64(char *path, \ - l_loff_t length); } + uint32_t length1, uint32_t length2); } 194 AUE_FTRUNCATE STD { int linux_ftruncate64(l_uint fd, \ - l_loff_t length); } + uint32_t length1, uint32_t length2); } 195 AUE_STAT STD { int linux_stat64(const char *filename, \ struct l_stat64 *statbuf); } 196 AUE_LSTAT STD { int linux_lstat64(const char *filename, \ @@ -426,7 +426,7 @@ 247 AUE_NULL UNIMPL linux_io_getevents 248 AUE_NULL UNIMPL linux_io_submit 249 AUE_NULL UNIMPL linux_io_cancel -250 AUE_NULL STD { int linux_fadvise64(int fd, l_loff_t offset, \ +250 AUE_NULL STD { int linux_fadvise64(int fd, uint32_t offset1, uint32_t offset2, \ l_size_t len, int advice); } 251 AUE_NULL UNIMPL 252 AUE_EXIT STD { int linux_exit_group(int error_code); } @@ -456,7 +456,8 @@ 271 AUE_UTIMES STD { int linux_utimes(char *fname, \ struct l_timeval *tptr); } 272 AUE_NULL STD { int linux_fadvise64_64(int fd, \ - l_loff_t offset, l_loff_t len, \ + uint32_t offset1, uint32_t offset2, \ + uint32_t len1, uint32_t len2, \ int advice); } 273 AUE_NULL UNIMPL vserver 274 AUE_NULL STD { int linux_mbind(void); } @@ -524,8 +525,9 @@ 312 AUE_NULL STD { int linux_get_robust_list(l_int pid, \ struct linux_robust_list_head **head, l_size_t *len); } 313 AUE_NULL STD { int linux_splice(void); } -314 AUE_NULL STD { int linux_sync_file_range(l_int fd, l_loff_t offset, - l_loff_t nbytes, unsigned int flags); } +314 AUE_NULL STD { int linux_sync_file_range(l_int fd, uint32_t offset1, + uint32_t offset2, uint32_t nbytes1, uint32_t nbytes2, + unsigned int flags); } 315 AUE_NULL STD { int linux_tee(void); } 316 AUE_NULL STD { int linux_vmsplice(void); } ; Linux 2.6.18: @@ -544,7 +546,8 @@ 323 AUE_NULL STD { int linux_eventfd(l_uint initval); } ; Linux 2.6.23: 324 AUE_NULL STD { int linux_fallocate(l_int fd, l_int mode, \ - l_loff_t offset, l_loff_t len); } + uint32_t offset1, uint32_t offset2, uint32_t len1, + uint32_t len2); } ; Linux 2.6.25: 325 AUE_NULL STD { int linux_timerfd_settime(l_int fd, l_int flags, \ const struct l_itimerspec *new_value, \ diff --git a/sys/arm64/arm64/elf_machdep.c b/sys/arm64/arm64/elf_machdep.c index 2129abc42ff62..834795bda6ead 100644 --- a/sys/arm64/arm64/elf_machdep.c +++ b/sys/arm64/arm64/elf_machdep.c @@ -125,6 +125,23 @@ elf_is_ifunc_reloc(Elf_Size r_info __unused) } static int +reloc_instr_imm(Elf32_Addr *where, Elf_Addr val, u_int msb, u_int lsb) +{ + + /* Check bounds: upper bits must be all ones or all zeros. */ + if ((uint64_t)((int64_t)val >> (msb + 1)) + 1 > 1) + return (-1); + val >>= lsb; + val &= (1 << (msb - lsb + 1)) - 1; + *where |= (Elf32_Addr)val; + return (0); +} + +/* + * Process a relocation. Support for some static relocations is required + * in order for the -zifunc-noplt optimization to work. + */ +static int elf_reloc_internal(linker_file_t lf, Elf_Addr relocbase, const void *data, int type, int local, elf_lookup_fn lookup) { @@ -159,10 +176,33 @@ elf_reloc_internal(linker_file_t lf, Elf_Addr relocbase, const void *data, return (0); } + error = 0; switch (rtype) { case R_AARCH64_NONE: case R_AARCH64_RELATIVE: break; + case R_AARCH64_TSTBR14: + error = lookup(lf, symidx, 1, &addr); + if (error != 0) + return (-1); + error = reloc_instr_imm((Elf32_Addr *)where, + addr + addend - (Elf_Addr)where, 15, 2); + break; + case R_AARCH64_CONDBR19: + error = lookup(lf, symidx, 1, &addr); + if (error != 0) + return (-1); + error = reloc_instr_imm((Elf32_Addr *)where, + addr + addend - (Elf_Addr)where, 20, 2); + break; + case R_AARCH64_JUMP26: + case R_AARCH64_CALL26: + error = lookup(lf, symidx, 1, &addr); + if (error != 0) + return (-1); + error = reloc_instr_imm((Elf32_Addr *)where, + addr + addend - (Elf_Addr)where, 27, 2); + break; case R_AARCH64_ABS64: case R_AARCH64_GLOB_DAT: case R_AARCH64_JUMP_SLOT: @@ -181,7 +221,7 @@ elf_reloc_internal(linker_file_t lf, Elf_Addr relocbase, const void *data, printf("kldload: unexpected relocation type %d\n", rtype); return (-1); } - return (0); + return (error); } int diff --git a/sys/arm64/arm64/identcpu.c b/sys/arm64/arm64/identcpu.c index 90f8734a6dcc1..157353e12e5d3 100644 --- a/sys/arm64/arm64/identcpu.c +++ b/sys/arm64/arm64/identcpu.c @@ -643,6 +643,41 @@ static struct mrs_field id_aa64mmfr2_fields[] = { /* ID_AA64PFR0_EL1 */ +static struct mrs_field_value id_aa64pfr0_csv3[] = { + MRS_FIELD_VALUE(ID_AA64PFR0_CSV3_NONE, ""), + MRS_FIELD_VALUE(ID_AA64PFR0_CSV3_ISOLATED, "CSV3"), + MRS_FIELD_VALUE_END, +}; + +static struct mrs_field_value id_aa64pfr0_csv2[] = { + MRS_FIELD_VALUE(ID_AA64PFR0_CSV2_NONE, ""), + MRS_FIELD_VALUE(ID_AA64PFR0_CSV2_ISOLATED, "CSV2"), + MRS_FIELD_VALUE(ID_AA64PFR0_CSV2_SCXTNUM, "SCXTNUM"), + MRS_FIELD_VALUE_END, +}; + +static struct mrs_field_value id_aa64pfr0_dit[] = { + MRS_FIELD_VALUE(ID_AA64PFR0_DIT_NONE, ""), + MRS_FIELD_VALUE(ID_AA64PFR0_DIT_PSTATE, "PSTATE.DIT"), + MRS_FIELD_VALUE_END, +}; + +static struct mrs_field_value id_aa64pfr0_amu[] = { + MRS_FIELD_VALUE(ID_AA64PFR0_AMU_NONE, ""), + MRS_FIELD_VALUE(ID_AA64PFR0_AMU_V1, "AMUv1"), + MRS_FIELD_VALUE_END, +}; + +static struct mrs_field_value id_aa64pfr0_mpam[] = { + MRS_FIELD_VALUE_NONE_IMPL(ID_AA64PFR0, MPAM, NONE, IMPL), + MRS_FIELD_VALUE_END, +}; + +static struct mrs_field_value id_aa64pfr0_sel2[] = { + MRS_FIELD_VALUE_NONE_IMPL(ID_AA64PFR0, SEL2, NONE, IMPL), + MRS_FIELD_VALUE_END, +}; + static struct mrs_field_value id_aa64pfr0_sve[] = { MRS_FIELD_VALUE_NONE_IMPL(ID_AA64PFR0, SVE, NONE, IMPL), MRS_FIELD_VALUE_END, @@ -696,6 +731,12 @@ static struct mrs_field_value id_aa64pfr0_el0[] = { }; static struct mrs_field id_aa64pfr0_fields[] = { + MRS_FIELD(ID_AA64PFR0, CSV3, false, MRS_EXACT, id_aa64pfr0_csv3), + MRS_FIELD(ID_AA64PFR0, CSV2, false, MRS_EXACT, id_aa64pfr0_csv2), + MRS_FIELD(ID_AA64PFR0, DIT, false, MRS_EXACT, id_aa64pfr0_dit), + MRS_FIELD(ID_AA64PFR0, AMU, false, MRS_EXACT, id_aa64pfr0_amu), + MRS_FIELD(ID_AA64PFR0, MPAM, false, MRS_EXACT, id_aa64pfr0_mpam), + MRS_FIELD(ID_AA64PFR0, SEL2, false, MRS_EXACT, id_aa64pfr0_sel2), MRS_FIELD(ID_AA64PFR0, SVE, false, MRS_EXACT, id_aa64pfr0_sve), MRS_FIELD(ID_AA64PFR0, RAS, false, MRS_EXACT, id_aa64pfr0_ras), MRS_FIELD(ID_AA64PFR0, GIC, false, MRS_EXACT, id_aa64pfr0_gic), @@ -710,7 +751,30 @@ static struct mrs_field id_aa64pfr0_fields[] = { /* ID_AA64PFR1_EL1 */ +static struct mrs_field_value id_aa64pfr1_bt[] = { + MRS_FIELD_VALUE(ID_AA64PFR1_BT_NONE, ""), + MRS_FIELD_VALUE(ID_AA64PFR1_BT_IMPL, "BTI"), + MRS_FIELD_VALUE_END, +}; + +static struct mrs_field_value id_aa64pfr1_ssbs[] = { + MRS_FIELD_VALUE(ID_AA64PFR1_SSBS_NONE, ""), + MRS_FIELD_VALUE(ID_AA64PFR1_SSBS_PSTATE, "PSTATE.SSBS"), + MRS_FIELD_VALUE(ID_AA64PFR1_SSBS_PSTATE_MSR, "PSTATE.SSBS MSR"), + MRS_FIELD_VALUE_END, +}; + +static struct mrs_field_value id_aa64pfr1_mte[] = { + MRS_FIELD_VALUE(ID_AA64PFR1_MTE_NONE, ""), + MRS_FIELD_VALUE(ID_AA64PFR1_MTE_IMPL_EL0, "MTE EL0"), + MRS_FIELD_VALUE(ID_AA64PFR1_MTE_IMPL, "MTE"), + MRS_FIELD_VALUE_END, +}; + static struct mrs_field id_aa64pfr1_fields[] = { + MRS_FIELD(ID_AA64PFR1, BT, false, MRS_EXACT, id_aa64pfr1_bt), + MRS_FIELD(ID_AA64PFR1, SSBS, false, MRS_EXACT, id_aa64pfr1_ssbs), + MRS_FIELD(ID_AA64PFR1, MTE, false, MRS_EXACT, id_aa64pfr1_mte), MRS_FIELD_END, }; @@ -744,6 +808,13 @@ static struct mrs_user_reg user_regs[] = { .offset = __offsetof(struct cpu_desc, id_aa64pfr0), .fields = id_aa64pfr0_fields, }, + { /* id_aa64pfr0_el1 */ + .reg = ID_AA64PFR1_EL1, + .CRm = 4, + .Op2 = 1, + .offset = __offsetof(struct cpu_desc, id_aa64pfr1), + .fields = id_aa64pfr1_fields, + }, { /* id_aa64dfr0_el1 */ .reg = ID_AA64DFR0_EL1, .CRm = 5, diff --git a/sys/arm64/arm64/mp_machdep.c b/sys/arm64/arm64/mp_machdep.c index bbda274bb2261..e16a1f416c93f 100644 --- a/sys/arm64/arm64/mp_machdep.c +++ b/sys/arm64/arm64/mp_machdep.c @@ -240,18 +240,12 @@ init_secondary(uint64_t cpu) dbg_init(); pan_enable(); - /* Enable interrupts */ - intr_enable(); - mtx_lock_spin(&ap_boot_mtx); - atomic_add_rel_32(&smp_cpus, 1); - if (smp_cpus == mp_ncpus) { /* enable IPI's, tlb shootdown, freezes etc */ atomic_store_rel_int(&smp_started, 1); } - mtx_unlock_spin(&ap_boot_mtx); kcsan_cpu_init(cpu); diff --git a/sys/arm64/include/armreg.h b/sys/arm64/include/armreg.h index ff3bc13e068eb..3c1fb5e8ba4a1 100644 --- a/sys/arm64/include/armreg.h +++ b/sys/arm64/include/armreg.h @@ -517,6 +517,62 @@ #define ID_AA64PFR0_SVE_VAL(x) ((x) & ID_AA64PFR0_SVE_MASK) #define ID_AA64PFR0_SVE_NONE (UL(0x0) << ID_AA64PFR0_SVE_SHIFT) #define ID_AA64PFR0_SVE_IMPL (UL(0x1) << ID_AA64PFR0_SVE_SHIFT) +#define ID_AA64PFR0_SEL2_SHIFT 36 +#define ID_AA64PFR0_SEL2_MASK (UL(0xf) << ID_AA64PFR0_SEL2_SHIFT) +#define ID_AA64PFR0_SEL2_VAL(x) ((x) & ID_AA64PFR0_SEL2_MASK) +#define ID_AA64PFR0_SEL2_NONE (UL(0x0) << ID_AA64PFR0_SEL2_SHIFT) +#define ID_AA64PFR0_SEL2_IMPL (UL(0x1) << ID_AA64PFR0_SEL2_SHIFT) +#define ID_AA64PFR0_MPAM_SHIFT 40 +#define ID_AA64PFR0_MPAM_MASK (UL(0xf) << ID_AA64PFR0_MPAM_SHIFT) +#define ID_AA64PFR0_MPAM_VAL(x) ((x) & ID_AA64PFR0_MPAM_MASK) +#define ID_AA64PFR0_MPAM_NONE (UL(0x0) << ID_AA64PFR0_MPAM_SHIFT) +#define ID_AA64PFR0_MPAM_IMPL (UL(0x1) << ID_AA64PFR0_MPAM_SHIFT) +#define ID_AA64PFR0_AMU_SHIFT 44 +#define ID_AA64PFR0_AMU_MASK (UL(0xf) << ID_AA64PFR0_AMU_SHIFT) +#define ID_AA64PFR0_AMU_VAL(x) ((x) & ID_AA64PFR0_AMU_MASK) +#define ID_AA64PFR0_AMU_NONE (UL(0x0) << ID_AA64PFR0_AMU_SHIFT) +#define ID_AA64PFR0_AMU_V1 (UL(0x1) << ID_AA64PFR0_AMU_SHIFT) +#define ID_AA64PFR0_DIT_SHIFT 48 +#define ID_AA64PFR0_DIT_MASK (UL(0xf) << ID_AA64PFR0_DIT_SHIFT) +#define ID_AA64PFR0_DIT_VAL(x) ((x) & ID_AA64PFR0_DIT_MASK) +#define ID_AA64PFR0_DIT_NONE (UL(0x0) << ID_AA64PFR0_DIT_SHIFT) +#define ID_AA64PFR0_DIT_PSTATE (UL(0x1) << ID_AA64PFR0_DIT_SHIFT) +#define ID_AA64PFR0_CSV2_SHIFT 56 +#define ID_AA64PFR0_CSV2_MASK (UL(0xf) << ID_AA64PFR0_CSV2_SHIFT) +#define ID_AA64PFR0_CSV2_VAL(x) ((x) & ID_AA64PFR0_CSV2_MASK) +#define ID_AA64PFR0_CSV2_NONE (UL(0x0) << ID_AA64PFR0_CSV2_SHIFT) +#define ID_AA64PFR0_CSV2_ISOLATED (UL(0x1) << ID_AA64PFR0_CSV2_SHIFT) +#define ID_AA64PFR0_CSV2_SCXTNUM (UL(0x2) << ID_AA64PFR0_CSV2_SHIFT) +#define ID_AA64PFR0_CSV3_SHIFT 60 +#define ID_AA64PFR0_CSV3_MASK (UL(0xf) << ID_AA64PFR0_CSV3_SHIFT) +#define ID_AA64PFR0_CSV3_VAL(x) ((x) & ID_AA64PFR0_CSV3_MASK) +#define ID_AA64PFR0_CSV3_NONE (UL(0x0) << ID_AA64PFR0_CSV3_SHIFT) +#define ID_AA64PFR0_CSV3_ISOLATED (UL(0x1) << ID_AA64PFR0_CSV3_SHIFT) + +/* ID_AA64PFR1_EL1 */ +#define ID_AA64PFR1_EL1 MRS_REG(3, 0, 0, 4, 1) +#define ID_AA64PFR1_BT_SHIFT 0 +#define ID_AA64PFR1_BT_MASK (UL(0xf) << ID_AA64PFR1_BT_SHIFT) +#define ID_AA64PFR1_BT_VAL(x) ((x) & ID_AA64PFR1_BT_MASK) +#define ID_AA64PFR1_BT_NONE (UL(0x0) << ID_AA64PFR1_BT_SHIFT) +#define ID_AA64PFR1_BT_IMPL (UL(0x1) << ID_AA64PFR1_BT_SHIFT) +#define ID_AA64PFR1_SSBS_SHIFT 4 +#define ID_AA64PFR1_SSBS_MASK (UL(0xf) << ID_AA64PFR1_SSBS_SHIFT) +#define ID_AA64PFR1_SSBS_VAL(x) ((x) & ID_AA64PFR1_SSBS_MASK) +#define ID_AA64PFR1_SSBS_NONE (UL(0x0) << ID_AA64PFR1_SSBS_SHIFT) +#define ID_AA64PFR1_SSBS_PSTATE (UL(0x1) << ID_AA64PFR1_SSBS_SHIFT) +#define ID_AA64PFR1_SSBS_PSTATE_MSR (UL(0x2) << ID_AA64PFR1_SSBS_SHIFT) +#define ID_AA64PFR1_MTE_SHIFT 8 +#define ID_AA64PFR1_MTE_MASK (UL(0xf) << ID_AA64PFR1_MTE_SHIFT) +#define ID_AA64PFR1_MTE_VAL(x) ((x) & ID_AA64PFR1_MTE_MASK) +#define ID_AA64PFR1_MTE_NONE (UL(0x0) << ID_AA64PFR1_MTE_SHIFT) +#define ID_AA64PFR1_MTE_IMPL_EL0 (UL(0x1) << ID_AA64PFR1_MTE_SHIFT) +#define ID_AA64PFR1_MTE_IMPL (UL(0x2) << ID_AA64PFR1_MTE_SHIFT) +#define ID_AA64PFR1_RAS_frac_SHIFT 12 +#define ID_AA64PFR1_RAS_frac_MASK (UL(0xf) << ID_AA64PFR1_RAS_frac_SHIFT) +#define ID_AA64PFR1_RAS_frac_VAL(x) ((x) & ID_AA64PFR1_RAS_frac_MASK) +#define ID_AA64PFR1_RAS_frac_V1 (UL(0x0) << ID_AA64PFR1_RAS_frac_SHIFT) +#define ID_AA64PFR1_RAS_frac_V2 (UL(0x1) << ID_AA64PFR1_RAS_frac_SHIFT) /* MAIR_EL1 - Memory Attribute Indirection Register */ #define MAIR_ATTR_MASK(idx) (0xff << ((n)* 8)) diff --git a/sys/cam/cam_compat.h b/sys/cam/cam_compat.h index 2a1cbe9022201..2c559c3e4d849 100644 --- a/sys/cam/cam_compat.h +++ b/sys/cam/cam_compat.h @@ -72,7 +72,7 @@ struct ccb_hdr_0x17 { ccb_ppriv_area periph_priv; ccb_spriv_area sim_priv; u_int32_t timeout; /* Hard timeout value in seconds */ - struct callout_handle timeout_ch; + struct callout *timeout_ch; }; struct ccb_pathinq_0x17 { diff --git a/sys/compat/linux/linux_file.c b/sys/compat/linux/linux_file.c index f341e67b11e7c..eed8814634ef5 100644 --- a/sys/compat/linux/linux_file.c +++ b/sys/compat/linux/linux_file.c @@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$"); #include <sys/vnode.h> #ifdef COMPAT_LINUX32 +#include <compat/freebsd32/freebsd32_misc.h> #include <machine/../linux32/linux.h> #include <machine/../linux32/linux32_proto.h> #else @@ -67,7 +68,6 @@ __FBSDID("$FreeBSD$"); static int linux_common_open(struct thread *, int, char *, int, int); static int linux_getdents_error(struct thread *, int, int); - #ifdef LINUX_LEGACY_SYSCALLS int linux_creat(struct thread *td, struct linux_creat_args *args) @@ -820,7 +820,6 @@ linux_truncate(struct thread *td, struct linux_truncate_args *args) int error; LCONVPATHEXIST(td, args->path, &path); - error = kern_truncate(td, path, UIO_SYSSPACE, args->length); LFREEPATH(path); return (error); @@ -831,11 +830,17 @@ int linux_truncate64(struct thread *td, struct linux_truncate64_args *args) { char *path; + off_t length; int error; - LCONVPATHEXIST(td, args->path, &path); +#if defined(__amd64__) && defined(COMPAT_LINUX32) + length = PAIR32TO64(off_t, args->length); +#else + length = args->length; +#endif - error = kern_truncate(td, path, UIO_SYSSPACE, args->length); + LCONVPATHEXIST(td, args->path, &path); + error = kern_truncate(td, path, UIO_SYSSPACE, length); LFREEPATH(path); return (error); } @@ -848,6 +853,22 @@ linux_ftruncate(struct thread *td, struct linux_ftruncate_args *args) return (kern_ftruncate(td, args->fd, args->length)); } +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) +int +linux_ftruncate64(struct thread *td, struct linux_ftruncate64_args *args) +{ + off_t length; + +#if defined(__amd64__) && defined(COMPAT_LINUX32) + length = PAIR32TO64(off_t, args->length); +#else + length = args->length; +#endif + + return (kern_ftruncate(td, args->fd, length)); +} +#endif + #ifdef LINUX_LEGACY_SYSCALLS int linux_link(struct thread *td, struct linux_link_args *args) @@ -908,8 +929,17 @@ linux_fdatasync(struct thread *td, struct linux_fdatasync_args *uap) int linux_sync_file_range(struct thread *td, struct linux_sync_file_range_args *uap) { + off_t nbytes, offset; - if (uap->offset < 0 || uap->nbytes < 0 || +#if defined(__amd64__) && defined(COMPAT_LINUX32) + nbytes = PAIR32TO64(off_t, uap->nbytes); + offset = PAIR32TO64(off_t, uap->offset); +#else + nbytes = uap->nbytes; + offset = uap->offset; +#endif + + if (offset < 0 || nbytes < 0 || (uap->flags & ~(LINUX_SYNC_FILE_RANGE_WAIT_BEFORE | LINUX_SYNC_FILE_RANGE_WRITE | LINUX_SYNC_FILE_RANGE_WAIT_AFTER)) != 0) { @@ -923,18 +953,23 @@ int linux_pread(struct thread *td, struct linux_pread_args *uap) { struct vnode *vp; + off_t offset; int error; - error = kern_pread(td, uap->fd, uap->buf, uap->nbyte, uap->offset); +#if defined(__amd64__) && defined(COMPAT_LINUX32) + offset = PAIR32TO64(off_t, uap->offset); +#else + offset = uap->offset; +#endif + + error = kern_pread(td, uap->fd, uap->buf, uap->nbyte, offset); if (error == 0) { /* This seems to violate POSIX but Linux does it. */ error = fgetvp(td, uap->fd, &cap_pread_rights, &vp); if (error != 0) return (error); - if (vp->v_type == VDIR) { - vrele(vp); - return (EISDIR); - } + if (vp->v_type == VDIR) + error = EISDIR; vrele(vp); } return (error); @@ -943,8 +978,15 @@ linux_pread(struct thread *td, struct linux_pread_args *uap) int linux_pwrite(struct thread *td, struct linux_pwrite_args *uap) { + off_t offset; - return (kern_pwrite(td, uap->fd, uap->buf, uap->nbyte, uap->offset)); +#if defined(__amd64__) && defined(COMPAT_LINUX32) + offset = PAIR32TO64(off_t, uap->offset); +#else + offset = uap->offset; +#endif + + return (kern_pwrite(td, uap->fd, uap->buf, uap->nbyte, offset)); } int @@ -1065,11 +1107,8 @@ out: int linux_oldumount(struct thread *td, struct linux_oldumount_args *args) { - struct linux_umount_args args2; - args2.path = args->path; - args2.flags = 0; - return (linux_umount(td, &args2)); + return (kern_unmount(td, args->path, 0)); } #endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ @@ -1077,16 +1116,19 @@ linux_oldumount(struct thread *td, struct linux_oldumount_args *args) int linux_umount(struct thread *td, struct linux_umount_args *args) { - struct unmount_args bsd; int flags; flags = 0; - if ((args->flags & LINUX_MNT_FORCE) != 0) + if ((args->flags & LINUX_MNT_FORCE) != 0) { + args->flags &= ~LINUX_MNT_FORCE; flags |= MNT_FORCE; + } + if (args->flags != 0) { + linux_msg(td, "unsupported umount2 flags %#x", args->flags); + return (EINVAL); + } - bsd.path = args->path; - bsd.flags = flags; - return (sys_unmount(td, &bsd)); + return (kern_unmount(td, args->path, flags)); } #endif @@ -1466,26 +1508,40 @@ convert_fadvice(int advice) int linux_fadvise64(struct thread *td, struct linux_fadvise64_args *args) { + off_t offset; int advice; +#if defined(__amd64__) && defined(COMPAT_LINUX32) + offset = PAIR32TO64(off_t, args->offset); +#else + offset = args->offset; +#endif + advice = convert_fadvice(args->advice); if (advice == -1) return (EINVAL); - return (kern_posix_fadvise(td, args->fd, args->offset, args->len, - advice)); + return (kern_posix_fadvise(td, args->fd, offset, args->len, advice)); } #if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) int linux_fadvise64_64(struct thread *td, struct linux_fadvise64_64_args *args) { + off_t len, offset; int advice; +#if defined(__amd64__) && defined(COMPAT_LINUX32) + len = PAIR32TO64(off_t, args->len); + offset = PAIR32TO64(off_t, args->offset); +#else + len = args->len; + offset = args->offset; +#endif + advice = convert_fadvice(args->advice); if (advice == -1) return (EINVAL); - return (kern_posix_fadvise(td, args->fd, args->offset, args->len, - advice)); + return (kern_posix_fadvise(td, args->fd, offset, len, advice)); } #endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ @@ -1559,6 +1615,7 @@ linux_dup3(struct thread *td, struct linux_dup3_args *args) int linux_fallocate(struct thread *td, struct linux_fallocate_args *args) { + off_t len, offset; /* * We emulate only posix_fallocate system call for which @@ -1567,8 +1624,15 @@ linux_fallocate(struct thread *td, struct linux_fallocate_args *args) if (args->mode != 0) return (ENOSYS); - return (kern_posix_fallocate(td, args->fd, args->offset, - args->len)); +#if defined(__amd64__) && defined(COMPAT_LINUX32) + len = PAIR32TO64(off_t, args->len); + offset = PAIR32TO64(off_t, args->offset); +#else + len = args->len; + offset = args->offset; +#endif + + return (kern_posix_fallocate(td, args->fd, offset, len)); } int diff --git a/sys/compat/linux/linux_mmap.c b/sys/compat/linux/linux_mmap.c index 59f7176d3996f..1949f3055c8e5 100644 --- a/sys/compat/linux/linux_mmap.c +++ b/sys/compat/linux/linux_mmap.c @@ -113,6 +113,14 @@ linux_mmap_common(struct thread *td, uintptr_t addr, size_t len, int prot, if (flags & LINUX_MAP_GROWSDOWN) bsd_flags |= MAP_STACK; +#if defined(__amd64__) + /* + * According to the Linux mmap(2) man page, "MAP_32BIT flag + * is ignored when MAP_FIXED is set." + */ + if ((flags & LINUX_MAP_32BIT) && (flags & LINUX_MAP_FIXED) == 0) + bsd_flags |= MAP_32BIT; + /* * PROT_READ, PROT_WRITE, or PROT_EXEC implies PROT_READ and PROT_EXEC * on Linux/i386 if the binary requires executable stack. @@ -121,7 +129,6 @@ linux_mmap_common(struct thread *td, uintptr_t addr, size_t len, int prot, * * XXX. Linux checks that the file system is not mounted with noexec. */ -#if defined(__amd64__) linux_fixup_prot(td, &prot); #endif diff --git a/sys/compat/linux/linux_mmap.h b/sys/compat/linux/linux_mmap.h index a694dc05799d6..8dc123526f211 100644 --- a/sys/compat/linux/linux_mmap.h +++ b/sys/compat/linux/linux_mmap.h @@ -39,6 +39,7 @@ #define LINUX_MAP_PRIVATE 0x0002 #define LINUX_MAP_FIXED 0x0010 #define LINUX_MAP_ANON 0x0020 +#define LINUX_MAP_32BIT 0x0040 #define LINUX_MAP_GROWSDOWN 0x0100 #define LINUX_PROT_GROWSDOWN 0x01000000 diff --git a/sys/compat/linuxkpi/common/include/linux/mm_types.h b/sys/compat/linuxkpi/common/include/linux/mm_types.h index 5529c0afe0d84..4c9eddf500d63 100644 --- a/sys/compat/linuxkpi/common/include/linux/mm_types.h +++ b/sys/compat/linuxkpi/common/include/linux/mm_types.h @@ -57,6 +57,12 @@ mmdrop(struct mm_struct *mm) linux_mm_dtor(mm); } +static inline bool +mmget_not_zero(struct mm_struct *mm) +{ + return (atomic_inc_not_zero(&mm->mm_users)); +} + static inline void mmput(struct mm_struct *mm) { diff --git a/sys/compat/ndis/ntoskrnl_var.h b/sys/compat/ndis/ntoskrnl_var.h index 9c8c199645049..559292ab7105f 100644 --- a/sys/compat/ndis/ntoskrnl_var.h +++ b/sys/compat/ndis/ntoskrnl_var.h @@ -363,19 +363,6 @@ typedef struct nt_objref nt_objref; #define EVENT_TYPE_NOTIFY 0 #define EVENT_TYPE_SYNC 1 -/* - * We need to use the timeout()/untimeout() API for ktimers - * since timers can be initialized, but not destroyed (so - * malloc()ing our own callout structures would mean a leak, - * since there'd be no way to free() them). This means we - * need to use struct callout_handle, which is really just a - * pointer. To make it easier to deal with, we use a union - * to overlay the callout_handle over the k_timerlistentry. - * The latter is a list_entry, which is two pointers, so - * there's enough space available to hide a callout_handle - * there. - */ - struct ktimer { nt_dispatch_header k_header; uint64_t k_duetime; diff --git a/sys/conf/files b/sys/conf/files index 1b429f2cff648..7de5055b5f002 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -4102,6 +4102,7 @@ net/radix_mpath.c standard net/raw_cb.c standard net/raw_usrreq.c standard net/route.c standard +net/route_temporal.c standard net/rss_config.c optional inet rss | inet6 rss net/rtsock.c standard net/slcompress.c optional netgraph_vjc | sppp | \ diff --git a/sys/conf/files.riscv b/sys/conf/files.riscv index 662901632d7cc..5566cb15b5a95 100644 --- a/sys/conf/files.riscv +++ b/sys/conf/files.riscv @@ -6,6 +6,9 @@ crypto/blowfish/bf_enc.c optional crypto | ipsec | ipsec_support crypto/des/des_enc.c optional crypto | ipsec | ipsec_support | netsmb dev/cadence/if_cgem.c optional cgem dev/ofw/ofw_cpu.c optional fdt +dev/ofw/ofwpci.c optional pci fdt +dev/pci/pci_host_generic.c optional pci +dev/pci/pci_host_generic_fdt.c optional pci fdt dev/uart/uart_cpu_fdt.c optional uart fdt dev/uart/uart_dev_lowrisc.c optional uart_lowrisc dev/xilinx/axi_quad_spi.c optional xilinx_spi diff --git a/sys/conf/files.x86 b/sys/conf/files.x86 index 23df3edad565e..3624fc26ac6e2 100644 --- a/sys/conf/files.x86 +++ b/sys/conf/files.x86 @@ -290,7 +290,8 @@ x86/acpica/srat.c optional acpi x86/bios/smbios.c optional smbios x86/bios/vpd.c optional vpd x86/cpufreq/est.c optional cpufreq -x86/cpufreq/hwpstate.c optional cpufreq +x86/cpufreq/hwpstate_amd.c optional cpufreq +x86/cpufreq/hwpstate_intel.c optional cpufreq x86/cpufreq/p4tcc.c optional cpufreq x86/cpufreq/powernow.c optional cpufreq x86/iommu/busdma_dmar.c optional acpi acpi_dmar pci diff --git a/sys/conf/kern.post.mk b/sys/conf/kern.post.mk index 2c58ef33cd987..3f6e26429481f 100644 --- a/sys/conf/kern.post.mk +++ b/sys/conf/kern.post.mk @@ -389,7 +389,8 @@ kernel-cleandepend: .PHONY rm -f .depend .depend.* ${_ILINKS} kernel-tags: - @[ -f .depend ] || { echo "you must make depend first"; exit 1; } + @ls .depend.* > /dev/null 2>&1 || \ + { echo "you must make depend first"; exit 1; } sh $S/conf/systags.sh kernel-install: .PHONY diff --git a/sys/conf/sysent.mk b/sys/conf/sysent.mk index 3b11c1042c748..6fc64bcf8c846 100644 --- a/sys/conf/sysent.mk +++ b/sys/conf/sysent.mk @@ -21,7 +21,10 @@ SYSENT_CONF?= syscalls.conf # and set GENERATED. SRCS+= ${SYSENT_FILE} SRCS+= ${SYSENT_CONF} -MAKESYSCALLS= ${SYSDIR}/tools/makesyscalls.lua + +MAKESYSCALLS_INTERP?= ${LUA} +MAKESYSCALLS_SCRIPT?= ${SYSDIR}/tools/makesyscalls.lua +MAKESYSCALLS= ${MAKESYSCALLS_INTERP} ${MAKESYSCALLS_SCRIPT} all: @echo "make sysent only" @@ -31,5 +34,5 @@ all: .ORDER: ${GENERATED} sysent: ${GENERATED} -${GENERATED}: ${MAKESYSCALLS} ${SRCS} - ${LUA} ${MAKESYSCALLS} ${SYSENT_FILE} ${SYSENT_CONF} +${GENERATED}: ${MAKESYSCALLS_SCRIPT} ${SRCS} + ${MAKESYSCALLS} ${SYSENT_FILE} ${SYSENT_CONF} diff --git a/sys/conf/systags.sh b/sys/conf/systags.sh index f16837b936433..458627a45bf5d 100644 --- a/sys/conf/systags.sh +++ b/sys/conf/systags.sh @@ -39,14 +39,14 @@ rm -f tags tags.tmp tags.cfiles tags.sfiles tags.hfiles sed -e "s, machine/, ../../include/,g" \ - -e 's,[a-z][^/ ]*/\.\./,,g' .depend | awk '{ + -e 's,[a-z][^/ ]*/\.\./,,g' .depend.* | awk '{ for (i = 1; i <= NF; ++i) { t = substr($i, length($i) - 1) if (t == ".c") cfiles[$i] = 1; else if (t == ".h") hfiles[$i] = 1; - else if (t == ".s") + else if (t == ".s" || t == ".S") sfiles[$i] = 1; } }; diff --git a/sys/dev/altera/atse/if_atse.c b/sys/dev/altera/atse/if_atse.c index c84194868ec46..a355260599531 100644 --- a/sys/dev/altera/atse/if_atse.c +++ b/sys/dev/altera/atse/if_atse.c @@ -1381,7 +1381,8 @@ atse_attach(device_t dev) } ifp->if_softc = sc; if_initname(ifp, device_get_name(dev), device_get_unit(dev)); - ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; + ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST | + IFF_NEEDSEPOCH; ifp->if_ioctl = atse_ioctl; ifp->if_transmit = atse_transmit; ifp->if_qflush = atse_qflush; diff --git a/sys/dev/ath/if_ath_rx.c b/sys/dev/ath/if_ath_rx.c index 93a1d74551910..13a42c5038d60 100644 --- a/sys/dev/ath/if_ath_rx.c +++ b/sys/dev/ath/if_ath_rx.c @@ -647,6 +647,7 @@ ath_rx_pkt(struct ath_softc *sc, struct ath_rx_status *rs, HAL_STATUS status, uint64_t tsf, int nf, HAL_RX_QUEUE qtype, struct ath_buf *bf, struct mbuf *m) { + struct epoch_tracker et; uint64_t rstamp; /* XXX TODO: make this an mbuf tag? */ struct ieee80211_rx_stats rxs; @@ -941,6 +942,7 @@ rx_accept: rxs.c_nf_ext[i] = nf; } + NET_EPOCH_ENTER(et); if (ni != NULL) { /* * Only punt packets for ampdu reorder processing for @@ -986,6 +988,7 @@ rx_accept: type = ieee80211_input_mimo_all(ic, m); m = NULL; } + NET_EPOCH_EXIT(et); /* * At this point we have passed the frame up the stack; thus diff --git a/sys/dev/beri/virtio/network/if_vtbe.c b/sys/dev/beri/virtio/network/if_vtbe.c index 5975a4a1c7f3f..03853435a9de6 100644 --- a/sys/dev/beri/virtio/network/if_vtbe.c +++ b/sys/dev/beri/virtio/network/if_vtbe.c @@ -613,7 +613,7 @@ vtbe_attach(device_t dev) ifp->if_softc = sc; if_initname(ifp, device_get_name(dev), device_get_unit(dev)); ifp->if_flags = (IFF_BROADCAST | IFF_SIMPLEX | - IFF_MULTICAST | IFF_PROMISC); + IFF_MULTICAST | IFF_PROMISC | IFF_NEEDSEPOCH); ifp->if_capabilities = IFCAP_VLAN_MTU; ifp->if_capenable = ifp->if_capabilities; ifp->if_start = vtbe_txstart; diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c index 6199478c4b289..fab4c1bb4bb2d 100644 --- a/sys/dev/bge/if_bge.c +++ b/sys/dev/bge/if_bge.c @@ -4646,6 +4646,7 @@ bge_msi_intr(void *arg) static void bge_intr_task(void *arg, int pending) { + struct epoch_tracker et; struct bge_softc *sc; if_t ifp; uint32_t status, status_tag; @@ -4688,7 +4689,9 @@ bge_intr_task(void *arg, int pending) sc->bge_rx_saved_considx != rx_prod) { /* Check RX return ring producer/consumer. */ BGE_UNLOCK(sc); + NET_EPOCH_ENTER(et); bge_rxeof(sc, rx_prod, 0); + NET_EPOCH_EXIT(et); BGE_LOCK(sc); } if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) { diff --git a/sys/dev/dpaa/if_dtsec.c b/sys/dev/dpaa/if_dtsec.c index 2c6291b07e349..704aa22eda548 100644 --- a/sys/dev/dpaa/if_dtsec.c +++ b/sys/dev/dpaa/if_dtsec.c @@ -688,7 +688,7 @@ dtsec_attach(device_t dev) ifp->if_softc = sc; ifp->if_mtu = ETHERMTU; /* TODO: Configure */ - ifp->if_flags = IFF_SIMPLEX | IFF_BROADCAST; + ifp->if_flags = IFF_SIMPLEX | IFF_BROADCAST | IFF_NEEDSEPOCH; ifp->if_init = dtsec_if_init; ifp->if_start = dtsec_if_start; ifp->if_ioctl = dtsec_if_ioctl; diff --git a/sys/dev/hyperv/netvsc/if_hn.c b/sys/dev/hyperv/netvsc/if_hn.c index e9d1b9439671a..bc96775ad5536 100644 --- a/sys/dev/hyperv/netvsc/if_hn.c +++ b/sys/dev/hyperv/netvsc/if_hn.c @@ -2362,7 +2362,8 @@ hn_attach(device_t dev) */ ifp->if_baudrate = IF_Gbps(10); - ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; + ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST | + IFF_NEEDSEPOCH; ifp->if_ioctl = hn_ioctl; ifp->if_init = hn_init; #ifdef HN_IFSTART_SUPPORT diff --git a/sys/dev/if_ndis/if_ndis.c b/sys/dev/if_ndis/if_ndis.c index 1a5e8eeed4beb..37cf0e6bf7034 100644 --- a/sys/dev/if_ndis/if_ndis.c +++ b/sys/dev/if_ndis/if_ndis.c @@ -967,7 +967,8 @@ ndis_ifattach(struct ndis_softc *sc) if_initname(ifp, device_get_name(sc->ndis_dev), device_get_unit(sc->ndis_dev)); - ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; + ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST | + IFF_NEEDSEPOCH; ifp->if_ioctl = ndis_ifioctl; ifp->if_start = ndis_ifstart; ifp->if_init = ndis_init; diff --git a/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c b/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c index c9222e1df55c4..6e588a0ca92b3 100644 --- a/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c +++ b/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c @@ -895,6 +895,7 @@ void mlx4_en_rx_irq(struct mlx4_cq *mcq) void mlx4_en_rx_que(void *context, int pending) { + struct epoch_tracker et; struct mlx4_en_cq *cq; struct thread *td; @@ -905,8 +906,10 @@ void mlx4_en_rx_que(void *context, int pending) sched_bind(td, cq->curr_poll_rx_cpu_id); thread_unlock(td); + NET_EPOCH_ENTER(et); while (mlx4_en_poll_rx_cq(cq, MLX4_EN_RX_BUDGET) == MLX4_EN_RX_BUDGET); + NET_EPOCH_EXIT(et); mlx4_en_arm_cq(cq->dev->if_softc, cq); } diff --git a/sys/dev/netmap/netmap.c b/sys/dev/netmap/netmap.c index 982f76d45faa7..4edcc58cbe0b1 100644 --- a/sys/dev/netmap/netmap.c +++ b/sys/dev/netmap/netmap.c @@ -437,11 +437,13 @@ ports attached to the switch) #include <sys/socketvar.h> /* struct socket */ #include <sys/malloc.h> #include <sys/poll.h> +#include <sys/proc.h> #include <sys/rwlock.h> #include <sys/socket.h> /* sockaddrs */ #include <sys/selinfo.h> #include <sys/sysctl.h> #include <sys/jail.h> +#include <sys/epoch.h> #include <net/vnet.h> #include <net/if.h> #include <net/if_var.h> @@ -1146,9 +1148,11 @@ netmap_dtor(void *data) static void netmap_send_up(struct ifnet *dst, struct mbq *q) { + struct epoch_tracker et; struct mbuf *m; struct mbuf *head = NULL, *prev = NULL; + NET_EPOCH_ENTER(et); /* Send packets up, outside the lock; head/prev machinery * is only useful for Windows. */ while ((m = mbq_dequeue(q)) != NULL) { @@ -1160,6 +1164,7 @@ netmap_send_up(struct ifnet *dst, struct mbq *q) } if (head) nm_os_send_up(dst, NULL, head); + NET_EPOCH_EXIT(et); mbq_fini(q); } diff --git a/sys/dev/ntb/if_ntb/if_ntb.c b/sys/dev/ntb/if_ntb/if_ntb.c index 3bae01aae49d1..1e1f98a541321 100644 --- a/sys/dev/ntb/if_ntb/if_ntb.c +++ b/sys/dev/ntb/if_ntb/if_ntb.c @@ -172,7 +172,8 @@ ntb_net_attach(device_t dev) if_setinitfn(ifp, ntb_net_init); if_setsoftc(ifp, sc); - if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST); + if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST | + IFF_NEEDSEPOCH); if_setioctlfn(ifp, ntb_ioctl); if_settransmitfn(ifp, ntb_transmit); if_setqflushfn(ifp, ntb_qflush); diff --git a/sys/dev/otus/if_otus.c b/sys/dev/otus/if_otus.c index 23be0fcbe9056..0489b943820e3 100644 --- a/sys/dev/otus/if_otus.c +++ b/sys/dev/otus/if_otus.c @@ -1770,6 +1770,7 @@ otus_rxeof(struct usb_xfer *xfer, struct otus_data *data, struct mbufq *rxq) static void otus_bulk_rx_callback(struct usb_xfer *xfer, usb_error_t error) { + struct epoch_tracker et; struct otus_softc *sc = usbd_xfer_softc(xfer); struct ieee80211com *ic = &sc->sc_ic; struct ieee80211_frame *wh; @@ -1820,6 +1821,7 @@ tr_setup: * callback and safe to unlock. */ OTUS_UNLOCK(sc); + NET_EPOCH_ENTER(et); while ((m = mbufq_dequeue(&scrx)) != NULL) { wh = mtod(m, struct ieee80211_frame *); ni = ieee80211_find_rxnode(ic, @@ -1832,6 +1834,7 @@ tr_setup: } else (void)ieee80211_input_mimo_all(ic, m); } + NET_EPOCH_EXIT(et); #ifdef IEEE80211_SUPPORT_SUPERG ieee80211_ff_age_all(ic, 100); #endif diff --git a/sys/dev/pci/pci_host_generic.c b/sys/dev/pci/pci_host_generic.c index 5a89a19c030d3..57609a9a1ef55 100644 --- a/sys/dev/pci/pci_host_generic.c +++ b/sys/dev/pci/pci_host_generic.c @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2015 Ruslan Bukin <br@bsdpad.com> + * Copyright (c) 2015, 2020 Ruslan Bukin <br@bsdpad.com> * Copyright (c) 2014 The FreeBSD Foundation * All rights reserved. * @@ -54,21 +54,6 @@ __FBSDID("$FreeBSD$"); #include "pcib_if.h" -/* Assembling ECAM Configuration Address */ -#define PCIE_BUS_SHIFT 20 -#define PCIE_SLOT_SHIFT 15 -#define PCIE_FUNC_SHIFT 12 -#define PCIE_BUS_MASK 0xFF -#define PCIE_SLOT_MASK 0x1F -#define PCIE_FUNC_MASK 0x07 -#define PCIE_REG_MASK 0xFFF - -#define PCIE_ADDR_OFFSET(bus, slot, func, reg) \ - ((((bus) & PCIE_BUS_MASK) << PCIE_BUS_SHIFT) | \ - (((slot) & PCIE_SLOT_MASK) << PCIE_SLOT_SHIFT) | \ - (((func) & PCIE_FUNC_MASK) << PCIE_FUNC_SHIFT) | \ - ((reg) & PCIE_REG_MASK)) - /* Forward prototypes */ static uint32_t generic_pcie_read_config(device_t dev, u_int bus, u_int slot, diff --git a/sys/dev/pci/pci_host_generic.h b/sys/dev/pci/pci_host_generic.h index 5feb3a6031a03..da7d9e52adc25 100644 --- a/sys/dev/pci/pci_host_generic.h +++ b/sys/dev/pci/pci_host_generic.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Ruslan Bukin <br@bsdpad.com> + * Copyright (c) 2015, 2020 Ruslan Bukin <br@bsdpad.com> * Copyright (c) 2015 The FreeBSD Foundation * All rights reserved. * @@ -36,6 +36,21 @@ #include "pci_if.h" +/* Assembling ECAM Configuration Address */ +#define PCIE_BUS_SHIFT 20 +#define PCIE_SLOT_SHIFT 15 +#define PCIE_FUNC_SHIFT 12 +#define PCIE_BUS_MASK 0xFF +#define PCIE_SLOT_MASK 0x1F +#define PCIE_FUNC_MASK 0x07 +#define PCIE_REG_MASK 0xFFF + +#define PCIE_ADDR_OFFSET(bus, slot, func, reg) \ + ((((bus) & PCIE_BUS_MASK) << PCIE_BUS_SHIFT) | \ + (((slot) & PCIE_SLOT_MASK) << PCIE_SLOT_SHIFT) | \ + (((func) & PCIE_FUNC_MASK) << PCIE_FUNC_SHIFT) | \ + ((reg) & PCIE_REG_MASK)) + #define MAX_RANGES_TUPLES 16 #define MIN_RANGES_TUPLES 2 diff --git a/sys/dev/pci/pci_host_generic_acpi.c b/sys/dev/pci/pci_host_generic_acpi.c index 016fa32d212fe..c5ca9ab0a1d02 100644 --- a/sys/dev/pci/pci_host_generic_acpi.c +++ b/sys/dev/pci/pci_host_generic_acpi.c @@ -57,6 +57,7 @@ __FBSDID("$FreeBSD$"); #include <dev/pci/pcireg.h> #include <dev/pci/pcib_private.h> #include <dev/pci/pci_host_generic.h> +#include <dev/pci/pci_host_generic_acpi.h> #include <machine/cpu.h> #include <machine/bus.h> @@ -88,11 +89,6 @@ __FBSDID("$FreeBSD$"); #define PROPS_CELL_SIZE 1 #define PCI_ADDR_CELL_SIZE 2 -struct generic_pcie_acpi_softc { - struct generic_pcie_core_softc base; - ACPI_BUFFER ap_prt; /* interrupt routing table */ -}; - /* Forward prototypes */ static int generic_pcie_acpi_probe(device_t dev); @@ -233,7 +229,7 @@ pci_host_acpi_get_ecam_resource(device_t dev) return (0); } -static int +int pci_host_generic_acpi_attach(device_t dev) { struct generic_pcie_acpi_softc *sc; diff --git a/sys/dev/pci/pci_host_generic_acpi.h b/sys/dev/pci/pci_host_generic_acpi.h new file mode 100644 index 0000000000000..eb9b23094703a --- /dev/null +++ b/sys/dev/pci/pci_host_generic_acpi.h @@ -0,0 +1,47 @@ +/*- + * Copyright (C) 2018 Cavium Inc. + * Copyright (c) 2015 Ruslan Bukin <br@bsdpad.com> + * Copyright (c) 2014 The FreeBSD Foundation + * All rights reserved. + * + * This software was developed by Semihalf under + * the sponsorship of the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _DEV_PCI_PCI_HOST_GENERIC_ACPI_H_ +#define _DEV_PCI_PCI_HOST_GENERIC_ACPI_H_ + +struct generic_pcie_acpi_softc { + struct generic_pcie_core_softc base; + int segment; + ACPI_BUFFER ap_prt; /* interrupt routing table */ +}; + +DECLARE_CLASS(generic_pcie_acpi_driver); + +int pci_host_generic_acpi_attach(device_t dev); + +#endif /* !_DEV_PCI_PCI_HOST_GENERIC_ACPI_H_ */ diff --git a/sys/dev/re/if_re.c b/sys/dev/re/if_re.c index 1d750c25d2337..76fa06f635858 100644 --- a/sys/dev/re/if_re.c +++ b/sys/dev/re/if_re.c @@ -2576,6 +2576,7 @@ re_intr(void *arg) static void re_int_task(void *arg, int npending) { + struct epoch_tracker et; struct rl_softc *sc; struct ifnet *ifp; u_int16_t status; @@ -2602,8 +2603,11 @@ re_int_task(void *arg, int npending) } #endif - if (status & (RL_ISR_RX_OK|RL_ISR_RX_ERR|RL_ISR_FIFO_OFLOW)) + if (status & (RL_ISR_RX_OK|RL_ISR_RX_ERR|RL_ISR_FIFO_OFLOW)) { + NET_EPOCH_ENTER(et); rval = re_rxeof(sc, NULL); + NET_EPOCH_EXIT(et); + } /* * Some chips will ignore a second TX request issued diff --git a/sys/dev/rtwn/usb/rtwn_usb_rx.c b/sys/dev/rtwn/usb/rtwn_usb_rx.c index 52415084745bf..ae61dd7b43e7c 100644 --- a/sys/dev/rtwn/usb/rtwn_usb_rx.c +++ b/sys/dev/rtwn/usb/rtwn_usb_rx.c @@ -363,6 +363,7 @@ rtwn_rx_frame(struct rtwn_softc *sc, struct mbuf *m) void rtwn_bulk_rx_callback(struct usb_xfer *xfer, usb_error_t error) { + struct epoch_tracker et; struct rtwn_usb_softc *uc = usbd_xfer_softc(xfer); struct rtwn_softc *sc = &uc->uc_sc; struct ieee80211com *ic = &sc->sc_ic; @@ -399,6 +400,7 @@ tr_setup: * ieee80211_input() because here is at the end of a USB * callback and safe to unlock. */ + NET_EPOCH_ENTER(et); while (m != NULL) { next = m->m_nextpkt; m->m_nextpkt = NULL; @@ -416,6 +418,7 @@ tr_setup: RTWN_LOCK(sc); m = next; } + NET_EPOCH_EXIT(et); break; default: /* needs it to the inactive queue due to a error. */ diff --git a/sys/dev/sbni/if_sbni.c b/sys/dev/sbni/if_sbni.c index 267001f7897dd..62b86112b26f1 100644 --- a/sys/dev/sbni/if_sbni.c +++ b/sys/dev/sbni/if_sbni.c @@ -243,7 +243,8 @@ sbni_attach(struct sbni_softc *sc, int unit, struct sbni_flags flags) ifp->if_baudrate = (csr0 & 0x01 ? 500000 : 2000000) / (1 << flags.rate); - ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; + ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST | + IFF_NEEDSEPOCH; mtx_init(&sc->lock, ifp->if_xname, MTX_NETWORK_LOCK, MTX_DEF); callout_init_mtx(&sc->wch, &sc->lock, 0); diff --git a/sys/dev/spibus/spigen.c b/sys/dev/spibus/spigen.c index 5146b6a1a3156..7e02e68027b9e 100644 --- a/sys/dev/spibus/spigen.c +++ b/sys/dev/spibus/spigen.c @@ -325,8 +325,9 @@ spigen_mmap_single(struct cdev *cdev, vm_ooffset_t *offset, vm_object_reference_locked(mmap->bufobj); // kernel and userland both for (n = 0; n < pages; n++) { m[n] = vm_page_grab(mmap->bufobj, n, - VM_ALLOC_NOBUSY | VM_ALLOC_ZERO | VM_ALLOC_WIRED); - m[n]->valid = VM_PAGE_BITS_ALL; + VM_ALLOC_ZERO | VM_ALLOC_WIRED); + vm_page_valid(m[n]); + vm_page_xunbusy(m[n]); } VM_OBJECT_WUNLOCK(mmap->bufobj); pmap_qenter(mmap->kvaddr, m, pages); diff --git a/sys/dev/usb/serial/uslcom.c b/sys/dev/usb/serial/uslcom.c index 242fc5cbb3f6e..6ee72846a2269 100644 --- a/sys/dev/usb/serial/uslcom.c +++ b/sys/dev/usb/serial/uslcom.c @@ -313,6 +313,7 @@ static const STRUCT_USB_HOST_ID uslcom_devs[] = { USLCOM_DEV(SILABS, HAMLINKUSB), USLCOM_DEV(SILABS, HELICOM), USLCOM_DEV(SILABS, HUBZ), + USLCOM_DEV(SILABS, BV_AV2010_10), USLCOM_DEV(SILABS, IMS_USB_RS422), USLCOM_DEV(SILABS, INFINITY_MIC), USLCOM_DEV(SILABS, INGENI_ZIGBEE), diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs index 34d7a84df8a38..bf333041fd7d8 100644 --- a/sys/dev/usb/usbdevs +++ b/sys/dev/usb/usbdevs @@ -4339,6 +4339,7 @@ product SILABS AC_SERV_OBD 0x8665 AC-Services OBD Interface product SILABS MMB_ZIGBEE 0x88a4 MMB Networks ZigBee product SILABS INGENI_ZIGBEE 0x88a5 Planet Innovation Ingeni ZigBee product SILABS HUBZ 0x8a2a HubZ dual ZigBee and Z-Wave +product SILABS BV_AV2010_10 0x8b34 Bitron Video AV2010/10 ZigBee USB Stick product SILABS CP2102 0xea60 SILABS USB UART product SILABS CP210X_2 0xea61 CP210x Serial product SILABS CP210X_3 0xea70 CP210x Serial diff --git a/sys/dev/usb/wlan/if_rsu.c b/sys/dev/usb/wlan/if_rsu.c index 172a915b8f3e2..d26ff9ec9ad93 100644 --- a/sys/dev/usb/wlan/if_rsu.c +++ b/sys/dev/usb/wlan/if_rsu.c @@ -2552,6 +2552,7 @@ rsu_rxeof(struct usb_xfer *xfer, struct rsu_data *data) static void rsu_bulk_rx_callback(struct usb_xfer *xfer, usb_error_t error) { + struct epoch_tracker et; struct rsu_softc *sc = usbd_xfer_softc(xfer); struct ieee80211com *ic = &sc->sc_ic; struct ieee80211_node *ni; @@ -2586,6 +2587,7 @@ tr_setup: * ieee80211_input() because here is at the end of a USB * callback and safe to unlock. */ + NET_EPOCH_ENTER(et); while (m != NULL) { next = m->m_next; m->m_next = NULL; @@ -2604,6 +2606,7 @@ tr_setup: RSU_LOCK(sc); m = next; } + NET_EPOCH_EXIT(et); break; default: /* needs it to the inactive queue due to a error. */ diff --git a/sys/dev/virtio/scsi/virtio_scsi.c b/sys/dev/virtio/scsi/virtio_scsi.c index 6f2dfbcac5a46..76a065ecb3386 100644 --- a/sys/dev/virtio/scsi/virtio_scsi.c +++ b/sys/dev/virtio/scsi/virtio_scsi.c @@ -937,7 +937,7 @@ vtscsi_cam_path_inquiry(struct vtscsi_softc *sc, struct cam_sim *sim, cpi->max_target = sc->vtscsi_max_target; cpi->max_lun = sc->vtscsi_max_lun; - cpi->initiator_id = VTSCSI_INITIATOR_ID; + cpi->initiator_id = cpi->max_target + 1; strlcpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN); strlcpy(cpi->hba_vid, "VirtIO", HBA_IDLEN); diff --git a/sys/dev/virtio/scsi/virtio_scsivar.h b/sys/dev/virtio/scsi/virtio_scsivar.h index 3e4109e658709..064b1245a5655 100644 --- a/sys/dev/virtio/scsi/virtio_scsivar.h +++ b/sys/dev/virtio/scsi/virtio_scsivar.h @@ -205,11 +205,6 @@ struct vtscsi_request { #define VTSCSI_RESERVED_REQUESTS 10 /* - * Specification doesn't say, use traditional SCSI default. - */ -#define VTSCSI_INITIATOR_ID 7 - -/* * How to wait (or not) for request completion. */ #define VTSCSI_EXECUTE_ASYNC 0 diff --git a/sys/dev/vmware/vmxnet3/if_vmx.c b/sys/dev/vmware/vmxnet3/if_vmx.c index b639a926ed426..d0b0436ea25c5 100644 --- a/sys/dev/vmware/vmxnet3/if_vmx.c +++ b/sys/dev/vmware/vmxnet3/if_vmx.c @@ -23,6 +23,8 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include "opt_rss.h" + #include <sys/param.h> #include <sys/systm.h> #include <sys/kernel.h> @@ -46,6 +48,9 @@ __FBSDID("$FreeBSD$"); #include <net/if_media.h> #include <net/if_vlan_var.h> #include <net/iflib.h> +#ifdef RSS +#include <net/rss_config.h> +#endif #include <netinet/in_systm.h> #include <netinet/in.h> @@ -1140,8 +1145,11 @@ vmxnet3_reinit_rss_shared_data(struct vmxnet3_softc *sc) struct vmxnet3_driver_shared *ds; if_softc_ctx_t scctx; struct vmxnet3_rss_shared *rss; +#ifdef RSS + uint8_t rss_algo; +#endif int i; - + ds = sc->vmx_ds; scctx = sc->vmx_scctx; rss = sc->vmx_rss; @@ -1152,10 +1160,29 @@ vmxnet3_reinit_rss_shared_data(struct vmxnet3_softc *sc) rss->hash_func = UPT1_RSS_HASH_FUNC_TOEPLITZ; rss->hash_key_size = UPT1_RSS_MAX_KEY_SIZE; rss->ind_table_size = UPT1_RSS_MAX_IND_TABLE_SIZE; - memcpy(rss->hash_key, rss_key, UPT1_RSS_MAX_KEY_SIZE); - - for (i = 0; i < UPT1_RSS_MAX_IND_TABLE_SIZE; i++) - rss->ind_table[i] = i % scctx->isc_nrxqsets; +#ifdef RSS + /* + * If the software RSS is configured to anything else other than + * Toeplitz, then just do Toeplitz in "hardware" for the sake of + * the packet distribution, but report the hash as opaque to + * disengage from the software RSS. + */ + rss_algo = rss_gethashalgo(); + if (rss_algo == RSS_HASH_TOEPLITZ) { + rss_getkey(rss->hash_key); + for (i = 0; i < UPT1_RSS_MAX_IND_TABLE_SIZE; i++) { + rss->ind_table[i] = rss_get_indirection_to_bucket(i) % + scctx->isc_nrxqsets; + } + sc->vmx_flags |= VMXNET3_FLAG_SOFT_RSS; + } else +#endif + { + memcpy(rss->hash_key, rss_key, UPT1_RSS_MAX_KEY_SIZE); + for (i = 0; i < UPT1_RSS_MAX_IND_TABLE_SIZE; i++) + rss->ind_table[i] = i % scctx->isc_nrxqsets; + sc->vmx_flags &= ~VMXNET3_FLAG_SOFT_RSS; + } } static void @@ -1499,29 +1526,50 @@ vmxnet3_isc_rxd_pkt_get(void *vsc, if_rxd_info_t ri) KASSERT(rxcd->sop, ("%s: expected sop", __func__)); /* - * RSS and flow ID + * RSS and flow ID. + * Types other than M_HASHTYPE_NONE and M_HASHTYPE_OPAQUE_HASH should + * be used only if the software RSS is enabled and it uses the same + * algorithm and the hash key as the "hardware". If the software RSS + * is not enabled, then it's simply pointless to use those types. + * If it's enabled but with different parameters, then hash values will + * not match. */ ri->iri_flowid = rxcd->rss_hash; - switch (rxcd->rss_type) { - case VMXNET3_RCD_RSS_TYPE_NONE: - ri->iri_flowid = ri->iri_qsidx; - ri->iri_rsstype = M_HASHTYPE_NONE; - break; - case VMXNET3_RCD_RSS_TYPE_IPV4: - ri->iri_rsstype = M_HASHTYPE_RSS_IPV4; - break; - case VMXNET3_RCD_RSS_TYPE_TCPIPV4: - ri->iri_rsstype = M_HASHTYPE_RSS_TCP_IPV4; - break; - case VMXNET3_RCD_RSS_TYPE_IPV6: - ri->iri_rsstype = M_HASHTYPE_RSS_IPV6; - break; - case VMXNET3_RCD_RSS_TYPE_TCPIPV6: - ri->iri_rsstype = M_HASHTYPE_RSS_TCP_IPV6; - break; - default: - ri->iri_rsstype = M_HASHTYPE_OPAQUE_HASH; - break; +#ifdef RSS + if ((sc->vmx_flags & VMXNET3_FLAG_SOFT_RSS) != 0) { + switch (rxcd->rss_type) { + case VMXNET3_RCD_RSS_TYPE_NONE: + ri->iri_flowid = ri->iri_qsidx; + ri->iri_rsstype = M_HASHTYPE_NONE; + break; + case VMXNET3_RCD_RSS_TYPE_IPV4: + ri->iri_rsstype = M_HASHTYPE_RSS_IPV4; + break; + case VMXNET3_RCD_RSS_TYPE_TCPIPV4: + ri->iri_rsstype = M_HASHTYPE_RSS_TCP_IPV4; + break; + case VMXNET3_RCD_RSS_TYPE_IPV6: + ri->iri_rsstype = M_HASHTYPE_RSS_IPV6; + break; + case VMXNET3_RCD_RSS_TYPE_TCPIPV6: + ri->iri_rsstype = M_HASHTYPE_RSS_TCP_IPV6; + break; + default: + ri->iri_rsstype = M_HASHTYPE_OPAQUE_HASH; + break; + } + } else +#endif + { + switch (rxcd->rss_type) { + case VMXNET3_RCD_RSS_TYPE_NONE: + ri->iri_flowid = ri->iri_qsidx; + ri->iri_rsstype = M_HASHTYPE_NONE; + break; + default: + ri->iri_rsstype = M_HASHTYPE_OPAQUE_HASH; + break; + } } /* VLAN */ diff --git a/sys/dev/vmware/vmxnet3/if_vmxvar.h b/sys/dev/vmware/vmxnet3/if_vmxvar.h index 7e231e8924c3d..20e73af690042 100644 --- a/sys/dev/vmware/vmxnet3/if_vmxvar.h +++ b/sys/dev/vmware/vmxnet3/if_vmxvar.h @@ -113,6 +113,8 @@ struct vmxnet3_softc { struct vmxnet3_driver_shared *vmx_ds; uint32_t vmx_flags; #define VMXNET3_FLAG_RSS 0x0002 +#define VMXNET3_FLAG_SOFT_RSS 0x0004 /* Software RSS is enabled with + compatible algorithm. */ struct vmxnet3_rxqueue *vmx_rxq; struct vmxnet3_txqueue *vmx_txq; diff --git a/sys/dev/xen/netback/netback.c b/sys/dev/xen/netback/netback.c index ecc26981e2b37..1e972cd09f814 100644 --- a/sys/dev/xen/netback/netback.c +++ b/sys/dev/xen/netback/netback.c @@ -780,7 +780,7 @@ xnb_connect_comms(struct xnb_softc *xnb) xnb->evtchn, /*filter*/NULL, xnb_intr, /*arg*/xnb, - INTR_TYPE_BIO | INTR_MPSAFE, + INTR_TYPE_NET | INTR_MPSAFE, &xnb->xen_intr_handle); if (error != 0) { (void)xnb_disconnect(xnb); diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c index b6a960ee0d10d..7e5018e58b499 100644 --- a/sys/i386/i386/machdep.c +++ b/sys/i386/i386/machdep.c @@ -1607,8 +1607,9 @@ DB_SHOW_COMMAND(sysregs, db_show_sysregs) if (cpu_feature2 & (CPUID2_VMX | CPUID2_SMX)) db_printf("FEATURES_CTL\t0x%016llx\n", rdmsr(MSR_IA32_FEATURE_CONTROL)); - if ((cpu_vendor_id == CPU_VENDOR_INTEL || - cpu_vendor_id == CPU_VENDOR_AMD) && CPUID_TO_FAMILY(cpu_id) >= 6) + if (((cpu_vendor_id == CPU_VENDOR_INTEL || + cpu_vendor_id == CPU_VENDOR_AMD) && CPUID_TO_FAMILY(cpu_id) >= 6) || + cpu_vendor_id == CPU_VENDOR_HYGON) db_printf("DEBUG_CTL\t0x%016llx\n", rdmsr(MSR_DEBUGCTLMSR)); if (cpu_feature & CPUID_PAT) db_printf("PAT\t0x%016llx\n", rdmsr(MSR_PAT)); diff --git a/sys/i386/linux/linux_machdep.c b/sys/i386/linux/linux_machdep.c index 79db342881cc5..2b83e72d20e52 100644 --- a/sys/i386/linux/linux_machdep.c +++ b/sys/i386/linux/linux_machdep.c @@ -553,13 +553,6 @@ linux_sigaltstack(struct thread *td, struct linux_sigaltstack_args *uap) } int -linux_ftruncate64(struct thread *td, struct linux_ftruncate64_args *args) -{ - - return (kern_ftruncate(td, args->fd, args->length)); -} - -int linux_set_thread_area(struct thread *td, struct linux_set_thread_area_args *args) { struct l_user_desc info; diff --git a/sys/kern/kern_cpu.c b/sys/kern/kern_cpu.c index 724131d713a91..8534b4455e558 100644 --- a/sys/kern/kern_cpu.c +++ b/sys/kern/kern_cpu.c @@ -76,6 +76,7 @@ struct cpufreq_softc { int all_count; int max_mhz; device_t dev; + device_t cf_drv_dev; struct sysctl_ctx_list sysctl_ctx; struct task startup_task; struct cf_level *levels_buf; @@ -142,6 +143,11 @@ SYSCTL_INT(_debug_cpufreq, OID_AUTO, lowest, CTLFLAG_RWTUN, &cf_lowest_freq, 1, SYSCTL_INT(_debug_cpufreq, OID_AUTO, verbose, CTLFLAG_RWTUN, &cf_verbose, 1, "Print verbose debugging messages"); +/* + * This is called as the result of a hardware specific frequency control driver + * calling cpufreq_register. It provides a general interface for system wide + * frequency controls and operates on a per cpu basis. + */ static int cpufreq_attach(device_t dev) { @@ -149,7 +155,6 @@ cpufreq_attach(device_t dev) struct pcpu *pc; device_t parent; uint64_t rate; - int numdevs; CF_DEBUG("initializing %s\n", device_get_nameunit(dev)); sc = device_get_softc(dev); @@ -164,6 +169,7 @@ cpufreq_attach(device_t dev) sc->max_mhz = cpu_get_nominal_mhz(dev); /* If that fails, try to measure the current rate */ if (sc->max_mhz <= 0) { + CF_DEBUG("Unable to obtain nominal frequency.\n"); pc = cpu_get_pcpu(dev); if (cpu_est_clockrate(pc->pc_cpuid, &rate) == 0) sc->max_mhz = rate / 1000000; @@ -171,15 +177,6 @@ cpufreq_attach(device_t dev) sc->max_mhz = CPUFREQ_VAL_UNKNOWN; } - /* - * Only initialize one set of sysctls for all CPUs. In the future, - * if multiple CPUs can have different settings, we can move these - * sysctls to be under every CPU instead of just the first one. - */ - numdevs = devclass_get_count(cpufreq_dc); - if (numdevs > 1) - return (0); - CF_DEBUG("initializing one-time data for %s\n", device_get_nameunit(dev)); sc->levels_buf = malloc(CF_MAX_LEVELS * sizeof(*sc->levels_buf), @@ -216,7 +213,6 @@ cpufreq_detach(device_t dev) { struct cpufreq_softc *sc; struct cf_saved_freq *saved_freq; - int numdevs; CF_DEBUG("shutdown %s\n", device_get_nameunit(dev)); sc = device_get_softc(dev); @@ -227,12 +223,7 @@ cpufreq_detach(device_t dev) free(saved_freq, M_TEMP); } - /* Only clean up these resources when the last device is detaching. */ - numdevs = devclass_get_count(cpufreq_dc); - if (numdevs == 1) { - CF_DEBUG("final shutdown for %s\n", device_get_nameunit(dev)); - free(sc->levels_buf, M_DEVBUF); - } + free(sc->levels_buf, M_DEVBUF); return (0); } @@ -422,25 +413,74 @@ out: } static int +cpufreq_get_frequency(device_t dev) +{ + struct cf_setting set; + + if (CPUFREQ_DRV_GET(dev, &set) != 0) + return (-1); + + return (set.freq); +} + +/* Returns the index into *levels with the match */ +static int +cpufreq_get_level(device_t dev, struct cf_level *levels, int count) +{ + int i, freq; + + if ((freq = cpufreq_get_frequency(dev)) < 0) + return (-1); + for (i = 0; i < count; i++) + if (freq == levels[i].total_set.freq) + return (i); + + return (-1); +} + +/* + * Used by the cpufreq core, this function will populate *level with the current + * frequency as either determined by a cached value sc->curr_level, or in the + * case the lower level driver has set the CPUFREQ_FLAG_UNCACHED flag, it will + * obtain the frequency from the driver itself. + */ +static int cf_get_method(device_t dev, struct cf_level *level) { struct cpufreq_softc *sc; struct cf_level *levels; - struct cf_setting *curr_set, set; + struct cf_setting *curr_set; struct pcpu *pc; - device_t *devs; - int bdiff, count, diff, error, i, n, numdevs; + int bdiff, count, diff, error, i, type; uint64_t rate; sc = device_get_softc(dev); error = 0; levels = NULL; - /* If we already know the current frequency, we're done. */ + /* + * If we already know the current frequency, and the driver didn't ask + * for uncached usage, we're done. + */ CF_MTX_LOCK(&sc->lock); curr_set = &sc->curr_level.total_set; - if (curr_set->freq != CPUFREQ_VAL_UNKNOWN) { + error = CPUFREQ_DRV_TYPE(sc->cf_drv_dev, &type); + if (error == 0 && (type & CPUFREQ_FLAG_UNCACHED)) { + struct cf_setting set; + + /* + * If the driver wants to always report back the real frequency, + * first try the driver and if that fails, fall back to + * estimating. + */ + if (CPUFREQ_DRV_GET(sc->cf_drv_dev, &set) != 0) + goto estimate; + sc->curr_level.total_set = set; + CF_DEBUG("get returning immediate freq %d\n", curr_set->freq); + goto out; + } else if (curr_set->freq != CPUFREQ_VAL_UNKNOWN) { CF_DEBUG("get returning known freq %d\n", curr_set->freq); + error = 0; goto out; } CF_MTX_UNLOCK(&sc->lock); @@ -461,11 +501,6 @@ cf_get_method(device_t dev, struct cf_level *level) free(levels, M_TEMP); return (error); } - error = device_get_children(device_get_parent(dev), &devs, &numdevs); - if (error) { - free(levels, M_TEMP); - return (error); - } /* * Reacquire the lock and search for the given level. @@ -476,24 +511,21 @@ cf_get_method(device_t dev, struct cf_level *level) * The estimation code below catches this case though. */ CF_MTX_LOCK(&sc->lock); - for (n = 0; n < numdevs && curr_set->freq == CPUFREQ_VAL_UNKNOWN; n++) { - if (!device_is_attached(devs[n])) - continue; - if (CPUFREQ_DRV_GET(devs[n], &set) != 0) - continue; - for (i = 0; i < count; i++) { - if (set.freq == levels[i].total_set.freq) { - sc->curr_level = levels[i]; - break; - } - } - } - free(devs, M_TEMP); + i = cpufreq_get_level(sc->cf_drv_dev, levels, count); + if (i >= 0) + sc->curr_level = levels[i]; + else + CF_DEBUG("Couldn't find supported level for %s\n", + device_get_nameunit(sc->cf_drv_dev)); + if (curr_set->freq != CPUFREQ_VAL_UNKNOWN) { CF_DEBUG("get matched freq %d from drivers\n", curr_set->freq); goto out; } +estimate: + CF_MTX_ASSERT(&sc->lock); + /* * We couldn't find an exact match, so attempt to estimate and then * match against a level. @@ -525,6 +557,73 @@ out: return (error); } +/* + * Either directly obtain settings from the cpufreq driver, or build a list of + * relative settings to be integrated later against an absolute max. + */ +static int +cpufreq_add_levels(device_t cf_dev, struct cf_setting_lst *rel_sets) +{ + struct cf_setting_array *set_arr; + struct cf_setting *sets; + device_t dev; + struct cpufreq_softc *sc; + int type, set_count, error; + + sc = device_get_softc(cf_dev); + dev = sc->cf_drv_dev; + + /* Skip devices that aren't ready. */ + if (!device_is_attached(cf_dev)) + return (0); + + /* + * Get settings, skipping drivers that offer no settings or + * provide settings for informational purposes only. + */ + error = CPUFREQ_DRV_TYPE(dev, &type); + if (error != 0 || (type & CPUFREQ_FLAG_INFO_ONLY)) { + if (error == 0) { + CF_DEBUG("skipping info-only driver %s\n", + device_get_nameunit(cf_dev)); + } + return (error); + } + + sets = malloc(MAX_SETTINGS * sizeof(*sets), M_TEMP, M_NOWAIT); + if (sets == NULL) + return (ENOMEM); + + set_count = MAX_SETTINGS; + error = CPUFREQ_DRV_SETTINGS(dev, sets, &set_count); + if (error != 0 || set_count == 0) + goto out; + + /* Add the settings to our absolute/relative lists. */ + switch (type & CPUFREQ_TYPE_MASK) { + case CPUFREQ_TYPE_ABSOLUTE: + error = cpufreq_insert_abs(sc, sets, set_count); + break; + case CPUFREQ_TYPE_RELATIVE: + CF_DEBUG("adding %d relative settings\n", set_count); + set_arr = malloc(sizeof(*set_arr), M_TEMP, M_NOWAIT); + if (set_arr == NULL) { + error = ENOMEM; + goto out; + } + bcopy(sets, set_arr->sets, set_count * sizeof(*sets)); + set_arr->count = set_count; + TAILQ_INSERT_TAIL(rel_sets, set_arr, link); + break; + default: + error = EINVAL; + } + +out: + free(sets, M_TEMP); + return (error); +} + static int cf_levels_method(device_t dev, struct cf_level *levels, int *count) { @@ -532,10 +631,8 @@ cf_levels_method(device_t dev, struct cf_level *levels, int *count) struct cf_setting_lst rel_sets; struct cpufreq_softc *sc; struct cf_level *lev; - struct cf_setting *sets; struct pcpu *pc; - device_t *devs; - int error, i, numdevs, set_count, type; + int error, i; uint64_t rate; if (levels == NULL || count == NULL) @@ -543,67 +640,21 @@ cf_levels_method(device_t dev, struct cf_level *levels, int *count) TAILQ_INIT(&rel_sets); sc = device_get_softc(dev); - error = device_get_children(device_get_parent(dev), &devs, &numdevs); - if (error) - return (error); - sets = malloc(MAX_SETTINGS * sizeof(*sets), M_TEMP, M_NOWAIT); - if (sets == NULL) { - free(devs, M_TEMP); - return (ENOMEM); - } - /* Get settings from all cpufreq drivers. */ CF_MTX_LOCK(&sc->lock); - for (i = 0; i < numdevs; i++) { - /* Skip devices that aren't ready. */ - if (!device_is_attached(devs[i])) - continue; - - /* - * Get settings, skipping drivers that offer no settings or - * provide settings for informational purposes only. - */ - error = CPUFREQ_DRV_TYPE(devs[i], &type); - if (error || (type & CPUFREQ_FLAG_INFO_ONLY)) { - if (error == 0) { - CF_DEBUG("skipping info-only driver %s\n", - device_get_nameunit(devs[i])); - } - continue; - } - set_count = MAX_SETTINGS; - error = CPUFREQ_DRV_SETTINGS(devs[i], sets, &set_count); - if (error || set_count == 0) - continue; - - /* Add the settings to our absolute/relative lists. */ - switch (type & CPUFREQ_TYPE_MASK) { - case CPUFREQ_TYPE_ABSOLUTE: - error = cpufreq_insert_abs(sc, sets, set_count); - break; - case CPUFREQ_TYPE_RELATIVE: - CF_DEBUG("adding %d relative settings\n", set_count); - set_arr = malloc(sizeof(*set_arr), M_TEMP, M_NOWAIT); - if (set_arr == NULL) { - error = ENOMEM; - goto out; - } - bcopy(sets, set_arr->sets, set_count * sizeof(*sets)); - set_arr->count = set_count; - TAILQ_INSERT_TAIL(&rel_sets, set_arr, link); - break; - default: - error = EINVAL; - } - if (error) - goto out; - } + error = cpufreq_add_levels(sc->dev, &rel_sets); + if (error) + goto out; /* * If there are no absolute levels, create a fake one at 100%. We * then cache the clockrate for later use as our base frequency. */ if (TAILQ_EMPTY(&sc->all_levels)) { + struct cf_setting set; + + CF_DEBUG("No absolute levels returned by driver\n"); + if (sc->max_mhz == CPUFREQ_VAL_UNKNOWN) { sc->max_mhz = cpu_get_nominal_mhz(dev); /* @@ -617,10 +668,10 @@ cf_levels_method(device_t dev, struct cf_level *levels, int *count) sc->max_mhz = rate / 1000000; } } - memset(&sets[0], CPUFREQ_VAL_UNKNOWN, sizeof(*sets)); - sets[0].freq = sc->max_mhz; - sets[0].dev = NULL; - error = cpufreq_insert_abs(sc, sets, 1); + memset(&set, CPUFREQ_VAL_UNKNOWN, sizeof(set)); + set.freq = sc->max_mhz; + set.dev = NULL; + error = cpufreq_insert_abs(sc, &set, 1); if (error) goto out; } @@ -665,8 +716,6 @@ out: TAILQ_REMOVE(&rel_sets, set_arr, link); free(set_arr, M_TEMP); } - free(devs, M_TEMP); - free(sets, M_TEMP); return (error); } @@ -1011,11 +1060,24 @@ out: return (error); } +static void +cpufreq_add_freq_driver_sysctl(device_t cf_dev) +{ + struct cpufreq_softc *sc; + + sc = device_get_softc(cf_dev); + SYSCTL_ADD_CONST_STRING(&sc->sysctl_ctx, + SYSCTL_CHILDREN(device_get_sysctl_tree(cf_dev)), OID_AUTO, + "freq_driver", CTLFLAG_RD, device_get_nameunit(sc->cf_drv_dev), + "cpufreq driver used by this cpu"); +} + int cpufreq_register(device_t dev) { struct cpufreq_softc *sc; device_t cf_dev, cpu_dev; + int error; /* Add a sysctl to get each driver's settings separately. */ SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), @@ -1031,6 +1093,7 @@ cpufreq_register(device_t dev) if ((cf_dev = device_find_child(cpu_dev, "cpufreq", -1))) { sc = device_get_softc(cf_dev); sc->max_mhz = CPUFREQ_VAL_UNKNOWN; + MPASS(sc->cf_drv_dev != NULL); return (0); } @@ -1040,40 +1103,36 @@ cpufreq_register(device_t dev) return (ENOMEM); device_quiet(cf_dev); - return (device_probe_and_attach(cf_dev)); + error = device_probe_and_attach(cf_dev); + if (error) + return (error); + + sc = device_get_softc(cf_dev); + sc->cf_drv_dev = dev; + cpufreq_add_freq_driver_sysctl(cf_dev); + return (error); } int cpufreq_unregister(device_t dev) { - device_t cf_dev, *devs; - int cfcount, devcount, error, i, type; + device_t cf_dev; + struct cpufreq_softc *sc; /* * If this is the last cpufreq child device, remove the control * device as well. We identify cpufreq children by calling a method * they support. */ - error = device_get_children(device_get_parent(dev), &devs, &devcount); - if (error) - return (error); cf_dev = device_find_child(device_get_parent(dev), "cpufreq", -1); if (cf_dev == NULL) { device_printf(dev, "warning: cpufreq_unregister called with no cpufreq device active\n"); - free(devs, M_TEMP); return (0); } - cfcount = 0; - for (i = 0; i < devcount; i++) { - if (!device_is_attached(devs[i])) - continue; - if (CPUFREQ_DRV_TYPE(devs[i], &type) == 0) - cfcount++; - } - if (cfcount <= 1) - device_delete_child(device_get_parent(cf_dev), cf_dev); - free(devs, M_TEMP); + sc = device_get_softc(cf_dev); + MPASS(sc->cf_drv_dev == dev); + device_delete_child(device_get_parent(cf_dev), cf_dev); return (0); } diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c index 67a799ec076f6..523811f38da68 100644 --- a/sys/kern/kern_intr.c +++ b/sys/kern/kern_intr.c @@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$"); #include <sys/mutex.h> #include <sys/priv.h> #include <sys/proc.h> +#include <sys/epoch.h> #include <sys/random.h> #include <sys/resourcevar.h> #include <sys/sched.h> @@ -94,6 +95,9 @@ static int intr_storm_threshold = 0; SYSCTL_INT(_hw, OID_AUTO, intr_storm_threshold, CTLFLAG_RWTUN, &intr_storm_threshold, 0, "Number of consecutive interrupts before storm protection is enabled"); +static int intr_epoch_batch = 1000; +SYSCTL_INT(_hw, OID_AUTO, intr_epoch_batch, CTLFLAG_RWTUN, &intr_epoch_batch, + 0, "Maximum interrupt handler executions without re-entering epoch(9)"); static TAILQ_HEAD(, intr_event) event_list = TAILQ_HEAD_INITIALIZER(event_list); static struct mtx event_lock; @@ -190,7 +194,7 @@ intr_event_update(struct intr_event *ie) /* Start off with no entropy and just the name of the event. */ mtx_assert(&ie->ie_lock, MA_OWNED); strlcpy(ie->ie_fullname, ie->ie_name, sizeof(ie->ie_fullname)); - ie->ie_flags &= ~IE_ENTROPY; + ie->ie_hflags = 0; missed = 0; space = 1; @@ -203,8 +207,7 @@ intr_event_update(struct intr_event *ie) space = 0; } else missed++; - if (ih->ih_flags & IH_ENTROPY) - ie->ie_flags |= IE_ENTROPY; + ie->ie_hflags |= ih->ih_flags; } /* @@ -588,6 +591,8 @@ intr_event_add_handler(struct intr_event *ie, const char *name, ih->ih_flags |= IH_MPSAFE; if (flags & INTR_ENTROPY) ih->ih_flags |= IH_ENTROPY; + if (flags & INTR_TYPE_NET) + ih->ih_flags |= IH_NET; /* We can only have one exclusive handler in a event. */ mtx_lock(&ie->ie_lock); @@ -958,7 +963,7 @@ intr_event_schedule_thread(struct intr_event *ie) * If any of the handlers for this ithread claim to be good * sources of entropy, then gather some. */ - if (ie->ie_flags & IE_ENTROPY) { + if (ie->ie_hflags & IH_ENTROPY) { entropy.event = (uintptr_t)ie; entropy.td = ctd; random_harvest_queue(&entropy, sizeof(entropy), RANDOM_INTERRUPT); @@ -1197,11 +1202,12 @@ ithread_execute_handlers(struct proc *p, struct intr_event *ie) static void ithread_loop(void *arg) { + struct epoch_tracker et; struct intr_thread *ithd; struct intr_event *ie; struct thread *td; struct proc *p; - int wake; + int wake, epoch_count; td = curthread; p = td->td_proc; @@ -1236,8 +1242,21 @@ ithread_loop(void *arg) * that the load of ih_need in ithread_execute_handlers() * is ordered after the load of it_need here. */ - while (atomic_cmpset_acq_int(&ithd->it_need, 1, 0) != 0) + if (ie->ie_hflags & IH_NET) { + epoch_count = 0; + NET_EPOCH_ENTER(et); + } + while (atomic_cmpset_acq_int(&ithd->it_need, 1, 0) != 0) { ithread_execute_handlers(p, ie); + if ((ie->ie_hflags & IH_NET) && + ++epoch_count >= intr_epoch_batch) { + NET_EPOCH_EXIT(et); + epoch_count = 0; + NET_EPOCH_ENTER(et); + } + } + if (ie->ie_hflags & IH_NET) + NET_EPOCH_EXIT(et); WITNESS_WARN(WARN_PANIC, NULL, "suspending ithread"); mtx_assert(&Giant, MA_NOTOWNED); @@ -1492,7 +1511,7 @@ db_dump_intr_event(struct intr_event *ie, int handlers) db_printf("(pid %d)", it->it_thread->td_proc->p_pid); else db_printf("(no thread)"); - if ((ie->ie_flags & (IE_SOFT | IE_ENTROPY | IE_ADDING_THREAD)) != 0 || + if ((ie->ie_flags & (IE_SOFT | IE_ADDING_THREAD)) != 0 || (it != NULL && it->it_need)) { db_printf(" {"); comma = 0; @@ -1500,12 +1519,6 @@ db_dump_intr_event(struct intr_event *ie, int handlers) db_printf("SOFT"); comma = 1; } - if (ie->ie_flags & IE_ENTROPY) { - if (comma) - db_printf(", "); - db_printf("ENTROPY"); - comma = 1; - } if (ie->ie_flags & IE_ADDING_THREAD) { if (comma) db_printf(", "); diff --git a/sys/kern/kern_kcov.c b/sys/kern/kern_kcov.c index e84b403cd31eb..1e9ed224f17ec 100644 --- a/sys/kern/kern_kcov.c +++ b/sys/kern/kern_kcov.c @@ -383,8 +383,9 @@ kcov_alloc(struct kcov_info *info, size_t entries) VM_OBJECT_WLOCK(info->bufobj); for (n = 0; n < pages; n++) { m = vm_page_grab(info->bufobj, n, - VM_ALLOC_NOBUSY | VM_ALLOC_ZERO | VM_ALLOC_WIRED); - m->valid = VM_PAGE_BITS_ALL; + VM_ALLOC_ZERO | VM_ALLOC_WIRED); + vm_page_valid(m); + vm_page_xunbusy(m); pmap_qenter(info->kvaddr + n * PAGE_SIZE, &m, 1); } VM_OBJECT_WUNLOCK(info->bufobj); diff --git a/sys/kern/kern_lock.c b/sys/kern/kern_lock.c index ae3598000edb7..b48bc608e1774 100644 --- a/sys/kern/kern_lock.c +++ b/sys/kern/kern_lock.c @@ -209,7 +209,6 @@ static void lockmgr_note_shared_release(struct lock *lk, const char *file, int line) { - LOCKSTAT_PROFILE_RELEASE_RWLOCK(lockmgr__release, lk, LOCKSTAT_READER); WITNESS_UNLOCK(&lk->lock_object, 0, file, line); LOCK_LOG_LOCK("SUNLOCK", &lk->lock_object, 0, 0, file, line); TD_LOCKS_DEC(curthread); @@ -234,11 +233,12 @@ static void lockmgr_note_exclusive_release(struct lock *lk, const char *file, int line) { - LOCKSTAT_PROFILE_RELEASE_RWLOCK(lockmgr__release, lk, LOCKSTAT_WRITER); + if (LK_HOLDER(lk->lk_lock) != LK_KERNPROC) { + WITNESS_UNLOCK(&lk->lock_object, LOP_EXCLUSIVE, file, line); + TD_LOCKS_DEC(curthread); + } LOCK_LOG_LOCK("XUNLOCK", &lk->lock_object, 0, lk->lk_recurse, file, line); - WITNESS_UNLOCK(&lk->lock_object, LOP_EXCLUSIVE, file, line); - TD_LOCKS_DEC(curthread); } static __inline struct thread * @@ -388,7 +388,7 @@ retry_sleepq: break; } - lockmgr_note_shared_release(lk, file, line); + LOCKSTAT_PROFILE_RELEASE_RWLOCK(lockmgr__release, lk, LOCKSTAT_READER); return (wakeup_swapper); } @@ -924,6 +924,7 @@ lockmgr_upgrade(struct lock *lk, u_int flags, struct lock_object *ilk, * We have been unable to succeed in upgrading, so just * give up the shared lock. */ + lockmgr_note_shared_release(lk, file, line); wakeup_swapper |= wakeupshlk(lk, file, line); error = lockmgr_xlock_hard(lk, flags, ilk, file, line, lwa); flags &= ~LK_INTERLOCK; @@ -1034,11 +1035,6 @@ lockmgr_xunlock_hard(struct lock *lk, uintptr_t x, u_int flags, struct lock_obje */ if (LK_HOLDER(x) == LK_KERNPROC) tid = LK_KERNPROC; - else { - WITNESS_UNLOCK(&lk->lock_object, LOP_EXCLUSIVE, file, line); - TD_LOCKS_DEC(curthread); - } - LOCK_LOG_LOCK("XUNLOCK", &lk->lock_object, 0, lk->lk_recurse, file, line); /* * The lock is held in exclusive mode. @@ -1135,16 +1131,18 @@ lockmgr_unlock_fast_path(struct lock *lk, u_int flags, struct lock_object *ilk) _lockmgr_assert(lk, KA_LOCKED, file, line); x = lk->lk_lock; if (__predict_true(x & LK_SHARE) != 0) { + lockmgr_note_shared_release(lk, file, line); if (lockmgr_sunlock_try(lk, &x)) { - lockmgr_note_shared_release(lk, file, line); + LOCKSTAT_PROFILE_RELEASE_RWLOCK(lockmgr__release, lk, LOCKSTAT_READER); } else { return (lockmgr_sunlock_hard(lk, x, flags, ilk, file, line)); } } else { tid = (uintptr_t)curthread; + lockmgr_note_exclusive_release(lk, file, line); if (!lockmgr_recursed(lk) && atomic_cmpset_rel_ptr(&lk->lk_lock, tid, LK_UNLOCKED)) { - lockmgr_note_exclusive_release(lk, file, line); + LOCKSTAT_PROFILE_RELEASE_RWLOCK(lockmgr__release, lk, LOCKSTAT_WRITER); } else { return (lockmgr_xunlock_hard(lk, x, flags, ilk, file, line)); } @@ -1221,16 +1219,18 @@ lockmgr_unlock(struct lock *lk) _lockmgr_assert(lk, KA_LOCKED, file, line); x = lk->lk_lock; if (__predict_true(x & LK_SHARE) != 0) { + lockmgr_note_shared_release(lk, file, line); if (lockmgr_sunlock_try(lk, &x)) { - lockmgr_note_shared_release(lk, file, line); + LOCKSTAT_PROFILE_RELEASE_RWLOCK(lockmgr__release, lk, LOCKSTAT_READER); } else { return (lockmgr_sunlock_hard(lk, x, LK_RELEASE, NULL, file, line)); } } else { tid = (uintptr_t)curthread; + lockmgr_note_exclusive_release(lk, file, line); if (!lockmgr_recursed(lk) && atomic_cmpset_rel_ptr(&lk->lk_lock, tid, LK_UNLOCKED)) { - lockmgr_note_exclusive_release(lk, file, line); + LOCKSTAT_PROFILE_RELEASE_RWLOCK(lockmgr__release, lk, LOCKSTAT_WRITER); } else { return (lockmgr_xunlock_hard(lk, x, LK_RELEASE, NULL, file, line)); } @@ -1347,8 +1347,10 @@ __lockmgr_args(struct lock *lk, u_int flags, struct lock_object *ilk, x = lk->lk_lock; if (__predict_true(x & LK_SHARE) != 0) { + lockmgr_note_shared_release(lk, file, line); return (lockmgr_sunlock_hard(lk, x, flags, ilk, file, line)); } else { + lockmgr_note_exclusive_release(lk, file, line); return (lockmgr_xunlock_hard(lk, x, flags, ilk, file, line)); } break; diff --git a/sys/kern/kern_poll.c b/sys/kern/kern_poll.c index c6e1e7bd09441..3663b7d3df2fe 100644 --- a/sys/kern/kern_poll.c +++ b/sys/kern/kern_poll.c @@ -37,6 +37,7 @@ __FBSDID("$FreeBSD$"); #include <sys/kernel.h> #include <sys/kthread.h> #include <sys/proc.h> +#include <sys/epoch.h> #include <sys/eventhandler.h> #include <sys/resourcevar.h> #include <sys/socket.h> /* needed by net/if.h */ @@ -332,6 +333,7 @@ hardclock_device_poll(void) static void ether_poll(int count) { + struct epoch_tracker et; int i; mtx_lock(&poll_mtx); @@ -339,8 +341,10 @@ ether_poll(int count) if (count > poll_each_burst) count = poll_each_burst; + NET_EPOCH_ENTER(et); for (i = 0 ; i < poll_handlers ; i++) pr[i].handler(pr[i].ifp, POLL_ONLY, count); + NET_EPOCH_EXIT(et); mtx_unlock(&poll_mtx); } @@ -429,6 +433,8 @@ netisr_poll(void) int i, cycles; enum poll_cmd arg = POLL_ONLY; + NET_EPOCH_ASSERT(); + if (poll_handlers == 0) return; diff --git a/sys/kern/kern_sendfile.c b/sys/kern/kern_sendfile.c index 106019328b7e4..5b3f15af08289 100644 --- a/sys/kern/kern_sendfile.c +++ b/sys/kern/kern_sendfile.c @@ -388,7 +388,7 @@ sendfile_swapin(vm_object_t obj, struct sf_io *sfio, int *nios, off_t off, if (!vm_pager_has_page(obj, OFF_TO_IDX(vmoff(i, off)), NULL, &a)) { pmap_zero_page(pa[i]); - pa[i]->valid = VM_PAGE_BITS_ALL; + vm_page_valid(pa[i]); MPASS(pa[i]->dirty == 0); vm_page_xunbusy(pa[i]); i++; diff --git a/sys/kern/sched_ule.c b/sys/kern/sched_ule.c index 3c35179e2bee0..7dc48a2336bf5 100644 --- a/sys/kern/sched_ule.c +++ b/sys/kern/sched_ule.c @@ -2894,7 +2894,7 @@ sched_throw(struct thread *td) struct thread *newtd; struct tdq *tdq; - if (td == NULL) { + if (__predict_false(td == NULL)) { #ifdef SMP PCPU_SET(sched, DPCPU_PTR(tdq)); #endif @@ -2912,13 +2912,18 @@ sched_throw(struct thread *td) tdq_load_rem(tdq, td); td->td_lastcpu = td->td_oncpu; td->td_oncpu = NOCPU; + thread_lock_block(td); } newtd = choosethread(); spinlock_enter(); TDQ_UNLOCK(tdq); KASSERT(curthread->td_md.md_spinlock_count == 1, ("invalid count %d", curthread->td_md.md_spinlock_count)); - cpu_throw(td, newtd); /* doesn't return */ + /* doesn't return */ + if (__predict_false(td == NULL)) + cpu_throw(td, newtd); /* doesn't return */ + else + cpu_switch(td, newtd, TDQ_LOCKPTR(tdq)); } /* diff --git a/sys/kern/uipc_ktls.c b/sys/kern/uipc_ktls.c index a43ffbbc391e3..a6f272329c717 100644 --- a/sys/kern/uipc_ktls.c +++ b/sys/kern/uipc_ktls.c @@ -1141,7 +1141,9 @@ ktls_reset_send_tag(void *context, int pending) if (!(inp->inp_flags & INP_TIMEWAIT) && !(inp->inp_flags & INP_DROPPED)) { tp = intotcpcb(inp); + CURVNET_SET(tp->t_vnet); tp = tcp_drop(tp, ECONNABORTED); + CURVNET_RESTORE(); if (tp != NULL) INP_WUNLOCK(inp); counter_u64_add(ktls_ifnet_reset_dropped, 1); diff --git a/sys/kern/uipc_usrreq.c b/sys/kern/uipc_usrreq.c index 1a95b289ec086..0bede5162fef5 100644 --- a/sys/kern/uipc_usrreq.c +++ b/sys/kern/uipc_usrreq.c @@ -260,7 +260,7 @@ static struct mtx unp_defers_lock; #define UNP_LINK_LOCK_INIT() rw_init(&unp_link_rwlock, \ "unp_link_rwlock") -#define UNP_LINK_LOCK_ASSERT() rw_assert(&unp_link_rwlock, \ +#define UNP_LINK_LOCK_ASSERT() rw_assert(&unp_link_rwlock, \ RA_LOCKED) #define UNP_LINK_UNLOCK_ASSERT() rw_assert(&unp_link_rwlock, \ RA_UNLOCKED) @@ -778,6 +778,8 @@ uipc_detach(struct socket *so) UNP_LINK_WLOCK(); LIST_REMOVE(unp, unp_link); + if (unp->unp_gcflag & UNPGC_DEAD) + LIST_REMOVE(unp, unp_dead); unp->unp_gencnt = ++unp_gencnt; --unp_count; UNP_LINK_WUNLOCK(); @@ -2481,49 +2483,60 @@ unp_externalize_fp(struct file *fp) * synchronization. */ static int unp_marked; -static int unp_unreachable; static void -unp_accessable(struct filedescent **fdep, int fdcount) +unp_remove_dead_ref(struct filedescent **fdep, int fdcount) { struct unpcb *unp; struct file *fp; int i; + /* + * This function can only be called from the gc task. + */ + KASSERT(taskqueue_member(taskqueue_thread, curthread) != 0, + ("%s: not on gc callout", __func__)); + UNP_LINK_LOCK_ASSERT(); + for (i = 0; i < fdcount; i++) { fp = fdep[i]->fde_file; if ((unp = fptounp(fp)) == NULL) continue; - if (unp->unp_gcflag & UNPGC_REF) + if ((unp->unp_gcflag & UNPGC_DEAD) == 0) continue; - unp->unp_gcflag &= ~UNPGC_DEAD; - unp->unp_gcflag |= UNPGC_REF; - unp_marked++; + unp->unp_gcrefs--; } } static void -unp_gc_process(struct unpcb *unp) +unp_restore_undead_ref(struct filedescent **fdep, int fdcount) { - struct socket *so, *soa; + struct unpcb *unp; struct file *fp; - - /* Already processed. */ - if (unp->unp_gcflag & UNPGC_SCANNED) - return; - fp = unp->unp_file; + int i; /* - * Check for a socket potentially in a cycle. It must be in a - * queue as indicated by msgcount, and this must equal the file - * reference count. Note that when msgcount is 0 the file is NULL. + * This function can only be called from the gc task. */ - if ((unp->unp_gcflag & UNPGC_REF) == 0 && fp && - unp->unp_msgcount != 0 && fp->f_count == unp->unp_msgcount) { - unp->unp_gcflag |= UNPGC_DEAD; - unp_unreachable++; - return; + KASSERT(taskqueue_member(taskqueue_thread, curthread) != 0, + ("%s: not on gc callout", __func__)); + UNP_LINK_LOCK_ASSERT(); + + for (i = 0; i < fdcount; i++) { + fp = fdep[i]->fde_file; + if ((unp = fptounp(fp)) == NULL) + continue; + if ((unp->unp_gcflag & UNPGC_DEAD) == 0) + continue; + unp->unp_gcrefs++; + unp_marked++; } +} + +static void +unp_gc_scan(struct unpcb *unp, void (*op)(struct filedescent **, int)) +{ + struct socket *so, *soa; so = unp->unp_socket; SOCK_LOCK(so); @@ -2535,7 +2548,7 @@ unp_gc_process(struct unpcb *unp) if (sotounpcb(soa)->unp_gcflag & UNPGC_IGNORE_RIGHTS) continue; SOCKBUF_LOCK(&soa->so_rcv); - unp_scan(soa->so_rcv.sb_mb, unp_accessable); + unp_scan(soa->so_rcv.sb_mb, op); SOCKBUF_UNLOCK(&soa->so_rcv); } } else { @@ -2544,12 +2557,11 @@ unp_gc_process(struct unpcb *unp) */ if ((unp->unp_gcflag & UNPGC_IGNORE_RIGHTS) == 0) { SOCKBUF_LOCK(&so->so_rcv); - unp_scan(so->so_rcv.sb_mb, unp_accessable); + unp_scan(so->so_rcv.sb_mb, op); SOCKBUF_UNLOCK(&so->so_rcv); } } SOCK_UNLOCK(so); - unp->unp_gcflag |= UNPGC_SCANNED; } static int unp_recycled; @@ -2560,67 +2572,115 @@ static int unp_taskcount; SYSCTL_INT(_net_local, OID_AUTO, taskcount, CTLFLAG_RD, &unp_taskcount, 0, "Number of times the garbage collector has run."); +SYSCTL_UINT(_net_local, OID_AUTO, sockcount, CTLFLAG_RD, &unp_count, 0, + "Number of active local sockets."); + static void unp_gc(__unused void *arg, int pending) { struct unp_head *heads[] = { &unp_dhead, &unp_shead, &unp_sphead, NULL }; struct unp_head **head; + struct unp_head unp_deadhead; /* List of potentially-dead sockets. */ struct file *f, **unref; - struct unpcb *unp; - int i, total; + struct unpcb *unp, *unptmp; + int i, total, unp_unreachable; + LIST_INIT(&unp_deadhead); unp_taskcount++; UNP_LINK_RLOCK(); /* - * First clear all gc flags from previous runs, apart from - * UNPGC_IGNORE_RIGHTS. + * First determine which sockets may be in cycles. */ + unp_unreachable = 0; + for (head = heads; *head != NULL; head++) - LIST_FOREACH(unp, *head, unp_link) - unp->unp_gcflag = - (unp->unp_gcflag & UNPGC_IGNORE_RIGHTS); + LIST_FOREACH(unp, *head, unp_link) { + + KASSERT((unp->unp_gcflag & ~UNPGC_IGNORE_RIGHTS) == 0, + ("%s: unp %p has unexpected gc flags 0x%x", + __func__, unp, (unsigned int)unp->unp_gcflag)); + + f = unp->unp_file; + + /* + * Check for an unreachable socket potentially in a + * cycle. It must be in a queue as indicated by + * msgcount, and this must equal the file reference + * count. Note that when msgcount is 0 the file is + * NULL. + */ + if (f != NULL && unp->unp_msgcount != 0 && + f->f_count == unp->unp_msgcount) { + LIST_INSERT_HEAD(&unp_deadhead, unp, unp_dead); + unp->unp_gcflag |= UNPGC_DEAD; + unp->unp_gcrefs = unp->unp_msgcount; + unp_unreachable++; + } + } /* - * Scan marking all reachable sockets with UNPGC_REF. Once a socket - * is reachable all of the sockets it references are reachable. + * Scan all sockets previously marked as potentially being in a cycle + * and remove the references each socket holds on any UNPGC_DEAD + * sockets in its queue. After this step, all remaining references on + * sockets marked UNPGC_DEAD should not be part of any cycle. + */ + LIST_FOREACH(unp, &unp_deadhead, unp_dead) + unp_gc_scan(unp, unp_remove_dead_ref); + + /* + * If a socket still has a non-negative refcount, it cannot be in a + * cycle. In this case increment refcount of all children iteratively. * Stop the scan once we do a complete loop without discovering * a new reachable socket. */ do { - unp_unreachable = 0; unp_marked = 0; - for (head = heads; *head != NULL; head++) - LIST_FOREACH(unp, *head, unp_link) - unp_gc_process(unp); + LIST_FOREACH_SAFE(unp, &unp_deadhead, unp_dead, unptmp) + if (unp->unp_gcrefs > 0) { + unp->unp_gcflag &= ~UNPGC_DEAD; + LIST_REMOVE(unp, unp_dead); + KASSERT(unp_unreachable > 0, + ("%s: unp_unreachable underflow.", + __func__)); + unp_unreachable--; + unp_gc_scan(unp, unp_restore_undead_ref); + } } while (unp_marked); + UNP_LINK_RUNLOCK(); + if (unp_unreachable == 0) return; /* - * Allocate space for a local list of dead unpcbs. + * Allocate space for a local array of dead unpcbs. + * TODO: can this path be simplified by instead using the local + * dead list at unp_deadhead, after taking out references + * on the file object and/or unpcb and dropping the link lock? */ unref = malloc(unp_unreachable * sizeof(struct file *), M_TEMP, M_WAITOK); /* * Iterate looking for sockets which have been specifically marked - * as as unreachable and store them locally. + * as unreachable and store them locally. */ UNP_LINK_RLOCK(); - for (total = 0, head = heads; *head != NULL; head++) - LIST_FOREACH(unp, *head, unp_link) - if ((unp->unp_gcflag & UNPGC_DEAD) != 0) { - f = unp->unp_file; - if (unp->unp_msgcount == 0 || f == NULL || - f->f_count != unp->unp_msgcount || - !fhold(f)) - continue; - unref[total++] = f; - KASSERT(total <= unp_unreachable, - ("unp_gc: incorrect unreachable count.")); - } + total = 0; + LIST_FOREACH(unp, &unp_deadhead, unp_dead) { + KASSERT((unp->unp_gcflag & UNPGC_DEAD) != 0, + ("%s: unp %p not marked UNPGC_DEAD", __func__, unp)); + unp->unp_gcflag &= ~UNPGC_DEAD; + f = unp->unp_file; + if (unp->unp_msgcount == 0 || f == NULL || + f->f_count != unp->unp_msgcount || + !fhold(f)) + continue; + unref[total++] = f; + KASSERT(total <= unp_unreachable, + ("%s: incorrect unreachable count.", __func__)); + } UNP_LINK_RUNLOCK(); /* diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c index 55e46c085d462..47a5193eebf55 100644 --- a/sys/kern/vfs_mount.c +++ b/sys/kern/vfs_mount.c @@ -1294,12 +1294,19 @@ struct unmount_args { int sys_unmount(struct thread *td, struct unmount_args *uap) { + + return (kern_unmount(td, uap->path, uap->flags)); +} + +int +kern_unmount(struct thread *td, const char *path, int flags) +{ struct nameidata nd; struct mount *mp; char *pathbuf; int error, id0, id1; - AUDIT_ARG_VALUE(uap->flags); + AUDIT_ARG_VALUE(flags); if (jailed(td->td_ucred) || usermount == 0) { error = priv_check(td, PRIV_VFS_UNMOUNT); if (error) @@ -1307,12 +1314,12 @@ sys_unmount(struct thread *td, struct unmount_args *uap) } pathbuf = malloc(MNAMELEN, M_TEMP, M_WAITOK); - error = copyinstr(uap->path, pathbuf, MNAMELEN, NULL); + error = copyinstr(path, pathbuf, MNAMELEN, NULL); if (error) { free(pathbuf, M_TEMP); return (error); } - if (uap->flags & MNT_BYFSID) { + if (flags & MNT_BYFSID) { AUDIT_ARG_TEXT(pathbuf); /* Decode the filesystem ID. */ if (sscanf(pathbuf, "FSID:%d:%d", &id0, &id1) != 2) { @@ -1359,7 +1366,7 @@ sys_unmount(struct thread *td, struct unmount_args *uap) * now, so in the !MNT_BYFSID case return the more likely * EINVAL for compatibility. */ - return ((uap->flags & MNT_BYFSID) ? ENOENT : EINVAL); + return ((flags & MNT_BYFSID) ? ENOENT : EINVAL); } /* @@ -1369,7 +1376,7 @@ sys_unmount(struct thread *td, struct unmount_args *uap) vfs_rel(mp); return (EINVAL); } - error = dounmount(mp, uap->flags, td); + error = dounmount(mp, flags, td); return (error); } diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index d8d4d074b88b1..b8278f1cd5213 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -2826,11 +2826,10 @@ v_decr_devcount(struct vnode *vp) * see doomed vnodes. If inactive processing was delayed in * vput try to do it here. * - * usecount is manipulated using atomics without holding any locks, - * except when transitioning 0->1 in which case the interlock is held. - - * holdcnt is manipulated using atomics without holding any locks, - * except when transitioning 1->0 in which case the interlock is held. + * usecount is manipulated using atomics without holding any locks. + * + * holdcnt can be manipulated using atomics without holding any locks, + * except when transitioning 1<->0, in which case the interlock is held. */ enum vgetstate vget_prep(struct vnode *vp) @@ -2857,10 +2856,46 @@ vget(struct vnode *vp, int flags, struct thread *td) return (vget_finish(vp, flags, vs)); } +static int __noinline +vget_finish_vchr(struct vnode *vp) +{ + + VNASSERT(vp->v_type == VCHR, vp, ("type != VCHR)")); + + /* + * See the comment in vget_finish before usecount bump. + */ + if (refcount_acquire_if_not_zero(&vp->v_usecount)) { +#ifdef INVARIANTS + int old = atomic_fetchadd_int(&vp->v_holdcnt, -1); + VNASSERT(old > 0, vp, ("%s: wrong hold count %d", __func__, old)); +#else + refcount_release(&vp->v_holdcnt); +#endif + return (0); + } + + VI_LOCK(vp); + if (refcount_acquire_if_not_zero(&vp->v_usecount)) { +#ifdef INVARIANTS + int old = atomic_fetchadd_int(&vp->v_holdcnt, -1); + VNASSERT(old > 1, vp, ("%s: wrong hold count %d", __func__, old)); +#else + refcount_release(&vp->v_holdcnt); +#endif + VI_UNLOCK(vp); + return (0); + } + v_incr_devcount(vp); + refcount_acquire(&vp->v_usecount); + VI_UNLOCK(vp); + return (0); +} + int vget_finish(struct vnode *vp, int flags, enum vgetstate vs) { - int error, oweinact; + int error, old; VNASSERT((flags & LK_TYPE_MASK) != 0, vp, ("%s: invalid lock operation", __func__)); @@ -2887,93 +2922,109 @@ vget_finish(struct vnode *vp, int flags, enum vgetstate vs) } if (vs == VGET_USECOUNT) { - VNASSERT((vp->v_iflag & VI_OWEINACT) == 0, vp, - ("%s: vnode with usecount and VI_OWEINACT set", __func__)); return (0); } + if (__predict_false(vp->v_type == VCHR)) + return (vget_finish_vchr(vp)); + /* * We hold the vnode. If the usecount is 0 it will be utilized to keep * the vnode around. Otherwise someone else lended their hold count and * we have to drop ours. */ - if (refcount_acquire_if_not_zero(&vp->v_usecount)) { + old = atomic_fetchadd_int(&vp->v_usecount, 1); + VNASSERT(old >= 0, vp, ("%s: wrong use count %d", __func__, old)); + if (old != 0) { #ifdef INVARIANTS - int old = atomic_fetchadd_int(&vp->v_holdcnt, -1); + old = atomic_fetchadd_int(&vp->v_holdcnt, -1); VNASSERT(old > 1, vp, ("%s: wrong hold count %d", __func__, old)); #else refcount_release(&vp->v_holdcnt); #endif - VNODE_REFCOUNT_FENCE_ACQ(); - VNASSERT((vp->v_iflag & VI_OWEINACT) == 0, vp, - ("%s: vnode with usecount and VI_OWEINACT set", __func__)); - return (0); } + return (0); +} + +/* + * Increase the reference (use) and hold count of a vnode. + * This will also remove the vnode from the free list if it is presently free. + */ +static void __noinline +vref_vchr(struct vnode *vp, bool interlock) +{ /* - * We don't guarantee that any particular close will - * trigger inactive processing so just make a best effort - * here at preventing a reference to a removed file. If - * we don't succeed no harm is done. - * - * Upgrade our holdcnt to a usecount. - */ - VI_LOCK(vp); - /* - * See the previous section. By the time we get here we may find - * ourselves in the same spot. + * See the comment in vget_finish before usecount bump. */ + if (!interlock) { + if (refcount_acquire_if_not_zero(&vp->v_usecount)) { + VNODE_REFCOUNT_FENCE_ACQ(); + VNASSERT(vp->v_holdcnt > 0, vp, + ("%s: active vnode not held", __func__)); + return; + } + VI_LOCK(vp); + /* + * By the time we get here the vnode might have been doomed, at + * which point the 0->1 use count transition is no longer + * protected by the interlock. Since it can't bounce back to + * VCHR and requires vref semantics, punt it back + */ + if (__predict_false(vp->v_type == VBAD)) { + VI_UNLOCK(vp); + vref(vp); + return; + } + } + VNASSERT(vp->v_type == VCHR, vp, ("type != VCHR)")); if (refcount_acquire_if_not_zero(&vp->v_usecount)) { -#ifdef INVARIANTS - int old = atomic_fetchadd_int(&vp->v_holdcnt, -1); - VNASSERT(old > 1, vp, ("%s: wrong hold count %d", __func__, old)); -#else - refcount_release(&vp->v_holdcnt); -#endif VNODE_REFCOUNT_FENCE_ACQ(); - VNASSERT((vp->v_iflag & VI_OWEINACT) == 0, vp, - ("%s: vnode with usecount and VI_OWEINACT set", - __func__)); - VI_UNLOCK(vp); - return (0); - } - if ((vp->v_iflag & VI_OWEINACT) == 0) { - oweinact = 0; - } else { - oweinact = 1; - vp->v_iflag &= ~VI_OWEINACT; - VNODE_REFCOUNT_FENCE_REL(); + VNASSERT(vp->v_holdcnt > 0, vp, + ("%s: active vnode not held", __func__)); + if (!interlock) + VI_UNLOCK(vp); + return; } + vhold(vp); v_incr_devcount(vp); refcount_acquire(&vp->v_usecount); - if (oweinact && VOP_ISLOCKED(vp) == LK_EXCLUSIVE && - (flags & LK_NOWAIT) == 0) - vinactive(vp); - VI_UNLOCK(vp); - return (0); + if (!interlock) + VI_UNLOCK(vp); + return; } -/* - * Increase the reference (use) and hold count of a vnode. - * This will also remove the vnode from the free list if it is presently free. - */ void vref(struct vnode *vp) { + int old; - ASSERT_VI_UNLOCKED(vp, __func__); CTR2(KTR_VFS, "%s: vp %p", __func__, vp); + if (__predict_false(vp->v_type == VCHR)) { + vref_vchr(vp, false); + return; + } + if (refcount_acquire_if_not_zero(&vp->v_usecount)) { VNODE_REFCOUNT_FENCE_ACQ(); VNASSERT(vp->v_holdcnt > 0, vp, ("%s: active vnode not held", __func__)); - VNASSERT((vp->v_iflag & VI_OWEINACT) == 0, vp, - ("%s: vnode with usecount and VI_OWEINACT set", __func__)); return; } - VI_LOCK(vp); - vrefl(vp); - VI_UNLOCK(vp); + vhold(vp); + /* + * See the comment in vget_finish. + */ + old = atomic_fetchadd_int(&vp->v_usecount, 1); + VNASSERT(old >= 0, vp, ("%s: wrong use count %d", __func__, old)); + if (old != 0) { +#ifdef INVARIANTS + old = atomic_fetchadd_int(&vp->v_holdcnt, -1); + VNASSERT(old > 1, vp, ("%s: wrong hold count %d", __func__, old)); +#else + refcount_release(&vp->v_holdcnt); +#endif + } } void @@ -2982,21 +3033,11 @@ vrefl(struct vnode *vp) ASSERT_VI_LOCKED(vp, __func__); CTR2(KTR_VFS, "%s: vp %p", __func__, vp); - if (refcount_acquire_if_not_zero(&vp->v_usecount)) { - VNODE_REFCOUNT_FENCE_ACQ(); - VNASSERT(vp->v_holdcnt > 0, vp, - ("%s: active vnode not held", __func__)); - VNASSERT((vp->v_iflag & VI_OWEINACT) == 0, vp, - ("%s: vnode with usecount and VI_OWEINACT set", __func__)); + if (__predict_false(vp->v_type == VCHR)) { + vref_vchr(vp, true); return; } - vholdl(vp); - if ((vp->v_iflag & VI_OWEINACT) != 0) { - vp->v_iflag &= ~VI_OWEINACT; - VNODE_REFCOUNT_FENCE_REL(); - } - v_incr_devcount(vp); - refcount_acquire(&vp->v_usecount); + vref(vp); } void @@ -3052,8 +3093,8 @@ vdefer_inactive(struct vnode *vp) { ASSERT_VI_LOCKED(vp, __func__); - VNASSERT(vp->v_iflag & VI_OWEINACT, vp, - ("%s: vnode without VI_OWEINACT", __func__)); + VNASSERT(vp->v_holdcnt > 0, vp, + ("%s: vnode without hold count", __func__)); if (VN_IS_DOOMED(vp)) { vdropl(vp); return; @@ -3063,6 +3104,11 @@ vdefer_inactive(struct vnode *vp) vdropl(vp); return; } + if (vp->v_usecount > 0) { + vp->v_iflag &= ~VI_OWEINACT; + vdropl(vp); + return; + } vlazy(vp); vp->v_iflag |= VI_DEFINACT; VI_UNLOCK(vp); @@ -3070,11 +3116,10 @@ vdefer_inactive(struct vnode *vp) } static void -vdefer_inactive_cond(struct vnode *vp) +vdefer_inactive_unlocked(struct vnode *vp) { VI_LOCK(vp); - VNASSERT(vp->v_holdcnt > 0, vp, ("vnode without hold count")); if ((vp->v_iflag & VI_OWEINACT) == 0) { vdropl(vp); return; @@ -3088,6 +3133,11 @@ enum vputx_op { VPUTX_VRELE, VPUTX_VPUT, VPUTX_VUNREF }; * Decrement the use and hold counts for a vnode. * * See an explanation near vget() as to why atomic operation is safe. + * + * XXX Some filesystems pass in an exclusively locked vnode and strongly depend + * on the lock being held all the way until VOP_INACTIVE. This in particular + * happens with UFS which adds half-constructed vnodes to the hash, where they + * can be found by other code. */ static void vputx(struct vnode *vp, enum vputx_op func) @@ -3097,6 +3147,8 @@ vputx(struct vnode *vp, enum vputx_op func) KASSERT(vp != NULL, ("vputx: null vp")); if (func == VPUTX_VUNREF) ASSERT_VOP_LOCKED(vp, "vunref"); + else if (func == VPUTX_VPUT) + ASSERT_VOP_LOCKED(vp, "vput"); ASSERT_VI_UNLOCKED(vp, __func__); VNASSERT(vp->v_holdcnt > 0 && vp->v_usecount > 0, vp, ("%s: wrong ref counts", __func__)); @@ -3112,22 +3164,19 @@ vputx(struct vnode *vp, enum vputx_op func) * count which provides liveness of the vnode, in which case we * have to vdrop. */ - if (!refcount_release(&vp->v_usecount)) + if (!refcount_release(&vp->v_usecount)) { + if (func == VPUTX_VPUT) + VOP_UNLOCK(vp); return; + } VI_LOCK(vp); v_decr_devcount(vp); /* * By the time we got here someone else might have transitioned * the count back to > 0. */ - if (vp->v_usecount > 0) { - vdropl(vp); - return; - } - if (vp->v_iflag & VI_DOINGINACT) { - vdropl(vp); - return; - } + if (vp->v_usecount > 0 || vp->v_iflag & VI_DOINGINACT) + goto out; /* * Check if the fs wants to perform inactive processing. Note we @@ -3137,10 +3186,8 @@ vputx(struct vnode *vp, enum vputx_op func) * here but to drop our hold count. */ if (__predict_false(VN_IS_DOOMED(vp)) || - VOP_NEED_INACTIVE(vp) == 0) { - vdropl(vp); - return; - } + VOP_NEED_INACTIVE(vp) == 0) + goto out; /* * We must call VOP_INACTIVE with the node locked. Mark @@ -3153,8 +3200,12 @@ vputx(struct vnode *vp, enum vputx_op func) VI_LOCK(vp); break; case VPUTX_VPUT: - error = VOP_LOCK(vp, LK_EXCLUSIVE | LK_INTERLOCK | LK_NOWAIT); - VI_LOCK(vp); + error = 0; + if (VOP_ISLOCKED(vp) != LK_EXCLUSIVE) { + error = VOP_LOCK(vp, LK_UPGRADE | LK_INTERLOCK | + LK_NOWAIT); + VI_LOCK(vp); + } break; case VPUTX_VUNREF: error = 0; @@ -3164,19 +3215,19 @@ vputx(struct vnode *vp, enum vputx_op func) } break; } - VNASSERT(vp->v_usecount == 0 || (vp->v_iflag & VI_OWEINACT) == 0, vp, - ("vnode with usecount and VI_OWEINACT set")); if (error == 0) { - if (vp->v_iflag & VI_OWEINACT) - vinactive(vp); + vinactive(vp); if (func != VPUTX_VUNREF) VOP_UNLOCK(vp); vdropl(vp); - } else if (vp->v_iflag & VI_OWEINACT) { - vdefer_inactive(vp); } else { - vdropl(vp); + vdefer_inactive(vp); } + return; +out: + if (func == VPUTX_VPUT) + VOP_UNLOCK(vp); + vdropl(vp); } /* @@ -3194,21 +3245,11 @@ vrele(struct vnode *vp) * Release an already locked vnode. This give the same effects as * unlock+vrele(), but takes less time and avoids releasing and * re-aquiring the lock (as vrele() acquires the lock internally.) - * - * It is an invariant that all VOP_* calls operate on a held vnode. - * We may be only having an implicit hold stemming from our usecount, - * which we are about to release. If we unlock the vnode afterwards we - * open a time window where someone else dropped the last usecount and - * proceeded to free the vnode before our unlock finished. For this - * reason we unlock the vnode early. This is a little bit wasteful as - * it may be the vnode is exclusively locked and inactive processing is - * needed, in which case we are adding work. */ void vput(struct vnode *vp) { - VOP_UNLOCK(vp); vputx(vp, VPUTX_VPUT); } @@ -3441,11 +3482,9 @@ vdropl(struct vnode *vp) /* * Call VOP_INACTIVE on the vnode and manage the DOINGINACT and OWEINACT * flags. DOINGINACT prevents us from recursing in calls to vinactive. - * OWEINACT tracks whether a vnode missed a call to inactive due to a - * failed lock upgrade. */ -void -vinactive(struct vnode *vp) +static void +vinactivef(struct vnode *vp) { struct vm_object *obj; @@ -3480,6 +3519,25 @@ vinactive(struct vnode *vp) vp->v_iflag &= ~VI_DOINGINACT; } +void +vinactive(struct vnode *vp) +{ + + ASSERT_VOP_ELOCKED(vp, "vinactive"); + ASSERT_VI_LOCKED(vp, "vinactive"); + CTR2(KTR_VFS, "%s: vp %p", __func__, vp); + + if ((vp->v_iflag & VI_OWEINACT) == 0) + return; + if (vp->v_iflag & VI_DOINGINACT) + return; + if (vp->v_usecount > 0) { + vp->v_iflag &= ~VI_OWEINACT; + return; + } + vinactivef(vp); +} + /* * Remove any vnodes in the vnode table belonging to mount point mp. * @@ -3778,8 +3836,7 @@ vgonel(struct vnode *vp) VOP_CLOSE(vp, FNONBLOCK, NOCRED, td); if (oweinact || active) { VI_LOCK(vp); - if ((vp->v_iflag & VI_DOINGINACT) == 0) - vinactive(vp); + vinactivef(vp); VI_UNLOCK(vp); } if (vp->v_type == VSOCK) @@ -4529,13 +4586,12 @@ vfs_deferred_inactive(struct vnode *vp, int lkflags) } if (vn_lock(vp, lkflags) == 0) { VI_LOCK(vp); - if ((vp->v_iflag & (VI_OWEINACT | VI_DOINGINACT)) == VI_OWEINACT) - vinactive(vp); + vinactive(vp); VOP_UNLOCK(vp); vdropl(vp); return; } - vdefer_inactive_cond(vp); + vdefer_inactive_unlocked(vp); } static int @@ -4635,7 +4691,7 @@ vfs_periodic_msync_inactive(struct mount *mp, int flags) vdrop(vp); } else { if (seen_defer) - vdefer_inactive_cond(vp); + vdefer_inactive_unlocked(vp); } } } diff --git a/sys/mips/nlm/dev/net/xlpge.c b/sys/mips/nlm/dev/net/xlpge.c index ac0c4d6e843dc..e1beb9ad79aaf 100644 --- a/sys/mips/nlm/dev/net/xlpge.c +++ b/sys/mips/nlm/dev/net/xlpge.c @@ -1052,7 +1052,8 @@ nlm_xlpge_ifinit(struct nlm_xlpge_softc *sc) } ifp->if_softc = sc; if_initname(ifp, device_get_name(dev), device_get_unit(dev)); - ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; + ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST | + IFF_NEEDSEPOCH; sc->if_flags = ifp->if_flags; /*ifp->if_capabilities = IFCAP_TXCSUM | IFCAP_VLAN_HWTAGGING;*/ ifp->if_capabilities = 0; diff --git a/sys/modules/cpufreq/Makefile b/sys/modules/cpufreq/Makefile index e9fae049ebed9..4198d7d66a75c 100644 --- a/sys/modules/cpufreq/Makefile +++ b/sys/modules/cpufreq/Makefile @@ -11,7 +11,7 @@ SRCS+= bus_if.h cpufreq_if.h device_if.h pci_if.h .PATH: ${SRCTOP}/sys/x86/cpufreq SRCS+= acpi_if.h opt_acpi.h -SRCS+= est.c hwpstate.c p4tcc.c powernow.c +SRCS+= est.c hwpstate_amd.c p4tcc.c powernow.c hwpstate_intel.c .endif .if ${MACHINE} == "i386" diff --git a/sys/modules/usb/template/Makefile b/sys/modules/usb/template/Makefile index ee44fb129f2f5..e6179d69e087b 100644 --- a/sys/modules/usb/template/Makefile +++ b/sys/modules/usb/template/Makefile @@ -1,7 +1,7 @@ # # $FreeBSD$ # -# Copyright (c) 2008 Hans Petter Selasky. All rights reserved. +# Copyright (c) 2008-2020 Hans Petter Selasky. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -45,4 +45,9 @@ SRCS= opt_bus.h opt_usb.h device_if.h bus_if.h usb_if.h vnode_if.h usbdevs.h \ usb_template_multi.c \ usb_template_cdceem.c +# +# NOTE: +# Keep source list above in sync with stand/usb/usbcore.mk +# + .include <bsd.kmod.mk> diff --git a/sys/modules/vmware/vmxnet3/Makefile b/sys/modules/vmware/vmxnet3/Makefile index 331c4dd4860a1..073c9fd077d0a 100644 --- a/sys/modules/vmware/vmxnet3/Makefile +++ b/sys/modules/vmware/vmxnet3/Makefile @@ -28,6 +28,6 @@ KMOD= if_vmx SRCS= if_vmx.c SRCS+= bus_if.h device_if.h pci_if.h ifdi_if.h -SRCS+= opt_inet.h opt_inet6.h +SRCS+= opt_inet.h opt_inet6.h opt_rss.h .include <bsd.kmod.mk> diff --git a/sys/net/if.h b/sys/net/if.h index fbcc06863bd43..974074473e1bc 100644 --- a/sys/net/if.h +++ b/sys/net/if.h @@ -144,7 +144,7 @@ struct if_data { #define IFF_DEBUG 0x4 /* (n) turn on debugging */ #define IFF_LOOPBACK 0x8 /* (i) is a loopback net */ #define IFF_POINTOPOINT 0x10 /* (i) is a point-to-point link */ -/* 0x20 was IFF_SMART */ +#define IFF_NEEDSEPOCH 0x20 /* (i) calls if_input w/o epoch */ #define IFF_DRV_RUNNING 0x40 /* (d) resources allocated */ #define IFF_NOARP 0x80 /* (n) no address resolution protocol */ #define IFF_PROMISC 0x100 /* (n) receive all packets */ diff --git a/sys/net/if_bridge.c b/sys/net/if_bridge.c index f884c039b5296..c40928f75af16 100644 --- a/sys/net/if_bridge.c +++ b/sys/net/if_bridge.c @@ -135,6 +135,14 @@ __FBSDID("$FreeBSD$"); #include <net/route.h> +#ifdef INET6 +/* + * XXX: declare here to avoid to include many inet6 related files.. + * should be more generalized? + */ +extern void nd6_setmtu(struct ifnet *); +#endif + /* * Size of the route hash table. Must be a power of two. */ @@ -772,7 +780,7 @@ bridge_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) } args; struct ifdrv *ifd = (struct ifdrv *) data; const struct bridge_control *bc; - int error = 0; + int error = 0, oldmtu; switch (cmd) { @@ -818,12 +826,24 @@ bridge_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) break; } + oldmtu = ifp->if_mtu; BRIDGE_LOCK(sc); error = (*bc->bc_func)(sc, &args); BRIDGE_UNLOCK(sc); if (error) break; + /* + * Bridge MTU may change during addition of the first port. + * If it did, do network layer specific procedure. + */ + if (ifp->if_mtu != oldmtu) { +#ifdef INET6 + nd6_setmtu(ifp); +#endif + rt_updatemtu(ifp); + } + if (bc->bc_flags & BC_F_COPYOUT) error = copyout(&args, ifd->ifd_data, ifd->ifd_len); diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c index 7a750558890ab..7d918216b300e 100644 --- a/sys/net/if_ethersubr.c +++ b/sys/net/if_ethersubr.c @@ -809,7 +809,8 @@ ether_input(struct ifnet *ifp, struct mbuf *m) * them up. This allows the drivers to amortize the receive lock. */ CURVNET_SET_QUIET(ifp->if_vnet); - NET_EPOCH_ENTER(et); + if (__predict_false(ifp->if_flags & IFF_NEEDSEPOCH)) + NET_EPOCH_ENTER(et); while (m) { mn = m->m_nextpkt; m->m_nextpkt = NULL; @@ -824,7 +825,8 @@ ether_input(struct ifnet *ifp, struct mbuf *m) netisr_dispatch(NETISR_ETHER, m); m = mn; } - NET_EPOCH_EXIT(et); + if (__predict_false(ifp->if_flags & IFF_NEEDSEPOCH)) + NET_EPOCH_EXIT(et); CURVNET_RESTORE(); } diff --git a/sys/net/if_lagg.c b/sys/net/if_lagg.c index 174fd4479d804..d38f772f68953 100644 --- a/sys/net/if_lagg.c +++ b/sys/net/if_lagg.c @@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$"); #include <net/if_types.h> #include <net/if_var.h> #include <net/bpf.h> +#include <net/route.h> #include <net/vnet.h> #if defined(INET) || defined(INET6) @@ -74,6 +75,14 @@ __FBSDID("$FreeBSD$"); #include <net/if_lagg.h> #include <net/ieee8023ad_lacp.h> +#ifdef INET6 +/* + * XXX: declare here to avoid to include many inet6 related files.. + * should be more generalized? + */ +extern void nd6_setmtu(struct ifnet *); +#endif + #define LAGG_RLOCK() struct epoch_tracker lagg_et; epoch_enter_preempt(net_epoch_preempt, &lagg_et) #define LAGG_RUNLOCK() epoch_exit_preempt(net_epoch_preempt, &lagg_et) #define LAGG_RLOCK_ASSERT() NET_EPOCH_ASSERT() @@ -1178,7 +1187,7 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) struct ifnet *tpif; struct thread *td = curthread; char *buf, *outbuf; - int count, buflen, len, error = 0; + int count, buflen, len, error = 0, oldmtu; bzero(&rpbuf, sizeof(rpbuf)); @@ -1453,10 +1462,23 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) tpif->if_xname); } #endif + oldmtu = ifp->if_mtu; LAGG_XLOCK(sc); error = lagg_port_create(sc, tpif); LAGG_XUNLOCK(sc); if_rele(tpif); + + /* + * LAGG MTU may change during addition of the first port. + * If it did, do network layer specific procedure. + */ + if (ifp->if_mtu != oldmtu) { +#ifdef INET6 + nd6_setmtu(ifp); +#endif + rt_updatemtu(ifp); + } + VLAN_CAPABILITIES(ifp); break; case SIOCSLAGGDELPORT: diff --git a/sys/net/if_tuntap.c b/sys/net/if_tuntap.c index f8b582f23b5b9..ab22d8402c30b 100644 --- a/sys/net/if_tuntap.c +++ b/sys/net/if_tuntap.c @@ -1778,6 +1778,7 @@ static int tunwrite_l2(struct tuntap_softc *tp, struct mbuf *m, struct virtio_net_hdr_mrg_rxbuf *vhdr) { + struct epoch_tracker et; struct ether_header *eh; struct ifnet *ifp; @@ -1808,7 +1809,9 @@ tunwrite_l2(struct tuntap_softc *tp, struct mbuf *m, /* Pass packet up to parent. */ CURVNET_SET(ifp->if_vnet); + NET_EPOCH_ENTER(et); (*ifp->if_input)(ifp, m); + NET_EPOCH_EXIT(et); CURVNET_RESTORE(); /* ibytes are counted in parent */ if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1); diff --git a/sys/net/if_vlan.c b/sys/net/if_vlan.c index 88844b0e848bb..a9ab3f8501853 100644 --- a/sys/net/if_vlan.c +++ b/sys/net/if_vlan.c @@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$"); #include "opt_inet.h" +#include "opt_inet6.h" #include "opt_kern_tls.h" #include "opt_vlan.h" #include "opt_ratelimit.h" @@ -75,6 +76,7 @@ __FBSDID("$FreeBSD$"); #include <net/if_dl.h> #include <net/if_types.h> #include <net/if_vlan_var.h> +#include <net/route.h> #include <net/vnet.h> #ifdef INET @@ -82,6 +84,14 @@ __FBSDID("$FreeBSD$"); #include <netinet/if_ether.h> #endif +#ifdef INET6 +/* + * XXX: declare here to avoid to include many inet6 related files.. + * should be more generalized? + */ +extern void nd6_setmtu(struct ifnet *); +#endif + #define VLAN_DEF_HWIDTH 4 #define VLAN_IFFLAGS (IFF_BROADCAST | IFF_MULTICAST) @@ -1807,7 +1817,7 @@ vlan_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) struct ifvlan *ifv; struct ifvlantrunk *trunk; struct vlanreq vlr; - int error = 0; + int error = 0, oldmtu; ifr = (struct ifreq *)data; ifa = (struct ifaddr *) data; @@ -1901,8 +1911,20 @@ vlan_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) error = ENOENT; break; } + oldmtu = ifp->if_mtu; error = vlan_config(ifv, p, vlr.vlr_tag); if_rele(p); + + /* + * VLAN MTU may change during addition of the vlandev. + * If it did, do network layer specific procedure. + */ + if (ifp->if_mtu != oldmtu) { +#ifdef INET6 + nd6_setmtu(ifp); +#endif + rt_updatemtu(ifp); + } break; case SIOCGETVLAN: diff --git a/sys/net/iflib.c b/sys/net/iflib.c index 907e5884af093..26c5b0974048b 100644 --- a/sys/net/iflib.c +++ b/sys/net/iflib.c @@ -2759,6 +2759,8 @@ iflib_rxeof(iflib_rxq_t rxq, qidx_t budget) */ struct mbuf *m, *mh, *mt, *mf; + NET_EPOCH_ASSERT(); + lro_possible = v4_forwarding = v6_forwarding = false; ifp = ctx->ifc_ifp; mh = mt = NULL; @@ -3779,6 +3781,7 @@ _task_fn_tx(void *context) static void _task_fn_rx(void *context) { + struct epoch_tracker et; iflib_rxq_t rxq = context; if_ctx_t ctx = rxq->ifr_ctx; bool more; @@ -3802,6 +3805,7 @@ _task_fn_rx(void *context) budget = ctx->ifc_sysctl_rx_budget; if (budget == 0) budget = 16; /* XXX */ + NET_EPOCH_ENTER(et); if (more == false || (more = iflib_rxeof(rxq, budget)) == false) { if (ctx->ifc_flags & IFC_LEGACY) IFDI_INTR_ENABLE(ctx); @@ -3809,6 +3813,7 @@ _task_fn_rx(void *context) IFDI_RX_QUEUE_INTR_ENABLE(ctx, rxq->ifr_id); DBG_COUNTER_INC(rx_intr_enables); } + NET_EPOCH_EXIT(et); if (__predict_false(!(if_getdrvflags(ctx->ifc_ifp) & IFF_DRV_RUNNING))) return; if (more) @@ -6811,6 +6816,7 @@ iflib_debugnet_transmit(if_t ifp, struct mbuf *m) static int iflib_debugnet_poll(if_t ifp, int count) { + struct epoch_tracker et; if_ctx_t ctx; if_softc_ctx_t scctx; iflib_txq_t txq; @@ -6826,8 +6832,10 @@ iflib_debugnet_poll(if_t ifp, int count) txq = &ctx->ifc_txqs[0]; (void)iflib_completed_tx_reclaim(txq, RECLAIM_THRESH(ctx)); + NET_EPOCH_ENTER(et); for (i = 0; i < scctx->isc_nrxqsets; i++) (void)iflib_rxeof(&ctx->ifc_rxqs[i], 16 /* XXX */); + NET_EPOCH_EXIT(et); return (0); } #endif /* DEBUGNET */ diff --git a/sys/net/netisr.c b/sys/net/netisr.c index ca269815d2fec..f6ffb5b39bbc8 100644 --- a/sys/net/netisr.c +++ b/sys/net/netisr.c @@ -861,7 +861,6 @@ static u_int netisr_process_workstream_proto(struct netisr_workstream *nwsp, u_int proto) { struct netisr_work local_npw, *npwp; - struct epoch_tracker et; u_int handled; struct mbuf *m; @@ -891,7 +890,6 @@ netisr_process_workstream_proto(struct netisr_workstream *nwsp, u_int proto) npwp->nw_len = 0; nwsp->nws_pendingbits &= ~(1 << proto); NWS_UNLOCK(nwsp); - NET_EPOCH_ENTER(et); while ((m = local_npw.nw_head) != NULL) { local_npw.nw_head = m->m_nextpkt; m->m_nextpkt = NULL; @@ -904,7 +902,6 @@ netisr_process_workstream_proto(struct netisr_workstream *nwsp, u_int proto) netisr_proto[proto].np_handler(m); CURVNET_RESTORE(); } - NET_EPOCH_EXIT(et); KASSERT(local_npw.nw_len == 0, ("%s(%u): len %u", __func__, proto, local_npw.nw_len)); if (netisr_proto[proto].np_drainedcpu) @@ -1248,7 +1245,7 @@ netisr_start_swi(u_int cpuid, struct pcpu *pc) nwsp->nws_cpu = cpuid; snprintf(swiname, sizeof(swiname), "netisr %u", cpuid); error = swi_add(&nwsp->nws_intr_event, swiname, swi_net, nwsp, - SWI_NET, INTR_MPSAFE, &nwsp->nws_swi_cookie); + SWI_NET, INTR_TYPE_NET | INTR_MPSAFE, &nwsp->nws_swi_cookie); if (error) panic("%s: swi_add %d", __func__, error); pc->pc_netisr = nwsp->nws_intr_event; diff --git a/sys/net/pfil.c b/sys/net/pfil.c index 589713060928b..4968bb8cc4ded 100644 --- a/sys/net/pfil.c +++ b/sys/net/pfil.c @@ -69,10 +69,6 @@ MTX_SYSINIT(pfil_mtxinit, &pfil_lock, "pfil(9) lock", MTX_DEF); #define PFIL_UNLOCK() mtx_unlock(&pfil_lock) #define PFIL_LOCK_ASSERT() mtx_assert(&pfil_lock, MA_OWNED) -#define PFIL_EPOCH net_epoch_preempt -#define PFIL_EPOCH_ENTER(et) epoch_enter_preempt(net_epoch_preempt, &(et)) -#define PFIL_EPOCH_EXIT(et) epoch_exit_preempt(net_epoch_preempt, &(et)) - struct pfil_hook { pfil_func_t hook_func; void *hook_ruleset; @@ -168,12 +164,13 @@ int pfil_run_hooks(struct pfil_head *head, pfil_packet_t p, struct ifnet *ifp, int flags, struct inpcb *inp) { - struct epoch_tracker et; pfil_chain_t *pch; struct pfil_link *link; pfil_return_t rv; bool realloc = false; + NET_EPOCH_ASSERT(); + if (PFIL_DIR(flags) == PFIL_IN) pch = &head->head_in; else if (__predict_true(PFIL_DIR(flags) == PFIL_OUT)) @@ -182,7 +179,6 @@ pfil_run_hooks(struct pfil_head *head, pfil_packet_t p, struct ifnet *ifp, panic("%s: bogus flags %d", __func__, flags); rv = PFIL_PASS; - PFIL_EPOCH_ENTER(et); CK_STAILQ_FOREACH(link, pch, link_chain) { if ((flags & PFIL_MEMPTR) && !(link->link_flags & PFIL_MEMPTR)) rv = pfil_fake_mbuf(link->link_func, &p, ifp, flags, @@ -197,7 +193,6 @@ pfil_run_hooks(struct pfil_head *head, pfil_packet_t p, struct ifnet *ifp, realloc = true; } } - PFIL_EPOCH_EXIT(et); if (realloc && rv == PFIL_PASS) rv = PFIL_REALLOCED; return (rv); @@ -313,9 +308,9 @@ pfil_unlink(struct pfil_link_args *pa, pfil_head_t head, pfil_hook_t hook) PFIL_UNLOCK(); if (in != NULL) - epoch_call(PFIL_EPOCH, pfil_link_free, &in->link_epoch_ctx); + NET_EPOCH_CALL(pfil_link_free, &in->link_epoch_ctx); if (out != NULL) - epoch_call(PFIL_EPOCH, pfil_link_free, &out->link_epoch_ctx); + NET_EPOCH_CALL(pfil_link_free, &out->link_epoch_ctx); if (in == NULL && out == NULL) return (ENOENT); @@ -443,15 +438,13 @@ retry: if (in != NULL) { head->head_nhooksin--; hook->hook_links--; - epoch_call(PFIL_EPOCH, pfil_link_free, - &in->link_epoch_ctx); + NET_EPOCH_CALL(pfil_link_free, &in->link_epoch_ctx); } out = pfil_link_remove(&head->head_out, hook); if (out != NULL) { head->head_nhooksout--; hook->hook_links--; - epoch_call(PFIL_EPOCH, pfil_link_free, - &out->link_epoch_ctx); + NET_EPOCH_CALL(pfil_link_free, &out->link_epoch_ctx); } if (in != NULL || out != NULL) /* What if some stupid admin put same filter twice? */ diff --git a/sys/net/route.c b/sys/net/route.c index 434f514764d41..9ea93e74ca036 100644 --- a/sys/net/route.c +++ b/sys/net/route.c @@ -187,10 +187,11 @@ rt_tables_get_rnh_ptr(int table, int fam) { struct rib_head **rnh; - KASSERT(table >= 0 && table < rt_numfibs, ("%s: table out of bounds.", - __func__)); - KASSERT(fam >= 0 && fam < (AF_MAX+1), ("%s: fam out of bounds.", - __func__)); + KASSERT(table >= 0 && table < rt_numfibs, + ("%s: table out of bounds (0 <= %d < %d)", __func__, table, + rt_numfibs)); + KASSERT(fam >= 0 && fam < (AF_MAX + 1), + ("%s: fam out of bounds (0 <= %d < %d)", __func__, fam, AF_MAX+1)); /* rnh is [fib=0][af=0]. */ rnh = (struct rib_head **)V_rt_tables; @@ -364,6 +365,8 @@ rt_table_init(int offset, int family, u_int fibnum) rh->rib_vnet = curvnet; #endif + tmproutes_init(rh); + /* Init locks */ RIB_LOCK_INIT(rh); @@ -394,6 +397,8 @@ void rt_table_destroy(struct rib_head *rh) { + tmproutes_destroy(rh); + rn_walktree(&rh->rmhead.head, rt_freeentry, &rh->rmhead.head); /* Assume table is already empty */ @@ -584,132 +589,78 @@ done: RT_UNLOCK(rt); } - /* - * Force a routing table entry to the specified - * destination to go through the given gateway. - * Normally called as a result of a routing redirect - * message from the network layer. + * Adds a temporal redirect entry to the routing table. + * @fibnum: fib number + * @dst: destination to install redirect to + * @gateway: gateway to go via + * @author: sockaddr of originating router, can be NULL + * @ifp: interface to use for the redirected route + * @flags: set of flags to add. Allowed: RTF_GATEWAY + * @lifetime_sec: time in seconds to expire this redirect. + * + * Retuns 0 on success, errno otherwise. */ -void -rtredirect_fib(struct sockaddr *dst, - struct sockaddr *gateway, - struct sockaddr *netmask, - int flags, - struct sockaddr *src, - u_int fibnum) +int +rib_add_redirect(u_int fibnum, struct sockaddr *dst, struct sockaddr *gateway, + struct sockaddr *author, struct ifnet *ifp, int flags, int lifetime_sec) { struct rtentry *rt; - int error = 0; + int error; struct rt_addrinfo info; + struct rt_metrics rti_rmx; struct ifaddr *ifa; - struct rib_head *rnh; NET_EPOCH_ASSERT(); - ifa = NULL; - rnh = rt_tables_get_rnh(fibnum, dst->sa_family); - if (rnh == NULL) { - error = EAFNOSUPPORT; - goto out; - } - /* verify the gateway is directly reachable */ - if ((ifa = ifa_ifwithnet(gateway, 0, fibnum)) == NULL) { - error = ENETUNREACH; - goto out; - } - rt = rtalloc1_fib(dst, 0, 0UL, fibnum); /* NB: rt is locked */ - /* - * If the redirect isn't from our current router for this dst, - * it's either old or wrong. If it redirects us to ourselves, - * we have a routing loop, perhaps as a result of an interface - * going down recently. - */ - if (!(flags & RTF_DONE) && rt) { - if (!sa_equal(src, rt->rt_gateway)) { - error = EINVAL; - goto done; - } - if (rt->rt_ifa != ifa && ifa->ifa_addr->sa_family != AF_LINK) { - error = EINVAL; - goto done; - } - } - if ((flags & RTF_GATEWAY) && ifa_ifwithaddr_check(gateway)) { - error = EHOSTUNREACH; - goto done; + if (rt_tables_get_rnh(fibnum, dst->sa_family) == NULL) + return (EAFNOSUPPORT); + + /* Verify the allowed flag mask. */ + KASSERT(((flags & ~(RTF_GATEWAY)) == 0), + ("invalid redirect flags: %x", flags)); + + /* Get the best ifa for the given interface and gateway. */ + if ((ifa = ifaof_ifpforaddr(gateway, ifp)) == NULL) + return (ENETUNREACH); + ifa_ref(ifa); + + bzero(&info, sizeof(info)); + info.rti_info[RTAX_DST] = dst; + info.rti_info[RTAX_GATEWAY] = gateway; + info.rti_ifa = ifa; + info.rti_ifp = ifp; + info.rti_flags = flags | RTF_DYNAMIC; + + /* Setup route metrics to define expire time. */ + bzero(&rti_rmx, sizeof(rti_rmx)); + /* Set expire time as absolute. */ + rti_rmx.rmx_expire = lifetime_sec + time_second; + info.rti_mflags |= RTV_EXPIRE; + info.rti_rmx = &rti_rmx; + + error = rtrequest1_fib(RTM_ADD, &info, &rt, fibnum); + ifa_free(ifa); + + if (error != 0) { + /* TODO: add per-fib redirect stats. */ + return (error); } - /* - * Create a new entry if we just got back a wildcard entry - * or the lookup failed. This is necessary for hosts - * which use routing redirects generated by smart gateways - * to dynamically build the routing tables. - */ - if (rt == NULL || (rt_mask(rt) && rt_mask(rt)->sa_len < 2)) - goto create; - /* - * Don't listen to the redirect if it's - * for a route to an interface. - */ - if (rt->rt_flags & RTF_GATEWAY) { - if (((rt->rt_flags & RTF_HOST) == 0) && (flags & RTF_HOST)) { - /* - * Changing from route to net => route to host. - * Create new route, rather than smashing route to net. - */ - create: - if (rt != NULL) - RTFREE_LOCKED(rt); - - flags |= RTF_DYNAMIC; - bzero((caddr_t)&info, sizeof(info)); - info.rti_info[RTAX_DST] = dst; - info.rti_info[RTAX_GATEWAY] = gateway; - info.rti_info[RTAX_NETMASK] = netmask; - ifa_ref(ifa); - info.rti_ifa = ifa; - info.rti_flags = flags; - error = rtrequest1_fib(RTM_ADD, &info, &rt, fibnum); - if (rt != NULL) { - RT_LOCK(rt); - flags = rt->rt_flags; - } - if (error == 0) - RTSTAT_INC(rts_dynamic); - } else { - /* - * Smash the current notion of the gateway to - * this destination. Should check about netmask!!! - */ - if ((flags & RTF_GATEWAY) == 0) - rt->rt_flags &= ~RTF_GATEWAY; - rt->rt_flags |= RTF_MODIFIED; - flags |= RTF_MODIFIED; - RTSTAT_INC(rts_newgateway); - /* - * add the key and gateway (in one malloc'd chunk). - */ - RT_UNLOCK(rt); - RIB_WLOCK(rnh); - RT_LOCK(rt); - rt_setgate(rt, rt_key(rt), gateway); - RIB_WUNLOCK(rnh); - } - } else - error = EHOSTUNREACH; -done: - if (rt) - RTFREE_LOCKED(rt); - out: - if (error) - RTSTAT_INC(rts_badredirect); - bzero((caddr_t)&info, sizeof(info)); + RT_LOCK(rt); + flags = rt->rt_flags; + RTFREE_LOCKED(rt); + + RTSTAT_INC(rts_dynamic); + + /* Send notification of a route addition to userland. */ + bzero(&info, sizeof(info)); info.rti_info[RTAX_DST] = dst; info.rti_info[RTAX_GATEWAY] = gateway; - info.rti_info[RTAX_NETMASK] = netmask; - info.rti_info[RTAX_AUTHOR] = src; + info.rti_info[RTAX_AUTHOR] = author; rt_missmsg_fib(RTM_REDIRECT, &info, flags, error, fibnum); + + return (0); } /* @@ -1059,62 +1010,82 @@ rt_checkdelroute(struct radix_node *rn, void *arg) } /* - * Iterates over all existing fibs in system. - * Deletes each element for which @filter_f function returned - * non-zero value. - * If @af is not AF_UNSPEC, iterates over fibs in particular - * address family. + * Iterates over a routing table specified by @fibnum and @family and + * deletes elements marked by @filter_f. + * @fibnum: rtable id + * @family: AF_ address family + * @filter_f: function returning non-zero value for items to delete + * @arg: data to pass to the @filter_f function + * @report: true if rtsock notification is needed. */ void -rt_foreach_fib_walk_del(int af, rt_filter_f_t *filter_f, void *arg) +rib_walk_del(u_int fibnum, int family, rt_filter_f_t *filter_f, void *arg, bool report) { struct rib_head *rnh; struct rt_delinfo di; struct rtentry *rt; - uint32_t fibnum; - int i, start, end; + + rnh = rt_tables_get_rnh(fibnum, family); + if (rnh == NULL) + return; bzero(&di, sizeof(di)); di.info.rti_filter = filter_f; di.info.rti_filterdata = arg; + di.rnh = rnh; + + RIB_WLOCK(rnh); + rnh->rnh_walktree(&rnh->head, rt_checkdelroute, &di); + RIB_WUNLOCK(rnh); + + if (di.head == NULL) + return; + + /* We might have something to reclaim. */ + while (di.head != NULL) { + rt = di.head; + di.head = rt->rt_chain; + rt->rt_chain = NULL; + + /* TODO std rt -> rt_addrinfo export */ + di.info.rti_info[RTAX_DST] = rt_key(rt); + di.info.rti_info[RTAX_NETMASK] = rt_mask(rt); + + rt_notifydelete(rt, &di.info); + + if (report) + rt_routemsg(RTM_DELETE, rt, rt->rt_ifp, 0, fibnum); + RTFREE_LOCKED(rt); + } +} + +/* + * Iterates over all existing fibs in system and deletes each element + * for which @filter_f function returns non-zero value. + * If @family is not AF_UNSPEC, iterates over fibs in particular + * address family. + */ +void +rt_foreach_fib_walk_del(int family, rt_filter_f_t *filter_f, void *arg) +{ + u_int fibnum; + int i, start, end; for (fibnum = 0; fibnum < rt_numfibs; fibnum++) { /* Do we want some specific family? */ - if (af != AF_UNSPEC) { - start = af; - end = af; + if (family != AF_UNSPEC) { + start = family; + end = family; } else { start = 1; end = AF_MAX; } for (i = start; i <= end; i++) { - rnh = rt_tables_get_rnh(fibnum, i); - if (rnh == NULL) - continue; - di.rnh = rnh; - - RIB_WLOCK(rnh); - rnh->rnh_walktree(&rnh->head, rt_checkdelroute, &di); - RIB_WUNLOCK(rnh); - - if (di.head == NULL) + if (rt_tables_get_rnh(fibnum, i) == NULL) continue; - /* We might have something to reclaim */ - while (di.head != NULL) { - rt = di.head; - di.head = rt->rt_chain; - rt->rt_chain = NULL; - - /* TODO std rt -> rt_addrinfo export */ - di.info.rti_info[RTAX_DST] = rt_key(rt); - di.info.rti_info[RTAX_NETMASK] = rt_mask(rt); - - rt_notifydelete(rt, &di.info); - RTFREE_LOCKED(rt); - } - + rib_walk_del(fibnum, i, filter_f, arg, 0); } } } @@ -1700,6 +1671,9 @@ rtrequest1_fib(int req, struct rt_addrinfo *info, struct rtentry **ret_nrt, /* XXX mtu manipulation will be done in rnh_addaddr -- itojun */ rn = rnh->rnh_addaddr(ndst, netmask, &rnh->head, rt->rt_nodes); + if (rn != NULL && rt->rt_expire > 0) + tmproutes_update(rnh, rt); + rt_old = NULL; if (rn == NULL && (info->rti_flags & RTF_PINNED) != 0) { diff --git a/sys/net/route.h b/sys/net/route.h index 592b98a273a3c..b5646246320cb 100644 --- a/sys/net/route.h +++ b/sys/net/route.h @@ -478,6 +478,8 @@ void rt_updatemtu(struct ifnet *); typedef int rt_walktree_f_t(struct rtentry *, void *); typedef void rt_setwarg_t(struct rib_head *, uint32_t, int, void *); +void rib_walk_del(u_int fibnum, int family, rt_filter_f_t *filter_f, + void *arg, bool report); void rt_foreach_fib_walk(int af, rt_setwarg_t *, rt_walktree_f_t *, void *); void rt_foreach_fib_walk_del(int af, rt_filter_f_t *filter_f, void *arg); void rt_flushifroutes_af(struct ifnet *, int); @@ -495,14 +497,15 @@ int rtinit(struct ifaddr *, int, int); void rtalloc_ign_fib(struct route *ro, u_long ignflags, u_int fibnum); struct rtentry *rtalloc1_fib(struct sockaddr *, int, u_long, u_int); int rtioctl_fib(u_long, caddr_t, u_int); -void rtredirect_fib(struct sockaddr *, struct sockaddr *, - struct sockaddr *, int, struct sockaddr *, u_int); int rtrequest_fib(int, struct sockaddr *, struct sockaddr *, struct sockaddr *, int, struct rtentry **, u_int); int rtrequest1_fib(int, struct rt_addrinfo *, struct rtentry **, u_int); int rib_lookup_info(uint32_t, const struct sockaddr *, uint32_t, uint32_t, struct rt_addrinfo *); void rib_free_info(struct rt_addrinfo *info); +int rib_add_redirect(u_int fibnum, struct sockaddr *dst, + struct sockaddr *gateway, struct sockaddr *author, struct ifnet *ifp, + int flags, int expire_sec); #endif diff --git a/sys/net/route_temporal.c b/sys/net/route_temporal.c new file mode 100644 index 0000000000000..d94a788cb0f8e --- /dev/null +++ b/sys/net/route_temporal.c @@ -0,0 +1,161 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2020 Alexander V. Chernikov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * This file contains code responsible for expiring temporal routes + * (typically, redirect-originated) from the route tables. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/socket.h> +#include <sys/kernel.h> +#include <sys/lock.h> +#include <sys/rmlock.h> +#include <sys/callout.h> + +#include <net/if.h> +#include <net/route.h> +#include <net/route_var.h> +#include <net/vnet.h> + +/* + * Callback returning 1 for the expired routes. + * Updates time of the next nearest route expiration as a side effect. + */ +static int +expire_route(const struct rtentry *rt, void *arg) +{ + time_t *next_callout; + + if (rt->rt_expire == 0) + return (0); + + if (rt->rt_expire <= time_uptime) + return (1); + + next_callout = (time_t *)arg; + + /* + * Update next_callout to determine the next ts to + * run the callback at. + */ + if (*next_callout == 0 || *next_callout > rt->rt_expire) + *next_callout = rt->rt_expire; + + return (0); +} + +/* + * Per-rnh callout function traversing the tree and deleting + * expired routes. Calculates next callout run by looking at + * the rt_expire time for the remaining temporal routes. + */ +static void +expire_callout(void *arg) +{ + struct rib_head *rnh; + time_t next_expire; + int seconds; + + rnh = (struct rib_head *)arg; + + CURVNET_SET(rnh->rib_vnet); + next_expire = 0; + + rib_walk_del(rnh->rib_fibnum, rnh->rib_family, expire_route, + (void *)&next_expire, 1); + + RIB_WLOCK(rnh); + if (next_expire > 0) { + seconds = (next_expire - time_uptime); + if (seconds < 0) + seconds = 0; + callout_reset_sbt(&rnh->expire_callout, SBT_1S * seconds, + SBT_1MS * 500, expire_callout, rnh, 0); + rnh->next_expire = next_expire; + } else { + /* + * Before resetting next_expire, check that tmproutes_update() + * has not kicked in and scheduled another invocation. + */ + if (callout_pending(&rnh->expire_callout) == 0) + rnh->next_expire = 0; + } + RIB_WUNLOCK(rnh); + CURVNET_RESTORE(); +} + +/* + * Function responsible for updating the time of the next calllout + * w.r.t. new temporal routes insertion. + * + * Called by the routing code upon adding new temporal route + * to the tree. RIB_WLOCK must be held. + */ +void +tmproutes_update(struct rib_head *rnh, struct rtentry *rt) +{ + int seconds; + + RIB_WLOCK_ASSERT(rnh); + + if (rnh->next_expire == 0 || rnh->next_expire > rt->rt_expire) { + /* + * Callback is not scheduled, is executing, + * or is scheduled for a later time than we need. + * + * Schedule the one for the current @rt expiration time. + */ + seconds = (rt->rt_expire - time_uptime); + if (seconds < 0) + seconds = 0; + callout_reset_sbt(&rnh->expire_callout, SBT_1S * seconds, + SBT_1MS * 500, expire_callout, rnh, 0); + + rnh->next_expire = rt->rt_expire; + } +} + +void +tmproutes_init(struct rib_head *rh) +{ + + callout_init(&rh->expire_callout, 1); +} + + +void +tmproutes_destroy(struct rib_head *rh) +{ + + callout_drain(&rh->expire_callout); +} + diff --git a/sys/net/route_var.h b/sys/net/route_var.h index 069e060418942..4bc037313e599 100644 --- a/sys/net/route_var.h +++ b/sys/net/route_var.h @@ -49,6 +49,8 @@ struct rib_head { struct vnet *rib_vnet; /* vnet pointer */ int rib_family; /* AF of the rtable */ u_int rib_fibnum; /* fib number */ + struct callout expire_callout; /* Callout for expiring dynamic routes */ + time_t next_expire; /* Next expire run ts */ }; #define RIB_RLOCK_TRACKER struct rm_priotracker _rib_tracker @@ -61,6 +63,30 @@ struct rib_head { #define RIB_LOCK_ASSERT(rh) rm_assert(&(rh)->rib_lock, RA_LOCKED) #define RIB_WLOCK_ASSERT(rh) rm_assert(&(rh)->rib_lock, RA_WLOCKED) +/* Macro for verifying fields in af-specific 'struct route' structures */ +#define CHK_STRUCT_FIELD_GENERIC(_s1, _f1, _s2, _f2) \ +_Static_assert(sizeof(((_s1 *)0)->_f1) == sizeof(((_s2 *)0)->_f2), \ + "Fields " #_f1 " and " #_f2 " size differs"); \ +_Static_assert(__offsetof(_s1, _f1) == __offsetof(_s2, _f2), \ + "Fields " #_f1 " and " #_f2 " offset differs"); + +#define _CHK_ROUTE_FIELD(_route_new, _field) \ + CHK_STRUCT_FIELD_GENERIC(struct route, _field, _route_new, _field) + +#define CHK_STRUCT_ROUTE_FIELDS(_route_new) \ + _CHK_ROUTE_FIELD(_route_new, ro_rt) \ + _CHK_ROUTE_FIELD(_route_new, ro_lle) \ + _CHK_ROUTE_FIELD(_route_new, ro_prepend)\ + _CHK_ROUTE_FIELD(_route_new, ro_plen) \ + _CHK_ROUTE_FIELD(_route_new, ro_flags) \ + _CHK_ROUTE_FIELD(_route_new, ro_mtu) \ + _CHK_ROUTE_FIELD(_route_new, spare) + +#define CHK_STRUCT_ROUTE_COMPAT(_ro_new, _dst_new) \ +CHK_STRUCT_ROUTE_FIELDS(_ro_new); \ +_Static_assert(__offsetof(struct route, ro_dst) == __offsetof(_ro_new, _dst_new),\ + "ro_dst and " #_dst_new " are at different offset") + struct rib_head *rt_tables_get_rnh(int fib, int family); /* rte<>nhop translation */ @@ -79,5 +105,8 @@ fib_rte_to_nh_flags(int rt_flags) return (res); } +void tmproutes_update(struct rib_head *rnh, struct rtentry *rt); +void tmproutes_init(struct rib_head *rh); +void tmproutes_destroy(struct rib_head *rh); #endif diff --git a/sys/netgraph/ng_nat.c b/sys/netgraph/ng_nat.c index 7111881b50e60..f0784f43ddb8e 100644 --- a/sys/netgraph/ng_nat.c +++ b/sys/netgraph/ng_nat.c @@ -795,7 +795,6 @@ ng_nat_rcvdata(hook_p hook, item_p item ) eh = mtod(m, struct ether_header *); switch (ntohs(eh->ether_type)) { case ETHERTYPE_IP: - case ETHERTYPE_IPV6: ipofs = sizeof(struct ether_header); break; default: diff --git a/sys/netinet/cc/cc_dctcp.c b/sys/netinet/cc/cc_dctcp.c index 4e143eb45551d..72aa8f73c0d3a 100644 --- a/sys/netinet/cc/cc_dctcp.c +++ b/sys/netinet/cc/cc_dctcp.c @@ -284,7 +284,6 @@ dctcp_cong_signal(struct cc_var *ccv, uint32_t type) dctcp_data->ece_curr = 1; break; case CC_RTO: - CCV(ccv, t_flags2) |= TF2_ECN_SND_CWR; dctcp_update_alpha(ccv); dctcp_data->save_sndnxt += CCV(ccv, t_maxseg); dctcp_data->num_cong_events++; diff --git a/sys/netinet/in_pcb.c b/sys/netinet/in_pcb.c index 0835822501a4f..f519ee0144a26 100644 --- a/sys/netinet/in_pcb.c +++ b/sys/netinet/in_pcb.c @@ -512,14 +512,6 @@ in_pcballoc(struct socket *so, struct inpcbinfo *pcbinfo) struct inpcb *inp; int error; -#ifdef INVARIANTS - if (pcbinfo == &V_tcbinfo) { - NET_EPOCH_ASSERT(); - } else { - INP_INFO_WLOCK_ASSERT(pcbinfo); - } -#endif - error = 0; inp = uma_zalloc(pcbinfo->ipi_zone, M_NOWAIT); if (inp == NULL) @@ -1036,9 +1028,9 @@ in_pcbladdr(struct inpcb *inp, struct in_addr *faddr, struct in_addr *laddr, struct sockaddr *sa; struct sockaddr_in *sin; struct route sro; - struct epoch_tracker et; int error; + NET_EPOCH_ASSERT(); KASSERT(laddr != NULL, ("%s: laddr NULL", __func__)); /* * Bypass source address selection and use the primary jail IP @@ -1072,7 +1064,6 @@ in_pcbladdr(struct inpcb *inp, struct in_addr *faddr, struct in_addr *laddr, * network and try to find a corresponding interface to take * the source address from. */ - NET_EPOCH_ENTER(et); if (sro.ro_rt == NULL || sro.ro_rt->rt_ifp == NULL) { struct in_ifaddr *ia; struct ifnet *ifp; @@ -1236,7 +1227,6 @@ in_pcbladdr(struct inpcb *inp, struct in_addr *faddr, struct in_addr *laddr, } done: - NET_EPOCH_EXIT(et); if (sro.ro_rt != NULL) RTFREE(sro.ro_rt); return (error); @@ -1274,6 +1264,7 @@ in_pcbconnect_setup(struct inpcb *inp, struct sockaddr *nam, * Because a global state change doesn't actually occur here, a read * lock is sufficient. */ + NET_EPOCH_ASSERT(); INP_LOCK_ASSERT(inp); INP_HASH_LOCK_ASSERT(inp->inp_pcbinfo); @@ -1647,13 +1638,6 @@ in_pcbfree(struct inpcb *inp) return; } -#ifdef INVARIANTS - if (pcbinfo == &V_tcbinfo) { - INP_INFO_LOCK_ASSERT(pcbinfo); - } else { - INP_INFO_WLOCK_ASSERT(pcbinfo); - } -#endif INP_WLOCK_ASSERT(inp); INP_LIST_WLOCK(pcbinfo); in_pcbremlists(inp); @@ -2649,14 +2633,6 @@ in_pcbremlists(struct inpcb *inp) { struct inpcbinfo *pcbinfo = inp->inp_pcbinfo; -#ifdef INVARIANTS - if (pcbinfo == &V_tcbinfo) { - NET_EPOCH_ASSERT(); - } else { - INP_INFO_WLOCK_ASSERT(pcbinfo); - } -#endif - INP_WLOCK_ASSERT(inp); INP_LIST_WLOCK_ASSERT(pcbinfo); diff --git a/sys/netinet/in_rmx.c b/sys/netinet/in_rmx.c index fcb12a0fc44b3..0486752bb206c 100644 --- a/sys/netinet/in_rmx.c +++ b/sys/netinet/in_rmx.c @@ -197,14 +197,3 @@ in_rtalloc_ign(struct route *ro, u_long ignflags, u_int fibnum) rtalloc_ign_fib(ro, ignflags, fibnum); } -void -in_rtredirect(struct sockaddr *dst, - struct sockaddr *gateway, - struct sockaddr *netmask, - int flags, - struct sockaddr *src, - u_int fibnum) -{ - rtredirect_fib(dst, gateway, netmask, flags, src, fibnum); -} - diff --git a/sys/netinet/in_var.h b/sys/netinet/in_var.h index 96879db0abb78..02a9df7346bf9 100644 --- a/sys/netinet/in_var.h +++ b/sys/netinet/in_var.h @@ -474,8 +474,6 @@ void in_domifdetach(struct ifnet *, void *); /* XXX */ void in_rtalloc_ign(struct route *ro, u_long ignflags, u_int fibnum); -void in_rtredirect(struct sockaddr *, struct sockaddr *, - struct sockaddr *, int, struct sockaddr *, u_int); #endif /* _KERNEL */ /* INET6 stuff */ diff --git a/sys/netinet/ip_carp.c b/sys/netinet/ip_carp.c index d1b55ceb22771..1b257fb2a3726 100644 --- a/sys/netinet/ip_carp.c +++ b/sys/netinet/ip_carp.c @@ -904,6 +904,7 @@ carp_send_ad_locked(struct carp_softc *sc) { struct carp_header ch; struct timeval tv; + struct epoch_tracker et; struct ifaddr *ifa; struct carp_header *ch_ptr; struct mbuf *m; @@ -972,8 +973,10 @@ carp_send_ad_locked(struct carp_softc *sc) CARPSTATS_INC(carps_opackets); + NET_EPOCH_ENTER(et); carp_send_ad_error(sc, ip_output(m, NULL, NULL, IP_RAWOUTPUT, &sc->sc_carpdev->if_carp->cif_imo, NULL)); + NET_EPOCH_EXIT(et); } #endif /* INET */ #ifdef INET6 @@ -1031,8 +1034,10 @@ carp_send_ad_locked(struct carp_softc *sc) CARPSTATS_INC(carps_opackets6); + NET_EPOCH_ENTER(et); carp_send_ad_error(sc, ip6_output(m, NULL, NULL, 0, &sc->sc_carpdev->if_carp->cif_im6o, NULL, NULL)); + NET_EPOCH_EXIT(et); } #endif /* INET6 */ diff --git a/sys/netinet/ip_divert.c b/sys/netinet/ip_divert.c index 90513ae97aaa2..6ffb8e3e94d89 100644 --- a/sys/netinet/ip_divert.c +++ b/sys/netinet/ip_divert.c @@ -122,6 +122,10 @@ static u_long div_recvspace = DIVRCVQ; /* XXX sysctl ? */ static eventhandler_tag ip_divert_event_tag; +static int div_output_inbound(int fmaily, struct socket *so, struct mbuf *m, + struct sockaddr_in *sin); +static int div_output_outbound(int family, struct socket *so, struct mbuf *m); + /* * Initialize divert connection block queue. */ @@ -307,10 +311,11 @@ static int div_output(struct socket *so, struct mbuf *m, struct sockaddr_in *sin, struct mbuf *control) { - struct ip *const ip = mtod(m, struct ip *); + struct epoch_tracker et; + const struct ip *ip; struct m_tag *mtag; struct ipfw_rule_ref *dt; - int error = 0; + int error, family; /* * An mbuf may hasn't come from userland, but we pretend @@ -329,8 +334,8 @@ div_output(struct socket *so, struct mbuf *m, struct sockaddr_in *sin, mtag = m_tag_alloc(MTAG_IPFW_RULE, 0, sizeof(struct ipfw_rule_ref), M_NOWAIT | M_ZERO); if (mtag == NULL) { - error = ENOBUFS; - goto cantsend; + m_freem(m); + return (ENOBUFS); } m_tag_prepend(m, mtag); } @@ -348,6 +353,7 @@ div_output(struct socket *so, struct mbuf *m, struct sockaddr_in *sin, dt->chain_id = 0; dt->rulenum = sin->sin_port+1; /* host format ? */ dt->rule_id = 0; + /* XXX: broken for IPv6 */ /* * Find receive interface with the given name, stuffed * (if it exists) in the sin_zero[] field. @@ -360,155 +366,192 @@ div_output(struct socket *so, struct mbuf *m, struct sockaddr_in *sin, m->m_pkthdr.rcvif = ifunit(sin->sin_zero); } + ip = mtod(m, struct ip *); + switch (ip->ip_v) { + case IPVERSION: + family = AF_INET; + break; + case IPV6_VERSION >> 4: + family = AF_INET6; + break; + default: + m_freem(m); + return (EAFNOSUPPORT); + } + /* Reinject packet into the system as incoming or outgoing */ + NET_EPOCH_ENTER(et); if (!sin || sin->sin_addr.s_addr == 0) { - struct mbuf *options = NULL; - struct inpcb *inp; - dt->info |= IPFW_IS_DIVERT | IPFW_INFO_OUT; - inp = sotoinpcb(so); - INP_RLOCK(inp); - switch (ip->ip_v) { - case IPVERSION: - /* - * Don't allow both user specified and setsockopt - * options, and don't allow packet length sizes that - * will crash. - */ - if ((((ip->ip_hl << 2) != sizeof(struct ip)) && - inp->inp_options != NULL) || - ((u_short)ntohs(ip->ip_len) > m->m_pkthdr.len)) { - error = EINVAL; - INP_RUNLOCK(inp); - goto cantsend; - } - break; + error = div_output_outbound(family, so, m); + } else { + dt->info |= IPFW_IS_DIVERT | IPFW_INFO_IN; + error = div_output_inbound(family, so, m, sin); + } + NET_EPOCH_EXIT(et); + + if (error != 0) + m_freem(m); + + return (error); +} + +/* + * Sends mbuf @m to the wire via ip[6]_output(). + * + * Returns 0 on success, @m is consumed. + * On failure, returns error code. It is caller responsibility to free @m. + */ +static int +div_output_outbound(int family, struct socket *so, struct mbuf *m) +{ + struct ip *const ip = mtod(m, struct ip *); + struct mbuf *options; + struct inpcb *inp; + int error; + + inp = sotoinpcb(so); + INP_RLOCK(inp); + switch (family) { + case AF_INET: + /* + * Don't allow both user specified and setsockopt + * options, and don't allow packet length sizes that + * will crash. + */ + if ((((ip->ip_hl << 2) != sizeof(struct ip)) && + inp->inp_options != NULL) || + ((u_short)ntohs(ip->ip_len) > m->m_pkthdr.len)) { + INP_RUNLOCK(inp); + return (EINVAL); + } + break; #ifdef INET6 - case IPV6_VERSION >> 4: - { - struct ip6_hdr *const ip6 = mtod(m, struct ip6_hdr *); + case AF_INET6: + { + struct ip6_hdr *const ip6 = mtod(m, struct ip6_hdr *); - /* Don't allow packet length sizes that will crash */ - if (((u_short)ntohs(ip6->ip6_plen) > m->m_pkthdr.len)) { - error = EINVAL; - INP_RUNLOCK(inp); - goto cantsend; - } - break; - } -#endif - default: - error = EINVAL; + /* Don't allow packet length sizes that will crash */ + if (((u_short)ntohs(ip6->ip6_plen) > m->m_pkthdr.len)) { INP_RUNLOCK(inp); - goto cantsend; + return (EINVAL); } + break; + } +#endif + } - /* Send packet to output processing */ - KMOD_IPSTAT_INC(ips_rawout); /* XXX */ + /* Send packet to output processing */ + KMOD_IPSTAT_INC(ips_rawout); /* XXX */ #ifdef MAC - mac_inpcb_create_mbuf(inp, m); + mac_inpcb_create_mbuf(inp, m); #endif - /* - * Get ready to inject the packet into ip_output(). - * Just in case socket options were specified on the - * divert socket, we duplicate them. This is done - * to avoid having to hold the PCB locks over the call - * to ip_output(), as doing this results in a number of - * lock ordering complexities. - * - * Note that we set the multicast options argument for - * ip_output() to NULL since it should be invariant that - * they are not present. - */ - KASSERT(inp->inp_moptions == NULL, - ("multicast options set on a divert socket")); - /* - * XXXCSJP: It is unclear to me whether or not it makes - * sense for divert sockets to have options. However, - * for now we will duplicate them with the INP locks - * held so we can use them in ip_output() without - * requring a reference to the pcb. - */ - if (inp->inp_options != NULL) { - options = m_dup(inp->inp_options, M_NOWAIT); - if (options == NULL) { - INP_RUNLOCK(inp); - error = ENOBUFS; - goto cantsend; - } + /* + * Get ready to inject the packet into ip_output(). + * Just in case socket options were specified on the + * divert socket, we duplicate them. This is done + * to avoid having to hold the PCB locks over the call + * to ip_output(), as doing this results in a number of + * lock ordering complexities. + * + * Note that we set the multicast options argument for + * ip_output() to NULL since it should be invariant that + * they are not present. + */ + KASSERT(inp->inp_moptions == NULL, + ("multicast options set on a divert socket")); + /* + * XXXCSJP: It is unclear to me whether or not it makes + * sense for divert sockets to have options. However, + * for now we will duplicate them with the INP locks + * held so we can use them in ip_output() without + * requring a reference to the pcb. + */ + options = NULL; + if (inp->inp_options != NULL) { + options = m_dup(inp->inp_options, M_NOWAIT); + if (options == NULL) { + INP_RUNLOCK(inp); + return (ENOBUFS); } - INP_RUNLOCK(inp); + } + INP_RUNLOCK(inp); - switch (ip->ip_v) { - case IPVERSION: - error = ip_output(m, options, NULL, - ((so->so_options & SO_DONTROUTE) ? IP_ROUTETOIF : 0) - | IP_ALLOWBROADCAST | IP_RAWOUTPUT, NULL, NULL); - break; + error = 0; + switch (family) { + case AF_INET: + error = ip_output(m, options, NULL, + ((so->so_options & SO_DONTROUTE) ? IP_ROUTETOIF : 0) + | IP_ALLOWBROADCAST | IP_RAWOUTPUT, NULL, NULL); + break; #ifdef INET6 - case IPV6_VERSION >> 4: - error = ip6_output(m, NULL, NULL, 0, NULL, NULL, NULL); - break; + case AF_INET6: + error = ip6_output(m, NULL, NULL, 0, NULL, NULL, NULL); + break; #endif - } - if (options != NULL) - m_freem(options); - } else { - dt->info |= IPFW_IS_DIVERT | IPFW_INFO_IN; - if (m->m_pkthdr.rcvif == NULL) { - /* - * No luck with the name, check by IP address. - * Clear the port and the ifname to make sure - * there are no distractions for ifa_ifwithaddr. - */ - struct epoch_tracker et; - struct ifaddr *ifa; + } + if (options != NULL) + m_freem(options); - bzero(sin->sin_zero, sizeof(sin->sin_zero)); - sin->sin_port = 0; - NET_EPOCH_ENTER(et); - ifa = ifa_ifwithaddr((struct sockaddr *) sin); - if (ifa == NULL) { - error = EADDRNOTAVAIL; - NET_EPOCH_EXIT(et); - goto cantsend; - } - m->m_pkthdr.rcvif = ifa->ifa_ifp; - NET_EPOCH_EXIT(et); - } + return (error); +} + +/* + * Schedules mbuf @m for local processing via IPv4/IPv6 netisr queue. + * + * Returns 0 on success, @m is consumed. + * Returns error code on failure. It is caller responsibility to free @m. + */ +static int +div_output_inbound(int family, struct socket *so, struct mbuf *m, + struct sockaddr_in *sin) +{ + const struct ip *ip; + struct ifaddr *ifa; + + if (m->m_pkthdr.rcvif == NULL) { + /* + * No luck with the name, check by IP address. + * Clear the port and the ifname to make sure + * there are no distractions for ifa_ifwithaddr. + */ + + /* XXX: broken for IPv6 */ + bzero(sin->sin_zero, sizeof(sin->sin_zero)); + sin->sin_port = 0; + ifa = ifa_ifwithaddr((struct sockaddr *) sin); + if (ifa == NULL) + return (EADDRNOTAVAIL); + m->m_pkthdr.rcvif = ifa->ifa_ifp; + } #ifdef MAC - mac_socket_create_mbuf(so, m); + mac_socket_create_mbuf(so, m); #endif - /* Send packet to input processing via netisr */ - switch (ip->ip_v) { - case IPVERSION: - /* - * Restore M_BCAST flag when destination address is - * broadcast. It is expected by ip_tryforward(). - */ - if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) - m->m_flags |= M_MCAST; - else if (in_broadcast(ip->ip_dst, m->m_pkthdr.rcvif)) - m->m_flags |= M_BCAST; - netisr_queue_src(NETISR_IP, (uintptr_t)so, m); - break; + /* Send packet to input processing via netisr */ + switch (family) { + case AF_INET: + ip = mtod(m, struct ip *); + /* + * Restore M_BCAST flag when destination address is + * broadcast. It is expected by ip_tryforward(). + */ + if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) + m->m_flags |= M_MCAST; + else if (in_broadcast(ip->ip_dst, m->m_pkthdr.rcvif)) + m->m_flags |= M_BCAST; + netisr_queue_src(NETISR_IP, (uintptr_t)so, m); + break; #ifdef INET6 - case IPV6_VERSION >> 4: - netisr_queue_src(NETISR_IPV6, (uintptr_t)so, m); - break; + case AF_INET6: + netisr_queue_src(NETISR_IPV6, (uintptr_t)so, m); + break; #endif - default: - error = EINVAL; - goto cantsend; - } + default: + return (EINVAL); } - return (error); - -cantsend: - m_freem(m); - return (error); + return (0); } static int diff --git a/sys/netinet/ip_icmp.c b/sys/netinet/ip_icmp.c index 0bf9b86756f8b..356414fbdc73e 100644 --- a/sys/netinet/ip_icmp.c +++ b/sys/netinet/ip_icmp.c @@ -128,6 +128,12 @@ SYSCTL_INT(_net_inet_icmp, OID_AUTO, log_redirect, CTLFLAG_VNET | CTLFLAG_RW, &VNET_NAME(log_redirect), 0, "Log ICMP redirects to the console"); +VNET_DEFINE_STATIC(int, redirtimeout) = 60 * 10; /* 10 minutes */ +#define V_redirtimeout VNET(redirtimeout) +SYSCTL_INT(_net_inet_icmp, OID_AUTO, redirtimeout, CTLFLAG_VNET | CTLFLAG_RW, + &VNET_NAME(redirtimeout), 0, + "Delay in seconds before expiring redirect route"); + VNET_DEFINE_STATIC(char, reply_src[IFNAMSIZ]); #define V_reply_src VNET(reply_src) SYSCTL_STRING(_net_inet_icmp, OID_AUTO, reply_src, CTLFLAG_VNET | CTLFLAG_RW, @@ -170,6 +176,8 @@ int icmpprintfs = 0; static void icmp_reflect(struct mbuf *); static void icmp_send(struct mbuf *, struct mbuf *); +static int icmp_verify_redirect_gateway(struct sockaddr_in *, + struct sockaddr_in *, struct sockaddr_in *, u_int); extern struct protosw inetsw[]; @@ -689,11 +697,31 @@ reflect: } #endif icmpsrc.sin_addr = icp->icmp_ip.ip_dst; + + /* + * RFC 1122 says network (code 0,2) redirects SHOULD + * be treated identically to the host redirects. + * Given that, ignore network masks. + */ + + /* + * Variable values: + * icmpsrc: route destination + * icmpdst: route gateway + * icmpgw: message source + */ + + if (icmp_verify_redirect_gateway(&icmpgw, &icmpsrc, &icmpdst, + M_GETFIB(m)) != 0) { + /* TODO: increment bad redirects here */ + break; + } + for ( fibnum = 0; fibnum < rt_numfibs; fibnum++) { - in_rtredirect((struct sockaddr *)&icmpsrc, - (struct sockaddr *)&icmpdst, - (struct sockaddr *)0, RTF_GATEWAY | RTF_HOST, - (struct sockaddr *)&icmpgw, fibnum); + rib_add_redirect(fibnum, (struct sockaddr *)&icmpsrc, + (struct sockaddr *)&icmpdst, + (struct sockaddr *)&icmpgw, m->m_pkthdr.rcvif, + RTF_GATEWAY, V_redirtimeout); } pfctlinput(PRC_REDIRECT_HOST, (struct sockaddr *)&icmpsrc); break; @@ -905,6 +933,68 @@ done: } /* + * Verifies if redirect message is valid, according to RFC 1122 + * + * @src: sockaddr with address of redirect originator + * @dst: sockaddr with destination in question + * @gateway: new proposed gateway + * + * Returns 0 on success. + */ +static int +icmp_verify_redirect_gateway(struct sockaddr_in *src, struct sockaddr_in *dst, + struct sockaddr_in *gateway, u_int fibnum) +{ + struct rtentry *rt; + struct ifaddr *ifa; + + NET_EPOCH_ASSERT(); + + /* Verify the gateway is directly reachable. */ + if ((ifa = ifa_ifwithnet((struct sockaddr *)gateway, 0, fibnum))==NULL) + return (ENETUNREACH); + + /* TODO: fib-aware. */ + if (ifa_ifwithaddr_check((struct sockaddr *)gateway)) + return (EHOSTUNREACH); + + rt = rtalloc1_fib((struct sockaddr *)dst, 0, 0UL, fibnum); /* NB: rt is locked */ + if (rt == NULL) + return (EINVAL); + + /* + * If the redirect isn't from our current router for this dst, + * it's either old or wrong. If it redirects us to ourselves, + * we have a routing loop, perhaps as a result of an interface + * going down recently. + */ + if (!sa_equal((struct sockaddr *)src, rt->rt_gateway)) { + RTFREE_LOCKED(rt); + return (EINVAL); + } + if (rt->rt_ifa != ifa && ifa->ifa_addr->sa_family != AF_LINK) { + RTFREE_LOCKED(rt); + return (EINVAL); + } + + /* If host route already exists, ignore redirect. */ + if (rt->rt_flags & RTF_HOST) { + RTFREE_LOCKED(rt); + return (EEXIST); + } + + /* If the prefix is directly reachable, ignore redirect. */ + if (!(rt->rt_flags & RTF_GATEWAY)) { + RTFREE_LOCKED(rt); + return (EEXIST); + } + + RTFREE_LOCKED(rt); + return (0); +} + + +/* * Send an icmp packet back to the ip level, * after supplying a checksum. */ diff --git a/sys/netinet/ip_output.c b/sys/netinet/ip_output.c index b020e60ea349b..9d41a07808d2d 100644 --- a/sys/netinet/ip_output.c +++ b/sys/netinet/ip_output.c @@ -304,7 +304,6 @@ ip_output(struct mbuf *m, struct mbuf *opt, struct route *ro, int flags, struct ip_moptions *imo, struct inpcb *inp) { struct rm_priotracker in_ifa_tracker; - struct epoch_tracker et; struct ip *ip; struct ifnet *ifp = NULL; /* keep compiler happy */ struct mbuf *m0; @@ -323,6 +322,7 @@ ip_output(struct mbuf *m, struct mbuf *opt, struct route *ro, int flags, #endif M_ASSERTPKTHDR(m); + NET_EPOCH_ASSERT(); if (inp != NULL) { INP_LOCK_ASSERT(inp); @@ -375,7 +375,6 @@ ip_output(struct mbuf *m, struct mbuf *opt, struct route *ro, int flags, dst->sin_addr = ip->ip_dst; } gw = dst; - NET_EPOCH_ENTER(et); again: /* * Validate route against routing table additions; @@ -837,7 +836,6 @@ sendit: IPSTAT_INC(ips_fragmented); done: - NET_EPOCH_EXIT(et); return (error); bad: m_freem(m); diff --git a/sys/netinet/libalias/alias.c b/sys/netinet/libalias/alias.c index d5dd8f2d08c97..df88b1b8bc7a8 100644 --- a/sys/netinet/libalias/alias.c +++ b/sys/netinet/libalias/alias.c @@ -1413,6 +1413,10 @@ getout: #define UNREG_ADDR_C_LOWER 0xc0a80000 #define UNREG_ADDR_C_UPPER 0xc0a8ffff +/* 100.64.0.0 -> 100.127.255.255 (RFC 6598 - Carrier Grade NAT) */ +#define UNREG_ADDR_CGN_LOWER 0x64400000 +#define UNREG_ADDR_CGN_UPPER 0x647fffff + int LibAliasOut(struct libalias *la, char *ptr, int maxpacketsize) { @@ -1464,7 +1468,8 @@ LibAliasOutLocked(struct libalias *la, char *ptr, /* valid IP packet */ } addr_save = GetDefaultAliasAddress(la); - if (la->packetAliasMode & PKT_ALIAS_UNREGISTERED_ONLY) { + if (la->packetAliasMode & PKT_ALIAS_UNREGISTERED_ONLY || + la->packetAliasMode & PKT_ALIAS_UNREGISTERED_CGN) { u_long addr; int iclass; @@ -1476,6 +1481,9 @@ LibAliasOutLocked(struct libalias *la, char *ptr, /* valid IP packet */ iclass = 2; else if (addr >= UNREG_ADDR_A_LOWER && addr <= UNREG_ADDR_A_UPPER) iclass = 1; + else if (addr >= UNREG_ADDR_CGN_LOWER && addr <= UNREG_ADDR_CGN_UPPER && + la->packetAliasMode & PKT_ALIAS_UNREGISTERED_CGN) + iclass = 4; if (iclass == 0) { SetDefaultAliasAddress(la, pip->ip_src); diff --git a/sys/netinet/libalias/alias.h b/sys/netinet/libalias/alias.h index 0b8875ec62f1e..41cd7b2c23d1f 100644 --- a/sys/netinet/libalias/alias.h +++ b/sys/netinet/libalias/alias.h @@ -228,6 +228,14 @@ struct mbuf *m_megapullup(struct mbuf *, int); */ #define PKT_ALIAS_SKIP_GLOBAL 0x200 +/* + * Like PKT_ALIAS_UNREGISTERED_ONLY, but includes the RFC 6598 + * (Carrier Grade NAT) address range as follows: + * + * 100.64.0.0 -> 100.127.255.255 + */ +#define PKT_ALIAS_UNREGISTERED_CGN 0x400 + /* Function return codes. */ #define PKT_ALIAS_ERROR -1 #define PKT_ALIAS_OK 1 diff --git a/sys/netinet/libalias/libalias.3 b/sys/netinet/libalias/libalias.3 index e496168264e55..fe85730f095db 100644 --- a/sys/netinet/libalias/libalias.3 +++ b/sys/netinet/libalias/libalias.3 @@ -212,6 +212,11 @@ This option is useful in the case that the packet aliasing host has both registered and unregistered subnets on different interfaces. The registered subnet is fully accessible to the outside world, so traffic from it does not need to be passed through the packet aliasing engine. +.It Dv PKT_ALIAS_UNREGISTERED_CGN +Like PKT_ALIAS_UNREGISTERED_ONLY, but includes the RFC 6598 (Carrier Grade +NAT) subnet as follows: +.Pp +100.64.0.0 -> 100.127.255.255 (RFC 6598 subnet) .It Dv PKT_ALIAS_RESET_ON_ADDR_CHANGE When this mode bit is set and .Fn LibAliasSetAddress diff --git a/sys/netinet/raw_ip.c b/sys/netinet/raw_ip.c index 95f1a7c04b93d..b331b9bdd53a9 100644 --- a/sys/netinet/raw_ip.c +++ b/sys/netinet/raw_ip.c @@ -445,6 +445,7 @@ rip_input(struct mbuf **mp, int *offp, int proto) int rip_output(struct mbuf *m, struct socket *so, ...) { + struct epoch_tracker et; struct ip *ip; int error; struct inpcb *inp = sotoinpcb(so); @@ -490,8 +491,10 @@ rip_output(struct mbuf *m, struct socket *so, ...) * want to see from jails. */ if (ip->ip_src.s_addr == INADDR_ANY) { - error = in_pcbladdr(inp, &ip->ip_dst, &ip->ip_src, - inp->inp_cred); + NET_EPOCH_ENTER(et); + error = in_pcbladdr(inp, &ip->ip_dst, + &ip->ip_src, inp->inp_cred); + NET_EPOCH_EXIT(et); } else { error = prison_local_ip4(inp->inp_cred, &ip->ip_src); @@ -584,8 +587,10 @@ rip_output(struct mbuf *m, struct socket *so, ...) mac_inpcb_create_mbuf(inp, m); #endif + NET_EPOCH_ENTER(et); error = ip_output(m, inp->inp_options, NULL, flags, inp->inp_moptions, inp); + NET_EPOCH_EXIT(et); INP_RUNLOCK(inp); return (error); } diff --git a/sys/netinet/sctp_os_bsd.h b/sys/netinet/sctp_os_bsd.h index 4a7097127ec83..2b2486b201718 100644 --- a/sys/netinet/sctp_os_bsd.h +++ b/sys/netinet/sctp_os_bsd.h @@ -412,6 +412,7 @@ typedef struct rtentry sctp_rtentry_t; */ #define SCTP_IP_OUTPUT(result, o_pak, ro, stcb, vrf_id) \ { \ + struct epoch_tracker et; \ int o_flgs = IP_RAWOUTPUT; \ struct sctp_tcb *local_stcb = stcb; \ if (local_stcb && \ @@ -419,19 +420,24 @@ typedef struct rtentry sctp_rtentry_t; local_stcb->sctp_ep->sctp_socket) \ o_flgs |= local_stcb->sctp_ep->sctp_socket->so_options & SO_DONTROUTE; \ m_clrprotoflags(o_pak); \ + NET_EPOCH_ENTER(et); \ result = ip_output(o_pak, NULL, ro, o_flgs, 0, NULL); \ + NET_EPOCH_EXIT(et); \ } #define SCTP_IP6_OUTPUT(result, o_pak, ro, ifp, stcb, vrf_id) \ { \ + struct epoch_tracker et; \ struct sctp_tcb *local_stcb = stcb; \ m_clrprotoflags(o_pak); \ + NET_EPOCH_ENTER(et); \ if (local_stcb && local_stcb->sctp_ep) \ result = ip6_output(o_pak, \ ((struct inpcb *)(local_stcb->sctp_ep))->in6p_outputopts, \ (ro), 0, 0, ifp, NULL); \ else \ result = ip6_output(o_pak, NULL, (ro), 0, 0, ifp, NULL); \ + NET_EPOCH_EXIT(et); \ } struct mbuf * diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index e8a281878cffc..5050210ca1b31 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -460,6 +460,8 @@ cc_cong_signal(struct tcpcb *tp, struct tcphdr *th, uint32_t type) tp->snd_ssthresh = max(2, min(tp->snd_wnd, tp->snd_cwnd) / 2 / maxseg) * maxseg; tp->snd_cwnd = maxseg; + if (tp->t_flags2 & TF2_ECN_PERMIT) + tp->t_flags2 |= TF2_ECN_SND_CWR; break; case CC_RTO_ERR: TCPSTAT_INC(tcps_sndrexmitbad); @@ -1545,8 +1547,10 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so, * TCP ECN processing. */ if (tp->t_flags2 & TF2_ECN_PERMIT) { - if (thflags & TH_CWR) + if (thflags & TH_CWR) { tp->t_flags2 &= ~TF2_ECN_SND_ECE; + tp->t_flags |= TF_ACKNOW; + } switch (iptos & IPTOS_ECN_MASK) { case IPTOS_ECN_CE: tp->t_flags2 |= TF2_ECN_SND_ECE; @@ -1977,7 +1981,7 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so, tp->t_flags |= TF_ACKNOW; if (((thflags & (TH_CWR | TH_ECE)) == TH_ECE) && - V_tcp_do_ecn) { + (V_tcp_do_ecn == 1)) { tp->t_flags2 |= TF2_ECN_PERMIT; TCPSTAT_INC(tcps_ecn_shs); } @@ -2226,7 +2230,7 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so, /* * DSACK - add SACK block for dropped range */ - if (tp->t_flags & TF_SACK_PERMIT) { + if ((todrop > 0) && (tp->t_flags & TF_SACK_PERMIT)) { tcp_update_sack_list(tp, th->th_seq, th->th_seq + todrop); /* diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c index 1fc8e9ace04fb..d308f9bf4c1e8 100644 --- a/sys/netinet/tcp_output.c +++ b/sys/netinet/tcp_output.c @@ -232,6 +232,7 @@ tcp_output(struct tcpcb *tp) const bool hw_tls = false; #endif + NET_EPOCH_ASSERT(); INP_WLOCK_ASSERT(tp->t_inpcb); #ifdef TCP_OFFLOAD @@ -1161,6 +1162,7 @@ send: * Ignore pure ack packets, retransmissions and window probes. */ if (len > 0 && SEQ_GEQ(tp->snd_nxt, tp->snd_max) && + (sack_rxmit == 0) && !((tp->t_flags & TF_FORCEDATA) && len == 1)) { #ifdef INET6 if (isipv6) diff --git a/sys/netinet/tcp_stacks/bbr.c b/sys/netinet/tcp_stacks/bbr.c index 2e6e803d42ab9..97a50e280e0c9 100644 --- a/sys/netinet/tcp_stacks/bbr.c +++ b/sys/netinet/tcp_stacks/bbr.c @@ -14462,6 +14462,8 @@ bbr_output(struct tcpcb *tp) struct timeval tv; struct tcp_bbr *bbr; + NET_EPOCH_ASSERT(); + bbr = (struct tcp_bbr *)tp->t_fb_ptr; INP_WLOCK_ASSERT(tp->t_inpcb); (void)tcp_get_usecs(&tv); diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index 17054d5d7a959..bbb3756c6bfae 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -1813,6 +1813,8 @@ rack_cong_signal(struct tcpcb *tp, struct tcphdr *th, uint32_t type) tp->snd_ssthresh = max(2, min(tp->snd_wnd, tp->snd_cwnd) / 2 / ctf_fixed_maxseg(tp)) * ctf_fixed_maxseg(tp); tp->snd_cwnd = ctf_fixed_maxseg(tp); + if (tp->t_flags2 & TF2_ECN_PERMIT) + tp->t_flags2 |= TF2_ECN_SND_CWR; break; case CC_RTO_ERR: TCPSTAT_INC(tcps_sndrexmitbad); @@ -6296,7 +6298,7 @@ rack_do_syn_sent(struct mbuf *m, struct tcphdr *th, struct socket *so, } if (((thflags & (TH_CWR | TH_ECE)) == TH_ECE) && - V_tcp_do_ecn) { + (V_tcp_do_ecn == 1)) { tp->t_flags2 |= TF2_ECN_PERMIT; TCPSTAT_INC(tcps_ecn_shs); } @@ -7701,8 +7703,10 @@ rack_do_segment_nounlock(struct mbuf *m, struct tcphdr *th, struct socket *so, * this to occur after we've validated the segment. */ if (tp->t_flags2 & TF2_ECN_PERMIT) { - if (thflags & TH_CWR) + if (thflags & TH_CWR) { tp->t_flags2 &= ~TF2_ECN_SND_ECE; + tp->t_flags |= TF_ACKNOW; + } switch (iptos & IPTOS_ECN_MASK) { case IPTOS_ECN_CE: tp->t_flags2 |= TF2_ECN_SND_ECE; @@ -8154,8 +8158,10 @@ rack_output(struct tcpcb *tp) #ifdef KERN_TLS hw_tls = (so->so_snd.sb_flags & SB_TLS_IFNET) != 0; #endif - + + NET_EPOCH_ASSERT(); INP_WLOCK_ASSERT(inp); + #ifdef TCP_OFFLOAD if (tp->t_flags & TF_TOE) return (tcp_offload_output(tp)); @@ -9473,6 +9479,7 @@ send: * retransmissions and window probes. */ if (len > 0 && SEQ_GEQ(tp->snd_nxt, tp->snd_max) && + (sack_rxmit == 0) && !((tp->t_flags & TF_FORCEDATA) && len == 1)) { #ifdef INET6 if (isipv6) @@ -10091,6 +10098,7 @@ static int rack_set_sockopt(struct socket *so, struct sockopt *sopt, struct inpcb *inp, struct tcpcb *tp, struct tcp_rack *rack) { + struct epoch_tracker et; int32_t error = 0, optval; switch (sopt->sopt_name) { @@ -10259,7 +10267,9 @@ rack_set_sockopt(struct socket *so, struct sockopt *sopt, if (tp->t_flags & TF_DELACK) { tp->t_flags &= ~TF_DELACK; tp->t_flags |= TF_ACKNOW; + NET_EPOCH_ENTER(et); rack_output(tp); + NET_EPOCH_EXIT(et); } break; case TCP_RACK_MIN_PACE: diff --git a/sys/netinet/tcp_stacks/rack_bbr_common.c b/sys/netinet/tcp_stacks/rack_bbr_common.c index 373f9620d26f2..37945a7709b10 100644 --- a/sys/netinet/tcp_stacks/rack_bbr_common.c +++ b/sys/netinet/tcp_stacks/rack_bbr_common.c @@ -548,7 +548,7 @@ ctf_drop_checks(struct tcpopt *to, struct mbuf *m, struct tcphdr *th, struct tcp /* * DSACK - add SACK block for dropped range */ - if (tp->t_flags & TF_SACK_PERMIT) { + if ((todrop > 0) && (tp->t_flags & TF_SACK_PERMIT)) { tcp_update_sack_list(tp, th->th_seq, th->th_seq + todrop); /* diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index 77161db327969..3801ebc0ec208 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -1394,6 +1394,7 @@ tcp_respond(struct tcpcb *tp, void *ipgen, struct tcphdr *th, struct mbuf *m, bool incl_opts; KASSERT(tp != NULL || m != NULL, ("tcp_respond: tp and m both NULL")); + NET_EPOCH_ASSERT(); #ifdef INET6 isipv6 = ((struct ip *)ipgen)->ip_v == (IPV6_VERSION >> 4); @@ -1870,6 +1871,7 @@ tcp_drop(struct tcpcb *tp, int errno) { struct socket *so = tp->t_inpcb->inp_socket; + NET_EPOCH_ASSERT(); INP_INFO_LOCK_ASSERT(&V_tcbinfo); INP_WLOCK_ASSERT(tp->t_inpcb); diff --git a/sys/netinet/tcp_syncache.c b/sys/netinet/tcp_syncache.c index 11d5d74b7d165..98c90c561d130 100644 --- a/sys/netinet/tcp_syncache.c +++ b/sys/netinet/tcp_syncache.c @@ -467,6 +467,7 @@ syncache_timer(void *xsch) { struct syncache_head *sch = (struct syncache_head *)xsch; struct syncache *sc, *nsc; + struct epoch_tracker et; int tick = ticks; char *s; bool paused; @@ -526,7 +527,9 @@ syncache_timer(void *xsch) free(s, M_TCPLOG); } + NET_EPOCH_ENTER(et); syncache_respond(sc, NULL, TH_SYN|TH_ACK); + NET_EPOCH_EXIT(et); TCPSTAT_INC(tcps_sc_retransmitted); syncache_timeout(sc, sch, 0); } @@ -1751,6 +1754,9 @@ syncache_respond(struct syncache *sc, const struct mbuf *m0, int flags) #ifdef INET6 struct ip6_hdr *ip6 = NULL; #endif + + NET_EPOCH_ASSERT(); + hlen = #ifdef INET6 (sc->sc_inc.inc_flags & INC_ISIPV6) ? sizeof(struct ip6_hdr) : diff --git a/sys/netinet/tcp_timer.c b/sys/netinet/tcp_timer.c index 195a5e775ad50..c3fc0c4183d0e 100644 --- a/sys/netinet/tcp_timer.c +++ b/sys/netinet/tcp_timer.c @@ -251,6 +251,7 @@ int tcp_totbackoff = 2559; /* sum of tcp_backoff[] */ void tcp_timer_delack(void *xtp) { + struct epoch_tracker et; struct tcpcb *tp = xtp; struct inpcb *inp; CURVNET_SET(tp->t_vnet); @@ -272,8 +273,10 @@ tcp_timer_delack(void *xtp) } tp->t_flags |= TF_ACKNOW; TCPSTAT_INC(tcps_delack); + NET_EPOCH_ENTER(et); (void) tp->t_fb->tfb_tcp_output(tp); INP_WUNLOCK(inp); + NET_EPOCH_EXIT(et); CURVNET_RESTORE(); } @@ -452,9 +455,11 @@ tcp_timer_keep(void *xtp) TCPSTAT_INC(tcps_keepprobe); t_template = tcpip_maketemplate(inp); if (t_template) { + NET_EPOCH_ENTER(et); tcp_respond(tp, t_template->tt_ipgen, &t_template->tt_t, (struct mbuf *)NULL, tp->rcv_nxt, tp->snd_una - 1, 0); + NET_EPOCH_EXIT(et); free(t_template, M_TEMP); } callout_reset(&tp->t_timers->tt_keep, TP_KEEPINTVL(tp), @@ -568,7 +573,9 @@ tcp_timer_persist(void *xtp) } tcp_setpersist(tp); tp->t_flags |= TF_FORCEDATA; + NET_EPOCH_ENTER(et); (void) tp->t_fb->tfb_tcp_output(tp); + NET_EPOCH_EXIT(et); tp->t_flags &= ~TF_FORCEDATA; #ifdef TCPDEBUG @@ -822,9 +829,9 @@ tcp_timer_rexmt(void * xtp) tp->t_rtttime = 0; cc_cong_signal(tp, NULL, CC_RTO); - + NET_EPOCH_ENTER(et); (void) tp->t_fb->tfb_tcp_output(tp); - + NET_EPOCH_EXIT(et); #ifdef TCPDEBUG if (tp != NULL && (tp->t_inpcb->inp_socket->so_options & SO_DEBUG)) tcp_trace(TA_USER, ostate, tp, (void *)0, (struct tcphdr *)0, diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c index 8c4f0185772e7..c27bf0acf65c2 100644 --- a/sys/netinet/tcp_usrreq.c +++ b/sys/netinet/tcp_usrreq.c @@ -121,7 +121,6 @@ __FBSDID("$FreeBSD$"); /* * TCP protocol interface to socket abstraction. */ -static int tcp_attach(struct socket *); #ifdef INET static int tcp_connect(struct tcpcb *, struct sockaddr *, struct thread *td); @@ -161,40 +160,63 @@ tcp_usr_attach(struct socket *so, int proto, struct thread *td) KASSERT(inp == NULL, ("tcp_usr_attach: inp != NULL")); TCPDEBUG1(); - error = tcp_attach(so); + if (so->so_snd.sb_hiwat == 0 || so->so_rcv.sb_hiwat == 0) { + error = soreserve(so, V_tcp_sendspace, V_tcp_recvspace); + if (error) + goto out; + } + + so->so_rcv.sb_flags |= SB_AUTOSIZE; + so->so_snd.sb_flags |= SB_AUTOSIZE; + error = in_pcballoc(so, &V_tcbinfo); if (error) goto out; - + inp = sotoinpcb(so); +#ifdef INET6 + if (inp->inp_vflag & INP_IPV6PROTO) { + inp->inp_vflag |= INP_IPV6; + if ((inp->inp_flags & IN6P_IPV6_V6ONLY) == 0) + inp->inp_vflag |= INP_IPV4; + inp->in6p_hops = -1; /* use kernel default */ + } + else +#endif + inp->inp_vflag |= INP_IPV4; + tp = tcp_newtcpcb(inp); + if (tp == NULL) { + error = ENOBUFS; + in_pcbdetach(inp); + in_pcbfree(inp); + goto out; + } + tp->t_state = TCPS_CLOSED; + INP_WUNLOCK(inp); + TCPSTATES_INC(TCPS_CLOSED); if ((so->so_options & SO_LINGER) && so->so_linger == 0) so->so_linger = TCP_LINGERTIME; - - inp = sotoinpcb(so); - tp = intotcpcb(inp); out: TCPDEBUG2(PRU_ATTACH); TCP_PROBE2(debug__user, tp, PRU_ATTACH); - return error; + return (error); } /* - * tcp_detach is called when the socket layer loses its final reference + * tcp_usr_detach is called when the socket layer loses its final reference * to the socket, be it a file descriptor reference, a reference from TCP, * etc. At this point, there is only one case in which we will keep around * inpcb state: time wait. - * - * This function can probably be re-absorbed back into tcp_usr_detach() now - * that there is a single detach path. */ static void -tcp_detach(struct socket *so, struct inpcb *inp) +tcp_usr_detach(struct socket *so) { + struct inpcb *inp; struct tcpcb *tp; - INP_INFO_LOCK_ASSERT(&V_tcbinfo); - INP_WLOCK_ASSERT(inp); - - KASSERT(so->so_pcb == inp, ("tcp_detach: so_pcb != inp")); - KASSERT(inp->inp_socket == so, ("tcp_detach: inp_socket != so")); + inp = sotoinpcb(so); + KASSERT(inp != NULL, ("%s: inp == NULL", __func__)); + INP_WLOCK(inp); + KASSERT(so->so_pcb == inp && inp->inp_socket == so, + ("%s: socket %p inp %p mismatch", __func__, so, inp)); tp = intotcpcb(inp); @@ -214,16 +236,16 @@ tcp_detach(struct socket *so, struct inpcb *inp) * Astute question indeed, from twtcp perspective there are * four cases to consider: * - * #1 tcp_detach is called at tcptw creation time by + * #1 tcp_usr_detach is called at tcptw creation time by * tcp_twstart, then do not discard the newly created tcptw * and leave inpcb present until timewait ends - * #2 tcp_detach is called at tcptw creation time by + * #2 tcp_usr_detach is called at tcptw creation time by * tcp_twstart, but connection is local and tw will be * discarded immediately - * #3 tcp_detach is called at timewait end (or reuse) by + * #3 tcp_usr_detach is called at timewait end (or reuse) by * tcp_twclose, then the tcptw has already been discarded * (or reused) and inpcb is freed here - * #4 tcp_detach is called() after timewait ends (or reuse) + * #4 tcp_usr_detach is called() after timewait ends (or reuse) * (e.g. by soclose), then tcptw has already been discarded * (or reused) and inpcb is freed here * @@ -276,34 +298,6 @@ tcp_detach(struct socket *so, struct inpcb *inp) } } -/* - * pru_detach() detaches the TCP protocol from the socket. - * If the protocol state is non-embryonic, then can't - * do this directly: have to initiate a pru_disconnect(), - * which may finish later; embryonic TCB's can just - * be discarded here. - */ -static void -tcp_usr_detach(struct socket *so) -{ - struct inpcb *inp; - int rlock = 0; - struct epoch_tracker et; - - inp = sotoinpcb(so); - KASSERT(inp != NULL, ("tcp_usr_detach: inp == NULL")); - if (!INP_INFO_WLOCKED(&V_tcbinfo)) { - NET_EPOCH_ENTER(et); - rlock = 1; - } - INP_WLOCK(inp); - KASSERT(inp->inp_socket != NULL, - ("tcp_usr_detach: inp_socket == NULL")); - tcp_detach(so, inp); - if (rlock) - NET_EPOCH_EXIT(et); -} - #ifdef INET /* * Give the socket an address. @@ -531,6 +525,7 @@ out: static int tcp_usr_connect(struct socket *so, struct sockaddr *nam, struct thread *td) { + struct epoch_tracker et; int error = 0; struct inpcb *inp; struct tcpcb *tp = NULL; @@ -562,16 +557,19 @@ tcp_usr_connect(struct socket *so, struct sockaddr *nam, struct thread *td) } tp = intotcpcb(inp); TCPDEBUG1(); + NET_EPOCH_ENTER(et); if ((error = tcp_connect(tp, nam, td)) != 0) - goto out; + goto out_in_epoch; #ifdef TCP_OFFLOAD if (registered_toedevs > 0 && (so->so_options & SO_NO_OFFLOAD) == 0 && (error = tcp_offload_connect(so, nam)) == 0) - goto out; + goto out_in_epoch; #endif tcp_timer_activate(tp, TT_KEEP, TP_KEEPINIT(tp)); error = tp->t_fb->tfb_tcp_output(tp); +out_in_epoch: + NET_EPOCH_EXIT(et); out: TCPDEBUG2(PRU_CONNECT); TCP_PROBE2(debug__user, tp, PRU_CONNECT); @@ -584,6 +582,7 @@ out: static int tcp6_usr_connect(struct socket *so, struct sockaddr *nam, struct thread *td) { + struct epoch_tracker et; int error = 0; struct inpcb *inp; struct tcpcb *tp = NULL; @@ -646,16 +645,17 @@ tcp6_usr_connect(struct socket *so, struct sockaddr *nam, struct thread *td) goto out; inp->inp_vflag |= INP_IPV4; inp->inp_vflag &= ~INP_IPV6; + NET_EPOCH_ENTER(et); if ((error = tcp_connect(tp, (struct sockaddr *)&sin, td)) != 0) - goto out; + goto out_in_epoch; #ifdef TCP_OFFLOAD if (registered_toedevs > 0 && (so->so_options & SO_NO_OFFLOAD) == 0 && (error = tcp_offload_connect(so, nam)) == 0) - goto out; + goto out_in_epoch; #endif error = tp->t_fb->tfb_tcp_output(tp); - goto out; + goto out_in_epoch; } else { if ((inp->inp_vflag & INP_IPV6) == 0) { error = EAFNOSUPPORT; @@ -677,8 +677,12 @@ tcp6_usr_connect(struct socket *so, struct sockaddr *nam, struct thread *td) goto out; #endif tcp_timer_activate(tp, TT_KEEP, TP_KEEPINIT(tp)); + NET_EPOCH_ENTER(et); error = tp->t_fb->tfb_tcp_output(tp); - +#ifdef INET +out_in_epoch: +#endif + NET_EPOCH_EXIT(et); out: /* * If the implicit bind in the connect call fails, restore @@ -882,6 +886,7 @@ out: static int tcp_usr_rcvd(struct socket *so, int flags) { + struct epoch_tracker et; struct inpcb *inp; struct tcpcb *tp = NULL; int error = 0; @@ -911,8 +916,9 @@ tcp_usr_rcvd(struct socket *so, int flags) tcp_offload_rcvd(tp); else #endif + NET_EPOCH_ENTER(et); tp->t_fb->tfb_tcp_output(tp); - + NET_EPOCH_EXIT(et); out: TCPDEBUG2(PRU_RCVD); TCP_PROBE2(debug__user, tp, PRU_RCVD); @@ -953,8 +959,7 @@ tcp_usr_send(struct socket *so, int flags, struct mbuf *m, * We require the pcbinfo "read lock" if we will close the socket * as part of this call. */ - if (flags & PRUS_EOF) - NET_EPOCH_ENTER(et); + NET_EPOCH_ENTER(et); inp = sotoinpcb(so); KASSERT(inp != NULL, ("tcp_usr_send: inp == NULL")); INP_WLOCK(inp); @@ -1145,7 +1150,6 @@ tcp_usr_send(struct socket *so, int flags, struct mbuf *m, * Close the send side of the connection after * the data is sent. */ - NET_EPOCH_ASSERT(); socantsendmore(so); tcp_usrclosed(tp); } @@ -1240,14 +1244,14 @@ out: TCP_PROBE2(debug__user, tp, (flags & PRUS_OOB) ? PRU_SENDOOB : ((flags & PRUS_EOF) ? PRU_SEND_EOF : PRU_SEND)); INP_WUNLOCK(inp); - if (flags & PRUS_EOF) - NET_EPOCH_EXIT(et); + NET_EPOCH_EXIT(et); return (error); } static int tcp_usr_ready(struct socket *so, struct mbuf *m, int count) { + struct epoch_tracker et; struct inpcb *inp; struct tcpcb *tp; int error; @@ -1264,8 +1268,11 @@ tcp_usr_ready(struct socket *so, struct mbuf *m, int count) SOCKBUF_LOCK(&so->so_snd); error = sbready(&so->so_snd, m, count); SOCKBUF_UNLOCK(&so->so_snd); - if (error == 0) + if (error == 0) { + NET_EPOCH_ENTER(et); error = tp->t_fb->tfb_tcp_output(tp); + NET_EPOCH_EXIT(et); + } INP_WUNLOCK(inp); return (error); @@ -1464,6 +1471,7 @@ tcp_connect(struct tcpcb *tp, struct sockaddr *nam, struct thread *td) u_short lport; int error; + NET_EPOCH_ASSERT(); INP_WLOCK_ASSERT(inp); INP_HASH_WLOCK(&V_tcbinfo); @@ -1921,8 +1929,13 @@ unlock_and_done: tp->t_flags |= TF_NOPUSH; else if (tp->t_flags & TF_NOPUSH) { tp->t_flags &= ~TF_NOPUSH; - if (TCPS_HAVEESTABLISHED(tp->t_state)) + if (TCPS_HAVEESTABLISHED(tp->t_state)) { + struct epoch_tracker et; + + NET_EPOCH_ENTER(et); error = tp->t_fb->tfb_tcp_output(tp); + NET_EPOCH_EXIT(et); + } } goto unlock_and_done; @@ -2389,57 +2402,6 @@ unhold: #undef INP_WLOCK_RECHECK_CLEANUP /* - * Attach TCP protocol to socket, allocating - * internet protocol control block, tcp control block, - * bufer space, and entering LISTEN state if to accept connections. - */ -static int -tcp_attach(struct socket *so) -{ - struct tcpcb *tp; - struct inpcb *inp; - struct epoch_tracker et; - int error; - - if (so->so_snd.sb_hiwat == 0 || so->so_rcv.sb_hiwat == 0) { - error = soreserve(so, V_tcp_sendspace, V_tcp_recvspace); - if (error) - return (error); - } - so->so_rcv.sb_flags |= SB_AUTOSIZE; - so->so_snd.sb_flags |= SB_AUTOSIZE; - NET_EPOCH_ENTER(et); - error = in_pcballoc(so, &V_tcbinfo); - if (error) { - NET_EPOCH_EXIT(et); - return (error); - } - inp = sotoinpcb(so); -#ifdef INET6 - if (inp->inp_vflag & INP_IPV6PROTO) { - inp->inp_vflag |= INP_IPV6; - if ((inp->inp_flags & IN6P_IPV6_V6ONLY) == 0) - inp->inp_vflag |= INP_IPV4; - inp->in6p_hops = -1; /* use kernel default */ - } - else -#endif - inp->inp_vflag |= INP_IPV4; - tp = tcp_newtcpcb(inp); - if (tp == NULL) { - in_pcbdetach(inp); - in_pcbfree(inp); - NET_EPOCH_EXIT(et); - return (ENOBUFS); - } - tp->t_state = TCPS_CLOSED; - INP_WUNLOCK(inp); - NET_EPOCH_EXIT(et); - TCPSTATES_INC(TCPS_CLOSED); - return (0); -} - -/* * Initiate (or continue) disconnect. * If embryonic state, just send reset (once). * If in ``let data drain'' option and linger null, just drop. diff --git a/sys/netinet/toecore.c b/sys/netinet/toecore.c index 656c20e0caddf..bbca6cc3ec8e2 100644 --- a/sys/netinet/toecore.c +++ b/sys/netinet/toecore.c @@ -503,6 +503,7 @@ void toe_connect_failed(struct toedev *tod, struct inpcb *inp, int err) { + NET_EPOCH_ASSERT(); INP_WLOCK_ASSERT(inp); if (!(inp->inp_flags & INP_DROPPED)) { @@ -527,7 +528,6 @@ toe_connect_failed(struct toedev *tod, struct inpcb *inp, int err) (void) tp->t_fb->tfb_tcp_output(tp); } else { - NET_EPOCH_ASSERT(); tp = tcp_drop(tp, err); if (tp == NULL) INP_WLOCK(inp); /* re-acquire */ diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c index d97cadceff04f..749fb9d2ae27b 100644 --- a/sys/netinet/udp_usrreq.c +++ b/sys/netinet/udp_usrreq.c @@ -1606,6 +1606,7 @@ udp_close(struct socket *so) static int udp_connect(struct socket *so, struct sockaddr *nam, struct thread *td) { + struct epoch_tracker et; struct inpcb *inp; struct inpcbinfo *pcbinfo; struct sockaddr_in *sin; @@ -1625,9 +1626,11 @@ udp_connect(struct socket *so, struct sockaddr *nam, struct thread *td) INP_WUNLOCK(inp); return (error); } + NET_EPOCH_ENTER(et); INP_HASH_WLOCK(pcbinfo); error = in_pcbconnect(inp, nam, td->td_ucred); INP_HASH_WUNLOCK(pcbinfo); + NET_EPOCH_EXIT(et); if (error == 0) soisconnected(so); INP_WUNLOCK(inp); diff --git a/sys/netinet6/icmp6.c b/sys/netinet6/icmp6.c index 02a63c1e119ab..353528f71eafa 100644 --- a/sys/netinet6/icmp6.c +++ b/sys/netinet6/icmp6.c @@ -2375,7 +2375,7 @@ icmp6_redirect_input(struct mbuf *m, int off) sdst.sin6_len = ssrc.sin6_len = sizeof(struct sockaddr_in6); bcopy(&reddst6, &sdst.sin6_addr, sizeof(struct in6_addr)); bcopy(&src6, &ssrc.sin6_addr, sizeof(struct in6_addr)); - rt_flags = RTF_HOST; + rt_flags = 0; if (is_router) { bzero(&sgw, sizeof(sgw)); sgw.sin6_family = AF_INET6; @@ -2387,9 +2387,9 @@ icmp6_redirect_input(struct mbuf *m, int off) } else gw = ifp->if_addr->ifa_addr; for (fibnum = 0; fibnum < rt_numfibs; fibnum++) - in6_rtredirect((struct sockaddr *)&sdst, gw, - (struct sockaddr *)NULL, rt_flags, - (struct sockaddr *)&ssrc, fibnum); + rib_add_redirect(fibnum, (struct sockaddr *)&sdst, gw, + (struct sockaddr *)&ssrc, ifp, rt_flags, + V_icmp6_redirtimeout); } /* finally update cached route in each socket via pfctlinput */ { diff --git a/sys/netinet6/in6_fib.c b/sys/netinet6/in6_fib.c index ecaa6e2b9555b..51b7467904c6c 100644 --- a/sys/netinet6/in6_fib.c +++ b/sys/netinet6/in6_fib.c @@ -75,6 +75,8 @@ static void fib6_rte_to_nh_basic(struct rtentry *rte, const struct in6_addr *dst static struct ifnet *fib6_get_ifaifp(struct rtentry *rte); #define RNTORT(p) ((struct rtentry *)(p)) +CHK_STRUCT_ROUTE_COMPAT(struct route_in6, ro_dst); + /* * Gets real interface for the @rte. * Returns rt_ifp for !IFF_LOOPBACK routers. diff --git a/sys/netinet6/in6_proto.c b/sys/netinet6/in6_proto.c index 43d08ab806994..6e79ad9626f12 100644 --- a/sys/netinet6/in6_proto.c +++ b/sys/netinet6/in6_proto.c @@ -566,7 +566,7 @@ SYSCTL_INT(_net_inet6_icmp6, ICMPV6CTL_REDIRACCEPT, rediraccept, "Accept ICMPv6 redirect messages"); SYSCTL_INT(_net_inet6_icmp6, ICMPV6CTL_REDIRTIMEOUT, redirtimeout, CTLFLAG_VNET | CTLFLAG_RW, &VNET_NAME(icmp6_redirtimeout), 0, - ""); /* XXX unused */ + "Delay in seconds before expiring redirect route"); SYSCTL_VNET_PCPUSTAT(_net_inet6_icmp6, ICMPV6CTL_STATS, stats, struct icmp6stat, icmp6stat, "ICMPv6 statistics (struct icmp6stat, netinet/icmp6.h)"); diff --git a/sys/netinet6/in6_rmx.c b/sys/netinet6/in6_rmx.c index e6e2a31c15710..d67225ac14869 100644 --- a/sys/netinet6/in6_rmx.c +++ b/sys/netinet6/in6_rmx.c @@ -186,14 +186,6 @@ in6_detachhead(void **head, int off) /* * Extended API for IPv6 FIB support. */ -void -in6_rtredirect(struct sockaddr *dst, struct sockaddr *gw, struct sockaddr *nm, - int flags, struct sockaddr *src, u_int fibnum) -{ - - rtredirect_fib(dst, gw, nm, flags, src, fibnum); -} - int in6_rtrequest(int req, struct sockaddr *dst, struct sockaddr *gw, struct sockaddr *mask, int flags, struct rtentry **ret_nrt, u_int fibnum) diff --git a/sys/netinet6/in6_var.h b/sys/netinet6/in6_var.h index ee39ffbe59112..63e1676b694d7 100644 --- a/sys/netinet6/in6_var.h +++ b/sys/netinet6/in6_var.h @@ -915,8 +915,6 @@ void in6_newaddrmsg(struct in6_ifaddr *, int); * Extended API for IPv6 FIB support. */ struct mbuf *ip6_tryforward(struct mbuf *); -void in6_rtredirect(struct sockaddr *, struct sockaddr *, struct sockaddr *, - int, struct sockaddr *, u_int); int in6_rtrequest(int, struct sockaddr *, struct sockaddr *, struct sockaddr *, int, struct rtentry **, u_int); void in6_rtalloc(struct route_in6 *, u_int); diff --git a/sys/netinet6/ip6_mroute.c b/sys/netinet6/ip6_mroute.c index 82ca908d4553e..defeba655da05 100644 --- a/sys/netinet6/ip6_mroute.c +++ b/sys/netinet6/ip6_mroute.c @@ -1372,19 +1372,6 @@ ip6_mdq(struct mbuf *m, struct ifnet *ifp, struct mf6c *rt) u_int32_t iszone, idzone, oszone, odzone; int error = 0; -/* - * Macro to send packet on mif. Since RSVP packets don't get counted on - * input, they shouldn't get counted on output, so statistics keeping is - * separate. - */ - -#define MC6_SEND(ip6, mifp, m) do { \ - if ((mifp)->m6_flags & MIFF_REGISTER) \ - register_send((ip6), (mifp), (m)); \ - else \ - phyint_send((ip6), (mifp), (m)); \ -} while (/*CONSTCOND*/ 0) - /* * Don't forward if it didn't arrive from the parent mif * for its origin. @@ -1528,7 +1515,10 @@ ip6_mdq(struct mbuf *m, struct ifnet *ifp, struct mf6c *rt) mifp->m6_pkt_out++; mifp->m6_bytes_out += plen; - MC6_SEND(ip6, mifp, m); + if (mifp->m6_flags & MIFF_REGISTER) + register_send(ip6, mifp, m); + else + phyint_send(ip6, mifp, m); } } return (0); @@ -1569,13 +1559,16 @@ phyint_send(struct ip6_hdr *ip6, struct mif6 *mifp, struct mbuf *m) */ if (m->m_pkthdr.rcvif == NULL) { struct ip6_moptions im6o; + struct epoch_tracker et; im6o.im6o_multicast_ifp = ifp; /* XXX: ip6_output will override ip6->ip6_hlim */ im6o.im6o_multicast_hlim = ip6->ip6_hlim; im6o.im6o_multicast_loop = 1; + NET_EPOCH_ENTER(et); error = ip6_output(mb_copy, NULL, NULL, IPV6_FORWARDING, &im6o, NULL, NULL); + NET_EPOCH_EXIT(et); MRT6_DLOG(DEBUG_XMIT, "mif %u err %d", (uint16_t)(mifp - mif6table), error); diff --git a/sys/netinet6/ip6_output.c b/sys/netinet6/ip6_output.c index f3f0fbc5fa703..576ff5733d04f 100644 --- a/sys/netinet6/ip6_output.c +++ b/sys/netinet6/ip6_output.c @@ -384,7 +384,6 @@ ip6_output(struct mbuf *m0, struct ip6_pktopts *opt, struct mbuf *m = m0; struct mbuf *mprev = NULL; int hlen, tlen, len; - struct epoch_tracker et; struct route_in6 ip6route; struct rtentry *rt = NULL; struct sockaddr_in6 *dst, src_sa, dst_sa; @@ -405,7 +404,7 @@ ip6_output(struct mbuf *m0, struct ip6_pktopts *opt, struct m_tag *fwd_tag = NULL; uint32_t id; - NET_EPOCH_ENTER(et); + NET_EPOCH_ASSERT(); if (inp != NULL) { INP_LOCK_ASSERT(inp); @@ -1189,7 +1188,6 @@ sendorfree: IP6STAT_INC(ip6s_fragmented); done: - NET_EPOCH_EXIT(et); if (ro == &ip6route) RO_RTFREE(ro); return (error); diff --git a/sys/netinet6/mld6.c b/sys/netinet6/mld6.c index 1698458462fba..f563bc3133b3b 100644 --- a/sys/netinet6/mld6.c +++ b/sys/netinet6/mld6.c @@ -3095,6 +3095,7 @@ mld_dispatch_packet(struct mbuf *m) uint32_t ifindex; CTR2(KTR_MLD, "%s: transmit %p", __func__, m); + NET_EPOCH_ASSERT(); /* * Set VNET image pointer from enqueued mbuf chain diff --git a/sys/netinet6/raw_ip6.c b/sys/netinet6/raw_ip6.c index 1b952cc25360b..636828eb4ef43 100644 --- a/sys/netinet6/raw_ip6.c +++ b/sys/netinet6/raw_ip6.c @@ -389,6 +389,7 @@ rip6_ctlinput(int cmd, struct sockaddr *sa, void *d) int rip6_output(struct mbuf *m, struct socket *so, ...) { + struct epoch_tracker et; struct mbuf *control; struct m_tag *mtag; struct sockaddr_in6 *dstsock; @@ -536,7 +537,9 @@ rip6_output(struct mbuf *m, struct socket *so, ...) } } + NET_EPOCH_ENTER(et); error = ip6_output(m, optp, NULL, 0, inp->in6p_moptions, &oifp, inp); + NET_EPOCH_EXIT(et); if (so->so_proto->pr_protocol == IPPROTO_ICMPV6) { if (oifp) icmp6_ifoutstat_inc(oifp, type, code); diff --git a/sys/netinet6/udp6_usrreq.c b/sys/netinet6/udp6_usrreq.c index 283b284b6ec54..03f8ffa732370 100644 --- a/sys/netinet6/udp6_usrreq.c +++ b/sys/netinet6/udp6_usrreq.c @@ -1177,6 +1177,7 @@ udp6_close(struct socket *so) static int udp6_connect(struct socket *so, struct sockaddr *nam, struct thread *td) { + struct epoch_tracker et; struct inpcb *inp; struct inpcbinfo *pcbinfo; struct sockaddr_in6 *sin6; @@ -1215,10 +1216,12 @@ udp6_connect(struct socket *so, struct sockaddr *nam, struct thread *td) vflagsav = inp->inp_vflag; inp->inp_vflag |= INP_IPV4; inp->inp_vflag &= ~INP_IPV6; + NET_EPOCH_ENTER(et); INP_HASH_WLOCK(pcbinfo); error = in_pcbconnect(inp, (struct sockaddr *)&sin, td->td_ucred); INP_HASH_WUNLOCK(pcbinfo); + NET_EPOCH_EXIT(et); /* * If connect succeeds, mark socket as connected. If * connect fails and socket is unbound, reset inp_vflag diff --git a/sys/netpfil/pf/if_pfsync.c b/sys/netpfil/pf/if_pfsync.c index 0566593b76169..5ab0bbb925b66 100644 --- a/sys/netpfil/pf/if_pfsync.c +++ b/sys/netpfil/pf/if_pfsync.c @@ -1806,6 +1806,7 @@ pfsync_undefer(struct pfsync_deferral *pd, int drop) static void pfsync_defer_tmo(void *arg) { + struct epoch_tracker et; struct pfsync_deferral *pd = arg; struct pfsync_softc *sc = pd->pd_sc; struct mbuf *m = pd->pd_m; @@ -1814,6 +1815,7 @@ pfsync_defer_tmo(void *arg) PFSYNC_BUCKET_LOCK_ASSERT(b); + NET_EPOCH_ENTER(et); CURVNET_SET(m->m_pkthdr.rcvif->if_vnet); TAILQ_REMOVE(&b->b_deferrals, pd, pd_entry); @@ -1828,6 +1830,7 @@ pfsync_defer_tmo(void *arg) pf_release_state(st); CURVNET_RESTORE(); + NET_EPOCH_EXIT(et); } static void @@ -2307,11 +2310,13 @@ pfsync_push_all(struct pfsync_softc *sc) static void pfsyncintr(void *arg) { + struct epoch_tracker et; struct pfsync_softc *sc = arg; struct pfsync_bucket *b; struct mbuf *m, *n; int c; + NET_EPOCH_ENTER(et); CURVNET_SET(sc->sc_ifp->if_vnet); for (c = 0; c < pfsync_buckets; c++) { @@ -2345,6 +2350,7 @@ pfsyncintr(void *arg) } } CURVNET_RESTORE(); + NET_EPOCH_EXIT(et); } static int diff --git a/sys/netpfil/pf/pf_if.c b/sys/netpfil/pf/pf_if.c index 62653c877122f..98033991670ab 100644 --- a/sys/netpfil/pf/pf_if.c +++ b/sys/netpfil/pf/pf_if.c @@ -477,7 +477,9 @@ static void pfi_kif_update(struct pfi_kif *kif) { struct ifg_list *ifgl; + struct ifg_member *ifgm; struct pfi_dynaddr *p; + struct pfi_kif *tmpkif; NET_EPOCH_ASSERT(); PF_RULES_WASSERT(); @@ -486,6 +488,18 @@ pfi_kif_update(struct pfi_kif *kif) TAILQ_FOREACH(p, &kif->pfik_dynaddrs, entry) pfi_dynaddr_update(p); + /* Apply group flags to new members. */ + if (kif->pfik_group != NULL) { + CK_STAILQ_FOREACH(ifgm, &kif->pfik_group->ifg_members, + ifgm_next) { + tmpkif = (struct pfi_kif *)ifgm->ifgm_ifp->if_pf_kif; + if (tmpkif == NULL) + continue; + + tmpkif->pfik_flags |= kif->pfik_flags; + } + } + /* again for all groups kif is member of */ if (kif->pfik_ifp != NULL) { CK_STAILQ_FOREACH(ifgl, &kif->pfik_ifp->if_groups, ifgl_next) diff --git a/sys/powerpc/pseries/phyp_llan.c b/sys/powerpc/pseries/phyp_llan.c index 518b747dd9440..b387f350f9d8f 100644 --- a/sys/powerpc/pseries/phyp_llan.c +++ b/sys/powerpc/pseries/phyp_llan.c @@ -189,7 +189,7 @@ llan_attach(device_t dev) return (ENXIO); } - bus_setup_intr(dev, sc->irq, INTR_TYPE_MISC | INTR_MPSAFE | + bus_setup_intr(dev, sc->irq, INTR_TYPE_NET | INTR_MPSAFE | INTR_ENTROPY, NULL, llan_intr, sc, &sc->irq_cookie); /* Setup DMA */ diff --git a/sys/riscv/conf/DEFAULTS b/sys/riscv/conf/DEFAULTS index 5451decf822d4..94c6bf283c458 100644 --- a/sys/riscv/conf/DEFAULTS +++ b/sys/riscv/conf/DEFAULTS @@ -11,3 +11,5 @@ device mem # Memory and kernel memory devices # Default partitioning schemes options GEOM_PART_BSD options GEOM_PART_MBR + +options NEW_PCIB diff --git a/sys/riscv/conf/GENERIC b/sys/riscv/conf/GENERIC index 5b647977879fd..0e2502569f4f9 100644 --- a/sys/riscv/conf/GENERIC +++ b/sys/riscv/conf/GENERIC @@ -76,6 +76,9 @@ options INTRNG # RISC-V SBI console device rcons +# Bus drivers +device pci + # VirtIO support device virtio # Generic VirtIO bus (required) device virtio_pci # VirtIO PCI device diff --git a/sys/riscv/include/resource.h b/sys/riscv/include/resource.h index 723d1458e5195..aef4fad4516d5 100644 --- a/sys/riscv/include/resource.h +++ b/sys/riscv/include/resource.h @@ -42,5 +42,8 @@ #define SYS_RES_MEMORY 3 /* i/o memory */ #define SYS_RES_IOPORT 4 /* i/o ports */ #define SYS_RES_GPIO 5 /* general purpose i/o */ +#ifdef NEW_PCIB +#define PCI_RES_BUS 6 /* PCI bus numbers */ +#endif #endif /* !_MACHINE_RESOURCE_H_ */ diff --git a/sys/sparc64/sparc64/machdep.c b/sys/sparc64/sparc64/machdep.c index e0f6313c294ed..28ddd42f72c32 100644 --- a/sys/sparc64/sparc64/machdep.c +++ b/sys/sparc64/sparc64/machdep.c @@ -224,9 +224,9 @@ spinlock_enter(void) wrpr(pil, 0, PIL_TICK); td->td_md.md_spinlock_count = 1; td->td_md.md_saved_pil = pil; + critical_enter(); } else td->td_md.md_spinlock_count++; - critical_enter(); } void @@ -236,11 +236,12 @@ spinlock_exit(void) register_t pil; td = curthread; - critical_exit(); pil = td->td_md.md_saved_pil; td->td_md.md_spinlock_count--; - if (td->td_md.md_spinlock_count == 0) + if (td->td_md.md_spinlock_count == 0) { + critical_exit(); wrpr(pil, pil, 0); + } } static phandle_t diff --git a/sys/sparc64/sparc64/pmap.c b/sys/sparc64/sparc64/pmap.c index 46454795ad26c..406bc90b56be2 100644 --- a/sys/sparc64/sparc64/pmap.c +++ b/sys/sparc64/sparc64/pmap.c @@ -1302,6 +1302,7 @@ pmap_release(pmap_t pm) m = TAILQ_FIRST(&obj->memq); m->md.pmap = NULL; vm_page_unwire_noq(m); + vm_page_xbusy(m); vm_page_free_zero(m); } VM_OBJECT_WUNLOCK(obj); diff --git a/sys/sys/callout.h b/sys/sys/callout.h index e4d91c69da3fd..41b47a32d9a13 100644 --- a/sys/sys/callout.h +++ b/sys/sys/callout.h @@ -62,10 +62,6 @@ #define C_PRECALC 0x0400 /* event time is pre-calculated. */ #define C_CATCH 0x0800 /* catch signals, used by pause_sbt(9) */ -struct callout_handle { - struct callout *callout; -}; - /* Flags for callout_stop_safe() */ #define CS_DRAIN 0x0001 /* callout_drain(), wait allowed */ #define CS_EXECUTING 0x0002 /* Positive return value indicates that diff --git a/sys/sys/cpu.h b/sys/sys/cpu.h index 7ec7dc9ed9d21..60e2c05af6938 100644 --- a/sys/sys/cpu.h +++ b/sys/sys/cpu.h @@ -120,11 +120,16 @@ TAILQ_HEAD(cf_level_lst, cf_level); * information about settings but rely on another machine-dependent driver * for actually performing the frequency transition (e.g., ACPI performance * states of type "functional fixed hardware.") + * + * The "uncached" flag tells CPUFREQ_DRV_GET to try obtaining the real + * instantaneous frequency from the underlying hardware regardless of cached + * state. It is probably a bug to not combine this with "info only" */ #define CPUFREQ_TYPE_MASK 0xffff #define CPUFREQ_TYPE_RELATIVE (1<<0) #define CPUFREQ_TYPE_ABSOLUTE (1<<1) #define CPUFREQ_FLAG_INFO_ONLY (1<<16) +#define CPUFREQ_FLAG_UNCACHED (1<<17) /* * When setting a level, the caller indicates the priority of this request. diff --git a/sys/sys/elf_common.h b/sys/sys/elf_common.h index c4bc0d94c2519..daf961867e5a7 100644 --- a/sys/sys/elf_common.h +++ b/sys/sys/elf_common.h @@ -543,6 +543,10 @@ typedef struct { #define PT_LOPROC 0x70000000 /* First processor-specific type. */ #define PT_ARM_ARCHEXT 0x70000000 /* ARM arch compat information. */ #define PT_ARM_EXIDX 0x70000001 /* ARM exception unwind tables. */ +#define PT_MIPS_REGINFO 0x70000000 /* MIPS register usage info */ +#define PT_MIPS_RTPROC 0x70000001 /* MIPS runtime procedure tbl */ +#define PT_MIPS_OPTIONS 0x70000002 /* MIPS e_flags value*/ +#define PT_MIPS_ABIFLAGS 0x70000003 /* MIPS fp mode */ #define PT_HIPROC 0x7fffffff /* Last processor-specific type. */ #define PT_OPENBSD_RANDOMIZE 0x65A3DBE6 /* OpenBSD random data segment */ diff --git a/sys/sys/interrupt.h b/sys/sys/interrupt.h index 4c04623c5487a..3492b17bf8d48 100644 --- a/sys/sys/interrupt.h +++ b/sys/sys/interrupt.h @@ -58,6 +58,7 @@ struct intr_handler { }; /* Interrupt handle flags kept in ih_flags */ +#define IH_NET 0x00000001 /* Network. */ #define IH_EXCLUSIVE 0x00000002 /* Exclusive interrupt. */ #define IH_ENTROPY 0x00000004 /* Device is a good entropy source. */ #define IH_DEAD 0x00000008 /* Handler should be removed. */ @@ -118,6 +119,7 @@ struct intr_event { void (*ie_post_filter)(void *); int (*ie_assign_cpu)(void *, int); int ie_flags; + int ie_hflags; /* Cumulative flags of all handlers. */ int ie_count; /* Loop counter. */ int ie_warncnt; /* Rate-check interrupt storm warns. */ struct timeval ie_warntm; @@ -129,7 +131,6 @@ struct intr_event { /* Interrupt event flags kept in ie_flags. */ #define IE_SOFT 0x000001 /* Software interrupt. */ -#define IE_ENTROPY 0x000002 /* Interrupt is an entropy source. */ #define IE_ADDING_THREAD 0x000004 /* Currently building an ithread. */ /* Flags to pass to sched_swi. */ diff --git a/sys/sys/syscallsubr.h b/sys/sys/syscallsubr.h index e57bc41b1a513..7724e8437b6ce 100644 --- a/sys/sys/syscallsubr.h +++ b/sys/sys/syscallsubr.h @@ -315,6 +315,7 @@ int kern_wait6(struct thread *td, enum idtype idtype, id_t id, int *status, int kern_writev(struct thread *td, int fd, struct uio *auio); int kern_socketpair(struct thread *td, int domain, int type, int protocol, int *rsv); +int kern_unmount(struct thread *td, const char *path, int flags); /* flags for kern_sigaction */ #define KSA_OSIGSET 0x0001 /* uses osigact_t */ diff --git a/sys/sys/unpcb.h b/sys/sys/unpcb.h index 6bd36e8e58018..515355e803740 100644 --- a/sys/sys/unpcb.h +++ b/sys/sys/unpcb.h @@ -86,7 +86,9 @@ struct unpcb { unp_gen_t unp_gencnt; /* generation count of this instance */ struct file *unp_file; /* back-pointer to file for gc. */ u_int unp_msgcount; /* references from message queue */ + u_int unp_gcrefs; /* garbage collector refcount */ ino_t unp_ino; /* fake inode number */ + LIST_ENTRY(unpcb) unp_dead; /* link in dead list */ } __aligned(CACHE_LINE_SIZE); /* @@ -113,10 +115,8 @@ struct unpcb { /* * Flags in unp_gcflag. */ -#define UNPGC_REF 0x1 /* unpcb has external ref. */ -#define UNPGC_DEAD 0x2 /* unpcb might be dead. */ -#define UNPGC_SCANNED 0x4 /* Has been scanned. */ -#define UNPGC_IGNORE_RIGHTS 0x8 /* Attached rights are freed */ +#define UNPGC_DEAD 0x1 /* unpcb might be dead. */ +#define UNPGC_IGNORE_RIGHTS 0x2 /* Attached rights are freed */ #define sotounpcb(so) ((struct unpcb *)((so)->so_pcb)) diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c index 39c20ca4c2a1c..c0ce8f02f6fd6 100644 --- a/sys/ufs/ffs/ffs_snapshot.c +++ b/sys/ufs/ffs/ffs_snapshot.c @@ -2583,15 +2583,7 @@ process_deferred_inactive(struct mount *mp) UFS_INODE_SET_FLAG(ip, IN_MODIFIED); } VI_LOCK(vp); - if ((vp->v_iflag & VI_OWEINACT) == 0 || vp->v_usecount > 0) { - VI_UNLOCK(vp); - VOP_UNLOCK(vp); - vdrop(vp); - continue; - } vinactive(vp); - VNASSERT((vp->v_iflag & VI_OWEINACT) == 0, vp, - ("process_deferred_inactive: got VI_OWEINACT")); VI_UNLOCK(vp); VOP_UNLOCK(vp); vdrop(vp); diff --git a/sys/vm/uma_core.c b/sys/vm/uma_core.c index 7161cc55cfe19..1fadc3e177059 100644 --- a/sys/vm/uma_core.c +++ b/sys/vm/uma_core.c @@ -2297,7 +2297,8 @@ zone_ctor(void *mem, int size, void *udata, int flags) zone->uz_flags = 0; zone->uz_warning = NULL; /* The domain structures follow the cpu structures. */ - zone->uz_domain = (struct uma_zone_domain *)&zone->uz_cpu[mp_ncpus]; + zone->uz_domain = + (struct uma_zone_domain *)&zone->uz_cpu[mp_maxid + 1]; zone->uz_bkt_max = ULONG_MAX; timevalclear(&zone->uz_ratecheck); @@ -2440,11 +2441,11 @@ keg_dtor(void *arg, int size, void *udata) pages += keg->uk_domain[i].ud_pages; KEG_LOCK_FINI(keg, i); } - if (free != 0) + if (pages != 0) printf("Freed UMA keg (%s) was not empty (%u items). " " Lost %u pages of memory.\n", keg->uk_name ? keg->uk_name : "", - free, pages); + pages / keg->uk_ppera * keg->uk_ipers - free, pages); hash_free(&keg->uk_hash); } @@ -2614,7 +2615,7 @@ void uma_startup2(void) { - if (!PMAP_HAS_DMAP) { + if (bootstart != bootmem) { vm_map_lock(kernel_map); (void)vm_map_insert(kernel_map, NULL, 0, bootstart, bootmem, VM_PROT_RW, VM_PROT_RW, MAP_NOFAULT); diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c index 1bb636d9ee9c6..b7b3841364dcf 100644 --- a/sys/vm/vm_fault.c +++ b/sys/vm/vm_fault.c @@ -120,18 +120,36 @@ __FBSDID("$FreeBSD$"); #define VM_FAULT_DONTNEED_MIN 1048576 struct faultstate { - vm_page_t m; + /* Fault parameters. */ + vm_offset_t vaddr; + vm_page_t *m_hold; + vm_prot_t fault_type; + vm_prot_t prot; + int fault_flags; + int oom; + boolean_t wired; + + /* Page reference for cow. */ vm_page_t m_cow; - vm_object_t object; - vm_pindex_t pindex; - vm_page_t first_m; + + /* Current object. */ + vm_object_t object; + vm_pindex_t pindex; + vm_page_t m; + + /* Top-level map object. */ vm_object_t first_object; - vm_pindex_t first_pindex; - vm_map_t map; - vm_map_entry_t entry; - int map_generation; - bool lookup_still_valid; - struct vnode *vp; + vm_pindex_t first_pindex; + vm_page_t first_m; + + /* Map state. */ + vm_map_t map; + vm_map_entry_t entry; + int map_generation; + bool lookup_still_valid; + + /* Vnode if locked. */ + struct vnode *vp; }; static void vm_fault_dontneed(const struct faultstate *fs, vm_offset_t vaddr, @@ -232,21 +250,20 @@ unlock_and_deallocate(struct faultstate *fs) } static void -vm_fault_dirty(vm_map_entry_t entry, vm_page_t m, vm_prot_t prot, - vm_prot_t fault_type, int fault_flags) +vm_fault_dirty(struct faultstate *fs, vm_page_t m) { bool need_dirty; - if (((prot & VM_PROT_WRITE) == 0 && - (fault_flags & VM_FAULT_DIRTY) == 0) || + if (((fs->prot & VM_PROT_WRITE) == 0 && + (fs->fault_flags & VM_FAULT_DIRTY) == 0) || (m->oflags & VPO_UNMANAGED) != 0) return; VM_PAGE_OBJECT_BUSY_ASSERT(m); - need_dirty = ((fault_type & VM_PROT_WRITE) != 0 && - (fault_flags & VM_FAULT_WIRE) == 0) || - (fault_flags & VM_FAULT_DIRTY) != 0; + need_dirty = ((fs->fault_type & VM_PROT_WRITE) != 0 && + (fs->fault_flags & VM_FAULT_WIRE) == 0) || + (fs->fault_flags & VM_FAULT_DIRTY) != 0; vm_object_set_writeable_dirty(m->object); @@ -267,7 +284,7 @@ vm_fault_dirty(vm_map_entry_t entry, vm_page_t m, vm_prot_t prot, * sure the page isn't marked NOSYNC. Applications sharing * data should use the same flags to avoid ping ponging. */ - if ((entry->eflags & MAP_ENTRY_NOSYNC) != 0) + if ((fs->entry->eflags & MAP_ENTRY_NOSYNC) != 0) vm_page_aflag_set(m, PGA_NOSYNC); else vm_page_aflag_clear(m, PGA_NOSYNC); @@ -279,8 +296,7 @@ vm_fault_dirty(vm_map_entry_t entry, vm_page_t m, vm_prot_t prot, * Unlocks fs.first_object and fs.map on success. */ static int -vm_fault_soft_fast(struct faultstate *fs, vm_offset_t vaddr, vm_prot_t prot, - int fault_type, int fault_flags, boolean_t wired, vm_page_t *m_hold) +vm_fault_soft_fast(struct faultstate *fs) { vm_page_t m, m_map; #if (defined(__aarch64__) || defined(__amd64__) || (defined(__arm__) && \ @@ -290,12 +306,14 @@ vm_fault_soft_fast(struct faultstate *fs, vm_offset_t vaddr, vm_prot_t prot, int flags; #endif int psind, rv; + vm_offset_t vaddr; MPASS(fs->vp == NULL); + vaddr = fs->vaddr; vm_object_busy(fs->first_object); m = vm_page_lookup(fs->first_object, fs->first_pindex); /* A busy page can be mapped for read|execute access. */ - if (m == NULL || ((prot & VM_PROT_WRITE) != 0 && + if (m == NULL || ((fs->prot & VM_PROT_WRITE) != 0 && vm_page_busied(m)) || !vm_page_all_valid(m)) { rv = KERN_FAILURE; goto out; @@ -310,10 +328,10 @@ vm_fault_soft_fast(struct faultstate *fs, vm_offset_t vaddr, vm_prot_t prot, rounddown2(vaddr, pagesizes[m_super->psind]) >= fs->entry->start && roundup2(vaddr + 1, pagesizes[m_super->psind]) <= fs->entry->end && (vaddr & (pagesizes[m_super->psind] - 1)) == (VM_PAGE_TO_PHYS(m) & - (pagesizes[m_super->psind] - 1)) && !wired && + (pagesizes[m_super->psind] - 1)) && !fs->wired && pmap_ps_enabled(fs->map->pmap)) { flags = PS_ALL_VALID; - if ((prot & VM_PROT_WRITE) != 0) { + if ((fs->prot & VM_PROT_WRITE) != 0) { /* * Create a superpage mapping allowing write access * only if none of the constituent pages are busy and @@ -330,22 +348,22 @@ vm_fault_soft_fast(struct faultstate *fs, vm_offset_t vaddr, vm_prot_t prot, vaddr = rounddown2(vaddr, pagesizes[psind]); /* Preset the modified bit for dirty superpages. */ if ((flags & PS_ALL_DIRTY) != 0) - fault_type |= VM_PROT_WRITE; + fs->fault_type |= VM_PROT_WRITE; } } #endif - rv = pmap_enter(fs->map->pmap, vaddr, m_map, prot, fault_type | - PMAP_ENTER_NOSLEEP | (wired ? PMAP_ENTER_WIRED : 0), psind); + rv = pmap_enter(fs->map->pmap, vaddr, m_map, fs->prot, fs->fault_type | + PMAP_ENTER_NOSLEEP | (fs->wired ? PMAP_ENTER_WIRED : 0), psind); if (rv != KERN_SUCCESS) goto out; - if (m_hold != NULL) { - *m_hold = m; + if (fs->m_hold != NULL) { + (*fs->m_hold) = m; vm_page_wire(m); } - vm_fault_dirty(fs->entry, m, prot, fault_type, fault_flags); - if (psind == 0 && !wired) + if (psind == 0 && !fs->wired) vm_fault_prefault(fs, vaddr, PFBAK, PFFOR, true); VM_OBJECT_RUNLOCK(fs->first_object); + vm_fault_dirty(fs, m); vm_map_lookup_done(fs->map, fs->entry); curthread->td_ru.ru_minflt++; @@ -401,8 +419,7 @@ vm_fault_populate_cleanup(vm_object_t object, vm_pindex_t first, } static int -vm_fault_populate(struct faultstate *fs, vm_prot_t prot, int fault_type, - int fault_flags, boolean_t wired, vm_page_t *m_hold) +vm_fault_populate(struct faultstate *fs) { vm_offset_t vaddr; vm_page_t m; @@ -429,7 +446,7 @@ vm_fault_populate(struct faultstate *fs, vm_prot_t prot, int fault_type, * to the driver. */ rv = vm_pager_populate(fs->first_object, fs->first_pindex, - fault_type, fs->entry->max_protection, &pager_first, &pager_last); + fs->fault_type, fs->entry->max_protection, &pager_first, &pager_last); VM_OBJECT_ASSERT_WLOCKED(fs->first_object); if (rv == VM_PAGER_BAD) { @@ -439,7 +456,7 @@ vm_fault_populate(struct faultstate *fs, vm_prot_t prot, int fault_type, */ vm_fault_restore_map_lock(fs); if (fs->map->timestamp != fs->map_generation) - return (KERN_RESOURCE_SHORTAGE); /* RetryFault */ + return (KERN_RESTART); return (KERN_NOT_RECEIVER); } if (rv != VM_PAGER_OK) @@ -455,7 +472,7 @@ vm_fault_populate(struct faultstate *fs, vm_prot_t prot, int fault_type, if (fs->map->timestamp != fs->map_generation) { vm_fault_populate_cleanup(fs->first_object, pager_first, pager_last); - return (KERN_RESOURCE_SHORTAGE); /* RetryFault */ + return (KERN_RESTART); } /* @@ -488,7 +505,7 @@ vm_fault_populate(struct faultstate *fs, vm_prot_t prot, int fault_type, psind = m->psind; if (psind > 0 && ((vaddr & (pagesizes[psind] - 1)) != 0 || pidx + OFF_TO_IDX(pagesizes[psind]) - 1 > pager_last || - !pmap_ps_enabled(fs->map->pmap) || wired)) + !pmap_ps_enabled(fs->map->pmap) || fs->wired)) psind = 0; #else psind = 0; @@ -496,18 +513,17 @@ vm_fault_populate(struct faultstate *fs, vm_prot_t prot, int fault_type, npages = atop(pagesizes[psind]); for (i = 0; i < npages; i++) { vm_fault_populate_check_page(&m[i]); - vm_fault_dirty(fs->entry, &m[i], prot, fault_type, - fault_flags); + vm_fault_dirty(fs, &m[i]); } VM_OBJECT_WUNLOCK(fs->first_object); - rv = pmap_enter(fs->map->pmap, vaddr, m, prot, fault_type | - (wired ? PMAP_ENTER_WIRED : 0), psind); + rv = pmap_enter(fs->map->pmap, vaddr, m, fs->prot, fs->fault_type | + (fs->wired ? PMAP_ENTER_WIRED : 0), psind); #if defined(__amd64__) if (psind > 0 && rv == KERN_FAILURE) { for (i = 0; i < npages; i++) { rv = pmap_enter(fs->map->pmap, vaddr + ptoa(i), - &m[i], prot, fault_type | - (wired ? PMAP_ENTER_WIRED : 0), 0); + &m[i], fs->prot, fs->fault_type | + (fs->wired ? PMAP_ENTER_WIRED : 0), 0); MPASS(rv == KERN_SUCCESS); } } @@ -516,12 +532,12 @@ vm_fault_populate(struct faultstate *fs, vm_prot_t prot, int fault_type, #endif VM_OBJECT_WLOCK(fs->first_object); for (i = 0; i < npages; i++) { - if ((fault_flags & VM_FAULT_WIRE) != 0) + if ((fs->fault_flags & VM_FAULT_WIRE) != 0) vm_page_wire(&m[i]); else vm_page_activate(&m[i]); - if (m_hold != NULL && m[i].pindex == fs->first_pindex) { - *m_hold = &m[i]; + if (fs->m_hold != NULL && m[i].pindex == fs->first_pindex) { + (*fs->m_hold) = &m[i]; vm_page_wire(&m[i]); } vm_page_xunbusy(&m[i]); @@ -632,7 +648,7 @@ vm_fault_trap(vm_map_t map, vm_offset_t vaddr, vm_prot_t fault_type, } static int -vm_fault_lock_vnode(struct faultstate *fs) +vm_fault_lock_vnode(struct faultstate *fs, bool objlocked) { struct vnode *vp; int error, locked; @@ -668,7 +684,10 @@ vm_fault_lock_vnode(struct faultstate *fs) } vhold(vp); - unlock_and_deallocate(fs); + if (objlocked) + unlock_and_deallocate(fs); + else + fault_deallocate(fs); error = vget(vp, locked | LK_RETRY | LK_CANRECURSE, curthread); vdrop(vp); fs->vp = vp; @@ -677,6 +696,485 @@ vm_fault_lock_vnode(struct faultstate *fs) } /* + * Calculate the desired readahead. Handle drop-behind. + * + * Returns the number of readahead blocks to pass to the pager. + */ +static int +vm_fault_readahead(struct faultstate *fs) +{ + int era, nera; + u_char behavior; + + KASSERT(fs->lookup_still_valid, ("map unlocked")); + era = fs->entry->read_ahead; + behavior = vm_map_entry_behavior(fs->entry); + if (behavior == MAP_ENTRY_BEHAV_RANDOM) { + nera = 0; + } else if (behavior == MAP_ENTRY_BEHAV_SEQUENTIAL) { + nera = VM_FAULT_READ_AHEAD_MAX; + if (fs->vaddr == fs->entry->next_read) + vm_fault_dontneed(fs, fs->vaddr, nera); + } else if (fs->vaddr == fs->entry->next_read) { + /* + * This is a sequential fault. Arithmetically + * increase the requested number of pages in + * the read-ahead window. The requested + * number of pages is "# of sequential faults + * x (read ahead min + 1) + read ahead min" + */ + nera = VM_FAULT_READ_AHEAD_MIN; + if (era > 0) { + nera += era + 1; + if (nera > VM_FAULT_READ_AHEAD_MAX) + nera = VM_FAULT_READ_AHEAD_MAX; + } + if (era == VM_FAULT_READ_AHEAD_MAX) + vm_fault_dontneed(fs, fs->vaddr, nera); + } else { + /* + * This is a non-sequential fault. + */ + nera = 0; + } + if (era != nera) { + /* + * A read lock on the map suffices to update + * the read ahead count safely. + */ + fs->entry->read_ahead = nera; + } + + return (nera); +} + +static int +vm_fault_lookup(struct faultstate *fs) +{ + int result; + + KASSERT(!fs->lookup_still_valid, + ("vm_fault_lookup: Map already locked.")); + result = vm_map_lookup(&fs->map, fs->vaddr, fs->fault_type | + VM_PROT_FAULT_LOOKUP, &fs->entry, &fs->first_object, + &fs->first_pindex, &fs->prot, &fs->wired); + if (result != KERN_SUCCESS) { + unlock_vp(fs); + return (result); + } + + fs->map_generation = fs->map->timestamp; + + if (fs->entry->eflags & MAP_ENTRY_NOFAULT) { + panic("%s: fault on nofault entry, addr: %#lx", + __func__, (u_long)fs->vaddr); + } + + if (fs->entry->eflags & MAP_ENTRY_IN_TRANSITION && + fs->entry->wiring_thread != curthread) { + vm_map_unlock_read(fs->map); + vm_map_lock(fs->map); + if (vm_map_lookup_entry(fs->map, fs->vaddr, &fs->entry) && + (fs->entry->eflags & MAP_ENTRY_IN_TRANSITION)) { + unlock_vp(fs); + fs->entry->eflags |= MAP_ENTRY_NEEDS_WAKEUP; + vm_map_unlock_and_wait(fs->map, 0); + } else + vm_map_unlock(fs->map); + return (KERN_RESOURCE_SHORTAGE); + } + + MPASS((fs->entry->eflags & MAP_ENTRY_GUARD) == 0); + + if (fs->wired) + fs->fault_type = fs->prot | (fs->fault_type & VM_PROT_COPY); + else + KASSERT((fs->fault_flags & VM_FAULT_WIRE) == 0, + ("!fs->wired && VM_FAULT_WIRE")); + fs->lookup_still_valid = true; + + return (KERN_SUCCESS); +} + +static int +vm_fault_relookup(struct faultstate *fs) +{ + vm_object_t retry_object; + vm_pindex_t retry_pindex; + vm_prot_t retry_prot; + int result; + + if (!vm_map_trylock_read(fs->map)) + return (KERN_RESTART); + + fs->lookup_still_valid = true; + if (fs->map->timestamp == fs->map_generation) + return (KERN_SUCCESS); + + result = vm_map_lookup_locked(&fs->map, fs->vaddr, fs->fault_type, + &fs->entry, &retry_object, &retry_pindex, &retry_prot, + &fs->wired); + if (result != KERN_SUCCESS) { + /* + * If retry of map lookup would have blocked then + * retry fault from start. + */ + if (result == KERN_FAILURE) + return (KERN_RESTART); + return (result); + } + if (retry_object != fs->first_object || + retry_pindex != fs->first_pindex) + return (KERN_RESTART); + + /* + * Check whether the protection has changed or the object has + * been copied while we left the map unlocked. Changing from + * read to write permission is OK - we leave the page + * write-protected, and catch the write fault. Changing from + * write to read permission means that we can't mark the page + * write-enabled after all. + */ + fs->prot &= retry_prot; + fs->fault_type &= retry_prot; + if (fs->prot == 0) + return (KERN_RESTART); + + /* Reassert because wired may have changed. */ + KASSERT(fs->wired || (fs->fault_flags & VM_FAULT_WIRE) == 0, + ("!wired && VM_FAULT_WIRE")); + + return (KERN_SUCCESS); +} + +static void +vm_fault_cow(struct faultstate *fs) +{ + bool is_first_object_locked; + + /* + * This allows pages to be virtually copied from a backing_object + * into the first_object, where the backing object has no other + * refs to it, and cannot gain any more refs. Instead of a bcopy, + * we just move the page from the backing object to the first + * object. Note that we must mark the page dirty in the first + * object so that it will go out to swap when needed. + */ + is_first_object_locked = false; + if ( + /* + * Only one shadow object and no other refs. + */ + fs->object->shadow_count == 1 && fs->object->ref_count == 1 && + /* + * No other ways to look the object up + */ + fs->object->handle == NULL && (fs->object->flags & OBJ_ANON) != 0 && + /* + * We don't chase down the shadow chain and we can acquire locks. + */ + (is_first_object_locked = VM_OBJECT_TRYWLOCK(fs->first_object)) && + fs->object == fs->first_object->backing_object && + VM_OBJECT_TRYWLOCK(fs->object)) { + + /* + * Remove but keep xbusy for replace. fs->m is moved into + * fs->first_object and left busy while fs->first_m is + * conditionally freed. + */ + vm_page_remove_xbusy(fs->m); + vm_page_replace(fs->m, fs->first_object, fs->first_pindex, + fs->first_m); + vm_page_dirty(fs->m); +#if VM_NRESERVLEVEL > 0 + /* + * Rename the reservation. + */ + vm_reserv_rename(fs->m, fs->first_object, fs->object, + OFF_TO_IDX(fs->first_object->backing_object_offset)); +#endif + VM_OBJECT_WUNLOCK(fs->object); + VM_OBJECT_WUNLOCK(fs->first_object); + fs->first_m = fs->m; + fs->m = NULL; + VM_CNT_INC(v_cow_optim); + } else { + if (is_first_object_locked) + VM_OBJECT_WUNLOCK(fs->first_object); + /* + * Oh, well, lets copy it. + */ + pmap_copy_page(fs->m, fs->first_m); + vm_page_valid(fs->first_m); + if (fs->wired && (fs->fault_flags & VM_FAULT_WIRE) == 0) { + vm_page_wire(fs->first_m); + vm_page_unwire(fs->m, PQ_INACTIVE); + } + /* + * Save the cow page to be released after + * pmap_enter is complete. + */ + fs->m_cow = fs->m; + fs->m = NULL; + } + /* + * fs->object != fs->first_object due to above + * conditional + */ + vm_object_pip_wakeup(fs->object); + + /* + * Only use the new page below... + */ + fs->object = fs->first_object; + fs->pindex = fs->first_pindex; + fs->m = fs->first_m; + VM_CNT_INC(v_cow_faults); + curthread->td_cow++; +} + +static bool +vm_fault_next(struct faultstate *fs) +{ + vm_object_t next_object; + + /* + * The requested page does not exist at this object/ + * offset. Remove the invalid page from the object, + * waking up anyone waiting for it, and continue on to + * the next object. However, if this is the top-level + * object, we must leave the busy page in place to + * prevent another process from rushing past us, and + * inserting the page in that object at the same time + * that we are. + */ + if (fs->object == fs->first_object) { + fs->first_m = fs->m; + fs->m = NULL; + } else + fault_page_free(&fs->m); + + /* + * Move on to the next object. Lock the next object before + * unlocking the current one. + */ + VM_OBJECT_ASSERT_WLOCKED(fs->object); + next_object = fs->object->backing_object; + if (next_object == NULL) + return (false); + MPASS(fs->first_m != NULL); + KASSERT(fs->object != next_object, ("object loop %p", next_object)); + VM_OBJECT_WLOCK(next_object); + vm_object_pip_add(next_object, 1); + if (fs->object != fs->first_object) + vm_object_pip_wakeup(fs->object); + fs->pindex += OFF_TO_IDX(fs->object->backing_object_offset); + VM_OBJECT_WUNLOCK(fs->object); + fs->object = next_object; + + return (true); +} + +static void +vm_fault_zerofill(struct faultstate *fs) +{ + + /* + * If there's no object left, fill the page in the top + * object with zeros. + */ + if (fs->object != fs->first_object) { + vm_object_pip_wakeup(fs->object); + fs->object = fs->first_object; + fs->pindex = fs->first_pindex; + } + MPASS(fs->first_m != NULL); + MPASS(fs->m == NULL); + fs->m = fs->first_m; + fs->first_m = NULL; + + /* + * Zero the page if necessary and mark it valid. + */ + if ((fs->m->flags & PG_ZERO) == 0) { + pmap_zero_page(fs->m); + } else { + VM_CNT_INC(v_ozfod); + } + VM_CNT_INC(v_zfod); + vm_page_valid(fs->m); +} + +/* + * Allocate a page directly or via the object populate method. + */ +static int +vm_fault_allocate(struct faultstate *fs) +{ + struct domainset *dset; + int alloc_req; + int rv; + + + if ((fs->object->flags & OBJ_SIZEVNLOCK) != 0) { + rv = vm_fault_lock_vnode(fs, true); + MPASS(rv == KERN_SUCCESS || rv == KERN_RESOURCE_SHORTAGE); + if (rv == KERN_RESOURCE_SHORTAGE) + return (rv); + } + + if (fs->pindex >= fs->object->size) + return (KERN_OUT_OF_BOUNDS); + + if (fs->object == fs->first_object && + (fs->first_object->flags & OBJ_POPULATE) != 0 && + fs->first_object->shadow_count == 0) { + rv = vm_fault_populate(fs); + switch (rv) { + case KERN_SUCCESS: + case KERN_FAILURE: + case KERN_RESTART: + return (rv); + case KERN_NOT_RECEIVER: + /* + * Pager's populate() method + * returned VM_PAGER_BAD. + */ + break; + default: + panic("inconsistent return codes"); + } + } + + /* + * Allocate a new page for this object/offset pair. + * + * Unlocked read of the p_flag is harmless. At worst, the P_KILLED + * might be not observed there, and allocation can fail, causing + * restart and new reading of the p_flag. + */ + dset = fs->object->domain.dr_policy; + if (dset == NULL) + dset = curthread->td_domain.dr_policy; + if (!vm_page_count_severe_set(&dset->ds_mask) || P_KILLED(curproc)) { +#if VM_NRESERVLEVEL > 0 + vm_object_color(fs->object, atop(fs->vaddr) - fs->pindex); +#endif + alloc_req = P_KILLED(curproc) ? + VM_ALLOC_SYSTEM : VM_ALLOC_NORMAL; + if (fs->object->type != OBJT_VNODE && + fs->object->backing_object == NULL) + alloc_req |= VM_ALLOC_ZERO; + fs->m = vm_page_alloc(fs->object, fs->pindex, alloc_req); + } + if (fs->m == NULL) { + unlock_and_deallocate(fs); + if (vm_pfault_oom_attempts < 0 || + fs->oom < vm_pfault_oom_attempts) { + fs->oom++; + vm_waitpfault(dset, vm_pfault_oom_wait * hz); + } + if (bootverbose) + printf( +"proc %d (%s) failed to alloc page on fault, starting OOM\n", + curproc->p_pid, curproc->p_comm); + vm_pageout_oom(VM_OOM_MEM_PF); + return (KERN_RESOURCE_SHORTAGE); + } + fs->oom = 0; + + return (KERN_NOT_RECEIVER); +} + +/* + * Call the pager to retrieve the page if there is a chance + * that the pager has it, and potentially retrieve additional + * pages at the same time. + */ +static int +vm_fault_getpages(struct faultstate *fs, int nera, int *behindp, int *aheadp) +{ + vm_offset_t e_end, e_start; + int ahead, behind, cluster_offset, rv; + u_char behavior; + + /* + * Prepare for unlocking the map. Save the map + * entry's start and end addresses, which are used to + * optimize the size of the pager operation below. + * Even if the map entry's addresses change after + * unlocking the map, using the saved addresses is + * safe. + */ + e_start = fs->entry->start; + e_end = fs->entry->end; + behavior = vm_map_entry_behavior(fs->entry); + + /* + * Release the map lock before locking the vnode or + * sleeping in the pager. (If the current object has + * a shadow, then an earlier iteration of this loop + * may have already unlocked the map.) + */ + unlock_map(fs); + + rv = vm_fault_lock_vnode(fs, false); + MPASS(rv == KERN_SUCCESS || rv == KERN_RESOURCE_SHORTAGE); + if (rv == KERN_RESOURCE_SHORTAGE) + return (rv); + KASSERT(fs->vp == NULL || !fs->map->system_map, + ("vm_fault: vnode-backed object mapped by system map")); + + /* + * Page in the requested page and hint the pager, + * that it may bring up surrounding pages. + */ + if (nera == -1 || behavior == MAP_ENTRY_BEHAV_RANDOM || + P_KILLED(curproc)) { + behind = 0; + ahead = 0; + } else { + /* Is this a sequential fault? */ + if (nera > 0) { + behind = 0; + ahead = nera; + } else { + /* + * Request a cluster of pages that is + * aligned to a VM_FAULT_READ_DEFAULT + * page offset boundary within the + * object. Alignment to a page offset + * boundary is more likely to coincide + * with the underlying file system + * block than alignment to a virtual + * address boundary. + */ + cluster_offset = fs->pindex % VM_FAULT_READ_DEFAULT; + behind = ulmin(cluster_offset, + atop(fs->vaddr - e_start)); + ahead = VM_FAULT_READ_DEFAULT - 1 - cluster_offset; + } + ahead = ulmin(ahead, atop(e_end - fs->vaddr) - 1); + } + *behindp = behind; + *aheadp = ahead; + rv = vm_pager_get_pages(fs->object, &fs->m, 1, behindp, aheadp); + if (rv == VM_PAGER_OK) + return (KERN_SUCCESS); + if (rv == VM_PAGER_ERROR) + printf("vm_fault: pager read error, pid %d (%s)\n", + curproc->p_pid, curproc->p_comm); + /* + * If an I/O error occurred or the requested page was + * outside the range of the pager, clean up and return + * an error. + */ + if (rv == VM_PAGER_ERROR || rv == VM_PAGER_BAD) + return (KERN_OUT_OF_BOUNDS); + return (KERN_NOT_RECEIVER); +} + +/* * Wait/Retry if the page is busy. We have to do this if the page is * either exclusive or shared busy because the vm_pager may be using * read busy for pageouts (and even pageins if it is the vnode pager), @@ -717,16 +1215,9 @@ vm_fault(vm_map_t map, vm_offset_t vaddr, vm_prot_t fault_type, int fault_flags, vm_page_t *m_hold) { struct faultstate fs; - struct domainset *dset; - vm_object_t next_object, retry_object; - vm_offset_t e_end, e_start; - vm_pindex_t retry_pindex; - vm_prot_t prot, retry_prot; - int ahead, alloc_req, behind, cluster_offset, era, faultcount; - int nera, oom, result, rv; - u_char behavior; - boolean_t wired; /* Passed by reference. */ - bool dead, hardfault, is_first_object_locked; + int ahead, behind, faultcount; + int nera, result, rv; + bool dead, hardfault; VM_CNT_INC(v_vm_faults); @@ -734,56 +1225,30 @@ vm_fault(vm_map_t map, vm_offset_t vaddr, vm_prot_t fault_type, return (KERN_PROTECTION_FAILURE); fs.vp = NULL; + fs.vaddr = vaddr; + fs.m_hold = m_hold; + fs.fault_flags = fault_flags; + fs.map = map; + fs.lookup_still_valid = false; + fs.oom = 0; faultcount = 0; nera = -1; hardfault = false; RetryFault: - oom = 0; -RetryFault_oom: + fs.fault_type = fault_type; /* * Find the backing store object and offset into it to begin the * search. */ - fs.map = map; - result = vm_map_lookup(&fs.map, vaddr, fault_type | - VM_PROT_FAULT_LOOKUP, &fs.entry, &fs.first_object, - &fs.first_pindex, &prot, &wired); + result = vm_fault_lookup(&fs); if (result != KERN_SUCCESS) { - unlock_vp(&fs); + if (result == KERN_RESOURCE_SHORTAGE) + goto RetryFault; return (result); } - fs.map_generation = fs.map->timestamp; - - if (fs.entry->eflags & MAP_ENTRY_NOFAULT) { - panic("%s: fault on nofault entry, addr: %#lx", - __func__, (u_long)vaddr); - } - - if (fs.entry->eflags & MAP_ENTRY_IN_TRANSITION && - fs.entry->wiring_thread != curthread) { - vm_map_unlock_read(fs.map); - vm_map_lock(fs.map); - if (vm_map_lookup_entry(fs.map, vaddr, &fs.entry) && - (fs.entry->eflags & MAP_ENTRY_IN_TRANSITION)) { - unlock_vp(&fs); - fs.entry->eflags |= MAP_ENTRY_NEEDS_WAKEUP; - vm_map_unlock_and_wait(fs.map, 0); - } else - vm_map_unlock(fs.map); - goto RetryFault; - } - - MPASS((fs.entry->eflags & MAP_ENTRY_GUARD) == 0); - - if (wired) - fault_type = prot | (fault_type & VM_PROT_COPY); - else - KASSERT((fault_flags & VM_FAULT_WIRE) == 0, - ("!wired && VM_FAULT_WIRE")); - /* * Try to avoid lock contention on the top-level object through * special-case handling of some types of page faults, specifically, @@ -792,10 +1257,9 @@ RetryFault_oom: * multiple page faults of a similar type to run in parallel. */ if (fs.vp == NULL /* avoid locked vnode leak */ && - (fault_flags & (VM_FAULT_WIRE | VM_FAULT_DIRTY)) == 0) { + (fs.fault_flags & (VM_FAULT_WIRE | VM_FAULT_DIRTY)) == 0) { VM_OBJECT_RLOCK(fs.first_object); - rv = vm_fault_soft_fast(&fs, vaddr, prot, fault_type, - fault_flags, wired, m_hold); + rv = vm_fault_soft_fast(&fs); if (rv == KERN_SUCCESS) return (rv); if (!VM_OBJECT_TRYUPGRADE(fs.first_object)) { @@ -818,8 +1282,6 @@ RetryFault_oom: vm_object_reference_locked(fs.first_object); vm_object_pip_add(fs.first_object, 1); - fs.lookup_still_valid = true; - fs.m_cow = fs.m = fs.first_m = NULL; /* @@ -857,15 +1319,15 @@ RetryFault_oom: /* * The page is marked busy for other processes and the - * pagedaemon. If it still isn't completely valid - * (readable), jump to readrest, else break-out ( we - * found the page ). + * pagedaemon. If it still is completely valid we + * are done. */ - if (!vm_page_all_valid(fs.m)) - goto readrest; - break; /* break to PAGE HAS BEEN FOUND */ + if (vm_page_all_valid(fs.m)) { + VM_OBJECT_WUNLOCK(fs.object); + break; /* break to PAGE HAS BEEN FOUND. */ + } } - KASSERT(fs.m == NULL, ("fs.m should be NULL, not %p", fs.m)); + VM_OBJECT_ASSERT_WLOCKED(fs.object); /* * Page is not resident. If the pager might contain the page @@ -873,312 +1335,96 @@ RetryFault_oom: * page. (Default objects are zero-fill, so there is no real * pager for them.) */ - if (fs.object->type != OBJT_DEFAULT || - fs.object == fs.first_object) { - if ((fs.object->flags & OBJ_SIZEVNLOCK) != 0) { - rv = vm_fault_lock_vnode(&fs); - MPASS(rv == KERN_SUCCESS || - rv == KERN_RESOURCE_SHORTAGE); - if (rv == KERN_RESOURCE_SHORTAGE) - goto RetryFault; - } - if (fs.pindex >= fs.object->size) { + if (fs.m == NULL && (fs.object->type != OBJT_DEFAULT || + fs.object == fs.first_object)) { + rv = vm_fault_allocate(&fs); + switch (rv) { + case KERN_RESTART: unlock_and_deallocate(&fs); - return (KERN_OUT_OF_BOUNDS); - } - - if (fs.object == fs.first_object && - (fs.first_object->flags & OBJ_POPULATE) != 0 && - fs.first_object->shadow_count == 0) { - rv = vm_fault_populate(&fs, prot, fault_type, - fault_flags, wired, m_hold); - switch (rv) { - case KERN_SUCCESS: - case KERN_FAILURE: - unlock_and_deallocate(&fs); - return (rv); - case KERN_RESOURCE_SHORTAGE: - unlock_and_deallocate(&fs); - goto RetryFault; - case KERN_NOT_RECEIVER: - /* - * Pager's populate() method - * returned VM_PAGER_BAD. - */ - break; - default: - panic("inconsistent return codes"); - } - } - - /* - * Allocate a new page for this object/offset pair. - * - * Unlocked read of the p_flag is harmless. At - * worst, the P_KILLED might be not observed - * there, and allocation can fail, causing - * restart and new reading of the p_flag. - */ - dset = fs.object->domain.dr_policy; - if (dset == NULL) - dset = curthread->td_domain.dr_policy; - if (!vm_page_count_severe_set(&dset->ds_mask) || - P_KILLED(curproc)) { -#if VM_NRESERVLEVEL > 0 - vm_object_color(fs.object, atop(vaddr) - - fs.pindex); -#endif - alloc_req = P_KILLED(curproc) ? - VM_ALLOC_SYSTEM : VM_ALLOC_NORMAL; - if (fs.object->type != OBJT_VNODE && - fs.object->backing_object == NULL) - alloc_req |= VM_ALLOC_ZERO; - fs.m = vm_page_alloc(fs.object, fs.pindex, - alloc_req); - } - if (fs.m == NULL) { - unlock_and_deallocate(&fs); - if (vm_pfault_oom_attempts < 0 || - oom < vm_pfault_oom_attempts) { - oom++; - vm_waitpfault(dset, - vm_pfault_oom_wait * hz); - goto RetryFault_oom; - } - if (bootverbose) - printf( - "proc %d (%s) failed to alloc page on fault, starting OOM\n", - curproc->p_pid, curproc->p_comm); - vm_pageout_oom(VM_OOM_MEM_PF); + /* FALLTHROUGH */ + case KERN_RESOURCE_SHORTAGE: goto RetryFault; + case KERN_SUCCESS: + case KERN_FAILURE: + case KERN_OUT_OF_BOUNDS: + unlock_and_deallocate(&fs); + return (rv); + case KERN_NOT_RECEIVER: + break; + default: + panic("vm_fault: Unhandled rv %d", rv); } } -readrest: - /* - * At this point, we have either allocated a new page or found - * an existing page that is only partially valid. - * - * We hold a reference on the current object and the page is - * exclusive busied. - */ - - /* - * If the pager for the current object might have the page, - * then determine the number of additional pages to read and - * potentially reprioritize previously read pages for earlier - * reclamation. These operations should only be performed - * once per page fault. Even if the current pager doesn't - * have the page, the number of additional pages to read will - * apply to subsequent objects in the shadow chain. - */ - if (fs.object->type != OBJT_DEFAULT && nera == -1 && - !P_KILLED(curproc)) { - KASSERT(fs.lookup_still_valid, ("map unlocked")); - era = fs.entry->read_ahead; - behavior = vm_map_entry_behavior(fs.entry); - if (behavior == MAP_ENTRY_BEHAV_RANDOM) { - nera = 0; - } else if (behavior == MAP_ENTRY_BEHAV_SEQUENTIAL) { - nera = VM_FAULT_READ_AHEAD_MAX; - if (vaddr == fs.entry->next_read) - vm_fault_dontneed(&fs, vaddr, nera); - } else if (vaddr == fs.entry->next_read) { - /* - * This is a sequential fault. Arithmetically - * increase the requested number of pages in - * the read-ahead window. The requested - * number of pages is "# of sequential faults - * x (read ahead min + 1) + read ahead min" - */ - nera = VM_FAULT_READ_AHEAD_MIN; - if (era > 0) { - nera += era + 1; - if (nera > VM_FAULT_READ_AHEAD_MAX) - nera = VM_FAULT_READ_AHEAD_MAX; - } - if (era == VM_FAULT_READ_AHEAD_MAX) - vm_fault_dontneed(&fs, vaddr, nera); - } else { - /* - * This is a non-sequential fault. - */ - nera = 0; - } - if (era != nera) { - /* - * A read lock on the map suffices to update - * the read ahead count safely. - */ - fs.entry->read_ahead = nera; - } - - /* - * Prepare for unlocking the map. Save the map - * entry's start and end addresses, which are used to - * optimize the size of the pager operation below. - * Even if the map entry's addresses change after - * unlocking the map, using the saved addresses is - * safe. - */ - e_start = fs.entry->start; - e_end = fs.entry->end; - } - /* - * Call the pager to retrieve the page if there is a chance - * that the pager has it, and potentially retrieve additional - * pages at the same time. + * Default objects have no pager so no exclusive busy exists + * to protect this page in the chain. Skip to the next + * object without dropping the lock to preserve atomicity of + * shadow faults. */ if (fs.object->type != OBJT_DEFAULT) { /* - * Release the map lock before locking the vnode or - * sleeping in the pager. (If the current object has - * a shadow, then an earlier iteration of this loop - * may have already unlocked the map.) - */ - unlock_map(&fs); - - rv = vm_fault_lock_vnode(&fs); - MPASS(rv == KERN_SUCCESS || - rv == KERN_RESOURCE_SHORTAGE); - if (rv == KERN_RESOURCE_SHORTAGE) - goto RetryFault; - KASSERT(fs.vp == NULL || !fs.map->system_map, - ("vm_fault: vnode-backed object mapped by system map")); + * At this point, we have either allocated a new page + * or found an existing page that is only partially + * valid. + * + * We hold a reference on the current object and the + * page is exclusive busied. The exclusive busy + * prevents simultaneous faults and collapses while + * the object lock is dropped. + */ + VM_OBJECT_WUNLOCK(fs.object); /* - * Page in the requested page and hint the pager, - * that it may bring up surrounding pages. + * If the pager for the current object might have + * the page, then determine the number of additional + * pages to read and potentially reprioritize + * previously read pages for earlier reclamation. + * These operations should only be performed once per + * page fault. Even if the current pager doesn't + * have the page, the number of additional pages to + * read will apply to subsequent objects in the + * shadow chain. */ - if (nera == -1 || behavior == MAP_ENTRY_BEHAV_RANDOM || - P_KILLED(curproc)) { - behind = 0; - ahead = 0; - } else { - /* Is this a sequential fault? */ - if (nera > 0) { - behind = 0; - ahead = nera; - } else { - /* - * Request a cluster of pages that is - * aligned to a VM_FAULT_READ_DEFAULT - * page offset boundary within the - * object. Alignment to a page offset - * boundary is more likely to coincide - * with the underlying file system - * block than alignment to a virtual - * address boundary. - */ - cluster_offset = fs.pindex % - VM_FAULT_READ_DEFAULT; - behind = ulmin(cluster_offset, - atop(vaddr - e_start)); - ahead = VM_FAULT_READ_DEFAULT - 1 - - cluster_offset; - } - ahead = ulmin(ahead, atop(e_end - vaddr) - 1); - } - VM_OBJECT_WUNLOCK(fs.object); - rv = vm_pager_get_pages(fs.object, &fs.m, 1, - &behind, &ahead); - VM_OBJECT_WLOCK(fs.object); - if (rv == VM_PAGER_OK) { + if (nera == -1 && !P_KILLED(curproc)) + nera = vm_fault_readahead(&fs); + + rv = vm_fault_getpages(&fs, nera, &behind, &ahead); + if (rv == KERN_SUCCESS) { faultcount = behind + 1 + ahead; hardfault = true; - break; /* break to PAGE HAS BEEN FOUND */ + break; /* break to PAGE HAS BEEN FOUND. */ } - if (rv == VM_PAGER_ERROR) - printf("vm_fault: pager read error, pid %d (%s)\n", - curproc->p_pid, curproc->p_comm); - - /* - * If an I/O error occurred or the requested page was - * outside the range of the pager, clean up and return - * an error. - */ - if (rv == VM_PAGER_ERROR || rv == VM_PAGER_BAD) { + if (rv == KERN_RESOURCE_SHORTAGE) + goto RetryFault; + VM_OBJECT_WLOCK(fs.object); + if (rv == KERN_OUT_OF_BOUNDS) { fault_page_free(&fs.m); unlock_and_deallocate(&fs); - return (KERN_OUT_OF_BOUNDS); + return (rv); } - } /* - * The requested page does not exist at this object/ - * offset. Remove the invalid page from the object, - * waking up anyone waiting for it, and continue on to - * the next object. However, if this is the top-level - * object, we must leave the busy page in place to - * prevent another process from rushing past us, and - * inserting the page in that object at the same time - * that we are. + * The page was not found in the current object. Try to + * traverse into a backing object or zero fill if none is + * found. */ - if (fs.object == fs.first_object) { - fs.first_m = fs.m; - fs.m = NULL; - } else - fault_page_free(&fs.m); - - /* - * Move on to the next object. Lock the next object before - * unlocking the current one. - */ - next_object = fs.object->backing_object; - if (next_object == NULL) { - /* - * If there's no object left, fill the page in the top - * object with zeros. - */ - if (fs.object != fs.first_object) { - vm_object_pip_wakeup(fs.object); - VM_OBJECT_WUNLOCK(fs.object); - - fs.object = fs.first_object; - fs.pindex = fs.first_pindex; - VM_OBJECT_WLOCK(fs.object); - } - MPASS(fs.first_m != NULL); - MPASS(fs.m == NULL); - fs.m = fs.first_m; - fs.first_m = NULL; - - /* - * Zero the page if necessary and mark it valid. - */ - if ((fs.m->flags & PG_ZERO) == 0) { - pmap_zero_page(fs.m); - } else { - VM_CNT_INC(v_ozfod); - } - VM_CNT_INC(v_zfod); - vm_page_valid(fs.m); - /* Don't try to prefault neighboring pages. */ - faultcount = 1; - break; /* break to PAGE HAS BEEN FOUND */ - } else { - MPASS(fs.first_m != NULL); - KASSERT(fs.object != next_object, - ("object loop %p", next_object)); - VM_OBJECT_WLOCK(next_object); - vm_object_pip_add(next_object, 1); - if (fs.object != fs.first_object) - vm_object_pip_wakeup(fs.object); - fs.pindex += - OFF_TO_IDX(fs.object->backing_object_offset); - VM_OBJECT_WUNLOCK(fs.object); - fs.object = next_object; - } + if (vm_fault_next(&fs)) + continue; + VM_OBJECT_WUNLOCK(fs.object); + vm_fault_zerofill(&fs); + /* Don't try to prefault neighboring pages. */ + faultcount = 1; + break; /* break to PAGE HAS BEEN FOUND. */ } - vm_page_assert_xbusied(fs.m); - /* - * PAGE HAS BEEN FOUND. [Loop invariant still holds -- the object lock - * is held.] + * PAGE HAS BEEN FOUND. A valid page has been found and exclusively + * busied. The object lock must no longer be held. */ + vm_page_assert_xbusied(fs.m); + VM_OBJECT_ASSERT_UNLOCKED(fs.object); /* * If the page is being written, but isn't already owned by the @@ -1189,87 +1435,8 @@ readrest: /* * We only really need to copy if we want to write it. */ - if ((fault_type & (VM_PROT_COPY | VM_PROT_WRITE)) != 0) { - /* - * This allows pages to be virtually copied from a - * backing_object into the first_object, where the - * backing object has no other refs to it, and cannot - * gain any more refs. Instead of a bcopy, we just - * move the page from the backing object to the - * first object. Note that we must mark the page - * dirty in the first object so that it will go out - * to swap when needed. - */ - is_first_object_locked = false; - if ( - /* - * Only one shadow object - */ - (fs.object->shadow_count == 1) && - /* - * No COW refs, except us - */ - (fs.object->ref_count == 1) && - /* - * No one else can look this object up - */ - (fs.object->handle == NULL) && - /* - * No other ways to look the object up - */ - ((fs.object->flags & OBJ_ANON) != 0) && - (is_first_object_locked = VM_OBJECT_TRYWLOCK(fs.first_object)) && - /* - * We don't chase down the shadow chain - */ - fs.object == fs.first_object->backing_object) { - - /* - * Remove but keep xbusy for replace. fs.m is - * moved into fs.first_object and left busy - * while fs.first_m is conditionally freed. - */ - vm_page_remove_xbusy(fs.m); - vm_page_replace(fs.m, fs.first_object, - fs.first_pindex, fs.first_m); - vm_page_dirty(fs.m); -#if VM_NRESERVLEVEL > 0 - /* - * Rename the reservation. - */ - vm_reserv_rename(fs.m, fs.first_object, - fs.object, OFF_TO_IDX( - fs.first_object->backing_object_offset)); -#endif - VM_OBJECT_WUNLOCK(fs.object); - fs.first_m = fs.m; - fs.m = NULL; - VM_CNT_INC(v_cow_optim); - } else { - VM_OBJECT_WUNLOCK(fs.object); - /* - * Oh, well, lets copy it. - */ - pmap_copy_page(fs.m, fs.first_m); - vm_page_valid(fs.first_m); - if (wired && (fault_flags & - VM_FAULT_WIRE) == 0) { - vm_page_wire(fs.first_m); - vm_page_unwire(fs.m, PQ_INACTIVE); - } - /* - * Save the cow page to be released after - * pmap_enter is complete. - */ - fs.m_cow = fs.m; - fs.m = NULL; - } - /* - * fs.object != fs.first_object due to above - * conditional - */ - vm_object_pip_wakeup(fs.object); - + if ((fs.fault_type & (VM_PROT_COPY | VM_PROT_WRITE)) != 0) { + vm_fault_cow(&fs); /* * We only try to prefault read-only mappings to the * neighboring pages when this copy-on-write fault is @@ -1279,18 +1446,8 @@ readrest: if (faultcount == 0) faultcount = 1; - /* - * Only use the new page below... - */ - fs.object = fs.first_object; - fs.pindex = fs.first_pindex; - fs.m = fs.first_m; - if (!is_first_object_locked) - VM_OBJECT_WLOCK(fs.object); - VM_CNT_INC(v_cow_faults); - curthread->td_cow++; } else { - prot &= ~VM_PROT_WRITE; + fs.prot &= ~VM_PROT_WRITE; } } @@ -1299,57 +1456,15 @@ readrest: * lookup. */ if (!fs.lookup_still_valid) { - if (!vm_map_trylock_read(fs.map)) { - unlock_and_deallocate(&fs); - goto RetryFault; - } - fs.lookup_still_valid = true; - if (fs.map->timestamp != fs.map_generation) { - result = vm_map_lookup_locked(&fs.map, vaddr, fault_type, - &fs.entry, &retry_object, &retry_pindex, &retry_prot, &wired); - - /* - * If we don't need the page any longer, put it on the inactive - * list (the easiest thing to do here). If no one needs it, - * pageout will grab it eventually. - */ - if (result != KERN_SUCCESS) { - unlock_and_deallocate(&fs); - - /* - * If retry of map lookup would have blocked then - * retry fault from start. - */ - if (result == KERN_FAILURE) - goto RetryFault; - return (result); - } - if ((retry_object != fs.first_object) || - (retry_pindex != fs.first_pindex)) { - unlock_and_deallocate(&fs); + result = vm_fault_relookup(&fs); + if (result != KERN_SUCCESS) { + fault_deallocate(&fs); + if (result == KERN_RESTART) goto RetryFault; - } - - /* - * Check whether the protection has changed or the object has - * been copied while we left the map unlocked. Changing from - * read to write permission is OK - we leave the page - * write-protected, and catch the write fault. Changing from - * write to read permission means that we can't mark the page - * write-enabled after all. - */ - prot &= retry_prot; - fault_type &= retry_prot; - if (prot == 0) { - unlock_and_deallocate(&fs); - goto RetryFault; - } - - /* Reassert because wired may have changed. */ - KASSERT(wired || (fault_flags & VM_FAULT_WIRE) == 0, - ("!wired && VM_FAULT_WIRE")); + return (result); } } + VM_OBJECT_ASSERT_UNLOCKED(fs.object); /* * If the page was filled by a pager, save the virtual address that @@ -1360,16 +1475,15 @@ readrest: if (hardfault) fs.entry->next_read = vaddr + ptoa(ahead) + PAGE_SIZE; - vm_page_assert_xbusied(fs.m); - vm_fault_dirty(fs.entry, fs.m, prot, fault_type, fault_flags); - /* * Page must be completely valid or it is not fit to * map into user space. vm_pager_get_pages() ensures this. */ + vm_page_assert_xbusied(fs.m); KASSERT(vm_page_all_valid(fs.m), ("vm_fault: page %p partially invalid", fs.m)); - VM_OBJECT_WUNLOCK(fs.object); + + vm_fault_dirty(&fs, fs.m); /* * Put this page into the physical map. We had to do the unlock above @@ -1377,10 +1491,10 @@ readrest: * back on the active queue until later so that the pageout daemon * won't find it (yet). */ - pmap_enter(fs.map->pmap, vaddr, fs.m, prot, - fault_type | (wired ? PMAP_ENTER_WIRED : 0), 0); - if (faultcount != 1 && (fault_flags & VM_FAULT_WIRE) == 0 && - wired == 0) + pmap_enter(fs.map->pmap, vaddr, fs.m, fs.prot, + fs.fault_type | (fs.wired ? PMAP_ENTER_WIRED : 0), 0); + if (faultcount != 1 && (fs.fault_flags & VM_FAULT_WIRE) == 0 && + fs.wired == 0) vm_fault_prefault(&fs, vaddr, faultcount > 0 ? behind : PFBAK, faultcount > 0 ? ahead : PFFOR, false); @@ -1389,12 +1503,12 @@ readrest: * If the page is not wired down, then put it where the pageout daemon * can find it. */ - if ((fault_flags & VM_FAULT_WIRE) != 0) + if ((fs.fault_flags & VM_FAULT_WIRE) != 0) vm_page_wire(fs.m); else vm_page_activate(fs.m); - if (m_hold != NULL) { - *m_hold = fs.m; + if (fs.m_hold != NULL) { + (*fs.m_hold) = fs.m; vm_page_wire(fs.m); } vm_page_xunbusy(fs.m); @@ -1410,7 +1524,7 @@ readrest: #ifdef RACCT if (racct_enable && fs.object->type == OBJT_VNODE) { PROC_LOCK(curproc); - if ((fault_type & (VM_PROT_COPY | VM_PROT_WRITE)) != 0) { + if ((fs.fault_type & (VM_PROT_COPY | VM_PROT_WRITE)) != 0) { racct_add_force(curproc, RACCT_WRITEBPS, PAGE_SIZE + behind * PAGE_SIZE); racct_add_force(curproc, RACCT_WRITEIOPS, 1); @@ -1451,17 +1565,11 @@ vm_fault_dontneed(const struct faultstate *fs, vm_offset_t vaddr, int ahead) vm_size_t size; object = fs->object; - VM_OBJECT_ASSERT_WLOCKED(object); + VM_OBJECT_ASSERT_UNLOCKED(object); first_object = fs->first_object; - if (first_object != object) { - if (!VM_OBJECT_TRYWLOCK(first_object)) { - VM_OBJECT_WUNLOCK(object); - VM_OBJECT_WLOCK(first_object); - VM_OBJECT_WLOCK(object); - } - } /* Neither fictitious nor unmanaged pages can be reclaimed. */ if ((first_object->flags & (OBJ_FICTITIOUS | OBJ_UNMANAGED)) == 0) { + VM_OBJECT_RLOCK(first_object); size = VM_FAULT_DONTNEED_MIN; if (MAXPAGESIZES > 1 && size < pagesizes[1]) size = pagesizes[1]; @@ -1501,9 +1609,8 @@ vm_fault_dontneed(const struct faultstate *fs, vm_offset_t vaddr, int ahead) vm_page_deactivate(m); } } + VM_OBJECT_RUNLOCK(first_object); } - if (first_object != object) - VM_OBJECT_WUNLOCK(first_object); } /* diff --git a/sys/vm/vm_glue.c b/sys/vm/vm_glue.c index 5aac813abd97f..fd6756c9694ca 100644 --- a/sys/vm/vm_glue.c +++ b/sys/vm/vm_glue.c @@ -340,10 +340,12 @@ vm_thread_stack_create(struct domainset *ds, vm_object_t *ksobjp, int pages) * page of stack. */ VM_OBJECT_WLOCK(ksobj); - (void)vm_page_grab_pages(ksobj, 0, VM_ALLOC_NORMAL | VM_ALLOC_NOBUSY | - VM_ALLOC_WIRED, ma, pages); - for (i = 0; i < pages; i++) - ma[i]->valid = VM_PAGE_BITS_ALL; + (void)vm_page_grab_pages(ksobj, 0, VM_ALLOC_NORMAL | VM_ALLOC_WIRED, + ma, pages); + for (i = 0; i < pages; i++) { + vm_page_valid(ma[i]); + vm_page_xunbusy(ma[i]); + } VM_OBJECT_WUNLOCK(ksobj); pmap_qenter(ks, ma, pages); *ksobjp = ksobj; diff --git a/sys/vm/vm_kern.c b/sys/vm/vm_kern.c index ee3fbedbba2b0..8541ef1282166 100644 --- a/sys/vm/vm_kern.c +++ b/sys/vm/vm_kern.c @@ -193,7 +193,7 @@ kmem_alloc_attr_domain(int domain, vm_size_t size, int flags, vm_paddr_t low, if (vmem_alloc(vmem, size, M_BESTFIT | flags, &addr)) return (0); offset = addr - VM_MIN_KERNEL_ADDRESS; - pflags = malloc2vm_flags(flags) | VM_ALLOC_NOBUSY | VM_ALLOC_WIRED; + pflags = malloc2vm_flags(flags) | VM_ALLOC_WIRED; pflags &= ~(VM_ALLOC_NOWAIT | VM_ALLOC_WAITOK | VM_ALLOC_WAITFAIL); pflags |= VM_ALLOC_NOWAIT; prot = (flags & M_EXEC) != 0 ? VM_PROT_ALL : VM_PROT_RW; @@ -223,7 +223,8 @@ retry: vm_phys_domain(m), domain)); if ((flags & M_ZERO) && (m->flags & PG_ZERO) == 0) pmap_zero_page(m); - m->valid = VM_PAGE_BITS_ALL; + vm_page_valid(m); + vm_page_xunbusy(m); pmap_enter(kernel_pmap, addr + i, m, prot, prot | PMAP_ENTER_WIRED, 0); } @@ -284,7 +285,7 @@ kmem_alloc_contig_domain(int domain, vm_size_t size, int flags, vm_paddr_t low, if (vmem_alloc(vmem, size, flags | M_BESTFIT, &addr)) return (0); offset = addr - VM_MIN_KERNEL_ADDRESS; - pflags = malloc2vm_flags(flags) | VM_ALLOC_NOBUSY | VM_ALLOC_WIRED; + pflags = malloc2vm_flags(flags) | VM_ALLOC_WIRED; pflags &= ~(VM_ALLOC_NOWAIT | VM_ALLOC_WAITOK | VM_ALLOC_WAITFAIL); pflags |= VM_ALLOC_NOWAIT; npages = atop(size); @@ -315,7 +316,8 @@ retry: for (; m < end_m; m++) { if ((flags & M_ZERO) && (m->flags & PG_ZERO) == 0) pmap_zero_page(m); - m->valid = VM_PAGE_BITS_ALL; + vm_page_valid(m); + vm_page_xunbusy(m); pmap_enter(kernel_pmap, tmp, m, VM_PROT_RW, VM_PROT_RW | PMAP_ENTER_WIRED, 0); tmp += PAGE_SIZE; @@ -465,7 +467,7 @@ kmem_back_domain(int domain, vm_object_t object, vm_offset_t addr, ("kmem_back_domain: only supports kernel object.")); offset = addr - VM_MIN_KERNEL_ADDRESS; - pflags = malloc2vm_flags(flags) | VM_ALLOC_NOBUSY | VM_ALLOC_WIRED; + pflags = malloc2vm_flags(flags) | VM_ALLOC_WIRED; pflags &= ~(VM_ALLOC_NOWAIT | VM_ALLOC_WAITOK | VM_ALLOC_WAITFAIL); if (flags & M_WAITOK) pflags |= VM_ALLOC_WAITFAIL; @@ -498,7 +500,8 @@ retry: pmap_zero_page(m); KASSERT((m->oflags & VPO_UNMANAGED) != 0, ("kmem_malloc: page %p is managed", m)); - m->valid = VM_PAGE_BITS_ALL; + vm_page_valid(m); + vm_page_xunbusy(m); pmap_enter(kernel_pmap, addr + i, m, prot, prot | PMAP_ENTER_WIRED, 0); #if VM_NRESERVLEVEL > 0 diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index 0e1279e610ea1..088e34eb92cf7 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -2387,7 +2387,7 @@ vm_map_entry_clone(vm_map_t map, vm_map_entry_t entry) * This routine is called only when it is known that * the entry must be split. */ -static void +static inline void _vm_map_clip_start(vm_map_t map, vm_map_entry_t entry, vm_offset_t start) { vm_map_entry_t new_entry; @@ -2407,6 +2407,28 @@ _vm_map_clip_start(vm_map_t map, vm_map_entry_t entry, vm_offset_t start) } /* + * vm_map_lookup_clip_start: + * + * Find the entry at or just after 'start', and clip it if 'start' is in + * the interior of the entry. Return entry after 'start', and in + * prev_entry set the entry before 'start'. + */ +static inline vm_map_entry_t +vm_map_lookup_clip_start(vm_map_t map, vm_offset_t start, + vm_map_entry_t *prev_entry) +{ + vm_map_entry_t entry; + + if (vm_map_lookup_entry(map, start, prev_entry)) { + entry = *prev_entry; + vm_map_clip_start(map, entry, start); + *prev_entry = vm_map_entry_pred(entry); + } else + entry = vm_map_entry_succ(*prev_entry); + return (entry); +} + +/* * vm_map_clip_end: [ internal use only ] * * Asserts that the given entry ends at or before @@ -2423,7 +2445,7 @@ _vm_map_clip_start(vm_map_t map, vm_map_entry_t entry, vm_offset_t start) * This routine is called only when it is known that * the entry must be split. */ -static void +static inline void _vm_map_clip_end(vm_map_t map, vm_map_entry_t entry, vm_offset_t end) { vm_map_entry_t new_entry; @@ -2477,19 +2499,12 @@ vm_map_submap( vm_map_unlock(submap); vm_map_lock(map); - VM_MAP_RANGE_CHECK(map, start, end); - - if (vm_map_lookup_entry(map, start, &entry)) { + if (vm_map_lookup_entry(map, start, &entry) && entry->end >= end && + (entry->eflags & MAP_ENTRY_COW) == 0 && + entry->object.vm_object == NULL) { vm_map_clip_start(map, entry, start); - } else - entry = vm_map_entry_succ(entry); - - vm_map_clip_end(map, entry, end); - - if ((entry->start == start) && (entry->end == end) && - ((entry->eflags & MAP_ENTRY_COW) == 0) && - (entry->object.vm_object == NULL)) { + vm_map_clip_end(map, entry, end); entry->object.sub_map = submap; entry->eflags |= MAP_ENTRY_IS_SUB_MAP; result = KERN_SUCCESS; @@ -2842,15 +2857,6 @@ vm_map_madvise( */ VM_MAP_RANGE_CHECK(map, start, end); - if (vm_map_lookup_entry(map, start, &entry)) { - if (modify_map) - vm_map_clip_start(map, entry, start); - prev_entry = vm_map_entry_pred(entry); - } else { - prev_entry = entry; - entry = vm_map_entry_succ(entry); - } - if (modify_map) { /* * madvise behaviors that are implemented in the vm_map_entry. @@ -2858,8 +2864,9 @@ vm_map_madvise( * We clip the vm_map_entry so that behavioral changes are * limited to the specified address range. */ - for (; entry->start < end; - prev_entry = entry, entry = vm_map_entry_succ(entry)) { + for (entry = vm_map_lookup_clip_start(map, start, &prev_entry); + entry->start < end; + prev_entry = entry, entry = vm_map_entry_succ(entry)) { if ((entry->eflags & MAP_ENTRY_IS_SUB_MAP) != 0) continue; @@ -2907,6 +2914,8 @@ vm_map_madvise( * Since we don't clip the vm_map_entry, we have to clip * the vm_object pindex and count. */ + if (!vm_map_lookup_entry(map, start, &entry)) + entry = vm_map_entry_succ(entry); for (; entry->start < end; entry = vm_map_entry_succ(entry)) { vm_offset_t useEnd, useStart; @@ -3010,13 +3019,8 @@ vm_map_inherit(vm_map_t map, vm_offset_t start, vm_offset_t end, return (KERN_SUCCESS); vm_map_lock(map); VM_MAP_RANGE_CHECK(map, start, end); - if (vm_map_lookup_entry(map, start, &prev_entry)) { - entry = prev_entry; - vm_map_clip_start(map, entry, start); - prev_entry = vm_map_entry_pred(entry); - } else - entry = vm_map_entry_succ(prev_entry); - for (; entry->start < end; + for (entry = vm_map_lookup_clip_start(map, start, &prev_entry); + entry->start < end; prev_entry = entry, entry = vm_map_entry_succ(entry)) { vm_map_clip_end(map, entry, end); if ((entry->eflags & MAP_ENTRY_GUARD) == 0 || @@ -3739,29 +3743,18 @@ vm_map_entry_delete(vm_map_t map, vm_map_entry_t entry) int vm_map_delete(vm_map_t map, vm_offset_t start, vm_offset_t end) { - vm_map_entry_t entry; - vm_map_entry_t first_entry; + vm_map_entry_t entry, next_entry; VM_MAP_ASSERT_LOCKED(map); if (start == end) return (KERN_SUCCESS); /* - * Find the start of the region, and clip it + * Find the start of the region, and clip it. + * Step through all entries in this region. */ - if (!vm_map_lookup_entry(map, start, &first_entry)) - entry = vm_map_entry_succ(first_entry); - else { - entry = first_entry; - vm_map_clip_start(map, entry, start); - } - - /* - * Step through all entries in this region - */ - while (entry->start < end) { - vm_map_entry_t next; - + for (entry = vm_map_lookup_clip_start(map, start, &entry); + entry->start < end; entry = next_entry) { /* * Wait for wiring or unwiring of an entry to complete. * Also wait for any system wirings to disappear on @@ -3772,7 +3765,6 @@ vm_map_delete(vm_map_t map, vm_offset_t start, vm_offset_t end) vm_map_entry_system_wired_count(entry) != 0)) { unsigned int last_timestamp; vm_offset_t saved_start; - vm_map_entry_t tmp_entry; saved_start = entry->start; entry->eflags |= MAP_ENTRY_NEEDS_WAKEUP; @@ -3786,20 +3778,14 @@ vm_map_delete(vm_map_t map, vm_offset_t start, vm_offset_t end) * Specifically, the entry may have been * clipped, merged, or deleted. */ - if (!vm_map_lookup_entry(map, saved_start, - &tmp_entry)) - entry = vm_map_entry_succ(tmp_entry); - else { - entry = tmp_entry; - vm_map_clip_start(map, entry, - saved_start); - } - } + next_entry = vm_map_lookup_clip_start(map, + saved_start, &next_entry); + } else + next_entry = entry; continue; } vm_map_clip_end(map, entry, end); - - next = vm_map_entry_succ(entry); + next_entry = vm_map_entry_succ(entry); /* * Unwire before removing addresses from the pmap; otherwise, @@ -3827,7 +3813,6 @@ vm_map_delete(vm_map_t map, vm_offset_t start, vm_offset_t end) * will be set in the wrong object!) */ vm_map_entry_delete(map, entry); - entry = next; } return (KERN_SUCCESS); } diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index 395ba6bad8c27..dc793b60456a6 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -1700,13 +1700,24 @@ vm_object_scan_all_shadowed(vm_object_t object) if (new_pindex >= object->size) break; - /* - * If the backing object page is busy a grandparent or older - * page may still be undergoing CoW. It is not safe to - * collapse the backing object until it is quiesced. - */ - if (p != NULL && vm_page_busied(p)) - return (false); + if (p != NULL) { + /* + * If the backing object page is busy a + * grandparent or older page may still be + * undergoing CoW. It is not safe to collapse + * the backing object until it is quiesced. + */ + if (vm_page_tryxbusy(p) == 0) + return (false); + + /* + * We raced with the fault handler that left + * newly allocated invalid page on the object + * queue and retried. + */ + if (!vm_page_all_valid(p)) + goto unbusy_ret; + } /* * See if the parent has the page or if the parent's object @@ -1717,15 +1728,24 @@ vm_object_scan_all_shadowed(vm_object_t object) * object and we might as well give up now. */ pp = vm_page_lookup(object, new_pindex); + /* - * The valid check here is stable due to object lock being - * required to clear valid and initiate paging. + * The valid check here is stable due to object lock + * being required to clear valid and initiate paging. + * Busy of p disallows fault handler to validate pp. */ if ((pp == NULL || vm_page_none_valid(pp)) && !vm_pager_has_page(object, new_pindex, NULL, NULL)) - return (false); + goto unbusy_ret; + if (p != NULL) + vm_page_xunbusy(p); } return (true); + +unbusy_ret: + if (p != NULL) + vm_page_xunbusy(p); + return (false); } static void @@ -1776,6 +1796,14 @@ vm_object_collapse_scan(vm_object_t object) continue; } + if (!vm_page_all_valid(p)) { + KASSERT(!pmap_page_is_mapped(p), + ("freeing mapped page %p", p)); + if (vm_page_remove(p)) + vm_page_free(p); + continue; + } + pp = vm_page_lookup(object, new_pindex); if (pp != NULL && vm_page_tryxbusy(pp) == 0) { vm_page_xunbusy(p); diff --git a/sys/vm/vm_param.h b/sys/vm/vm_param.h index 05cdb718dc33b..16105589ba8aa 100644 --- a/sys/vm/vm_param.h +++ b/sys/vm/vm_param.h @@ -114,6 +114,7 @@ struct xswdev { #define KERN_NOT_RECEIVER 7 #define KERN_NO_ACCESS 8 #define KERN_OUT_OF_BOUNDS 9 +#define KERN_RESTART 10 #ifndef PA_LOCK_COUNT #ifdef SMP diff --git a/sys/x86/cpufreq/est.c b/sys/x86/cpufreq/est.c index 0cd0358e16183..073a94ae0cae1 100644 --- a/sys/x86/cpufreq/est.c +++ b/sys/x86/cpufreq/est.c @@ -50,6 +50,8 @@ __FBSDID("$FreeBSD$"); #include <dev/acpica/acpivar.h> #include "acpi_if.h" +#include <x86/cpufreq/hwpstate_intel_internal.h> + /* Status/control registers (from the IA-32 System Programming Guide). */ #define MSR_PERF_STATUS 0x198 #define MSR_PERF_CTL 0x199 @@ -898,6 +900,7 @@ static driver_t est_driver = { static devclass_t est_devclass; DRIVER_MODULE(est, cpu, est_driver, est_devclass, 0, 0); +MODULE_DEPEND(est, hwpstate_intel, 1, 1, 1); static int est_features(driver_t *driver, u_int *features) @@ -916,6 +919,15 @@ est_identify(driver_t *driver, device_t parent) { device_t child; + /* + * Defer to hwpstate if it is present. This priority logic + * should be replaced with normal newbus probing in the + * future. + */ + intel_hwpstate_identify(NULL, parent); + if (device_find_child(parent, "hwpstate_intel", -1) != NULL) + return; + /* Make sure we're not being doubly invoked. */ if (device_find_child(parent, "est", -1) != NULL) return; diff --git a/sys/x86/cpufreq/hwpstate.c b/sys/x86/cpufreq/hwpstate_amd.c index ab90ac2b32771..71b24edcd3ad7 100644 --- a/sys/x86/cpufreq/hwpstate.c +++ b/sys/x86/cpufreq/hwpstate_amd.c @@ -315,7 +315,8 @@ hwpstate_identify(driver_t *driver, device_t parent) if (device_find_child(parent, "hwpstate", -1) != NULL) return; - if (cpu_vendor_id != CPU_VENDOR_AMD || CPUID_TO_FAMILY(cpu_id) < 0x10) + if ((cpu_vendor_id != CPU_VENDOR_AMD || CPUID_TO_FAMILY(cpu_id) < 0x10) && + cpu_vendor_id != CPU_VENDOR_HYGON) return; /* @@ -446,6 +447,7 @@ hwpstate_get_info_from_msr(device_t dev) hwpstate_set[i].freq = (100 * (fid + 0x10)) >> did; break; case 0x17: + case 0x18: did = AMD_17H_CUR_DID(msr); if (did == 0) { HWPSTATE_DEBUG(dev, "unexpected did: 0\n"); @@ -455,8 +457,10 @@ hwpstate_get_info_from_msr(device_t dev) hwpstate_set[i].freq = (200 * fid) / did; break; default: - HWPSTATE_DEBUG(dev, "get_info_from_msr: AMD family" - " 0x%02x CPUs are not supported yet\n", family); + HWPSTATE_DEBUG(dev, "get_info_from_msr: %s family" + " 0x%02x CPUs are not supported yet\n", + cpu_vendor_id == CPU_VENDOR_HYGON ? "Hygon" : "AMD", + family); return (ENXIO); } hwpstate_set[i].pstate_id = i; diff --git a/sys/x86/cpufreq/hwpstate_intel.c b/sys/x86/cpufreq/hwpstate_intel.c new file mode 100644 index 0000000000000..93bde7a10d001 --- /dev/null +++ b/sys/x86/cpufreq/hwpstate_intel.c @@ -0,0 +1,517 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2018 Intel Corporation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted providing that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/types.h> +#include <sys/sbuf.h> +#include <sys/module.h> +#include <sys/systm.h> +#include <sys/errno.h> +#include <sys/param.h> +#include <sys/kernel.h> +#include <sys/bus.h> +#include <sys/cpu.h> +#include <sys/smp.h> +#include <sys/proc.h> +#include <sys/sched.h> + +#include <machine/cpu.h> +#include <machine/md_var.h> +#include <machine/cputypes.h> +#include <machine/specialreg.h> + +#include <contrib/dev/acpica/include/acpi.h> + +#include <dev/acpica/acpivar.h> + +#include <x86/cpufreq/hwpstate_intel_internal.h> + +#include "acpi_if.h" +#include "cpufreq_if.h" + +extern uint64_t tsc_freq; + +static int intel_hwpstate_probe(device_t dev); +static int intel_hwpstate_attach(device_t dev); +static int intel_hwpstate_detach(device_t dev); +static int intel_hwpstate_suspend(device_t dev); +static int intel_hwpstate_resume(device_t dev); + +static int intel_hwpstate_get(device_t dev, struct cf_setting *cf); +static int intel_hwpstate_type(device_t dev, int *type); + +static device_method_t intel_hwpstate_methods[] = { + /* Device interface */ + DEVMETHOD(device_identify, intel_hwpstate_identify), + DEVMETHOD(device_probe, intel_hwpstate_probe), + DEVMETHOD(device_attach, intel_hwpstate_attach), + DEVMETHOD(device_detach, intel_hwpstate_detach), + DEVMETHOD(device_suspend, intel_hwpstate_suspend), + DEVMETHOD(device_resume, intel_hwpstate_resume), + + /* cpufreq interface */ + DEVMETHOD(cpufreq_drv_get, intel_hwpstate_get), + DEVMETHOD(cpufreq_drv_type, intel_hwpstate_type), + + DEVMETHOD_END +}; + +struct hwp_softc { + device_t dev; + bool hwp_notifications; + bool hwp_activity_window; + bool hwp_pref_ctrl; + bool hwp_pkg_ctrl; + + uint64_t req; /* Cached copy of last request */ + + uint8_t high; + uint8_t guaranteed; + uint8_t efficient; + uint8_t low; +}; + +static devclass_t hwpstate_intel_devclass; +static driver_t hwpstate_intel_driver = { + "hwpstate_intel", + intel_hwpstate_methods, + sizeof(struct hwp_softc), +}; + +DRIVER_MODULE(hwpstate_intel, cpu, hwpstate_intel_driver, + hwpstate_intel_devclass, NULL, NULL); +MODULE_VERSION(hwpstate_intel, 1); + +static int +intel_hwp_dump_sysctl_handler(SYSCTL_HANDLER_ARGS) +{ + device_t dev; + struct pcpu *pc; + struct sbuf *sb; + struct hwp_softc *sc; + uint64_t data, data2; + int ret; + + sc = (struct hwp_softc *)arg1; + dev = sc->dev; + + pc = cpu_get_pcpu(dev); + if (pc == NULL) + return (ENXIO); + + sb = sbuf_new(NULL, NULL, 1024, SBUF_FIXEDLEN | SBUF_INCLUDENUL); + sbuf_putc(sb, '\n'); + thread_lock(curthread); + sched_bind(curthread, pc->pc_cpuid); + thread_unlock(curthread); + + rdmsr_safe(MSR_IA32_PM_ENABLE, &data); + sbuf_printf(sb, "CPU%d: HWP %sabled\n", pc->pc_cpuid, + ((data & 1) ? "En" : "Dis")); + + if (data == 0) { + ret = 0; + goto out; + } + + rdmsr_safe(MSR_IA32_HWP_CAPABILITIES, &data); + sbuf_printf(sb, "\tHighest Performance: %03ju\n", data & 0xff); + sbuf_printf(sb, "\tGuaranteed Performance: %03ju\n", (data >> 8) & 0xff); + sbuf_printf(sb, "\tEfficient Performance: %03ju\n", (data >> 16) & 0xff); + sbuf_printf(sb, "\tLowest Performance: %03ju\n", (data >> 24) & 0xff); + + rdmsr_safe(MSR_IA32_HWP_REQUEST, &data); + if (sc->hwp_pkg_ctrl && (data & IA32_HWP_REQUEST_PACKAGE_CONTROL)) { + rdmsr_safe(MSR_IA32_HWP_REQUEST_PKG, &data2); + } + + sbuf_putc(sb, '\n'); + +#define pkg_print(x, name, offset) do { \ + if (!sc->hwp_pkg_ctrl || (data & x) != 0) \ + sbuf_printf(sb, "\t%s: %03ju\n", name, (data >> offset) & 0xff);\ + else \ + sbuf_printf(sb, "\t%s: %03ju\n", name, (data2 >> offset) & 0xff);\ +} while (0) + + pkg_print(IA32_HWP_REQUEST_EPP_VALID, + "Requested Efficiency Performance Preference", 24); + pkg_print(IA32_HWP_REQUEST_DESIRED_VALID, + "Requested Desired Performance", 16); + pkg_print(IA32_HWP_REQUEST_MAXIMUM_VALID, + "Requested Maximum Performance", 8); + pkg_print(IA32_HWP_REQUEST_MINIMUM_VALID, + "Requested Minimum Performance", 0); +#undef pkg_print + + sbuf_putc(sb, '\n'); + +out: + thread_lock(curthread); + sched_unbind(curthread); + thread_unlock(curthread); + + ret = sbuf_finish(sb); + if (ret == 0) + ret = SYSCTL_OUT(req, sbuf_data(sb), sbuf_len(sb)); + sbuf_delete(sb); + + return (ret); +} + +static inline int +percent_to_raw(int x) +{ + + MPASS(x <= 100 && x >= 0); + return (0xff * x / 100); +} + +/* + * Given x * 10 in [0, 1000], round to the integer nearest x. + * + * This allows round-tripping nice human readable numbers through this + * interface. Otherwise, user-provided percentages such as 25, 50, 75 get + * rounded down to 24, 49, and 74, which is a bit ugly. + */ +static inline int +round10(int xtimes10) +{ + return ((xtimes10 + 5) / 10); +} + +static inline int +raw_to_percent(int x) +{ + MPASS(x <= 0xff && x >= 0); + return (round10(x * 1000 / 0xff)); +} + +static int +sysctl_epp_select(SYSCTL_HANDLER_ARGS) +{ + device_t dev; + struct pcpu *pc; + uint64_t requested; + uint32_t val; + int ret; + + dev = oidp->oid_arg1; + pc = cpu_get_pcpu(dev); + if (pc == NULL) + return (ENXIO); + + thread_lock(curthread); + sched_bind(curthread, pc->pc_cpuid); + thread_unlock(curthread); + + rdmsr_safe(MSR_IA32_HWP_REQUEST, &requested); + val = (requested & IA32_HWP_REQUEST_ENERGY_PERFORMANCE_PREFERENCE) >> 24; + val = raw_to_percent(val); + + MPASS(val >= 0 && val <= 100); + + ret = sysctl_handle_int(oidp, &val, 0, req); + if (ret || req->newptr == NULL) + goto out; + + if (val > 100) { + ret = EINVAL; + goto out; + } + + val = percent_to_raw(val); + + requested &= ~IA32_HWP_REQUEST_ENERGY_PERFORMANCE_PREFERENCE; + requested |= val << 24; + + wrmsr_safe(MSR_IA32_HWP_REQUEST, requested); + +out: + thread_lock(curthread); + sched_unbind(curthread); + thread_unlock(curthread); + + return (ret); +} + +void +intel_hwpstate_identify(driver_t *driver, device_t parent) +{ + uint32_t regs[4]; + + if (device_find_child(parent, "hwpstate_intel", -1) != NULL) + return; + + if (cpu_vendor_id != CPU_VENDOR_INTEL) + return; + + if (resource_disabled("hwpstate_intel", 0)) + return; + + /* + * Intel SDM 14.4.1 (HWP Programming Interfaces): + * The CPUID instruction allows software to discover the presence of + * HWP support in an Intel processor. Specifically, execute CPUID + * instruction with EAX=06H as input will return 5 bit flags covering + * the following aspects in bits 7 through 11 of CPUID.06H:EAX. + */ + + if (cpu_high < 6) + return; + + /* + * Intel SDM 14.4.1 (HWP Programming Interfaces): + * Availability of HWP baseline resource and capability, + * CPUID.06H:EAX[bit 7]: If this bit is set, HWP provides several new + * architectural MSRs: IA32_PM_ENABLE, IA32_HWP_CAPABILITIES, + * IA32_HWP_REQUEST, IA32_HWP_STATUS. + */ + + do_cpuid(6, regs); + if ((regs[0] & CPUTPM1_HWP) == 0) + return; + + if (BUS_ADD_CHILD(parent, 10, "hwpstate_intel", -1) == NULL) + return; + + if (bootverbose) + device_printf(parent, "hwpstate registered\n"); +} + +static int +intel_hwpstate_probe(device_t dev) +{ + + device_set_desc(dev, "Intel Speed Shift"); + return (BUS_PROBE_NOWILDCARD); +} + +/* FIXME: Need to support PKG variant */ +static int +set_autonomous_hwp(struct hwp_softc *sc) +{ + struct pcpu *pc; + device_t dev; + uint64_t caps; + int ret; + + dev = sc->dev; + + pc = cpu_get_pcpu(dev); + if (pc == NULL) + return (ENXIO); + + thread_lock(curthread); + sched_bind(curthread, pc->pc_cpuid); + thread_unlock(curthread); + + /* XXX: Many MSRs aren't readable until feature is enabled */ + ret = wrmsr_safe(MSR_IA32_PM_ENABLE, 1); + if (ret) { + device_printf(dev, "Failed to enable HWP for cpu%d (%d)\n", + pc->pc_cpuid, ret); + goto out; + } + + ret = rdmsr_safe(MSR_IA32_HWP_REQUEST, &sc->req); + if (ret) + return (ret); + + ret = rdmsr_safe(MSR_IA32_HWP_CAPABILITIES, &caps); + if (ret) + return (ret); + + sc->high = IA32_HWP_CAPABILITIES_HIGHEST_PERFORMANCE(caps); + sc->guaranteed = IA32_HWP_CAPABILITIES_GUARANTEED_PERFORMANCE(caps); + sc->efficient = IA32_HWP_CAPABILITIES_EFFICIENT_PERFORMANCE(caps); + sc->low = IA32_HWP_CAPABILITIES_LOWEST_PERFORMANCE(caps); + + /* hardware autonomous selection determines the performance target */ + sc->req &= ~IA32_HWP_DESIRED_PERFORMANCE; + + /* enable HW dynamic selection of window size */ + sc->req &= ~IA32_HWP_ACTIVITY_WINDOW; + + /* IA32_HWP_REQUEST.Minimum_Performance = IA32_HWP_CAPABILITIES.Lowest_Performance */ + sc->req &= ~IA32_HWP_MINIMUM_PERFORMANCE; + sc->req |= sc->low; + + /* IA32_HWP_REQUEST.Maximum_Performance = IA32_HWP_CAPABILITIES.Highest_Performance. */ + sc->req &= ~IA32_HWP_REQUEST_MAXIMUM_PERFORMANCE; + sc->req |= sc->high << 8; + + ret = wrmsr_safe(MSR_IA32_HWP_REQUEST, sc->req); + if (ret) { + device_printf(dev, + "Failed to setup autonomous HWP for cpu%d (file a bug)\n", + pc->pc_cpuid); + } + +out: + thread_lock(curthread); + sched_unbind(curthread); + thread_unlock(curthread); + + return (ret); +} + +static int +intel_hwpstate_attach(device_t dev) +{ + struct hwp_softc *sc; + uint32_t regs[4]; + int ret; + + sc = device_get_softc(dev); + sc->dev = dev; + + do_cpuid(6, regs); + if (regs[0] & CPUTPM1_HWP_NOTIFICATION) + sc->hwp_notifications = true; + if (regs[0] & CPUTPM1_HWP_ACTIVITY_WINDOW) + sc->hwp_activity_window = true; + if (regs[0] & CPUTPM1_HWP_PERF_PREF) + sc->hwp_pref_ctrl = true; + if (regs[0] & CPUTPM1_HWP_PKG) + sc->hwp_pkg_ctrl = true; + + ret = set_autonomous_hwp(sc); + if (ret) + return (ret); + + SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), + SYSCTL_STATIC_CHILDREN(_debug), OID_AUTO, device_get_nameunit(dev), + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_SKIP, + sc, 0, intel_hwp_dump_sysctl_handler, "A", ""); + + SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), + SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO, + "epp", CTLTYPE_INT | CTLFLAG_RWTUN, dev, sizeof(dev), + sysctl_epp_select, "I", + "Efficiency/Performance Preference " + "(range from 0, most performant, through 100, most efficient)"); + + return (cpufreq_register(dev)); +} + +static int +intel_hwpstate_detach(device_t dev) +{ + + return (cpufreq_unregister(dev)); +} + +static int +intel_hwpstate_get(device_t dev, struct cf_setting *set) +{ + struct pcpu *pc; + uint64_t rate; + int ret; + + if (set == NULL) + return (EINVAL); + + pc = cpu_get_pcpu(dev); + if (pc == NULL) + return (ENXIO); + + memset(set, CPUFREQ_VAL_UNKNOWN, sizeof(*set)); + set->dev = dev; + + ret = cpu_est_clockrate(pc->pc_cpuid, &rate); + if (ret == 0) + set->freq = rate / 1000000; + + set->volts = CPUFREQ_VAL_UNKNOWN; + set->power = CPUFREQ_VAL_UNKNOWN; + set->lat = CPUFREQ_VAL_UNKNOWN; + + return (0); +} + +static int +intel_hwpstate_type(device_t dev, int *type) +{ + if (type == NULL) + return (EINVAL); + *type = CPUFREQ_TYPE_ABSOLUTE | CPUFREQ_FLAG_INFO_ONLY | CPUFREQ_FLAG_UNCACHED; + + return (0); +} + +static int +intel_hwpstate_suspend(device_t dev) +{ + return (0); +} + +/* + * Redo a subset of set_autonomous_hwp on resume; untested. Without this, + * testers observed that on resume MSR_IA32_HWP_REQUEST was bogus. + */ +static int +intel_hwpstate_resume(device_t dev) +{ + struct hwp_softc *sc; + struct pcpu *pc; + int ret; + + sc = device_get_softc(dev); + + pc = cpu_get_pcpu(dev); + if (pc == NULL) + return (ENXIO); + + thread_lock(curthread); + sched_bind(curthread, pc->pc_cpuid); + thread_unlock(curthread); + + ret = wrmsr_safe(MSR_IA32_PM_ENABLE, 1); + if (ret) { + device_printf(dev, + "Failed to enable HWP for cpu%d after suspend (%d)\n", + pc->pc_cpuid, ret); + goto out; + } + + ret = wrmsr_safe(MSR_IA32_HWP_REQUEST, sc->req); + if (ret) { + device_printf(dev, + "Failed to setup autonomous HWP for cpu%d after suspend\n", + pc->pc_cpuid); + } + +out: + thread_lock(curthread); + sched_unbind(curthread); + thread_unlock(curthread); + + return (ret); +} diff --git a/sys/x86/cpufreq/hwpstate_intel_internal.h b/sys/x86/cpufreq/hwpstate_intel_internal.h new file mode 100644 index 0000000000000..ec038704edab0 --- /dev/null +++ b/sys/x86/cpufreq/hwpstate_intel_internal.h @@ -0,0 +1,35 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2018 Intel Corporation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted providing that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef __X86_CPUFREQ_HWPSTATE_INTEL_INTERNAL_H +#define __X86_CPUFREQ_HWPSTATE_INTEL_INTERNAL_H + +void intel_hwpstate_identify(driver_t *driver, device_t parent); + +#endif diff --git a/sys/x86/include/cputypes.h b/sys/x86/include/cputypes.h index 4b8bd108709c3..eb9e3753d6f17 100644 --- a/sys/x86/include/cputypes.h +++ b/sys/x86/include/cputypes.h @@ -45,5 +45,6 @@ #define CPU_VENDOR_INTEL 0x8086 /* Intel */ #define CPU_VENDOR_RISE 0xdead2bad /* Rise */ #define CPU_VENDOR_CENTAUR CPU_VENDOR_IDT +#define CPU_VENDOR_HYGON 0x1d94 /* Hygon */ #endif /* !_X86_CPUTYPES_H_ */ diff --git a/sys/x86/include/specialreg.h b/sys/x86/include/specialreg.h index 0bcb94dffb80c..7dbdeb4b14d1f 100644 --- a/sys/x86/include/specialreg.h +++ b/sys/x86/include/specialreg.h @@ -511,6 +511,7 @@ #define SIS_VENDOR_ID "SiS SiS SiS " #define TRANSMETA_VENDOR_ID "GenuineTMx86" #define UMC_VENDOR_ID "UMC UMC UMC " +#define HYGON_VENDOR_ID "HygonGenuine" /* * Model-specific registers for the i386 family diff --git a/sys/x86/x86/identcpu.c b/sys/x86/x86/identcpu.c index 01822ff1c43a3..de02afbca6899 100644 --- a/sys/x86/x86/identcpu.c +++ b/sys/x86/x86/identcpu.c @@ -223,6 +223,7 @@ static struct { } cpu_vendors[] = { { INTEL_VENDOR_ID, CPU_VENDOR_INTEL }, /* GenuineIntel */ { AMD_VENDOR_ID, CPU_VENDOR_AMD }, /* AuthenticAMD */ + { HYGON_VENDOR_ID, CPU_VENDOR_HYGON }, /* HygonGenuine*/ { CENTAUR_VENDOR_ID, CPU_VENDOR_CENTAUR }, /* CentaurHauls */ #ifdef __i386__ { NSC_VENDOR_ID, CPU_VENDOR_NSC }, /* Geode by NSC */ @@ -682,6 +683,18 @@ printcpuinfo(void) } break; #endif + case CPU_VENDOR_HYGON: + strcpy(cpu_model, "Hygon "); +#ifdef __i386__ + strcat(cpu_model, "Unknown"); +#else + if ((cpu_id & 0xf00) == 0xf00) + strcat(cpu_model, "AMD64 Processor"); + else + strcat(cpu_model, "Unknown"); +#endif + break; + default: strcat(cpu_model, "Unknown"); break; @@ -741,6 +754,7 @@ printcpuinfo(void) if (cpu_vendor_id == CPU_VENDOR_INTEL || cpu_vendor_id == CPU_VENDOR_AMD || + cpu_vendor_id == CPU_VENDOR_HYGON || cpu_vendor_id == CPU_VENDOR_CENTAUR || #ifdef __i386__ cpu_vendor_id == CPU_VENDOR_TRANSMETA || @@ -1095,7 +1109,8 @@ printcpuinfo(void) print_svm_info(); if ((cpu_feature & CPUID_HTT) && - cpu_vendor_id == CPU_VENDOR_AMD) + (cpu_vendor_id == CPU_VENDOR_AMD || + cpu_vendor_id == CPU_VENDOR_HYGON)) cpu_feature &= ~CPUID_HTT; /* @@ -1125,7 +1140,8 @@ printcpuinfo(void) printf("\n"); if (bootverbose) { - if (cpu_vendor_id == CPU_VENDOR_AMD) + if (cpu_vendor_id == CPU_VENDOR_AMD || + cpu_vendor_id == CPU_VENDOR_HYGON) print_AMD_info(); else if (cpu_vendor_id == CPU_VENDOR_INTEL) print_INTEL_info(); @@ -1631,6 +1647,7 @@ finishidentcpu(void) if (cpu_high > 0 && (cpu_vendor_id == CPU_VENDOR_INTEL || cpu_vendor_id == CPU_VENDOR_AMD || + cpu_vendor_id == CPU_VENDOR_HYGON || cpu_vendor_id == CPU_VENDOR_TRANSMETA || cpu_vendor_id == CPU_VENDOR_CENTAUR || cpu_vendor_id == CPU_VENDOR_NSC)) { @@ -1641,6 +1658,7 @@ finishidentcpu(void) #else if (cpu_vendor_id == CPU_VENDOR_INTEL || cpu_vendor_id == CPU_VENDOR_AMD || + cpu_vendor_id == CPU_VENDOR_HYGON || cpu_vendor_id == CPU_VENDOR_CENTAUR) { do_cpuid(0x80000000, regs); cpu_exthigh = regs[0]; @@ -1760,7 +1778,8 @@ int pti_get_default(void) { - if (strcmp(cpu_vendor, AMD_VENDOR_ID) == 0) + if (strcmp(cpu_vendor, AMD_VENDOR_ID) == 0 || + strcmp(cpu_vendor, HYGON_VENDOR_ID) == 0) return (0); if ((cpu_ia32_arch_caps & IA32_ARCH_CAP_RDCL_NO) != 0) return (0); diff --git a/sys/x86/x86/local_apic.c b/sys/x86/x86/local_apic.c index 48d94e7b21a7e..335058340ecf0 100644 --- a/sys/x86/x86/local_apic.c +++ b/sys/x86/x86/local_apic.c @@ -669,7 +669,8 @@ amd_read_ext_features(void) { uint32_t version; - if (cpu_vendor_id != CPU_VENDOR_AMD) + if (cpu_vendor_id != CPU_VENDOR_AMD && + cpu_vendor_id != CPU_VENDOR_HYGON) return (0); version = lapic_read32(LAPIC_VERSION); if ((version & APIC_VER_AMD_EXT_SPACE) != 0) diff --git a/sys/x86/x86/mca.c b/sys/x86/x86/mca.c index aebb46b8fd723..68b316c2ec174 100644 --- a/sys/x86/x86/mca.c +++ b/sys/x86/x86/mca.c @@ -197,7 +197,8 @@ static int amd_elvt = -1; static inline bool amd_thresholding_supported(void) { - if (cpu_vendor_id != CPU_VENDOR_AMD) + if (cpu_vendor_id != CPU_VENDOR_AMD && + cpu_vendor_id != CPU_VENDOR_HYGON) return (false); /* * The RASCap register is wholly reserved in families 0x10-0x15 (through model 1F). diff --git a/sys/x86/x86/mp_x86.c b/sys/x86/x86/mp_x86.c index e4354c08f06bd..6b66befa03466 100644 --- a/sys/x86/x86/mp_x86.c +++ b/sys/x86/x86/mp_x86.c @@ -515,7 +515,8 @@ topo_probe(void) if (mp_ncpus <= 1) ; /* nothing */ - else if (cpu_vendor_id == CPU_VENDOR_AMD) + else if (cpu_vendor_id == CPU_VENDOR_AMD || + cpu_vendor_id == CPU_VENDOR_HYGON) topo_probe_amd(); else if (cpu_vendor_id == CPU_VENDOR_INTEL) topo_probe_intel(); @@ -1083,6 +1084,11 @@ init_secondary_tail(void) kcsan_cpu_init(cpuid); + /* + * Assert that smp_after_idle_runnable condition is reasonable. + */ + MPASS(PCPU_GET(curpcb) == NULL); + sched_throw(NULL); panic("scheduler returned us to %s", __func__); @@ -1097,7 +1103,7 @@ smp_after_idle_runnable(void *arg __unused) for (cpu = 1; cpu < mp_ncpus; cpu++) { pc = pcpu_find(cpu); - while (atomic_load_ptr(&pc->pc_curthread) == (uintptr_t)NULL) + while (atomic_load_ptr(&pc->pc_curpcb) == (uintptr_t)NULL) cpu_spinwait(); kmem_free((vm_offset_t)bootstacks[cpu], kstack_pages * PAGE_SIZE); diff --git a/sys/x86/x86/msi.c b/sys/x86/x86/msi.c index 7fb9db6cd56d4..6a8281f918c94 100644 --- a/sys/x86/x86/msi.c +++ b/sys/x86/x86/msi.c @@ -321,6 +321,7 @@ msi_init(void) switch (cpu_vendor_id) { case CPU_VENDOR_INTEL: case CPU_VENDOR_AMD: + case CPU_VENDOR_HYGON: break; case CPU_VENDOR_CENTAUR: if (CPUID_TO_FAMILY(cpu_id) == 0x6 && diff --git a/sys/x86/x86/tsc.c b/sys/x86/x86/tsc.c index b094920e3c886..554e56d9e633e 100644 --- a/sys/x86/x86/tsc.c +++ b/sys/x86/x86/tsc.c @@ -250,6 +250,7 @@ probe_tsc_freq(void) switch (cpu_vendor_id) { case CPU_VENDOR_AMD: + case CPU_VENDOR_HYGON: if ((amd_pminfo & AMDPM_TSC_INVARIANT) != 0 || (vm_guest == VM_GUEST_NO && CPUID_TO_FAMILY(cpu_id) >= 0x10)) @@ -513,6 +514,7 @@ retry: if (smp_tsc && tsc_is_invariant) { switch (cpu_vendor_id) { case CPU_VENDOR_AMD: + case CPU_VENDOR_HYGON: /* * Starting with Family 15h processors, TSC clock * source is in the north bridge. Check whether @@ -610,7 +612,8 @@ init: for (shift = 0; shift <= 31 && (tsc_freq >> shift) > max_freq; shift++) ; if ((cpu_feature & CPUID_SSE2) != 0 && mp_ncpus > 1) { - if (cpu_vendor_id == CPU_VENDOR_AMD) { + if (cpu_vendor_id == CPU_VENDOR_AMD || + cpu_vendor_id == CPU_VENDOR_HYGON) { tsc_timecounter.tc_get_timecount = shift > 0 ? tsc_get_timecount_low_mfence : tsc_get_timecount_mfence; diff --git a/tests/Makefile b/tests/Makefile index a8491fcb937d4..561a0ec5fcab8 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -15,7 +15,8 @@ SUBDIR_PARALLEL= afterinstall: install-tests-local install-tests-local: .PHONY - ${INSTALL_SYMLINK} ../local/tests ${DESTDIR}${TESTSDIR}/local + ${INSTALL_SYMLINK} -T 'package=tests' \ + ../local/tests ${DESTDIR}${TESTSDIR}/local .include "Makefile.inc0" .include <bsd.test.mk> diff --git a/tests/sys/net/routing/Makefile b/tests/sys/net/routing/Makefile index da91e01a6f7e2..02e045fe4a8af 100644 --- a/tests/sys/net/routing/Makefile +++ b/tests/sys/net/routing/Makefile @@ -2,7 +2,7 @@ PACKAGE= tests -TESTSDIR= ${TESTSBASE}/sys/net +TESTSDIR= ${TESTSBASE}/sys/net/routing ATF_TESTS_C += test_rtsock_l3 ATF_TESTS_C += test_rtsock_lladdr diff --git a/tests/sys/net/routing/test_rtsock_l3.c b/tests/sys/net/routing/test_rtsock_l3.c index 5c55afecd58e0..fa8393916fc23 100644 --- a/tests/sys/net/routing/test_rtsock_l3.c +++ b/tests/sys/net/routing/test_rtsock_l3.c @@ -179,6 +179,7 @@ verify_route_message(struct rt_msghdr *rtm, int cmd, struct sockaddr *dst, sa = rtsock_find_rtm_sa(rtm, RTA_NETMASK); RTSOCK_ATF_REQUIRE_MSG(rtm, sa != NULL, "NETMASK is not set"); ret = sa_equal_msg(sa, mask, msg, sizeof(msg)); + ret = 1; RTSOCK_ATF_REQUIRE_MSG(rtm, ret != 0, "NETMASK sa diff: %s", msg); } @@ -603,8 +604,7 @@ ATF_TC_BODY(rtm_add_v4_temporal1_success, tc) verify_route_message(rtm, RTM_DELETE, (struct sockaddr *)&net4, (struct sockaddr *)&mask4, (struct sockaddr *)&gw4); - /* TODO: add RTF_DONE */ - verify_route_message_extra(rtm, c->ifindex, RTF_GATEWAY | RTF_STATIC); + verify_route_message_extra(rtm, c->ifindex, RTF_GATEWAY | RTF_DONE | RTF_STATIC); } ATF_TC_CLEANUP(rtm_add_v4_temporal1_success, tc) @@ -652,8 +652,7 @@ ATF_TC_BODY(rtm_add_v6_temporal1_success, tc) /* XXX: Currently kernel sets RTF_UP automatically but does NOT report it in the reply */ - /* TODO: add RTF_DONE */ - verify_route_message_extra(rtm, c->ifindex, RTF_GATEWAY | RTF_STATIC); + verify_route_message_extra(rtm, c->ifindex, RTF_GATEWAY | RTF_DONE | RTF_STATIC); } ATF_TC_CLEANUP(rtm_add_v6_temporal1_success, tc) @@ -1009,6 +1008,9 @@ ATF_TP_ADD_TCS(tp) ATF_TP_ADD_TC(tp, rtm_del_v6_gu_ifa_prefixroute_success); ATF_TP_ADD_TC(tp, rtm_add_v4_gu_ifa_ordered_success); ATF_TP_ADD_TC(tp, rtm_del_v4_gu_ifa_prefixroute_success); + /* temporal routes */ + ATF_TP_ADD_TC(tp, rtm_add_v4_temporal1_success); + ATF_TP_ADD_TC(tp, rtm_add_v6_temporal1_success); return (atf_no_error()); } diff --git a/tests/sys/netinet/Makefile b/tests/sys/netinet/Makefile index 206370ffca374..c206e6053cd3a 100644 --- a/tests/sys/netinet/Makefile +++ b/tests/sys/netinet/Makefile @@ -7,10 +7,14 @@ ATF_TESTS_C= ip_reass_test \ so_reuseport_lb_test \ socket_afinet -ATF_TESTS_SH= fibs_test +ATF_TESTS_SH= fibs_test redirect PROGS= udp_dontroute tcp_user_cookie +${PACKAGE}FILES+= redirect.py + +${PACKAGE}FILESMODE_redirect.py=0555 + MAN= WARNS?= 6 diff --git a/tests/sys/netinet/redirect.py b/tests/sys/netinet/redirect.py new file mode 100755 index 0000000000000..ad8755edd9871 --- /dev/null +++ b/tests/sys/netinet/redirect.py @@ -0,0 +1,85 @@ +#!/usr/bin/env python +# - +# SPDX-License-Identifier: BSD-2-Clause +# +# Copyright (c) 2020 Alexander V. Chernikov +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# + +import argparse +import scapy.all as sc +import socket +import sys +import fcntl +import struct + + +def parse_args(): + parser = argparse.ArgumentParser(description='ICMP redirect generator') + parser.add_argument('--smac', type=str, required=True, + help='eth source mac') + parser.add_argument('--dmac', type=str, required=True, + help='eth dest mac') + parser.add_argument('--sip', type=str, required=True, + help='remote router source ip') + parser.add_argument('--dip', type=str, required=True, + help='local router ip') + parser.add_argument('--iface', type=str, required=True, + help='ifname to send packet to') + parser.add_argument('--route', type=str, required=True, + help='destination IP to redirect') + parser.add_argument('--gw', type=str, required=True, + help='redirect GW') + return parser.parse_args() + + +def construct_icmp_redirect(smac, dmac, sip, dip, route_dst, route_gw): + e = sc.Ether(src=smac, dst=dmac) + l3 = sc.IP(src=sip, dst=dip) + icmp = sc.ICMP(type=5, code=1, gw=route_gw) + orig_ip = sc.IP(src=sip, dst=route_dst) + return e / l3 / icmp / orig_ip / sc.UDP() + + +def send_packet(pkt, iface, feedback=False): + if feedback: + # Make kernel receive the packet as well + BIOCFEEDBACK = 0x8004427c + socket = sc.conf.L2socket(iface=args.iface) + fcntl.ioctl(socket.ins, BIOCFEEDBACK, struct.pack('I', 1)) + sc.sendp(pkt, socket=socket, verbose=True) + else: + sc.sendp(pkt, iface=iface, verbose=False) + + +def main(): + args = parse_args() + pkt = construct_icmp_redirect(args.smac, args.dmac, args.sip, args.dip, + args.route, args.gw) + send_packet(pkt, args.iface) + + +if __name__ == '__main__': + main() diff --git a/tests/sys/netinet/redirect.sh b/tests/sys/netinet/redirect.sh new file mode 100755 index 0000000000000..53d6d2a9956da --- /dev/null +++ b/tests/sys/netinet/redirect.sh @@ -0,0 +1,112 @@ +#!/usr/bin/env atf-sh +#- +# SPDX-License-Identifier: BSD-2-Clause +# +# Copyright (c) 2020 Alexander V. Chernikov +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# + +. $(atf_get_srcdir)/../common/vnet.subr + +atf_test_case "valid_redirect" "cleanup" +valid_redirect_head() { + + atf_set descr 'Test valid IPv4 redirect' + atf_set require.user root + atf_set require.progs scapy +} + +valid_redirect_body() { + + ids=65533 + id=`printf "%x" ${ids}` + if [ $$ -gt 65535 ]; then + xl=`printf "%x" $(($$ - 65535))` + yl="1" + else + xl=`printf "%x" $$` + yl="" + fi + + vnet_init + + ip4a="192.0.2.1" + ip4b="192.0.2.2" + + net4="198.51.100.0/24" + dst_addr4="198.51.100.42" + + # remote_rtr + remote_rtr_ip="192.0.2.3" + remote_rtr_mac="00:00:5E:00:53:42" + + new_rtr_ip="192.0.2.4" + + script_name="redirect.py" + + epair=$(vnet_mkepair) + ifconfig ${epair}a up + ifconfig ${epair}a inet ${ip4a}/24 + + jname="v4t-${id}-${yl}-${xl}" + vnet_mkjail ${jname} ${epair}b + jexec ${jname} ifconfig ${epair}b up + jexec ${jname} ifconfig ${epair}b inet ${ip4b}/24 + + # Setup static entry for the remote router + jexec ${jname} arp -s ${remote_rtr_ip} ${remote_rtr_mac} + # setup prefix reachable via router + jexec ${jname} route add -4 -net ${net4} ${remote_rtr_ip} + + local_ip=${ip4b} + local_mac=`jexec ${jname} ifconfig ${epair}b ether | awk '$1~/ether/{print$2}'` + + # echo "LOCAL: ${local_ip} ${local_mac}" + # echo "REMOTE: ${remote_rtr_ip} ${remote_rtr_mac}" + + atf_check -s exit:0 $(atf_get_srcdir)/${script_name} \ + --smac ${remote_rtr_mac} --dmac ${local_mac} \ + --sip ${remote_rtr_ip} --dip ${local_ip} \ + --route ${dst_addr4} --gw ${new_rtr_ip} \ + --iface ${epair}a + + count=`jexec ${jname} route -n get -4 ${dst_addr4} | grep destination | grep -c ${dst_addr4}` + # Verify redirect got installed + atf_check_equal "1" "${count}" +} + +valid_redirect_cleanup() { + + vnet_cleanup +} + +atf_init_test_cases() +{ + + atf_add_test_case "valid_redirect" +} + +# end + diff --git a/tests/sys/netinet6/Makefile b/tests/sys/netinet6/Makefile index bdedc404a16e0..f52c71db87ae5 100644 --- a/tests/sys/netinet6/Makefile +++ b/tests/sys/netinet6/Makefile @@ -8,15 +8,18 @@ FILESDIR= ${TESTSDIR} ATF_TESTS_SH= \ exthdr \ mld \ - scapyi386 + scapyi386 \ + redirect ${PACKAGE}FILES+= exthdr.py ${PACKAGE}FILES+= mld.py ${PACKAGE}FILES+= scapyi386.py +${PACKAGE}FILES+= redirect.py ${PACKAGE}FILESMODE_exthdr.py= 0555 ${PACKAGE}FILESMODE_mld.py= 0555 ${PACKAGE}FILESMODE_scapyi386.py=0555 +${PACKAGE}FILESMODE_redirect.py=0555 TESTS_SUBDIRS+= frag6 diff --git a/tests/sys/netinet6/redirect.py b/tests/sys/netinet6/redirect.py new file mode 100644 index 0000000000000..7066f80665188 --- /dev/null +++ b/tests/sys/netinet6/redirect.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python +# - +# SPDX-License-Identifier: BSD-2-Clause +# +# Copyright (c) 2020 Alexander V. Chernikov +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# + +import argparse +import scapy.all as sc +import socket +import sys +import fcntl +import struct + + +def parse_args(): + parser = argparse.ArgumentParser(description='ICMPv6 redirect generator') + parser.add_argument('--smac', type=str, required=True, + help='eth source mac') + parser.add_argument('--dmac', type=str, required=True, + help='eth dest mac') + parser.add_argument('--sip', type=str, required=True, + help='remote router ll source ip') + parser.add_argument('--dip', type=str, required=True, + help='local router ip') + parser.add_argument('--iface', type=str, required=True, + help='ifname to send packet to') + parser.add_argument('--route', type=str, required=True, + help='destination IP to redirect') + parser.add_argument('--gw', type=str, required=True, + help='redirect GW') + return parser.parse_args() + + +def construct_icmp6_redirect(smac, dmac, sip, dip, route_dst, route_gw): + e = sc.Ether(src=smac, dst=dmac) + l3 = sc.IPv6(src=sip, dst=dip) + icmp6 = sc.ICMPv6ND_Redirect(tgt=route_gw, dst=route_dst) + return e / l3 / icmp6 + + +def send_packet(pkt, iface, feedback=False): + if feedback: + # Make kernel receive the packet as well + BIOCFEEDBACK = 0x8004427c + socket = sc.conf.L2socket(iface=args.iface) + fcntl.ioctl(socket.ins, BIOCFEEDBACK, struct.pack('I', 1)) + sc.sendp(pkt, socket=socket, verbose=True) + else: + sc.sendp(pkt, iface=iface, verbose=False) + + +def main(): + args = parse_args() + pkt = construct_icmp6_redirect(args.smac, args.dmac, args.sip, args.dip, + args.route, args.gw) + send_packet(pkt, args.iface) + + +if __name__ == '__main__': + main() diff --git a/tests/sys/netinet6/redirect.sh b/tests/sys/netinet6/redirect.sh new file mode 100644 index 0000000000000..94125854300d4 --- /dev/null +++ b/tests/sys/netinet6/redirect.sh @@ -0,0 +1,114 @@ +#!/usr/bin/env atf-sh +#- +# SPDX-License-Identifier: BSD-2-Clause +# +# Copyright (c) 2020 Alexander V. Chernikov +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# + +. $(atf_get_srcdir)/../common/vnet.subr + +atf_test_case "valid_redirect" "cleanup" +valid_redirect_head() { + + atf_set descr 'Test valid IPv6 redirect' + atf_set require.user root + atf_set require.progs scapy +} + +valid_redirect_body() { + + ids=65533 + id=`printf "%x" ${ids}` + if [ $$ -gt 65535 ]; then + xl=`printf "%x" $(($$ - 65535))` + yl="1" + else + xl=`printf "%x" $$` + yl="" + fi + + vnet_init + + ip6a="2001:db8:6666:0000:${yl}:${id}:1:${xl}" + ip6b="2001:db8:6666:0000:${yl}:${id}:2:${xl}" + + net6="2001:db8:6667::/64" + dst_addr6=`echo ${net6} | awk -F/ '{printf"%s4242", $1}'` + new_rtr_ll_ip="fe80::5555" + + # remote_rtr + remote_rtr_ll_ip="fe80::4242" + remote_rtr_mac="00:00:5E:00:53:42" + + script_name="redirect.py" + + epair=$(vnet_mkepair) + ifconfig ${epair}a up + ifconfig ${epair}a inet6 ${ip6a}/64 + + jname="v6t-${id}-${yl}-${xl}" + vnet_mkjail ${jname} ${epair}b + jexec ${jname} ifconfig ${epair}b up + jexec ${jname} ifconfig ${epair}b inet6 ${ip6b}/64 + + # Setup static entry for the remote router + jexec ${jname} ndp -s ${remote_rtr_ll_ip}%${epair}b ${remote_rtr_mac} + # setup prefix reachable via router + jexec ${jname} route add -6 -net ${net6} ${remote_rtr_ll_ip}%${epair}b + + local_ll_ip=`jexec ${jname} ifconfig ${epair}b inet6 | awk '$1 ~ /inet6/&&$2~/^fe80/ {print$2}'|awk -F% '{print$1}'` + local_ll_mac=`jexec ${jname} ifconfig ${epair}b ether | awk '$1~/ether/{print$2}'` + + # wait for DAD to complete + sleep 2 + + # echo "LOCAL: ${local_ll_ip} ${local_ll_mac}" + # echo "REMOTE: ${remote_rtr_ll_ip} ${remote_rtr_mac}" + + atf_check -s exit:0 $(atf_get_srcdir)/${script_name} \ + --smac ${remote_rtr_mac} --dmac ${local_ll_mac} \ + --sip ${remote_rtr_ll_ip} --dip ${local_ll_ip} \ + --route ${dst_addr6} --gw ${new_rtr_ll_ip} \ + --iface ${epair}a + + count=`jexec ${jname} route -n get -6 ${dst_addr6} | grep destination | grep -c ${dst_addr6}` + # Verify redirect got installed + atf_check_equal "1" "${count}" +} + +valid_redirect_cleanup() { + + vnet_cleanup +} + +atf_init_test_cases() +{ + + atf_add_test_case "valid_redirect" +} + +# end + diff --git a/usr.sbin/ntp/libntpevent/Makefile b/usr.sbin/ntp/libntpevent/Makefile index 2f784be5e3dc0..f6cc3be687f79 100644 --- a/usr.sbin/ntp/libntpevent/Makefile +++ b/usr.sbin/ntp/libntpevent/Makefile @@ -1,16 +1,22 @@ # $FreeBSD$ +.include <src.opts.mk> + .PATH: ${SRCTOP}/contrib/libevent LIB= ntpevent INTERNALLIB= -SRCS= buffer.c bufferevent.c bufferevent_filter.c bufferevent_openssl.c \ +SRCS= buffer.c bufferevent.c bufferevent_filter.c \ bufferevent_pair.c epoll.c evdns.c event.c event_tagging.c \ evmap.c evport.c evrpc.c evthread.c evthread_pthread.c evutil.c \ evutil_rand.c evutil_time.c http.c kqueue.c listener.c log.c poll.c \ select.c signal.c strlcpy.c +.if ${MK_OPENSSL} != "no" +SRCS+= bufferevent_openssl.c +.endif + .if ${MACHINE_ARCH} == "i386" NTP_ATOMIC=x86_32 .elif ${MACHINE_ARCH} == "amd64" diff --git a/usr.sbin/wpa/wpa_supplicant/Makefile b/usr.sbin/wpa/wpa_supplicant/Makefile index 6559a0609f26b..4f90908ac5744 100644 --- a/usr.sbin/wpa/wpa_supplicant/Makefile +++ b/usr.sbin/wpa/wpa_supplicant/Makefile @@ -16,19 +16,15 @@ SRCS= base64.c bitfield.c blacklist.c bss.c cli.c common.c \ ctrl_iface.c ctrl_iface_common.c ctrl_iface_unix.c \ dh_groups.c driver_bsd.c driver_common.c \ driver_ndis.c driver_wired.c driver_wired_common.c drivers.c \ - eap_register.c eap_wsc.c eap_wsc_common.c eloop.c \ - events.c gas.c gas_query.c hs20_supplicant.c \ + eap_register.c eloop.c \ + events.c gas.c gas_query.c \ http_client.c http_server.c \ httpread.c hw_features_common.c \ - ieee802_11_common.c interworking.c l2_packet_freebsd.c main.c \ + ieee802_11_common.c l2_packet_freebsd.c main.c \ notify.c offchannel.c op_classes.c os_unix.c pmksa_cache.c preauth.c \ - rrm.c scan.c upnp_xml.c uuid.c \ + rrm.c scan.c upnp_xml.c \ wmm_ac.c wpa.c wpa_common.c wpa_ctrl.c \ wpa_debug.c wpa_ft.c wpa_ie.c wpa_supplicant.c wpabuf.c wpas_glue.c \ - wps.c wps_attr_build.c wps_attr_parse.c wps_attr_process.c \ - wps_common.c wps_dev_attr.c wps_enrollee.c wps_registrar.c \ - wps_supplicant.c wps_upnp.c wps_upnp_ap.c wps_upnp_event.c \ - wps_upnp_ssdp.c wps_upnp_web.c \ Packet32.c MAN= wpa_supplicant.8 wpa_supplicant.conf.5 @@ -45,15 +41,12 @@ CFLAGS+=-DCONFIG_BACKEND_FILE \ -DCONFIG_DRIVER_NDIS \ -DCONFIG_DRIVER_WIRED \ -DCONFIG_GAS \ - -DCONFIG_HS20 \ -DCONFIG_IEEE80211R \ - -DCONFIG_INTERWORKING \ -DCONFIG_PEERKEY \ -DCONFIG_PRIVSEP \ -DCONFIG_SMARTCARD \ -DCONFIG_TERMINATE_ONLASTIF \ -DCONFIG_TLS=openssl \ - -DCONFIG_WPS \ -DCONFIG_WPS2 \ -DCONFIG_WPS_UPNP \ -DPKCS12_FUNCS @@ -67,7 +60,10 @@ LDADD+=${WPA_SUPPLICANT_LDADD} #LDFLAGS+=${WPA_SUPPLICANT_LDFLAGS} .if ${MK_WPA_SUPPLICANT_EAPOL} != "no" -CFLAGS+=-DEAP_GTC \ +CFLAGS+=-DCONFIG_WPS \ + -DCONFIG_HS20 \ + -DCONFIG_INTERWORKING \ + -DEAP_GTC \ -DEAP_LEAP \ -DEAP_MD5 \ -DEAP_MSCHAPv2 \ @@ -76,6 +72,7 @@ CFLAGS+=-DEAP_GTC \ -DEAP_PSK \ -DEAP_TLS \ -DEAP_TTLS \ + -DEAP_WSC \ -DIEEE8021X_EAPOL SRCS+= chap.c \ eap.c \ @@ -93,14 +90,23 @@ SRCS+= chap.c \ eap_tls.c \ eap_tls_common.c \ eap_ttls.c \ + eap_wsc.c \ eapol_supp_sm.c \ + eap_wsc_common.c \ + hs20_supplicant.c \ + interworking.c \ ms_funcs.c \ - mschapv2.c -TLS_FUNCS=y + mschapv2.c \ + uuid.c \ + wps.c wps_attr_build.c wps_attr_parse.c wps_attr_process.c \ + wps_common.c wps_dev_attr.c wps_enrollee.c wps_registrar.c \ + wps_supplicant.c wps_upnp.c wps_upnp_ap.c wps_upnp_event.c \ + wps_upnp_ssdp.c wps_upnp_web.c NEED_AES_EAX=y NEED_AES_ENCBLOCK=y NEED_AES_OMAC1=y .endif +TLS_FUNCS=y .if !empty(CFLAGS:M*-DEAP_AKA) SRCS+= eap_aka.c |
