Make find-doc-nits check for newly added undocumented symbols
authorMatt Caswell <matt@openssl.org>
Thu, 6 Jun 2019 11:12:49 +0000 (12:12 +0100)
committerMatt Caswell <matt@openssl.org>
Wed, 12 Jun 2019 09:12:14 +0000 (10:12 +0100)
We create lists of undocumented functions and macros as they are now so
that find-doc-nits can check for newly introduced functions/macros that
are undocumented.

This works in a similar way to the -u and -d options to find-doc-nits.
These count undocumented symbols and print a detailed list of undocumented
symbols repsectively. This commit adds the -v and -e options to restrict
the count/detailed list to newly added undocumented symbols only.

There is also a new -s option that does the same as -e except that it
produces no output if there are no newly undocumented symbols.

We also amend "make doc-nits" to add the -s option which should cause
travis to fail if a PR adds undocumented symbols.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/9094)

Configurations/unix-Makefile.tmpl
util/find-doc-nits
util/missingcrypto.txt [new file with mode: 0644]
util/missingmacro.txt [new file with mode: 0644]
util/missingssl.txt [new file with mode: 0644]

index 8a1ec4944f879f3717f46e6d91e7093d4468705a..ce93a4ed1c84a2cb5b783fa696a60ebbe4944bf8 100644 (file)
@@ -728,7 +728,7 @@ generate: generate_apps generate_crypto_bn generate_crypto_objects \
 
 .PHONY: doc-nits
 doc-nits: build_generated
-       (cd $(SRCDIR); $(PERL) util/find-doc-nits -n -p ) >doc-nits
+       (cd $(SRCDIR); $(PERL) util/find-doc-nits -n -p -s ) >doc-nits
        @if [ -s doc-nits ] ; then cat doc-nits ; exit 1; \
        else echo 'doc-nits: no errors.'; rm doc-nits ; fi
 
index 25f3d5e2c839b540278c04d6d3383471036e12de..51dcd286d5d84f6b73eda638b9a35860843fe8e4 100755 (executable)
@@ -20,11 +20,14 @@ use OpenSSL::Util::Pod;
 
 # Options.
 our($opt_d);
+our($opt_e);
+our($opt_s);
 our($opt_h);
 our($opt_l);
 our($opt_n);
 our($opt_p);
 our($opt_u);
+our($opt_v);
 our($opt_c);
 
 sub help()
@@ -32,10 +35,13 @@ sub help()
     print <<EOF;
 Find small errors (nits) in documentation.  Options:
     -d Detailed list of undocumented (implies -u)
+    -e Detailed list of new undocumented (implies -v)
+    -s Same as -e except no output is generated if nothing is undocumented
     -l Print bogus links
     -n Print nits in POD pages
     -p Warn if non-public name documented (implies -n)
     -u Count undocumented functions
+    -v Count new undocumented functions
     -h Print this help message
     -c List undocumented commands and options
 EOF
@@ -291,12 +297,31 @@ sub getdocced
 
 my %docced;
 
+sub loadmissing($)
+{
+    my $missingfile = shift;
+    my @missing;
+
+    open FH, $missingfile
+        || die "Can't open $missingfile";
+    while ( <FH> ) {
+        chomp;
+        next if /^#/;
+        push @missing, $_;
+    }
+    close FH;
+
+    return @missing;
+}
+
 sub checkmacros()
 {
     my $count = 0;
     my %seen;
 
-    print "# Checking macros (approximate)\n";
+    my @missing = loadmissing('util/missingmacro.txt') if ($opt_v);
+
+    print "# Checking macros (approximate)\n" if !$opt_s;
     foreach my $f ( glob('include/openssl/*.h') ) {
         # Skip some internals we don't want to document yet.
         next if $f eq 'include/openssl/asn1.h';
@@ -312,33 +337,43 @@ sub checkmacros()
                 || $macro =~ /DEPRECATEDIN/
                 || $macro =~ /IMPLEMENT_/
                 || $macro =~ /DECLARE_/;
-            print "$f:$macro\n" if $opt_d;
+
+            # Skip macros known to be missing
+            next if $opt_v && grep( /^$macro$/, @missing);
+    
+            print "$f:$macro\n" if $opt_d || $opt_e;
             $count++;
             $seen{$macro} = 1;
         }
         close(IN);
     }
-    print "# Found $count macros missing (not all should be documented)\n"
+    print "# Found $count macros missing\n" if !$opt_s || $count > 0;
 }
 
 sub printem()
 {
     my $libname = shift;
     my $numfile = shift;
+    my $missingfile = shift;
     my $count = 0;
     my %seen;
 
+    my @missing = loadmissing($missingfile) if ($opt_v);
+
     foreach my $func ( &parsenum($numfile) ) {
         next if $docced{$func} || defined $seen{$func};
 
         # Skip ASN1 utilities
         next if $func =~ /^ASN1_/;
 
-        print "$libname:$func\n" if $opt_d;
+        # Skip functions known to be missing
+        next if $opt_v && grep( /^$func$/, @missing);
+
+        print "$libname:$func\n" if $opt_d || $opt_e;
         $count++;
         $seen{$func} = 1;
     }
-    print "# Found $count missing from $numfile\n\n";
+    print "# Found $count missing from $numfile\n\n" if !$opt_s || $count > 0;
 }
 
 
@@ -503,14 +538,20 @@ sub checkflags() {
     return $ok;
 }
 
-getopts('cdlnphu');
+getopts('cdeslnphuv');
 
 &help() if $opt_h;
+
 $opt_n = 1 if $opt_p;
 $opt_u = 1 if $opt_d;
+$opt_e = 1 if $opt_s;
+$opt_v = 1 if $opt_e;
+
+die "Cannot use both -u and -v" if $opt_u && $opt_v;
+die "Cannot use both -d and -e" if $opt_d && $opt_e;
 
-die "Need one of -[cdlnpu] flags.\n"
-    unless $opt_c or $opt_l or $opt_n or $opt_u;
+die "Need one of -[cdelnpuv] flags.\n"
+    unless $opt_c or $opt_l or $opt_n or $opt_u or $opt_v;
 
 if ( $opt_c ) {
     my $ok = 1;
@@ -571,13 +612,13 @@ if ( $opt_n ) {
     }
 }
 
-if ( $opt_u ) {
+if ( $opt_u || $opt_v) {
     my %temp = getdocced('doc/man3');
     foreach ( keys %temp ) {
         $docced{$_} = $temp{$_};
     }
-    &printem('crypto', 'util/libcrypto.num');
-    &printem('ssl', 'util/libssl.num');
+    &printem('crypto', 'util/libcrypto.num', 'util/missingcrypto.txt');
+    &printem('ssl', 'util/libssl.num', 'util/missingssl.txt');
     &checkmacros();
 }
 
diff --git a/util/missingcrypto.txt b/util/missingcrypto.txt
new file mode 100644 (file)
index 0000000..e68ddc8
--- /dev/null
@@ -0,0 +1,1499 @@
+# A list of libcrypto functions that are known to be missing documentation as
+# used by the find-doc-nits -v option. The list is as of commit 355b419698.
+ACCESS_DESCRIPTION_it
+ADMISSIONS_it
+ADMISSION_SYNTAX_it
+AES_bi_ige_encrypt
+AES_cbc_encrypt
+AES_cfb128_encrypt
+AES_cfb1_encrypt
+AES_cfb8_encrypt
+AES_decrypt
+AES_ecb_encrypt
+AES_encrypt
+AES_ige_encrypt
+AES_ofb128_encrypt
+AES_options
+AES_set_decrypt_key
+AES_set_encrypt_key
+AES_unwrap_key
+AES_wrap_key
+ASIdOrRange_it
+ASIdentifierChoice_it
+ASIdentifiers_it
+ASRange_it
+AUTHORITY_INFO_ACCESS_it
+AUTHORITY_KEYID_it
+BASIC_CONSTRAINTS_it
+BIGNUM_it
+BIO_accept
+BIO_asn1_get_prefix
+BIO_asn1_get_suffix
+BIO_asn1_set_prefix
+BIO_asn1_set_suffix
+BIO_clear_flags
+BIO_copy_next_retry
+BIO_dgram_is_sctp
+BIO_dgram_non_fatal_error
+BIO_dgram_sctp_msg_waiting
+BIO_dgram_sctp_notification_cb
+BIO_dgram_sctp_wait_for_dry
+BIO_dump
+BIO_dump_cb
+BIO_dump_fp
+BIO_dump_indent
+BIO_dump_indent_cb
+BIO_dump_indent_fp
+BIO_dup_chain
+BIO_f_asn1
+BIO_f_linebuffer
+BIO_f_nbio_test
+BIO_f_reliable
+BIO_f_zlib
+BIO_fd_non_fatal_error
+BIO_fd_should_retry
+BIO_get_accept_socket
+BIO_get_host_ip
+BIO_get_port
+BIO_gethostbyname
+BIO_hex_string
+BIO_indent
+BIO_method_name
+BIO_new_NDEF
+BIO_new_PKCS7
+BIO_new_dgram
+BIO_new_dgram_sctp
+BIO_nread
+BIO_nread0
+BIO_number_read
+BIO_number_written
+BIO_nwrite
+BIO_nwrite0
+BIO_s_datagram
+BIO_s_datagram_sctp
+BIO_s_log
+BIO_set_flags
+BIO_set_tcp_ndelay
+BIO_sock_error
+BIO_sock_info
+BIO_sock_init
+BIO_sock_non_fatal_error
+BIO_sock_should_retry
+BIO_socket_ioctl
+BIO_socket_nbio
+BIO_test_flags
+BN_GF2m_add
+BN_GF2m_arr2poly
+BN_GF2m_mod
+BN_GF2m_mod_arr
+BN_GF2m_mod_div
+BN_GF2m_mod_div_arr
+BN_GF2m_mod_exp
+BN_GF2m_mod_exp_arr
+BN_GF2m_mod_inv
+BN_GF2m_mod_inv_arr
+BN_GF2m_mod_mul
+BN_GF2m_mod_mul_arr
+BN_GF2m_mod_solve_quad
+BN_GF2m_mod_solve_quad_arr
+BN_GF2m_mod_sqr
+BN_GF2m_mod_sqr_arr
+BN_GF2m_mod_sqrt
+BN_GF2m_mod_sqrt_arr
+BN_GF2m_poly2arr
+BN_MONT_CTX_set_locked
+BN_X931_derive_prime_ex
+BN_X931_generate_Xpq
+BN_X931_generate_prime_ex
+BN_abs_is_word
+BN_asc2bn
+BN_bntest_rand
+BN_consttime_swap
+BN_generate_dsa_nonce
+BN_get_flags
+BN_get_params
+BN_is_negative
+BN_kronecker
+BN_mod_add_quick
+BN_mod_exp2_mont
+BN_mod_exp_mont
+BN_mod_exp_mont_consttime
+BN_mod_exp_mont_word
+BN_mod_exp_recp
+BN_mod_exp_simple
+BN_mod_lshift
+BN_mod_lshift1
+BN_mod_lshift1_quick
+BN_mod_lshift_quick
+BN_mod_sqrt
+BN_mod_sub_quick
+BN_nist_mod_192
+BN_nist_mod_224
+BN_nist_mod_256
+BN_nist_mod_384
+BN_nist_mod_521
+BN_nist_mod_func
+BN_options
+BN_reciprocal
+BN_set_flags
+BN_set_negative
+BN_set_params
+BN_uadd
+BN_usub
+BN_zero_ex
+CAST_cbc_encrypt
+CAST_cfb64_encrypt
+CAST_decrypt
+CAST_ecb_encrypt
+CAST_encrypt
+CAST_ofb64_encrypt
+CAST_set_key
+CBIGNUM_it
+CERTIFICATEPOLICIES_it
+CMAC_CTX_cleanup
+CMAC_CTX_copy
+CMAC_CTX_free
+CMAC_CTX_get0_cipher_ctx
+CMAC_CTX_new
+CMAC_Final
+CMAC_Init
+CMAC_Update
+CMAC_resume
+CMS_ContentInfo_it
+CMS_EncryptedData_decrypt
+CMS_EncryptedData_encrypt
+CMS_EncryptedData_set1_key
+CMS_EnvelopedData_create
+CMS_ReceiptRequest_it
+CMS_RecipientEncryptedKey_cert_cmp
+CMS_RecipientEncryptedKey_get0_id
+CMS_RecipientInfo_get0_pkey_ctx
+CMS_RecipientInfo_kari_decrypt
+CMS_RecipientInfo_kari_get0_alg
+CMS_RecipientInfo_kari_get0_ctx
+CMS_RecipientInfo_kari_get0_orig_id
+CMS_RecipientInfo_kari_get0_reks
+CMS_RecipientInfo_kari_orig_id_cmp
+CMS_RecipientInfo_kari_set0_pkey
+CMS_RecipientInfo_ktri_get0_algs
+CMS_RecipientInfo_set0_password
+CMS_SharedInfo_encode
+CMS_SignedData_init
+CMS_SignerInfo_get0_algs
+CMS_SignerInfo_get0_md_ctx
+CMS_SignerInfo_get0_pkey_ctx
+CMS_SignerInfo_verify
+CMS_SignerInfo_verify_content
+CMS_add0_CertificateChoices
+CMS_add0_RevocationInfoChoice
+CMS_add0_recipient_password
+CMS_add_simple_smimecap
+CMS_add_smimecap
+CMS_add_standard_smimecap
+CMS_data
+CMS_dataFinal
+CMS_dataInit
+CMS_data_create
+CMS_decrypt_set1_key
+CMS_decrypt_set1_password
+CMS_decrypt_set1_pkey
+CMS_digest_create
+CMS_digest_verify
+CMS_is_detached
+CMS_set1_signers_certs
+CMS_set_detached
+CMS_signed_add1_attr
+CMS_signed_add1_attr_by_NID
+CMS_signed_add1_attr_by_OBJ
+CMS_signed_add1_attr_by_txt
+CMS_signed_delete_attr
+CMS_signed_get0_data_by_OBJ
+CMS_signed_get_attr
+CMS_signed_get_attr_by_NID
+CMS_signed_get_attr_by_OBJ
+CMS_signed_get_attr_count
+CMS_stream
+CMS_unsigned_add1_attr
+CMS_unsigned_add1_attr_by_NID
+CMS_unsigned_add1_attr_by_OBJ
+CMS_unsigned_add1_attr_by_txt
+CMS_unsigned_delete_attr
+CMS_unsigned_get0_data_by_OBJ
+CMS_unsigned_get_attr
+CMS_unsigned_get_attr_by_NID
+CMS_unsigned_get_attr_by_OBJ
+CMS_unsigned_get_attr_count
+COMP_CTX_free
+COMP_CTX_get_method
+COMP_CTX_get_type
+COMP_CTX_new
+COMP_compress_block
+COMP_expand_block
+COMP_get_name
+COMP_get_type
+COMP_zlib
+CONF_dump_bio
+CONF_dump_fp
+CONF_free
+CONF_get1_default_config_file
+CONF_get_number
+CONF_get_section
+CONF_get_string
+CONF_imodule_get_flags
+CONF_imodule_get_module
+CONF_imodule_get_name
+CONF_imodule_get_usr_data
+CONF_imodule_get_value
+CONF_imodule_set_flags
+CONF_imodule_set_usr_data
+CONF_load
+CONF_load_bio
+CONF_load_fp
+CONF_module_add
+CONF_module_get_usr_data
+CONF_module_set_usr_data
+CONF_parse_list
+CONF_set_default_method
+CONF_set_nconf
+CRL_DIST_POINTS_it
+CRYPTO_128_unwrap
+CRYPTO_128_unwrap_pad
+CRYPTO_128_wrap
+CRYPTO_128_wrap_pad
+CRYPTO_THREAD_cleanup_local
+CRYPTO_THREAD_compare_id
+CRYPTO_THREAD_get_current_id
+CRYPTO_THREAD_get_local
+CRYPTO_THREAD_init_local
+CRYPTO_THREAD_set_local
+CRYPTO_cbc128_decrypt
+CRYPTO_cbc128_encrypt
+CRYPTO_ccm128_aad
+CRYPTO_ccm128_decrypt
+CRYPTO_ccm128_decrypt_ccm64
+CRYPTO_ccm128_encrypt
+CRYPTO_ccm128_encrypt_ccm64
+CRYPTO_ccm128_init
+CRYPTO_ccm128_setiv
+CRYPTO_ccm128_tag
+CRYPTO_cfb128_1_encrypt
+CRYPTO_cfb128_8_encrypt
+CRYPTO_cfb128_encrypt
+CRYPTO_ctr128_encrypt
+CRYPTO_ctr128_encrypt_ctr32
+CRYPTO_cts128_decrypt
+CRYPTO_cts128_decrypt_block
+CRYPTO_cts128_encrypt
+CRYPTO_cts128_encrypt_block
+CRYPTO_dup_ex_data
+CRYPTO_gcm128_aad
+CRYPTO_gcm128_decrypt
+CRYPTO_gcm128_decrypt_ctr32
+CRYPTO_gcm128_encrypt
+CRYPTO_gcm128_encrypt_ctr32
+CRYPTO_gcm128_finish
+CRYPTO_gcm128_init
+CRYPTO_gcm128_new
+CRYPTO_gcm128_release
+CRYPTO_gcm128_setiv
+CRYPTO_gcm128_tag
+CRYPTO_mem_debug_free
+CRYPTO_mem_debug_malloc
+CRYPTO_mem_debug_realloc
+CRYPTO_memcmp
+CRYPTO_memdup
+CRYPTO_nistcts128_decrypt
+CRYPTO_nistcts128_decrypt_block
+CRYPTO_nistcts128_encrypt
+CRYPTO_nistcts128_encrypt_block
+CRYPTO_ocb128_aad
+CRYPTO_ocb128_cleanup
+CRYPTO_ocb128_copy_ctx
+CRYPTO_ocb128_decrypt
+CRYPTO_ocb128_encrypt
+CRYPTO_ocb128_finish
+CRYPTO_ocb128_init
+CRYPTO_ocb128_new
+CRYPTO_ocb128_setiv
+CRYPTO_ocb128_tag
+CRYPTO_ofb128_encrypt
+CRYPTO_secure_actual_size
+CRYPTO_secure_allocated
+CRYPTO_siv128_aad
+CRYPTO_siv128_cleanup
+CRYPTO_siv128_copy_ctx
+CRYPTO_siv128_decrypt
+CRYPTO_siv128_encrypt
+CRYPTO_siv128_finish
+CRYPTO_siv128_get_tag
+CRYPTO_siv128_init
+CRYPTO_siv128_new
+CRYPTO_siv128_set_tag
+CRYPTO_siv128_speed
+CRYPTO_xts128_encrypt
+Camellia_cbc_encrypt
+Camellia_cfb128_encrypt
+Camellia_cfb1_encrypt
+Camellia_cfb8_encrypt
+Camellia_ctr128_encrypt
+Camellia_decrypt
+Camellia_ecb_encrypt
+Camellia_encrypt
+Camellia_ofb128_encrypt
+Camellia_set_key
+DES_cbc_encrypt
+DES_check_key_parity
+DES_decrypt3
+DES_ede3_cfb_encrypt
+DES_encrypt1
+DES_encrypt2
+DES_encrypt3
+DES_options
+DH_KDF_X9_42
+DH_check_pub_key
+DH_compute_key_padded
+DH_up_ref
+DHparams_dup
+DHparams_it
+DIRECTORYSTRING_it
+DISPLAYTEXT_it
+DIST_POINT_NAME_it
+DIST_POINT_it
+DIST_POINT_set_dpname
+DSA_get_method
+DSA_up_ref
+DSO_METHOD_openssl
+DSO_bind_func
+DSO_convert_filename
+DSO_ctrl
+DSO_dsobyaddr
+DSO_flags
+DSO_free
+DSO_get_filename
+DSO_global_lookup
+DSO_load
+DSO_merge
+DSO_new
+DSO_pathbyaddr
+DSO_set_filename
+DSO_up_ref
+ECDH_KDF_X9_62
+ECDH_compute_key
+ECPARAMETERS_it
+ECPKPARAMETERS_it
+ECParameters_print
+ECParameters_print_fp
+EC_GROUP_get_mont_data
+EC_KEY_METHOD_free
+EC_KEY_METHOD_get_compute_key
+EC_KEY_METHOD_get_init
+EC_KEY_METHOD_get_keygen
+EC_KEY_METHOD_get_sign
+EC_KEY_METHOD_get_verify
+EC_KEY_METHOD_new
+EC_KEY_METHOD_set_compute_key
+EC_KEY_METHOD_set_init
+EC_KEY_METHOD_set_keygen
+EC_KEY_METHOD_set_sign
+EC_KEY_METHOD_set_verify
+EC_KEY_OpenSSL
+EC_KEY_can_sign
+EC_KEY_get_default_method
+EC_KEY_new_method
+EC_KEY_print
+EC_KEY_print_fp
+EC_KEY_set_default_method
+EC_curve_nid2nist
+EC_curve_nist2nid
+EDIPARTYNAME_it
+ENGINE_get_EC
+ENGINE_get_default_EC
+ENGINE_get_pkey_asn1_meth
+ENGINE_get_pkey_asn1_meth_engine
+ENGINE_get_pkey_asn1_meth_str
+ENGINE_get_pkey_asn1_meths
+ENGINE_get_pkey_meth
+ENGINE_get_pkey_meth_engine
+ENGINE_get_pkey_meths
+ENGINE_get_ssl_client_cert_function
+ENGINE_get_static_state
+ENGINE_load_ssl_client_cert
+ENGINE_pkey_asn1_find_str
+ENGINE_register_EC
+ENGINE_register_all_EC
+ENGINE_register_all_pkey_asn1_meths
+ENGINE_register_all_pkey_meths
+ENGINE_register_pkey_asn1_meths
+ENGINE_register_pkey_meths
+ENGINE_set_EC
+ENGINE_set_default_EC
+ENGINE_set_default_pkey_asn1_meths
+ENGINE_set_default_pkey_meths
+ENGINE_set_load_ssl_client_cert_function
+ENGINE_set_pkey_asn1_meths
+ENGINE_set_pkey_meths
+ENGINE_setup_bsd_cryptodev
+ENGINE_unregister_EC
+ENGINE_unregister_pkey_asn1_meths
+ENGINE_unregister_pkey_meths
+ERR_clear_last_mark
+ERR_get_state
+ERR_load_ASN1_strings
+ERR_load_ASYNC_strings
+ERR_load_BIO_strings
+ERR_load_BN_strings
+ERR_load_BUF_strings
+ERR_load_CMP_strings
+ERR_load_CMS_strings
+ERR_load_COMP_strings
+ERR_load_CONF_strings
+ERR_load_CRMF_strings
+ERR_load_CRYPTO_strings
+ERR_load_CRYPTOlib_strings
+ERR_load_CT_strings
+ERR_load_DH_strings
+ERR_load_DSA_strings
+ERR_load_DSO_strings
+ERR_load_EC_strings
+ERR_load_ENGINE_strings
+ERR_load_ERR_strings
+ERR_load_ESS_strings
+ERR_load_EVP_strings
+ERR_load_KDF_strings
+ERR_load_OBJ_strings
+ERR_load_OCSP_strings
+ERR_load_OSSL_STORE_strings
+ERR_load_PEM_strings
+ERR_load_PKCS12_strings
+ERR_load_PKCS7_strings
+ERR_load_RAND_strings
+ERR_load_RSA_strings
+ERR_load_TS_strings
+ERR_load_UI_strings
+ERR_load_X509V3_strings
+ERR_load_X509_strings
+ERR_load_strings_const
+ERR_set_error_data
+ERR_unload_strings
+ESS_CERT_ID_V2_dup
+ESS_CERT_ID_V2_free
+ESS_CERT_ID_V2_new
+ESS_SIGNING_CERT_V2_dup
+ESS_SIGNING_CERT_V2_free
+ESS_SIGNING_CERT_V2_new
+ESS_SIGNING_CERT_V2_new_init
+ESS_SIGNING_CERT_new_init
+EVP_CIPHER_CTX_buf_noconst
+EVP_CIPHER_CTX_clear_flags
+EVP_CIPHER_CTX_copy
+EVP_CIPHER_CTX_encrypting
+EVP_CIPHER_CTX_iv
+EVP_CIPHER_CTX_iv_noconst
+EVP_CIPHER_CTX_num
+EVP_CIPHER_CTX_original_iv
+EVP_CIPHER_CTX_rand_key
+EVP_CIPHER_CTX_set_flags
+EVP_CIPHER_CTX_set_num
+EVP_CIPHER_CTX_test_flags
+EVP_CIPHER_do_all
+EVP_CIPHER_do_all_sorted
+EVP_CIPHER_fetch
+EVP_CIPHER_get_asn1_iv
+EVP_CIPHER_impl_ctx_size
+EVP_CIPHER_set_asn1_iv
+EVP_CIPHER_upref
+EVP_Cipher
+EVP_MAC_do_all
+EVP_MAC_do_all_sorted
+EVP_MD_do_all
+EVP_MD_do_all_sorted
+EVP_PBE_CipherInit
+EVP_PBE_alg_add
+EVP_PBE_alg_add_type
+EVP_PBE_cleanup
+EVP_PBE_find
+EVP_PBE_get
+EVP_PBE_scrypt
+EVP_PKCS82PKEY
+EVP_PKEY2PKCS8
+EVP_PKEY_CTX_get0_peerkey
+EVP_PKEY_CTX_get0_pkey
+EVP_PKEY_CTX_get_data
+EVP_PKEY_CTX_get_operation
+EVP_PKEY_CTX_hex2ctrl
+EVP_PKEY_CTX_set0_keygen_info
+EVP_PKEY_CTX_set_data
+EVP_PKEY_CTX_str2ctrl
+EVP_PKEY_add1_attr
+EVP_PKEY_add1_attr_by_NID
+EVP_PKEY_add1_attr_by_OBJ
+EVP_PKEY_add1_attr_by_txt
+EVP_PKEY_assign
+EVP_PKEY_bits
+EVP_PKEY_decrypt_old
+EVP_PKEY_delete_attr
+EVP_PKEY_encrypt_old
+EVP_PKEY_get0
+EVP_PKEY_get1_tls_encodedpoint
+EVP_PKEY_get_attr
+EVP_PKEY_get_attr_by_NID
+EVP_PKEY_get_attr_by_OBJ
+EVP_PKEY_get_attr_count
+EVP_PKEY_save_parameters
+EVP_PKEY_set1_tls_encodedpoint
+EVP_PKEY_set_type
+EVP_PKEY_set_type_str
+EVP_add_alg_module
+EVP_add_cipher
+EVP_add_digest
+EVP_aes_128_siv
+EVP_aes_192_siv
+EVP_aes_256_siv
+EVP_get_pw_prompt
+EVP_hex2ctrl
+EVP_read_pw_string
+EVP_read_pw_string_min
+EVP_set_pw_prompt
+EVP_str2ctrl
+EXTENDED_KEY_USAGE_it
+FIPS_mode
+FIPS_mode_set
+GENERAL_NAMES_it
+GENERAL_NAME_cmp
+GENERAL_NAME_get0_otherName
+GENERAL_NAME_get0_value
+GENERAL_NAME_it
+GENERAL_NAME_print
+GENERAL_NAME_set0_othername
+GENERAL_NAME_set0_value
+GENERAL_SUBTREE_it
+IDEA_cbc_encrypt
+IDEA_cfb64_encrypt
+IDEA_ecb_encrypt
+IDEA_encrypt
+IDEA_ofb64_encrypt
+IDEA_options
+IDEA_set_decrypt_key
+IDEA_set_encrypt_key
+INT32_it
+INT64_it
+IPAddressChoice_it
+IPAddressFamily_it
+IPAddressOrRange_it
+IPAddressRange_it
+ISSUING_DIST_POINT_it
+LONG_it
+MD2_options
+MD4_Transform
+MD5_Transform
+NAME_CONSTRAINTS_check
+NAME_CONSTRAINTS_check_CN
+NAME_CONSTRAINTS_it
+NAMING_AUTHORITY_it
+NCONF_WIN32
+NCONF_default
+NCONF_dump_bio
+NCONF_dump_fp
+NCONF_free
+NCONF_free_data
+NCONF_get_number_e
+NCONF_get_section
+NCONF_get_string
+NCONF_load
+NCONF_load_bio
+NCONF_load_fp
+NCONF_new
+NETSCAPE_CERT_SEQUENCE_it
+NETSCAPE_SPKAC_it
+NETSCAPE_SPKI_b64_decode
+NETSCAPE_SPKI_b64_encode
+NETSCAPE_SPKI_get_pubkey
+NETSCAPE_SPKI_it
+NETSCAPE_SPKI_print
+NETSCAPE_SPKI_set_pubkey
+NETSCAPE_SPKI_sign
+NETSCAPE_SPKI_verify
+NOTICEREF_it
+OBJ_NAME_add
+OBJ_NAME_cleanup
+OBJ_NAME_do_all
+OBJ_NAME_do_all_sorted
+OBJ_NAME_get
+OBJ_NAME_init
+OBJ_NAME_new_index
+OBJ_NAME_remove
+OBJ_add_object
+OBJ_add_sigid
+OBJ_bsearch_
+OBJ_bsearch_ex_
+OBJ_create_objects
+OBJ_find_sigid_algs
+OBJ_find_sigid_by_algs
+OBJ_new_nid
+OBJ_sigid_free
+OCSP_BASICRESP_add1_ext_i2d
+OCSP_BASICRESP_add_ext
+OCSP_BASICRESP_delete_ext
+OCSP_BASICRESP_get1_ext_d2i
+OCSP_BASICRESP_get_ext
+OCSP_BASICRESP_get_ext_by_NID
+OCSP_BASICRESP_get_ext_by_OBJ
+OCSP_BASICRESP_get_ext_by_critical
+OCSP_BASICRESP_get_ext_count
+OCSP_BASICRESP_it
+OCSP_CERTID_it
+OCSP_CERTSTATUS_it
+OCSP_CRLID_it
+OCSP_ONEREQ_add1_ext_i2d
+OCSP_ONEREQ_add_ext
+OCSP_ONEREQ_delete_ext
+OCSP_ONEREQ_get1_ext_d2i
+OCSP_ONEREQ_get_ext
+OCSP_ONEREQ_get_ext_by_NID
+OCSP_ONEREQ_get_ext_by_OBJ
+OCSP_ONEREQ_get_ext_by_critical
+OCSP_ONEREQ_get_ext_count
+OCSP_ONEREQ_it
+OCSP_REQINFO_it
+OCSP_REQUEST_add1_ext_i2d
+OCSP_REQUEST_add_ext
+OCSP_REQUEST_delete_ext
+OCSP_REQUEST_get1_ext_d2i
+OCSP_REQUEST_get_ext
+OCSP_REQUEST_get_ext_by_NID
+OCSP_REQUEST_get_ext_by_OBJ
+OCSP_REQUEST_get_ext_by_critical
+OCSP_REQUEST_get_ext_count
+OCSP_REQUEST_it
+OCSP_REQUEST_print
+OCSP_REQ_CTX_get0_mem_bio
+OCSP_REQ_CTX_http
+OCSP_REQ_CTX_i2d
+OCSP_REQ_CTX_nbio
+OCSP_REQ_CTX_nbio_d2i
+OCSP_REQ_CTX_new
+OCSP_RESPBYTES_it
+OCSP_RESPDATA_it
+OCSP_RESPID_it
+OCSP_RESPONSE_it
+OCSP_RESPONSE_print
+OCSP_REVOKEDINFO_it
+OCSP_SERVICELOC_it
+OCSP_SIGNATURE_it
+OCSP_SINGLERESP_add1_ext_i2d
+OCSP_SINGLERESP_add_ext
+OCSP_SINGLERESP_delete_ext
+OCSP_SINGLERESP_get0_id
+OCSP_SINGLERESP_get1_ext_d2i
+OCSP_SINGLERESP_get_ext
+OCSP_SINGLERESP_get_ext_by_NID
+OCSP_SINGLERESP_get_ext_by_OBJ
+OCSP_SINGLERESP_get_ext_by_critical
+OCSP_SINGLERESP_get_ext_count
+OCSP_SINGLERESP_it
+OCSP_accept_responses_new
+OCSP_archive_cutoff_new
+OCSP_basic_add1_cert
+OCSP_basic_add1_status
+OCSP_cert_status_str
+OCSP_crlID2_new
+OCSP_crlID_new
+OCSP_crl_reason_str
+OCSP_onereq_get0_id
+OCSP_parse_url
+OCSP_request_is_signed
+OCSP_request_set1_name
+OCSP_request_verify
+OCSP_response_status_str
+OCSP_url_svcloc_new
+OPENSSL_DIR_end
+OPENSSL_DIR_read
+OPENSSL_LH_delete
+OPENSSL_LH_doall
+OPENSSL_LH_doall_arg
+OPENSSL_LH_error
+OPENSSL_LH_flush
+OPENSSL_LH_free
+OPENSSL_LH_get_down_load
+OPENSSL_LH_insert
+OPENSSL_LH_new
+OPENSSL_LH_num_items
+OPENSSL_LH_retrieve
+OPENSSL_LH_set_down_load
+OPENSSL_LH_strhash
+OPENSSL_asc2uni
+OPENSSL_die
+OPENSSL_gmtime
+OPENSSL_gmtime_adj
+OPENSSL_gmtime_diff
+OPENSSL_init
+OPENSSL_isservice
+OPENSSL_issetugid
+OPENSSL_memcmp
+OPENSSL_sk_deep_copy
+OPENSSL_sk_delete
+OPENSSL_sk_delete_ptr
+OPENSSL_sk_dup
+OPENSSL_sk_find
+OPENSSL_sk_find_ex
+OPENSSL_sk_free
+OPENSSL_sk_insert
+OPENSSL_sk_is_sorted
+OPENSSL_sk_new
+OPENSSL_sk_new_null
+OPENSSL_sk_new_reserve
+OPENSSL_sk_num
+OPENSSL_sk_pop
+OPENSSL_sk_pop_free
+OPENSSL_sk_push
+OPENSSL_sk_reserve
+OPENSSL_sk_set
+OPENSSL_sk_set_cmp_func
+OPENSSL_sk_shift
+OPENSSL_sk_sort
+OPENSSL_sk_unshift
+OPENSSL_sk_value
+OPENSSL_sk_zero
+OPENSSL_strnlen
+OPENSSL_uni2asc
+OPENSSL_uni2utf8
+OPENSSL_utf82uni
+OSSL_PARAM_construct_double
+OSSL_PARAM_construct_int
+OSSL_PARAM_construct_int32
+OSSL_PARAM_construct_int64
+OSSL_PARAM_construct_long
+OSSL_PARAM_construct_size_t
+OSSL_PARAM_construct_uint
+OSSL_PARAM_construct_uint32
+OSSL_PARAM_construct_uint64
+OSSL_PARAM_construct_ulong
+OSSL_PARAM_get_double
+OSSL_PARAM_get_int
+OSSL_PARAM_get_int32
+OSSL_PARAM_get_int64
+OSSL_PARAM_get_long
+OSSL_PARAM_get_size_t
+OSSL_PARAM_get_uint
+OSSL_PARAM_get_uint32
+OSSL_PARAM_get_uint64
+OSSL_PARAM_get_ulong
+OSSL_PARAM_set_double
+OSSL_PARAM_set_int
+OSSL_PARAM_set_int32
+OSSL_PARAM_set_int64
+OSSL_PARAM_set_long
+OSSL_PARAM_set_size_t
+OSSL_PARAM_set_uint
+OSSL_PARAM_set_uint32
+OSSL_PARAM_set_uint64
+OSSL_PARAM_set_ulong
+OSSL_STORE_do_all_loaders
+OSSL_STORE_vctrl
+OTHERNAME_cmp
+OTHERNAME_it
+PBE2PARAM_it
+PBEPARAM_it
+PBKDF2PARAM_it
+PEM_ASN1_read
+PEM_ASN1_read_bio
+PEM_ASN1_write
+PEM_ASN1_write_bio
+PEM_SignFinal
+PEM_SignInit
+PEM_SignUpdate
+PEM_X509_INFO_read
+PEM_X509_INFO_read_bio
+PEM_X509_INFO_write_bio
+PEM_def_callback
+PEM_dek_info
+PEM_proc_type
+PEM_read_bio_ECPrivateKey
+PEM_read_bio_Parameters
+PEM_write_bio_ASN1_stream
+PEM_write_bio_Parameters
+PKCS12_AUTHSAFES_it
+PKCS12_BAGS_it
+PKCS12_MAC_DATA_it
+PKCS12_PBE_add
+PKCS12_PBE_keyivgen
+PKCS12_SAFEBAGS_it
+PKCS12_SAFEBAG_create0_p8inf
+PKCS12_SAFEBAG_create0_pkcs8
+PKCS12_SAFEBAG_create_cert
+PKCS12_SAFEBAG_create_crl
+PKCS12_SAFEBAG_create_pkcs8_encrypt
+PKCS12_SAFEBAG_get0_attr
+PKCS12_SAFEBAG_get0_attrs
+PKCS12_SAFEBAG_get0_p8inf
+PKCS12_SAFEBAG_get0_pkcs8
+PKCS12_SAFEBAG_get0_safes
+PKCS12_SAFEBAG_get0_type
+PKCS12_SAFEBAG_get1_cert
+PKCS12_SAFEBAG_get1_crl
+PKCS12_SAFEBAG_get_bag_nid
+PKCS12_SAFEBAG_get_nid
+PKCS12_SAFEBAG_it
+PKCS12_add_CSPName_asc
+PKCS12_add_cert
+PKCS12_add_friendlyname_asc
+PKCS12_add_friendlyname_uni
+PKCS12_add_friendlyname_utf8
+PKCS12_add_key
+PKCS12_add_localkeyid
+PKCS12_add_safe
+PKCS12_add_safes
+PKCS12_decrypt_skey
+PKCS12_gen_mac
+PKCS12_get0_mac
+PKCS12_get_attr
+PKCS12_get_attr_gen
+PKCS12_get_friendlyname
+PKCS12_init
+PKCS12_it
+PKCS12_item_decrypt_d2i
+PKCS12_item_i2d_encrypt
+PKCS12_item_pack_safebag
+PKCS12_key_gen_asc
+PKCS12_key_gen_uni
+PKCS12_key_gen_utf8
+PKCS12_mac_present
+PKCS12_pack_authsafes
+PKCS12_pack_p7data
+PKCS12_pack_p7encdata
+PKCS12_pbe_crypt
+PKCS12_set_mac
+PKCS12_setup_mac
+PKCS12_unpack_authsafes
+PKCS12_unpack_p7data
+PKCS12_unpack_p7encdata
+PKCS12_verify_mac
+PKCS1_MGF1
+PKCS5_PBE_add
+PKCS5_PBE_keyivgen
+PKCS5_pbe2_set
+PKCS5_pbe2_set_iv
+PKCS5_pbe2_set_scrypt
+PKCS5_pbe_set
+PKCS5_pbe_set0_algor
+PKCS5_pbkdf2_set
+PKCS5_v2_PBE_keyivgen
+PKCS5_v2_scrypt_keyivgen
+PKCS7_ATTR_SIGN_it
+PKCS7_ATTR_VERIFY_it
+PKCS7_DIGEST_it
+PKCS7_ENCRYPT_it
+PKCS7_ENC_CONTENT_it
+PKCS7_ENVELOPE_it
+PKCS7_ISSUER_AND_SERIAL_it
+PKCS7_RECIP_INFO_get0_alg
+PKCS7_RECIP_INFO_it
+PKCS7_RECIP_INFO_set
+PKCS7_SIGNED_it
+PKCS7_SIGNER_INFO_get0_algs
+PKCS7_SIGNER_INFO_it
+PKCS7_SIGNER_INFO_set
+PKCS7_SIGNER_INFO_sign
+PKCS7_SIGN_ENVELOPE_it
+PKCS7_add0_attrib_signing_time
+PKCS7_add1_attrib_digest
+PKCS7_add_attrib_content_type
+PKCS7_add_attrib_smimecap
+PKCS7_add_attribute
+PKCS7_add_certificate
+PKCS7_add_crl
+PKCS7_add_recipient
+PKCS7_add_recipient_info
+PKCS7_add_signature
+PKCS7_add_signed_attribute
+PKCS7_add_signer
+PKCS7_cert_from_signer_info
+PKCS7_content_new
+PKCS7_ctrl
+PKCS7_dataDecode
+PKCS7_dataFinal
+PKCS7_dataInit
+PKCS7_dataVerify
+PKCS7_digest_from_attributes
+PKCS7_final
+PKCS7_get_attribute
+PKCS7_get_issuer_and_serial
+PKCS7_get_signed_attribute
+PKCS7_get_signer_info
+PKCS7_get_smimecap
+PKCS7_it
+PKCS7_set0_type_other
+PKCS7_set_attributes
+PKCS7_set_cipher
+PKCS7_set_content
+PKCS7_set_digest
+PKCS7_set_signed_attributes
+PKCS7_set_type
+PKCS7_signatureVerify
+PKCS7_simple_smimecap
+PKCS7_stream
+PKCS7_to_TS_TST_INFO
+PKCS8_PRIV_KEY_INFO_it
+PKCS8_add_keyusage
+PKCS8_decrypt
+PKCS8_encrypt
+PKCS8_get_attr
+PKCS8_pkey_add1_attr_by_NID
+PKCS8_pkey_get0
+PKCS8_pkey_get0_attrs
+PKCS8_pkey_set0
+PKCS8_set0_pbe
+PKEY_USAGE_PERIOD_it
+POLICYINFO_it
+POLICYQUALINFO_it
+POLICY_CONSTRAINTS_it
+POLICY_MAPPINGS_it
+POLICY_MAPPING_it
+PROFESSION_INFO_it
+PROXY_CERT_INFO_EXTENSION_it
+PROXY_POLICY_it
+RAND_set_rand_engine
+RC2_cbc_encrypt
+RC2_cfb64_encrypt
+RC2_decrypt
+RC2_ecb_encrypt
+RC2_encrypt
+RC2_ofb64_encrypt
+RC2_set_key
+RC4_options
+RC5_32_cbc_encrypt
+RC5_32_cfb64_encrypt
+RC5_32_decrypt
+RC5_32_ecb_encrypt
+RC5_32_encrypt
+RC5_32_ofb64_encrypt
+RC5_32_set_key
+RIPEMD160_Transform
+RSAPrivateKey_it
+RSAPublicKey_it
+RSA_OAEP_PARAMS_it
+RSA_PSS_PARAMS_it
+RSA_X931_derive_ex
+RSA_X931_generate_key_ex
+RSA_X931_hash_id
+RSA_null_method
+RSA_padding_add_PKCS1_PSS
+RSA_padding_add_PKCS1_PSS_mgf1
+RSA_padding_add_X931
+RSA_padding_check_X931
+RSA_pkey_ctx_ctrl
+RSA_setup_blinding
+RSA_up_ref
+RSA_verify_PKCS1_PSS
+RSA_verify_PKCS1_PSS_mgf1
+SCRYPT_PARAMS_it
+SEED_cbc_encrypt
+SEED_cfb128_encrypt
+SEED_decrypt
+SEED_ecb_encrypt
+SEED_encrypt
+SEED_ofb128_encrypt
+SEED_set_key
+SHA1_Transform
+SHA256_Transform
+SHA512_Transform
+SMIME_crlf_copy
+SMIME_read_ASN1
+SMIME_text
+SMIME_write_ASN1
+SRP_Calc_A
+SRP_Calc_B
+SRP_Calc_client_key
+SRP_Calc_server_key
+SRP_Calc_u
+SRP_Calc_x
+SRP_Verify_A_mod_N
+SRP_Verify_B_mod_N
+SXNETID_it
+SXNET_add_id_INTEGER
+SXNET_add_id_asc
+SXNET_add_id_ulong
+SXNET_get_id_INTEGER
+SXNET_get_id_asc
+SXNET_get_id_ulong
+SXNET_it
+TS_ACCURACY_get_micros
+TS_ACCURACY_get_millis
+TS_ACCURACY_get_seconds
+TS_ACCURACY_set_micros
+TS_ACCURACY_set_millis
+TS_ACCURACY_set_seconds
+TS_ASN1_INTEGER_print_bio
+TS_CONF_get_tsa_section
+TS_CONF_load_cert
+TS_CONF_load_certs
+TS_CONF_load_key
+TS_CONF_set_accuracy
+TS_CONF_set_certs
+TS_CONF_set_clock_precision_digits
+TS_CONF_set_crypto_device
+TS_CONF_set_def_policy
+TS_CONF_set_default_engine
+TS_CONF_set_digests
+TS_CONF_set_ess_cert_id_chain
+TS_CONF_set_ess_cert_id_digest
+TS_CONF_set_ordering
+TS_CONF_set_policies
+TS_CONF_set_serial
+TS_CONF_set_signer_cert
+TS_CONF_set_signer_digest
+TS_CONF_set_signer_key
+TS_CONF_set_tsa_name
+TS_MSG_IMPRINT_get_algo
+TS_MSG_IMPRINT_get_msg
+TS_MSG_IMPRINT_print_bio
+TS_MSG_IMPRINT_set_algo
+TS_MSG_IMPRINT_set_msg
+TS_OBJ_print_bio
+TS_REQ_add_ext
+TS_REQ_delete_ext
+TS_REQ_ext_free
+TS_REQ_get_cert_req
+TS_REQ_get_ext
+TS_REQ_get_ext_by_NID
+TS_REQ_get_ext_by_OBJ
+TS_REQ_get_ext_by_critical
+TS_REQ_get_ext_count
+TS_REQ_get_ext_d2i
+TS_REQ_get_exts
+TS_REQ_get_msg_imprint
+TS_REQ_get_nonce
+TS_REQ_get_policy_id
+TS_REQ_get_version
+TS_REQ_print_bio
+TS_REQ_set_cert_req
+TS_REQ_set_msg_imprint
+TS_REQ_set_nonce
+TS_REQ_set_policy_id
+TS_REQ_set_version
+TS_REQ_to_TS_VERIFY_CTX
+TS_RESP_CTX_add_failure_info
+TS_RESP_CTX_add_flags
+TS_RESP_CTX_add_md
+TS_RESP_CTX_add_policy
+TS_RESP_CTX_free
+TS_RESP_CTX_get_request
+TS_RESP_CTX_get_tst_info
+TS_RESP_CTX_new
+TS_RESP_CTX_set_accuracy
+TS_RESP_CTX_set_certs
+TS_RESP_CTX_set_clock_precision_digits
+TS_RESP_CTX_set_def_policy
+TS_RESP_CTX_set_ess_cert_id_digest
+TS_RESP_CTX_set_extension_cb
+TS_RESP_CTX_set_serial_cb
+TS_RESP_CTX_set_signer_cert
+TS_RESP_CTX_set_signer_digest
+TS_RESP_CTX_set_signer_key
+TS_RESP_CTX_set_status_info
+TS_RESP_CTX_set_status_info_cond
+TS_RESP_CTX_set_time_cb
+TS_RESP_create_response
+TS_RESP_get_status_info
+TS_RESP_get_token
+TS_RESP_get_tst_info
+TS_RESP_print_bio
+TS_RESP_set_status_info
+TS_RESP_set_tst_info
+TS_RESP_verify_response
+TS_RESP_verify_signature
+TS_RESP_verify_token
+TS_STATUS_INFO_get0_failure_info
+TS_STATUS_INFO_get0_status
+TS_STATUS_INFO_get0_text
+TS_STATUS_INFO_print_bio
+TS_STATUS_INFO_set_status
+TS_TST_INFO_add_ext
+TS_TST_INFO_delete_ext
+TS_TST_INFO_ext_free
+TS_TST_INFO_get_accuracy
+TS_TST_INFO_get_ext
+TS_TST_INFO_get_ext_by_NID
+TS_TST_INFO_get_ext_by_OBJ
+TS_TST_INFO_get_ext_by_critical
+TS_TST_INFO_get_ext_count
+TS_TST_INFO_get_ext_d2i
+TS_TST_INFO_get_exts
+TS_TST_INFO_get_msg_imprint
+TS_TST_INFO_get_nonce
+TS_TST_INFO_get_ordering
+TS_TST_INFO_get_policy_id
+TS_TST_INFO_get_serial
+TS_TST_INFO_get_time
+TS_TST_INFO_get_tsa
+TS_TST_INFO_get_version
+TS_TST_INFO_print_bio
+TS_TST_INFO_set_accuracy
+TS_TST_INFO_set_msg_imprint
+TS_TST_INFO_set_nonce
+TS_TST_INFO_set_ordering
+TS_TST_INFO_set_policy_id
+TS_TST_INFO_set_serial
+TS_TST_INFO_set_time
+TS_TST_INFO_set_tsa
+TS_TST_INFO_set_version
+TS_VERIFY_CTS_set_certs
+TS_VERIFY_CTX_add_flags
+TS_VERIFY_CTX_cleanup
+TS_VERIFY_CTX_free
+TS_VERIFY_CTX_init
+TS_VERIFY_CTX_new
+TS_VERIFY_CTX_set_data
+TS_VERIFY_CTX_set_flags
+TS_VERIFY_CTX_set_imprint
+TS_VERIFY_CTX_set_store
+TS_X509_ALGOR_print_bio
+TS_ext_print_bio
+TXT_DB_create_index
+TXT_DB_free
+TXT_DB_get_by_index
+TXT_DB_insert
+TXT_DB_read
+TXT_DB_write
+UINT32_it
+UINT64_it
+USERNOTICE_it
+UTF8_getc
+UTF8_putc
+WHIRLPOOL
+WHIRLPOOL_BitUpdate
+WHIRLPOOL_Final
+WHIRLPOOL_Init
+WHIRLPOOL_Update
+X509V3_EXT_CRL_add_conf
+X509V3_EXT_CRL_add_nconf
+X509V3_EXT_REQ_add_conf
+X509V3_EXT_REQ_add_nconf
+X509V3_EXT_add
+X509V3_EXT_add_alias
+X509V3_EXT_add_conf
+X509V3_EXT_add_list
+X509V3_EXT_add_nconf
+X509V3_EXT_add_nconf_sk
+X509V3_EXT_cleanup
+X509V3_EXT_conf
+X509V3_EXT_conf_nid
+X509V3_EXT_get
+X509V3_EXT_get_nid
+X509V3_EXT_nconf
+X509V3_EXT_nconf_nid
+X509V3_EXT_print
+X509V3_EXT_print_fp
+X509V3_EXT_val_prn
+X509V3_NAME_from_section
+X509V3_add_standard_extensions
+X509V3_add_value
+X509V3_add_value_bool
+X509V3_add_value_bool_nf
+X509V3_add_value_int
+X509V3_add_value_uchar
+X509V3_conf_free
+X509V3_extensions_print
+X509V3_get_section
+X509V3_get_string
+X509V3_get_value_bool
+X509V3_get_value_int
+X509V3_parse_list
+X509V3_section_free
+X509V3_set_conf_lhash
+X509V3_set_ctx
+X509V3_set_nconf
+X509V3_string_free
+X509_ALGORS_it
+X509_ALGOR_it
+X509_ATTRIBUTE_count
+X509_ATTRIBUTE_create
+X509_ATTRIBUTE_create_by_NID
+X509_ATTRIBUTE_create_by_OBJ
+X509_ATTRIBUTE_create_by_txt
+X509_ATTRIBUTE_get0_data
+X509_ATTRIBUTE_get0_object
+X509_ATTRIBUTE_get0_type
+X509_ATTRIBUTE_it
+X509_ATTRIBUTE_set1_data
+X509_ATTRIBUTE_set1_object
+X509_CERT_AUX_it
+X509_CINF_it
+X509_CRL_INFO_it
+X509_CRL_METHOD_free
+X509_CRL_METHOD_new
+X509_CRL_check_suiteb
+X509_CRL_cmp
+X509_CRL_diff
+X509_CRL_get_lastUpdate
+X509_CRL_get_meth_data
+X509_CRL_get_nextUpdate
+X509_CRL_http_nbio
+X509_CRL_it
+X509_CRL_match
+X509_CRL_print
+X509_CRL_print_ex
+X509_CRL_print_fp
+X509_CRL_set_default_method
+X509_CRL_set_meth_data
+X509_CRL_up_ref
+X509_EXTENSIONS_it
+X509_EXTENSION_it
+X509_INFO_free
+X509_INFO_new
+X509_LOOKUP_by_alias
+X509_LOOKUP_by_fingerprint
+X509_LOOKUP_by_issuer_serial
+X509_LOOKUP_by_subject
+X509_LOOKUP_ctrl
+X509_LOOKUP_free
+X509_LOOKUP_init
+X509_LOOKUP_new
+X509_LOOKUP_shutdown
+X509_NAME_ENTRY_it
+X509_NAME_ENTRY_set
+X509_NAME_cmp
+X509_NAME_hash
+X509_NAME_hash_old
+X509_NAME_it
+X509_NAME_set
+X509_OBJECT_free
+X509_OBJECT_get0_X509
+X509_OBJECT_get0_X509_CRL
+X509_OBJECT_get_type
+X509_OBJECT_idx_by_subject
+X509_OBJECT_new
+X509_OBJECT_retrieve_by_subject
+X509_OBJECT_retrieve_match
+X509_OBJECT_up_ref_count
+X509_PKEY_free
+X509_PKEY_new
+X509_POLICY_NODE_print
+X509_PUBKEY_it
+X509_PURPOSE_add
+X509_PURPOSE_cleanup
+X509_PURPOSE_get0
+X509_PURPOSE_get0_name
+X509_PURPOSE_get0_sname
+X509_PURPOSE_get_by_id
+X509_PURPOSE_get_by_sname
+X509_PURPOSE_get_count
+X509_PURPOSE_get_id
+X509_PURPOSE_get_trust
+X509_PURPOSE_set
+X509_REQ_INFO_it
+X509_REQ_add1_attr
+X509_REQ_add1_attr_by_NID
+X509_REQ_add1_attr_by_OBJ
+X509_REQ_add1_attr_by_txt
+X509_REQ_add_extensions
+X509_REQ_add_extensions_nid
+X509_REQ_delete_attr
+X509_REQ_extension_nid
+X509_REQ_get1_email
+X509_REQ_get_attr
+X509_REQ_get_attr_by_NID
+X509_REQ_get_attr_by_OBJ
+X509_REQ_get_attr_count
+X509_REQ_get_extension_nids
+X509_REQ_get_extensions
+X509_REQ_it
+X509_REQ_print
+X509_REQ_print_ex
+X509_REQ_print_fp
+X509_REQ_set_extension_nids
+X509_REQ_to_X509
+X509_REVOKED_it
+X509_SIG_it
+X509_STORE_CTX_get0_current_crl
+X509_STORE_CTX_get0_current_issuer
+X509_STORE_CTX_get0_parent_ctx
+X509_STORE_CTX_get0_policy_tree
+X509_STORE_CTX_get0_store
+X509_STORE_CTX_get1_certs
+X509_STORE_CTX_get1_crls
+X509_STORE_CTX_get1_issuer
+X509_STORE_CTX_get_by_subject
+X509_STORE_CTX_get_explicit_policy
+X509_STORE_CTX_get_obj_by_subject
+X509_STORE_CTX_purpose_inherit
+X509_STORE_CTX_set0_dane
+X509_STORE_CTX_set_depth
+X509_STORE_CTX_set_flags
+X509_STORE_CTX_set_purpose
+X509_STORE_CTX_set_time
+X509_STORE_CTX_set_trust
+X509_STORE_add_lookup
+X509_STORE_get_verify
+X509_TRUST_add
+X509_TRUST_cleanup
+X509_TRUST_get0
+X509_TRUST_get0_name
+X509_TRUST_get_by_id
+X509_TRUST_get_count
+X509_TRUST_get_flags
+X509_TRUST_get_trust
+X509_TRUST_set
+X509_TRUST_set_default
+X509_VAL_it
+X509_VERIFY_PARAM_add0_table
+X509_VERIFY_PARAM_free
+X509_VERIFY_PARAM_get0
+X509_VERIFY_PARAM_get0_name
+X509_VERIFY_PARAM_get_count
+X509_VERIFY_PARAM_inherit
+X509_VERIFY_PARAM_lookup
+X509_VERIFY_PARAM_move_peername
+X509_VERIFY_PARAM_new
+X509_VERIFY_PARAM_set1
+X509_VERIFY_PARAM_set1_name
+X509_VERIFY_PARAM_table_cleanup
+X509_add1_reject_object
+X509_add1_trust_object
+X509_alias_get0
+X509_alias_set1
+X509_aux_print
+X509_certificate_type
+X509_chain_check_suiteb
+X509_check_akid
+X509_check_purpose
+X509_check_trust
+X509_cmp
+X509_email_free
+X509_find_by_issuer_and_serial
+X509_find_by_subject
+X509_get0_pubkey_bitstr
+X509_get0_reject_objects
+X509_get0_trust_objects
+X509_get1_email
+X509_get1_ocsp
+X509_get_default_cert_area
+X509_get_default_cert_dir
+X509_get_default_cert_dir_env
+X509_get_default_cert_file
+X509_get_default_cert_file_env
+X509_get_default_private_dir
+X509_get_pubkey_parameters
+X509_get_signature_type
+X509_gmtime_adj
+X509_http_nbio
+X509_issuer_and_serial_cmp
+X509_issuer_and_serial_hash
+X509_issuer_name_cmp
+X509_issuer_name_hash
+X509_issuer_name_hash_old
+X509_it
+X509_keyid_get0
+X509_keyid_set1
+X509_ocspid_print
+X509_policy_check
+X509_policy_level_get0_node
+X509_policy_level_node_count
+X509_policy_node_get0_parent
+X509_policy_node_get0_policy
+X509_policy_node_get0_qualifiers
+X509_policy_tree_free
+X509_policy_tree_get0_level
+X509_policy_tree_get0_policies
+X509_policy_tree_get0_user_policies
+X509_policy_tree_level_count
+X509_print
+X509_print_ex
+X509_print_ex_fp
+X509_print_fp
+X509_reject_clear
+X509_signature_dump
+X509_signature_print
+X509_subject_name_cmp
+X509_subject_name_hash
+X509_subject_name_hash_old
+X509_supported_extension
+X509_to_X509_REQ
+X509_trust_clear
+X509_trusted
+X509at_add1_attr
+X509at_add1_attr_by_NID
+X509at_add1_attr_by_OBJ
+X509at_add1_attr_by_txt
+X509at_delete_attr
+X509at_get0_data_by_OBJ
+X509at_get_attr
+X509at_get_attr_by_NID
+X509at_get_attr_by_OBJ
+X509at_get_attr_count
+X509v3_addr_add_inherit
+X509v3_addr_add_prefix
+X509v3_addr_add_range
+X509v3_addr_canonize
+X509v3_addr_get_afi
+X509v3_addr_get_range
+X509v3_addr_inherits
+X509v3_addr_is_canonical
+X509v3_addr_subset
+X509v3_addr_validate_path
+X509v3_addr_validate_resource_set
+X509v3_asid_add_id_or_range
+X509v3_asid_add_inherit
+X509v3_asid_canonize
+X509v3_asid_inherits
+X509v3_asid_is_canonical
+X509v3_asid_subset
+X509v3_asid_validate_path
+X509v3_asid_validate_resource_set
+ZINT32_it
+ZINT64_it
+ZLONG_it
+ZUINT32_it
+ZUINT64_it
+_shadow_DES_check_key
+a2d_ASN1_OBJECT
+a2i_ASN1_ENUMERATED
+a2i_ASN1_INTEGER
+a2i_ASN1_STRING
+a2i_GENERAL_NAME
+a2i_IPADDRESS
+a2i_IPADDRESS_NC
+b2i_PVK_bio
+b2i_PrivateKey
+b2i_PrivateKey_bio
+b2i_PublicKey
+b2i_PublicKey_bio
+conf_ssl_get
+conf_ssl_get_cmd
+conf_ssl_name_find
+d2i_ESS_CERT_ID_V2
+d2i_ESS_SIGNING_CERT_V2
+d2i_X509_bio
+d2i_X509_fp
+err_free_strings_int
+i2a_ACCESS_DESCRIPTION
+i2a_ASN1_ENUMERATED
+i2a_ASN1_INTEGER
+i2a_ASN1_OBJECT
+i2a_ASN1_STRING
+i2b_PVK_bio
+i2b_PrivateKey_bio
+i2b_PublicKey_bio
+i2d_ESS_CERT_ID_V2
+i2d_ESS_SIGNING_CERT_V2
+i2d_PrivateKey_bio
+i2d_PrivateKey_fp
+i2d_X509_bio
+i2d_X509_fp
+i2o_ECPublicKey
+i2s_ASN1_ENUMERATED
+i2s_ASN1_ENUMERATED_TABLE
+i2s_ASN1_IA5STRING
+i2s_ASN1_INTEGER
+i2s_ASN1_OCTET_STRING
+i2v_ASN1_BIT_STRING
+i2v_GENERAL_NAME
+i2v_GENERAL_NAMES
+o2i_ECPublicKey
+s2i_ASN1_IA5STRING
+s2i_ASN1_INTEGER
+s2i_ASN1_OCTET_STRING
+v2i_ASN1_BIT_STRING
+v2i_GENERAL_NAME
+v2i_GENERAL_NAMES
+v2i_GENERAL_NAME_ex
diff --git a/util/missingmacro.txt b/util/missingmacro.txt
new file mode 100644 (file)
index 0000000..ef429c6
--- /dev/null
@@ -0,0 +1,217 @@
+# A list of macros that are known to be missing documentation as used by the
+# find-doc-nits -v option. The list is as of commit 355b419698.
+BIO_get_flags
+BIO_set_retry_special
+BIO_set_retry_read
+BIO_set_retry_write
+BIO_clear_retry_flags
+BIO_get_retry_flags
+BIO_CB_return
+BIO_cb_pre
+BIO_cb_post
+BIO_set_app_data
+BIO_get_app_data
+BIO_set_conn_mode
+BIO_dup_state
+BIO_buffer_get_num_lines
+BIO_buffer_peek
+BIO_ctrl_dgram_connect
+BIO_ctrl_set_connected
+BIO_dgram_recv_timedout
+BIO_dgram_send_timedout
+BIO_dgram_get_peer
+BIO_dgram_set_peer
+BIO_dgram_get_mtu_overhead
+BIO_sock_cleanup
+ossl_bio__attr__
+BN_prime_checks_for_size
+BN_GF2m_sub
+BN_GF2m_cmp
+BUF_strdup
+BUF_strndup
+BUF_memdup
+BUF_strlcpy
+BUF_strlcat
+BUF_strnlen
+COMP_zlib_cleanup
+NCONF_get_number
+OSSL_CORE_MAKE_FUNC
+OPENSSL_MALLOC_MAX_NELEMS
+CRYPTO_cleanup_all_ex_data
+CRYPTO_num_locks
+CRYPTO_set_locking_callback
+CRYPTO_get_locking_callback
+CRYPTO_set_add_lock_callback
+CRYPTO_get_add_lock_callback
+CRYPTO_THREADID_set_numeric
+CRYPTO_THREADID_set_pointer
+CRYPTO_THREADID_set_callback
+CRYPTO_THREADID_get_callback
+CRYPTO_THREADID_current
+CRYPTO_THREADID_cmp
+CRYPTO_THREADID_cpy
+CRYPTO_THREADID_hash
+CRYPTO_set_id_callback
+CRYPTO_get_id_callback
+CRYPTO_thread_id
+CRYPTO_set_dynlock_create_callback
+CRYPTO_set_dynlock_lock_callback
+CRYPTO_set_dynlock_destroy_callback
+CRYPTO_get_dynlock_create_callback
+CRYPTO_get_dynlock_lock_callback
+CRYPTO_get_dynlock_destroy_callback
+OpenSSLDie
+OPENSSL_assert
+DSA_is_prime
+OPENSSL_GLOBAL_REF
+ECParameters_dup
+ENGINE_load_openssl
+ENGINE_load_dynamic
+ENGINE_load_padlock
+ENGINE_load_capi
+ENGINE_load_afalg
+ENGINE_load_cryptodev
+ENGINE_load_rdrand
+EVP_MD_nid
+EVP_MD_name
+EVP_CIPHER_name
+EVP_ENCODE_LENGTH
+EVP_DECODE_LENGTH
+BIO_set_md_ctx
+EVP_add_cipher_alias
+EVP_add_digest_alias
+EVP_delete_cipher_alias
+EVP_delete_digest_alias
+EVP_MD_CTX_create
+EVP_MD_CTX_init
+EVP_MD_CTX_destroy
+EVP_CIPHER_CTX_init
+EVP_CIPHER_CTX_cleanup
+OPENSSL_add_all_algorithms_conf
+OPENSSL_add_all_algorithms_noconf
+LHASH_HASH_FN
+LHASH_COMP_FN
+LHASH_DOALL_ARG_FN
+LHASH_OF
+DEFINE_LHASH_OF
+int_implement_lhash_doall
+OBJ_create_and_add_object
+OBJ_bsearch
+OBJ_bsearch_ex
+PEM_read_bio_OCSP_REQUEST
+PEM_read_bio_OCSP_RESPONSE
+PEM_write_bio_OCSP_REQUEST
+PEM_write_bio_OCSP_RESPONSE
+ASN1_BIT_STRING_digest
+OCSP_CERTSTATUS_dup
+OPENSSL_VERSION_PREREQ
+OPENSSL_MSTR_HELPER
+OPENSSL_MSTR
+OSSL_PARAM_DEFN
+OSSL_PARAM_int
+OSSL_PARAM_uint
+OSSL_PARAM_long
+OSSL_PARAM_ulong
+OSSL_PARAM_int32
+OSSL_PARAM_uint32
+OSSL_PARAM_int64
+OSSL_PARAM_uint64
+OSSL_PARAM_size_t
+OSSL_PARAM_double
+OSSL_PARAM_SIZED_int
+OSSL_PARAM_SIZED_uint
+OSSL_PARAM_SIZED_long
+OSSL_PARAM_SIZED_ulong
+OSSL_PARAM_SIZED_int32
+OSSL_PARAM_SIZED_uint32
+OSSL_PARAM_SIZED_int64
+OSSL_PARAM_SIZED_uint64
+OSSL_PARAM_SIZED_size_t
+OSSL_PARAM_SIZED_double
+PKCS7_get_signed_attributes
+PKCS7_get_attributes
+PKCS7_type_is_signed
+PKCS7_type_is_encrypted
+PKCS7_type_is_enveloped
+PKCS7_type_is_signedAndEnveloped
+PKCS7_type_is_data
+PKCS7_type_is_digest
+PKCS7_set_detached
+PKCS7_get_detached
+PKCS7_is_detached
+RSA_set_app_data
+RSA_get_app_data
+STACK_OF
+SKM_DEFINE_STACK_OF
+U64
+SSL_set_mtu
+DTLS_set_link_mtu
+DTLS_get_link_min_mtu
+SSL_CTX_set_cert_flags
+SSL_set_cert_flags
+SSL_CTX_clear_cert_flags
+SSL_clear_cert_flags
+SSL_set_app_data
+SSL_get_app_data
+SSL_SESSION_set_app_data
+SSL_SESSION_get_app_data
+SSL_CTX_get_app_data
+SSL_CTX_set_app_data
+SSLeay_add_ssl_algorithms
+DTLSv1_get_timeout
+DTLSv1_handle_timeout
+SSL_num_renegotiations
+SSL_clear_num_renegotiations
+SSL_total_renegotiations
+SSL_CTX_set_dh_auto
+SSL_set_dh_auto
+SSL_get0_certificate_types
+SSL_CTX_set1_client_certificate_types
+SSL_set1_client_certificate_types
+SSL_get0_raw_cipherlist
+SSL_get0_ec_point_formats
+SSL_CTX_need_tmp_RSA
+SSL_CTX_set_tmp_rsa
+SSL_need_tmp_RSA
+SSL_set_tmp_rsa
+SSL_CTX_set_tmp_rsa_callback
+SSL_set_tmp_rsa_callback
+SSL_get_ex_new_index
+SSL_SESSION_get_ex_new_index
+SSL_CTX_get_ex_new_index
+SSL_CTX_set_default_read_ahead
+SSL_cache_hit
+TLS1_get_version
+TLS1_get_client_version
+SSL_set_tlsext_debug_callback
+SSL_set_tlsext_debug_arg
+SSL_get_tlsext_status_exts
+SSL_set_tlsext_status_exts
+SSL_get_tlsext_status_ids
+SSL_set_tlsext_status_ids
+SSL_CTX_get_tlsext_ticket_keys
+SSL_CTX_set_tlsext_ticket_keys
+OSSL_TRACE_CANCEL
+OSSL_TRACE_ENABLED
+OSSL_TRACEV
+OSSL_TRACE
+OSSL_TRACE3
+OSSL_TRACE4
+OSSL_TRACE5
+OSSL_TRACE6
+OSSL_TRACE7
+OSSL_TRACE8
+UI_set_app_data
+UI_get_app_data
+X509_extract_key
+X509_REQ_extract_key
+X509_name_cmp
+X509_STORE_CTX_set_app_data
+X509_STORE_CTX_get_app_data
+X509_LOOKUP_load_file
+X509_LOOKUP_add_dir
+X509V3_conf_err
+X509V3_set_ctx_test
+X509V3_set_ctx_nodb
+EXT_BITSTRING
+EXT_IA5STRING
diff --git a/util/missingssl.txt b/util/missingssl.txt
new file mode 100644 (file)
index 0000000..07ba2b3
--- /dev/null
@@ -0,0 +1,46 @@
+# A list of libssl functions that are known to be missing documentation as
+# used by the find-doc-nits -v option. The list is as of commit 355b419698.
+ERR_load_SSL_strings
+SRP_Calc_A_param
+SSL_COMP_get_name
+SSL_COMP_set0_compression_methods
+SSL_CONF_CTX_finish
+SSL_CTX_SRP_CTX_free
+SSL_CTX_SRP_CTX_init
+SSL_CTX_get0_certificate
+SSL_CTX_get0_ctlog_store
+SSL_CTX_get0_privatekey
+SSL_CTX_get_ssl_method
+SSL_CTX_set0_ctlog_store
+SSL_CTX_set_client_cert_engine
+SSL_CTX_set_cookie_generate_cb
+SSL_CTX_set_cookie_verify_cb
+SSL_CTX_set_not_resumable_session_callback
+SSL_CTX_set_purpose
+SSL_CTX_set_trust
+SSL_SRP_CTX_free
+SSL_SRP_CTX_init
+SSL_add_dir_cert_subjects_to_stack
+SSL_add_file_cert_subjects_to_stack
+SSL_add_ssl_module
+SSL_certs_clear
+SSL_copy_session_id
+SSL_dup_CA_list
+SSL_get0_dane
+SSL_get_certificate
+SSL_get_current_compression
+SSL_get_current_expansion
+SSL_get_finished
+SSL_get_peer_finished
+SSL_get_privatekey
+SSL_set_SSL_CTX
+SSL_set_debug
+SSL_set_not_resumable_session_callback
+SSL_set_purpose
+SSL_set_session_secret_cb
+SSL_set_session_ticket_ext
+SSL_set_session_ticket_ext_cb
+SSL_set_trust
+SSL_srp_server_param_with_username
+SSL_test_functions
+SSL_trace