Fix many doc L<> errors
authorRich Salz <rsalz@openssl.org>
Sat, 11 Mar 2017 13:56:44 +0000 (08:56 -0500)
committerRich Salz <rsalz@openssl.org>
Sat, 11 Mar 2017 14:36:57 +0000 (09:36 -0500)
Add 2017 copyright year
Add missing typedef to NAME
Remove ec(7) and bn(7) doc links
Remove .pod link errors, bogus links, make a few typo corrections
Fix some typo's in links and some missing items.
Don't link to C runtime functions (See OPENSSL_malloc for example/precedent)
Document ASN1_tag2str(), add a few typedef's that were missing from NAME
Update doc-nits target; addresses
    https://github.com/openssl/openssl/pull/1900#issuecomment-259943891,
Merge check-doc-links into find-doc-nits; if run regularly, would have found
    https://github.com/openssl/openssl/pull/2825

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2862)
(cherry picked from commit 9e183d2271653cbba2d9cf56d40c1356705207aa)

44 files changed:
Configurations/unix-Makefile.tmpl
doc/crypto/ASN1_STRING_print_ex.pod
doc/crypto/BN_BLINDING_new.pod
doc/crypto/BN_CTX_new.pod
doc/crypto/BN_add.pod
doc/crypto/BN_add_word.pod
doc/crypto/BN_bn2bin.pod
doc/crypto/BN_cmp.pod
doc/crypto/BN_copy.pod
doc/crypto/BN_generate_prime.pod
doc/crypto/BN_mod_inverse.pod
doc/crypto/BN_mod_mul_montgomery.pod
doc/crypto/BN_mod_mul_reciprocal.pod
doc/crypto/BN_new.pod
doc/crypto/BN_num_bytes.pod
doc/crypto/BN_rand.pod
doc/crypto/BN_set_bit.pod
doc/crypto/BN_swap.pod
doc/crypto/BN_zero.pod
doc/crypto/CONF_modules_load_file.pod
doc/crypto/CRYPTO_get_ex_new_index.pod
doc/crypto/ECPKParameters_print.pod
doc/crypto/EC_GFp_simple_method.pod
doc/crypto/EC_GROUP_copy.pod
doc/crypto/EC_GROUP_new.pod
doc/crypto/EC_KEY_get_enc_flags.pod
doc/crypto/EC_KEY_new.pod
doc/crypto/EC_POINT_add.pod
doc/crypto/EC_POINT_new.pod
doc/crypto/OPENSSL_init_crypto.pod
doc/crypto/SCT_new.pod
doc/crypto/SMIME_read_PKCS7.pod
doc/crypto/UI_new.pod
doc/crypto/X509_LOOKUP_hash_dir.pod
doc/crypto/X509_digest.pod
doc/crypto/ct.pod
doc/crypto/d2i_PrivateKey.pod
doc/crypto/x509.pod
doc/ssl/SSL_CTX_set_ct_validation_callback.pod
doc/ssl/SSL_CTX_set_verify.pod
doc/ssl/SSL_set_bio.pod
doc/ssl/ssl.pod
util/find-doc-nits [new file with mode: 0755]
util/find-doc-nits.pl [deleted file]

index 27b34b9824d0cc112ae818b2334fee5e2cf8d9f4..6df1cce5a6aefa0864a936fff13d02e791dc45cf 100644 (file)
@@ -284,7 +284,7 @@ clean: libclean
        -$(RM) `find . -name '*{- $depext -}' -a \! -path "./.git/*"`
        -$(RM) `find . -name '*{- $objext -}' -a \! -path "./.git/*"`
        $(RM) core
-       $(RM) tags TAGS
+       $(RM) tags TAGS doc-nits
        $(RM) test/.rnd
        $(RM) openssl.pc libcrypto.pc libssl.pc
        -$(RM) `find . -type l -a \! -path "./.git/*"`
@@ -581,6 +581,10 @@ update: generate errors ordinals
 generate: generate_apps generate_crypto_bn generate_crypto_objects \
           generate_crypto_conf generate_crypto_asn1
 
+doc-nits:
+       (cd $(SRCDIR); $(PERL) util/find-doc-nits.pl -n ) >doc-nits
+       if [ -s doc-nits ] ; then cat doc-nits; rm doc-nits ; exit 1; fi
+
 # Test coverage is a good idea for the future
 #coverage: $(PROGRAMS) $(TESTPROGRAMS)
 #      ...
index d2bf538f6b60c27802a91ba80f6f809e88893ca1..a521f78ea9a9ef237f87386900dfffa795b950f2 100644 (file)
@@ -2,7 +2,8 @@
 
 =head1 NAME
 
-ASN1_STRING_print_ex, ASN1_STRING_print_ex_fp, ASN1_STRING_print - ASN1_STRING output routines
+ASN1_tag2str, ASN1_STRING_print_ex, ASN1_STRING_print_ex_fp, ASN1_STRING_print
+- ASN1_STRING output routines
 
 =head1 SYNOPSIS
 
@@ -12,6 +13,7 @@ ASN1_STRING_print_ex, ASN1_STRING_print_ex_fp, ASN1_STRING_print - ASN1_STRING o
  int ASN1_STRING_print_ex_fp(FILE *fp, const ASN1_STRING *str, unsigned long flags);
  int ASN1_STRING_print(BIO *out, const ASN1_STRING *str);
 
+ const char *ASN1_tag2str(int tag);
 
 =head1 DESCRIPTION
 
@@ -26,6 +28,8 @@ ASN1_STRING_print() prints B<str> to B<out> but using a different format to
 ASN1_STRING_print_ex(). It replaces unprintable characters (other than CR, LF)
 with '.'.
 
+ASN1_tag2str() returns a human-readable name of the specified ASN.1 B<tag>.
+
 =head1 NOTES
 
 ASN1_STRING_print() is a legacy function which should be avoided in new applications.
@@ -91,7 +95,7 @@ L<ASN1_tag2str(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2002-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 5f56aa3fc93b98a424cb190a279767c1afd9c89c..4229e754a114a9fe4b0c6f6797a97430b759110a 100644 (file)
@@ -105,10 +105,6 @@ BN_BLINDING_get_flags() returns the currently set B<BN_BLINDING> flags
 BN_BLINDING_create_param() returns the newly created B<BN_BLINDING>
 parameters or NULL on error.
 
-=head1 SEE ALSO
-
-L<bn(3)>
-
 =head1 HISTORY
 
 BN_BLINDING_thread_id() was first introduced in OpenSSL 1.0.0, and it
@@ -116,7 +112,7 @@ deprecates BN_BLINDING_set_thread_id() and BN_BLINDING_get_thread_id().
 
 =head1 COPYRIGHT
 
-Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2005-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index ca54590517e6cdba41951e336474e7b29d3d631c..623fcd56927a8ae01a88a69bc2f9e96da94335fb 100644 (file)
@@ -57,7 +57,7 @@ replace use of BN_CTX_init with BN_CTX_new instead:
 
 =head1 SEE ALSO
 
-L<bn(3)>, L<ERR_get_error(3)>, L<BN_add(3)>,
+L<ERR_get_error(3)>, L<BN_add(3)>,
 L<BN_CTX_start(3)>
 
 =head1 HISTORY
@@ -66,7 +66,7 @@ BN_CTX_init() was removed in OpenSSL 1.1.0.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 72cc09f67aeab2b718a65206cfc0a4b9fa246bcc..db3b0d45b4790b353e8b8f62d6b066d016055730 100644 (file)
@@ -112,12 +112,12 @@ The error codes can be obtained by L<ERR_get_error(3)>.
 
 =head1 SEE ALSO
 
-L<bn(3)>, L<ERR_get_error(3)>, L<BN_CTX_new(3)>,
+L<ERR_get_error(3)>, L<BN_CTX_new(3)>,
 L<BN_add_word(3)>, L<BN_set_bit(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 35bdcf45c6eb4fa4ee4158b8af9a8d079f2b9389..6c69bc485f2ef9b6750ae0046327505ffe0f8f3e 100644 (file)
@@ -47,11 +47,11 @@ B<(BN_ULONG)-1> if an error occurred.
 
 =head1 SEE ALSO
 
-L<bn(3)>, L<ERR_get_error(3)>, L<BN_add(3)>
+L<ERR_get_error(3)>, L<BN_add(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index b272010ba054bf0ca44e2d57cabc7b41a72af0aa..9e16c0d23965e7779a344c61b23bbcb72bb2f3eb 100644 (file)
@@ -100,13 +100,13 @@ The error codes can be obtained by L<ERR_get_error(3)>.
 
 =head1 SEE ALSO
 
-L<bn(3)>, L<ERR_get_error(3)>, L<BN_zero(3)>,
+L<ERR_get_error(3)>, L<BN_zero(3)>,
 L<ASN1_INTEGER_to_BN(3)>,
 L<BN_num_bytes(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index ec005718a1c4010525460a7a746abe7227bc37be..95d162ff295793eb13109779d4fcadff1dd4782d 100644 (file)
@@ -35,13 +35,9 @@ of B<a> and B<b>.
 BN_is_zero(), BN_is_one() BN_is_word() and BN_is_odd() return 1 if
 the condition is true, 0 otherwise.
 
-=head1 SEE ALSO
-
-L<bn(3)>
-
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index b044b98a0bbd56b81312fa09951b94e731afd316..500f4b2ee5e8be1e83c687c7b7bdbc471e74fb8b 100644 (file)
@@ -55,11 +55,11 @@ by L<ERR_get_error(3)>.
 
 =head1 SEE ALSO
 
-L<bn(3)>, L<ERR_get_error(3)>
+L<ERR_get_error(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 0472b9b829ae5d34a83a205764fd5e6f04bbae9c..a4ef2302f663803c1fec86bde3dbe8b41bea419d 100644 (file)
@@ -175,7 +175,7 @@ Instead applications should create a BN_GENCB structure using BN_GENCB_new:
 
 =head1 SEE ALSO
 
-L<bn(3)>, L<ERR_get_error(3)>, L<rand(3)>
+L<ERR_get_error(3)>, L<RAND_bytes(3)>
 
 =head1 HISTORY
 
@@ -184,7 +184,7 @@ and BN_GENCB_get_arg() were added in OpenSSL 1.1.0
 
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index b4792add8273fee9824d6cbecb2b865917f79e96..cb84a140988641951e435be3b91e5f45e8983765 100644 (file)
@@ -27,11 +27,11 @@ NULL on error. The error codes can be obtained by L<ERR_get_error(3)>.
 
 =head1 SEE ALSO
 
-L<bn(3)>, L<ERR_get_error(3)>, L<BN_add(3)>
+L<ERR_get_error(3)>, L<BN_add(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index bf1ef343cdae7565baa3bc8c0531a7137dcb5b43..81056c76acb11b80c9cc9ecf01a86bb54e767471 100644 (file)
@@ -71,7 +71,7 @@ outside the expected range.
 
 =head1 SEE ALSO
 
-L<bn(3)>, L<ERR_get_error(3)>, L<BN_add(3)>,
+L<ERR_get_error(3)>, L<BN_add(3)>,
 L<BN_CTX_new(3)>
 
 =head1 HISTORY
@@ -80,7 +80,7 @@ BN_MONT_CTX_init() was removed in OpenSSL 1.1.0
 
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index d0536cd95bc0b12509138d66490b4c174eb5eef8..d480fed2d0d083be8221b318cabe3012fdee5f07 100644 (file)
@@ -57,7 +57,7 @@ The error codes can be obtained by L<ERR_get_error(3)>.
 
 =head1 SEE ALSO
 
-L<bn(3)>, L<ERR_get_error(3)>, L<BN_add(3)>,
+L<ERR_get_error(3)>, L<BN_add(3)>,
 L<BN_CTX_new(3)>
 
 =head1 HISTORY
@@ -66,7 +66,7 @@ BN_RECP_CTX_init() was removed in OpenSSL 1.1.0
 
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 02776142762816780912f3ee1f5b88d22b150160..36bd00da28f69707f7d49ee7f10c5806d17170fb 100644 (file)
@@ -44,7 +44,7 @@ BN_clear(), BN_free() and BN_clear_free() have no return values.
 
 =head1 SEE ALSO
 
-L<bn(3)>, L<ERR_get_error(3)>
+L<ERR_get_error(3)>
 
 =head1 HISTORY
 
@@ -52,7 +52,7 @@ BN_init() was removed in OpenSSL 1.1.0; use BN_new() instead.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 4680cf7a71e4938667246c96369fe97d43544749..9e0465de54731c3958d61e8985809ad21244589d 100644 (file)
@@ -46,12 +46,12 @@ more probability).
 
 =head1 SEE ALSO
 
-L<bn(3)>, L<DH_size(3)>, L<DSA_size(3)>,
+L<DH_size(3)>, L<DSA_size(3)>,
 L<RSA_size(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index ae15ada7e5a52c3072dcb87757e4f534d453fdbc..7ae8e625f9a48adb86ec22f816f46a7241d9a85d 100644 (file)
@@ -53,12 +53,11 @@ The error codes can be obtained by L<ERR_get_error(3)>.
 
 =head1 SEE ALSO
 
-L<bn(3)>, L<ERR_get_error(3)>, L<rand(3)>,
-L<RAND_add(3)>, L<RAND_bytes(3)>
+L<ERR_get_error(3)>, L<RAND_add(3)>, L<RAND_bytes(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 363227ade36098d3ae23ce10036301c0e3cb8a9b..af02983c8fb141494ccd629717f7ed31158fd5d6 100644 (file)
@@ -55,11 +55,11 @@ can be obtained by L<ERR_get_error(3)>.
 
 =head1 SEE ALSO
 
-L<bn(3)>, L<BN_num_bytes(3)>, L<BN_add(3)>
+L<BN_num_bytes(3)>, L<BN_add(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index fe7cc8482b98d228aa6860a7b29c7e3025dfe251..9f77f22744c4857364f189219cd195de34615a99 100644 (file)
@@ -14,11 +14,9 @@ BN_swap - exchange BIGNUMs
 
 BN_swap() exchanges the values of I<a> and I<b>.
 
-L<bn(3)>
-
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index fadc21b7fde29f036975f47874669609b28eed15..91d48aad880862e1520046f8395c1c09574a5d70 100644 (file)
@@ -53,11 +53,11 @@ unsigned long but this value is also returned on error.
 
 =head1 SEE ALSO
 
-L<bn(3)>, L<BN_bn2bin(3)>
+L<BN_bn2bin(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 11491422106d43c9f6b4960ebd71e19204a217aa..4f02f52f6abe1e4d1b0529eb6295d971cc30e331 100644 (file)
@@ -121,8 +121,7 @@ return value of the failing module (this will always be zero or negative).
 
 =head1 SEE ALSO
 
-L<config(5)>, L<OPENSSL_config(3)>,
-L<NCONF_free(3)>
+L<config(5)>, L<OPENSSL_config(3)>
 
 =head1 COPYRIGHT
 
index 98085f525b7b50fffe96a35464997b2650b89a4e..ede5fc14ce9e0e5510cf4a25d36e026a12efe747 100644 (file)
@@ -52,6 +52,7 @@ The specific structures are:
     RSA
     ENGINE
     UI
+    UI_METHOD
     BIO
 
 Each is identified by an B<CRYPTO_EX_INDEX_xxx> define in the B<crypto.h>
@@ -151,7 +152,7 @@ dup_func() should return 0 for failure and 1 for success.
 
 =head1 COPYRIGHT
 
-Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2015-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index c9c362835e412141d689be5e752d1890dfcf0194..24b6bb9e04db028fab731e85725fb31fb5002862 100644 (file)
@@ -28,13 +28,13 @@ return 1 for success and 0 if an error occurs.
 
 =head1 SEE ALSO
 
-L<crypto(3)>, L<ec(3)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
+L<crypto(7)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
 L<EC_POINT_new(3)>, L<EC_POINT_add(3)>, L<EC_KEY_new(3)>,
 L<EC_GFp_simple_method(3)>,
 
 =head1 COPYRIGHT
 
-Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2013-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 89c590eb2a1c939774cc9ca5d629697b23f9d249..f283d8e71ec5eb96307c51f83fbf64aeb1deef83 100644 (file)
@@ -52,14 +52,14 @@ EC_METHOD_get_field_type returns an integer that identifies the type of field th
 
 =head1 SEE ALSO
 
-L<crypto(3)>, L<ec(3)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
+L<crypto(7)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
 L<EC_POINT_new(3)>, L<EC_POINT_add(3)>, L<EC_KEY_new(3)>,
 L<d2i_ECPKParameters(3)>,
 L<BN_mod_mul_montgomery(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2013-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 6b398dfefc212f4e8528fbbc9de2853e97f92a38..fd5f58c919c08989d7e8e9f4aac5aba63b580d96 100644 (file)
@@ -190,13 +190,13 @@ trinomial or pentanomial respectively. Alternatively in the event of an error a
 
 =head1 SEE ALSO
 
-L<crypto(3)>, L<ec(3)>, L<EC_GROUP_new(3)>,
+L<crypto(7)>, L<EC_GROUP_new(3)>,
 L<EC_POINT_new(3)>, L<EC_POINT_add(3)>, L<EC_KEY_new(3)>,
 L<EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2013-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 25129100b6d1fe4acbd6d9c1baa3c6c69fc33038..2f658dc2c3b6325c4214d3fff09e394ab0d39bdb 100644 (file)
@@ -104,13 +104,13 @@ EC_GROUP_set_curve_GFp, EC_GROUP_get_curve_GFp, EC_GROUP_set_curve_GF2m, EC_GROU
 
 =head1 SEE ALSO
 
-L<crypto(3)>, L<ec(3)>, L<EC_GROUP_copy(3)>,
+L<crypto(7)>, L<EC_GROUP_copy(3)>,
 L<EC_POINT_new(3)>, L<EC_POINT_add(3)>, L<EC_KEY_new(3)>,
 L<EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2013-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index abc55c148f0cb47e0b61efbc8d4e340a019abfe0..4f73a1d59d04d0163579a368f598d589badad6f7 100644 (file)
@@ -40,7 +40,7 @@ EC_KEY.
 
 =head1 SEE ALSO
 
-L<crypto(3)>, L<ec(3)>, L<EC_GROUP_new(3)>,
+L<crypto(7)>, L<EC_GROUP_new(3)>,
 L<EC_GROUP_copy(3)>, L<EC_POINT_new(3)>,
 L<EC_POINT_add(3)>,
 L<EC_GFp_simple_method(3)>,
@@ -49,7 +49,7 @@ L<d2i_ECPrivateKey(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2015-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 83a2c6d097f5c9dc31b13694d61c4df3399de6c3..591529fd470cb2e83378ff0afe3006f18c525445 100644 (file)
@@ -165,7 +165,7 @@ of the buffer or 0 on error.
 
 =head1 SEE ALSO
 
-L<crypto(3)>, L<ec(3)>, L<EC_GROUP_new(3)>,
+L<crypto(7)>, L<EC_GROUP_new(3)>,
 L<EC_GROUP_copy(3)>, L<EC_POINT_new(3)>,
 L<EC_POINT_add(3)>,
 L<EC_GFp_simple_method(3)>,
@@ -173,7 +173,7 @@ L<d2i_ECPKParameters(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2013-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index c029de42b165ead109824add5d547d44d07c247f..6f3e2308bd7b04f440e5eca1ab850074932d60d6 100644 (file)
@@ -64,13 +64,13 @@ EC_GROUP_have_precompute_mult return 1 if a precomputation has been done, or 0 i
 
 =head1 SEE ALSO
 
-L<crypto(3)>, L<ec(3)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
+L<crypto(7)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
 L<EC_POINT_new(3)>, L<EC_KEY_new(3)>,
 L<EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2013-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 206648c83b19d5a37a564d92e2dc87bd7f3e81df..3358a08d8b55b8272ea98af89013dacbdb64b6f5 100644 (file)
@@ -180,13 +180,13 @@ error.
 
 =head1 SEE ALSO
 
-L<crypto(3)>, L<ec(3)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
+L<crypto(7)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
 L<EC_POINT_add(3)>, L<EC_KEY_new(3)>,
 L<EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2013-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 19898807522658fc51bb5642e745955663386958..f0b3c8aa8da59f51b7ad11bf12e8e5039084088a 100644 (file)
@@ -162,7 +162,7 @@ The OPENSSL_cleanup() function deinitialises OpenSSL (both libcrypto
 and libssl). All resources allocated by OpenSSL are freed. Typically there
 should be no need to call this function directly as it is initiated
 automatically on application exit. This is done via the standard C library
-L<atexit(3)> function. In the event that the application will close in a manner
+atexit() function. In the event that the application will close in a manner
 that will not call the registered atexit() handlers then the application should
 call OPENSSL_cleanup() directly. Developers of libraries using OpenSSL
 are discouraged from calling this function and should instead, typically, rely
@@ -235,7 +235,7 @@ and OPENSSL_INIT_free() functions were added in OpenSSL 1.1.0.
 
 =head1 COPYRIGHT
 
-Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 4ee41a6d417caa3c1400051f96988066689dabbd..698ee271f6986718b7777ba3c44cf4206587c2af 100644 (file)
@@ -174,8 +174,8 @@ B<SCT_set_source> returns 1 on success, 0 otherwise.
 
 =head1 SEE ALSO
 
-L<ct(3)>,
-L<SCT_verify(3)>,
+L<ct(7)>,
+L<SCT_validate(3)>,
 L<OBJ_nid2obj(3)>
 
 =head1 HISTORY
@@ -184,7 +184,7 @@ These functions were added in OpenSSL 1.1.0.
 
 =head1 COPYRIGHT
 
-Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 86d5cc3048d8d69938a2e96d7b0a163359ae894d..3eb8bbc9a0f81268ef9f53259b013afe7b130df1 100644 (file)
@@ -30,7 +30,7 @@ signed. B<*bcont> can then be passed to PKCS7_verify() with
 the B<PKCS7_DETACHED> flag set.
 
 Otherwise the type of the returned structure can be determined
-using PKCS7_type().
+using PKCS7_type_is_enveloped(), etc.
 
 To support future functionality if B<bcont> is not B<NULL>
 B<*bcont> should be initialized to B<NULL>. For example:
@@ -61,14 +61,14 @@ is an error occurred. The error can be obtained from ERR_get_error(3).
 
 =head1 SEE ALSO
 
-L<ERR_get_error(3)>, L<PKCS7_type(3)>
+L<ERR_get_error(3)>,
 L<SMIME_read_PKCS7(3)>, L<PKCS7_sign(3)>,
 L<PKCS7_verify(3)>, L<PKCS7_encrypt(3)>
 L<PKCS7_decrypt(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2002-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 5ab1a9fac599c87f963b93b2c88e6aaea73c7642..037e8bf10e4e699131ee5d3af6bbb83185a85b64 100644 (file)
@@ -9,7 +9,7 @@ UI_dup_input_boolean, UI_add_info_string, UI_dup_info_string,
 UI_add_error_string, UI_dup_error_string, UI_construct_prompt,
 UI_add_user_data, UI_get0_user_data, UI_get0_result, UI_process,
 UI_ctrl, UI_set_default_method, UI_get_default_method, UI_get_method,
-UI_set_method, UI_OpenSSL, - user interface
+UI_set_method, UI_OpenSSL, UI_null - user interface
 
 =head1 SYNOPSIS
 
@@ -58,6 +58,7 @@ UI_set_method, UI_OpenSSL, - user interface
  const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth);
 
  UI_METHOD *UI_OpenSSL(void);
+ const UI_METHOD *UI_null(void);
 
 =head1 DESCRIPTION
 
@@ -177,9 +178,12 @@ UI_set_method() changes the UI method associated with a given UI.
 UI_OpenSSL() is the default OpenSSL UI method for prompting
 passphrases on the command line.
 
+UI_null() is a UI method that does nothing.  Its use is to avoid
+getting internal defaults for passed UI_METHOD pointers.
+
 =head1 COPYRIGHT
 
-Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2001-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 08fa731238f87f67839fb817d042cd128eeb3e2b..5f8dfa93b0f1021e684ccb96d97216ee05886072 100644 (file)
@@ -108,20 +108,19 @@ Note that the hash algorithm used for subject name hashing changed in OpenSSL
 1.0.0, and all certificate stores have to be rehashed when moving from OpenSSL
 0.9.8 to 1.0.0.
 
-OpenSSL includes a L<c_rehash(1)> utility which creates symlinks with correct
+OpenSSL includes a L<rehash(1)> utility which creates symlinks with correct
 hashed names for all files with .pem suffix in a given directory.
 
 =head1 SEE ALSO
 
 L<PEM_read_PrivateKey(3)>,
-L<d2i_X509_bio(3)>,
 L<X509_STORE_load_locations(3)>,
-L<X609_store_add_lookup(3)>,
+L<X509_store_add_lookup(3)>,
 L<SSL_CTX_load_verify_locations(3)>,
 
 =head1 COPYRIGHT
 
-Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2015-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 267e7bd2a664995cd3ad46cb9bf3a50d3a345505..07cfda4908975e9b7733df523dd8fa499d16a0ac 100644 (file)
@@ -51,7 +51,7 @@ All functions described here return 1 for success and 0 for failure.
 
 =head1 SEE ALSO
 
-L<EVP_SHA1(3)>
+L<EVP_sha1(3)>
 
 =head1 COPYRIGHT
 
index bdcda98618b07b621189a22e07368a07bf95bf95..355204d2a632cd5dcc6d56b4cb0b939c0367396d 100644 (file)
@@ -1,7 +1,5 @@
 =pod
 
-=for comment openssl_manual_section:7
-
 =head1 NAME
 
 ct - Certificate Transparency
@@ -34,9 +32,9 @@ L<CTLOG_STORE_new(3)>,
 L<CTLOG_STORE_get0_log_by_id(3)>,
 L<SCT_new(3)>,
 L<SCT_print(3)>,
-L<SCT_verify(3)>,
 L<SCT_validate(3)>,
-L<CT_POLICY_EVAL_CTX(3)>,
+L<SCT_validate(3)>,
+L<CT_POLICY_EVAL_CTX_new(3)>,
 L<SSL_CTX_set_ct_validation_callback(3)>
 
 =head1 HISTORY
@@ -45,7 +43,7 @@ This library was added in OpenSSL 1.1.0.
 
 =head1 COPYRIGHT
 
-Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 6b12ad9eab1029acf91855b39d651af0db23bc4c..30caeebcb5c0a4b3f045bbcbbb0a7455f4ef939b 100644 (file)
@@ -56,12 +56,12 @@ L<ERR_get_error(3)>.
 
 =head1 SEE ALSO
 
-L<crypto(3)>,
-L<d2i_PKCS8PrivateKey(3)>
+L<crypto(7)>,
+L<d2i_PKCS8PrivateKey_bio(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 8319b15270789ccdb409fb7aa86eab227910623a..06584e3ae708e1ccd9abd11a148018b2c5734b80 100644 (file)
@@ -1,7 +1,5 @@
 =pod
 
-=for comment openssl_manual_section:7
-
 =head1 NAME
 
 x509 - X.509 certificate handling
@@ -12,7 +10,7 @@ x509 - X.509 certificate handling
 
 =head1 DESCRIPTION
 
-A X.509 certificate is a structured grouping of information about
+An X.509 certificate is a structured grouping of information about
 an individual, a device, or anything one can imagine.  A X.509 CRL
 (certificate revocation list) is a tool to help determine if a
 certificate is still valid.  The exact definition of those can be
@@ -60,12 +58,12 @@ L<d2i_X509_CRL(3)>,
 L<d2i_X509_NAME(3)>,
 L<d2i_X509_REQ(3)>,
 L<d2i_X509_SIG(3)>,
-L<crypto(3)>,
-L<x509v3(3)>
+L<X509v3(3)>,
+L<crypto(7)>
 
 =head1 COPYRIGHT
 
-Copyright 2003-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2003-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index d818e00fc5c12a4dd3bf821bf5982aca98ddd733..afa45dc93f0956a8006c6038dfdf975a768b3cc0 100644 (file)
@@ -2,6 +2,7 @@
 
 =head1 NAME
 
+ssl_ct_validation_cb,
 SSL_enable_ct, SSL_CTX_enable_ct, SSL_disable_ct, SSL_CTX_disable_ct,
 SSL_set_ct_validation_callback, SSL_CTX_set_ct_validation_callback,
 SSL_ct_is_enabled, SSL_CTX_ct_is_enabled -
@@ -11,6 +12,9 @@ control Certificate Transparency policy
 
  #include <openssl/ssl.h>
 
+ typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx,
+                                    const STACK_OF(SCT) *scts, void *arg);
+
  int SSL_enable_ct(SSL *s, int validation_mode);
  int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode);
  int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback,
@@ -127,12 +131,11 @@ L<ssl(7)>,
 L<SSL_session_reused(3)>,
 L<SSL_set_verify(3)>,
 L<SSL_CTX_set_verify(3)>,
-L<ssl_ct_validation_cb(3)>,
 L<SSL_SESSION_get_time(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index ccfe94cd18a4b8c7fad2183e25b0015f1864803e..c2077bbb46accf528e71ed9ccc7a32175bf58a6f 100644 (file)
@@ -2,6 +2,7 @@
 
 =head1 NAME
 
+SSL_get_ex_data_X509_STORE_CTX_idx,
 SSL_CTX_set_verify, SSL_set_verify,
 SSL_CTX_set_verify_depth, SSL_set_verify_depth,
 SSL_verify_cb
@@ -13,9 +14,12 @@ SSL_verify_cb
 
  void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb verify_callback);
  void SSL_set_verify(SSL *s, int mode, SSL_verify_cb verify_callback);
+ SSL_get_ex_data_X509_STORE_CTX_idx(void);
+
  void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth);
  void SSL_set_verify_depth(SSL *s, int depth);
 
+
  typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx);
 
 =head1 DESCRIPTION
@@ -30,7 +34,9 @@ shall be specified, the NULL pointer can be used for B<verify_callback>. In
 this case last B<verify_callback> set specifically for this B<ssl> remains. If
 no special B<callback> was set before, the default callback for the underlying
 B<ctx> is used, that was valid at the time B<ssl> was created with
-L<SSL_new(3)>.
+L<SSL_new(3)>. Within the callback function,
+B<SSL_get_ex_data_X509_STORE_CTX_idx> can be called to get the data index
+of the current SSL object that is doing the verification.
 
 SSL_CTX_set_verify_depth() sets the maximum B<depth> for the certificate chain
 verification that shall be allowed for B<ctx>. (See the BUGS section.)
@@ -171,7 +177,7 @@ certificates.
 
 The example makes use of the ex_data technique to store application data
 into/retrieve application data from the SSL structure
-(see L<SSL_get_ex_new_index(3)>,
+(see L<CRYPTO_get_ex_new_index(3)>,
 L<SSL_get_ex_data_X509_STORE_CTX_idx(3)>).
 
  ...
@@ -284,11 +290,11 @@ L<SSL_CTX_load_verify_locations(3)>,
 L<SSL_get_peer_certificate(3)>,
 L<SSL_CTX_set_cert_verify_callback(3)>,
 L<SSL_get_ex_data_X509_STORE_CTX_idx(3)>,
-L<SSL_get_ex_new_index(3)>
+L<CRYPTO_get_ex_new_index(3)>
 
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index e8e55f464805af3851fcb8dd4a8e3c5e8462cc5c..bdee438c028d58bfae8e1b63de4ac17581901ae8 100644 (file)
@@ -39,41 +39,41 @@ used in preference. The ownership rules are as follows:
 
 =over 4
 
-=item
+=item *
 
 If neither the rbio or wbio have changed from their previous values then nothing
 is done.
 
-=item
+=item *
 
 If the rbio and wbio parameters are different and both are different to their
 previously set values then one reference is consumed for the rbio and one
 reference is consumed for the wbio.
 
-=item
+=item *
 
 If the rbio and wbio parameters are the same and the rbio is not the same as the
 previously set value then one reference is consumed.
 
-=item
+=item *
 
 If the rbio and wbio parameters are the same and the rbio is the same as the
 previously set value, then no additional references are consumed.
 
-=item
+=item *
 
 If the rbio and wbio parameters are different and the rbio is the same as the
 previously set value then one reference is consumbed for the wbio and no
 references are consumed for the rbio.
 
-=item
+=item *
 
 If the rbio and wbio parameters are different and the wbio is the same as the
 previously set value and the old rbio and wbio values were the same as each
 other then one reference is consumed for the rbio and no references are consumed
 for the wbio.
 
-=item
+=item *
 
 If the rbio and wbio parameters are different and the wbio is the same as the
 previously set value and the old rbio and wbio values were different to each
@@ -90,7 +90,7 @@ SSL_set_bio(), SSL_set_rbio() and SSL_set_wbio() cannot fail.
 
 L<SSL_get_rbio(3)>,
 L<SSL_connect(3)>, L<SSL_accept(3)>,
-L<SSL_shutdown(3)>, L<ssl(3)>, L<bio(3)>
+L<SSL_shutdown(3)>, L<ssl(7)>, L<bio(7)>
 
 =head1 HISTORY
 
@@ -98,7 +98,7 @@ SSL_set0_rbio() and SSL_set0_wbio() were added in OpenSSL 1.1.0.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
index 960f0690d6d82c9efd8f53b15463a5a8a415f881..391dc705d976d7ec8fad602b3e6ea06898fc8ecb 100644 (file)
@@ -1,10 +1,8 @@
 =pod
 
-=for comment openssl_manual_section:7
-
 =head1 NAME
 
-SSL - OpenSSL SSL/TLS library
+ssl - OpenSSL SSL/TLS library
 
 =head1 SYNOPSIS
 
@@ -30,8 +28,8 @@ connection with the object.
 Then the TLS/SSL handshake is performed using
 L<SSL_accept(3)> or L<SSL_connect(3)>
 respectively.
-L<SSL_read(3)> and L<SSL_write(3)> are used
-to read and write data on the TLS/SSL connection.
+L<SSL_read(3)> and L<SSL_write(3)> are
+used to read and write data on the TLS/SSL connection.
 L<SSL_shutdown(3)> can be used to shut down the
 TLS/SSL connection.
 
@@ -322,6 +320,8 @@ protocol context defined in the B<SSL_CTX> structure.
 
 =item void B<SSL_CTX_set_cert_store>(SSL_CTX *ctx, X509_STORE *cs);
 
+=item void B<SSL_CTX_set1_cert_store>(SSL_CTX *ctx, X509_STORE *cs);
+
 =item void B<SSL_CTX_set_cert_verify_cb>(SSL_CTX *ctx, int (*cb)(), char *arg)
 
 =item int B<SSL_CTX_set_cipher_list>(SSL_CTX *ctx, char *str);
@@ -496,8 +496,6 @@ in multiple SSL connections, and then duplicate it prior to initiating
 each connection with the duplicated handle.
 Use of SSL_dup() avoids the need to repeat the configuration of the
 handles for each connection.
-This is used internally by L<BIO_s_accept(3)> to construct
-per-connection SSL handles after L<accept(2)>.
 
 For SSL_dup() to work, the connection MUST be in its initial state
 and MUST NOT have not yet have started the SSL handshake.
@@ -552,6 +550,8 @@ fresh handle for each connection.
 
 =item void (*B<SSL_get_info_callback>(const SSL *ssl);)()
 
+=item int B<SSL_get_key_update_type>(SSL *s);
+
 =item STACK *B<SSL_get_peer_cert_chain>(const SSL *ssl);
 
 =item X509 *B<SSL_get_peer_certificate>(const SSL *ssl);
@@ -600,6 +600,8 @@ fresh handle for each connection.
 
 =item int B<SSL_is_init_finished>(SSL *ssl);
 
+=item int B<SSL_key_update>(SSL *s, int updatetype);
+
 =item STACK *B<SSL_load_client_CA_file>(const char *file);
 
 =item SSL *B<SSL_new>(SSL_CTX *ctx);
@@ -736,7 +738,7 @@ See the individual manual pages for details.
 
 =head1 SEE ALSO
 
-L<openssl(1)>, L<crypto(3)>,
+L<openssl(1)>, L<crypto(7)>,
 L<CRYPTO_get_ex_new_index(3)>,
 L<SSL_accept(3)>, L<SSL_clear(3)>,
 L<SSL_connect(3)>,
@@ -793,6 +795,7 @@ L<SSL_get_version(3)>,
 L<SSL_load_client_CA_file(3)>,
 L<SSL_new(3)>,
 L<SSL_pending(3)>,
+L<SSL_read_ex(3)>,
 L<SSL_read(3)>,
 L<SSL_rstate_string(3)>,
 L<SSL_session_reused(3)>,
@@ -804,6 +807,7 @@ L<SSL_set_shutdown(3)>,
 L<SSL_shutdown(3)>,
 L<SSL_state_string(3)>,
 L<SSL_want(3)>,
+L<SSL_write_ex(3)>,
 L<SSL_write(3)>,
 L<SSL_SESSION_free(3)>,
 L<SSL_SESSION_get_time(3)>,
@@ -823,7 +827,7 @@ OpenSSL 1.1.0.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the OpenSSL license (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/util/find-doc-nits b/util/find-doc-nits
new file mode 100755 (executable)
index 0000000..0b85515
--- /dev/null
@@ -0,0 +1,368 @@
+#! /usr/bin/env perl
+# Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
+#
+# Licensed under the OpenSSL license (the "License").  You may not use
+# this file except in compliance with the License.  You can obtain a copy
+# in the file LICENSE in the source distribution or at
+# https://www.openssl.org/source/license.html
+
+
+require 5.10.0;
+use warnings;
+use strict;
+use Pod::Checker;
+use File::Find;
+use File::Basename;
+use File::Spec::Functions;
+use Getopt::Std;
+use lib catdir(dirname($0), "perl");
+use OpenSSL::Util::Pod;
+
+# Options.
+our($opt_s);
+our($opt_u);
+our($opt_h);
+our($opt_n);
+our($opt_l);
+
+sub help()
+{
+    print <<EOF;
+Find small errors (nits) in documentation.  Options:
+    -l Print bogus links
+    -n Print nits in POD pages
+    -s Also print missing sections in POD pages (implies -n)
+    -u List undocumented functions
+    -h Print this help message
+EOF
+    exit;
+}
+
+my $temp = '/tmp/docnits.txt';
+my $OUT;
+
+my %mandatory_sections =
+    ( '*'    => [ 'NAME', 'DESCRIPTION', 'COPYRIGHT' ],
+      1      => [ 'SYNOPSIS', 'OPTIONS' ],
+      3      => [ 'SYNOPSIS', 'RETURN VALUES' ],
+      5      => [ ],
+      7      => [ ] );
+
+# Cross-check functions in the NAME and SYNOPSIS section.
+sub name_synopsis()
+{
+    my $id = shift;
+    my $filename = shift;
+    my $contents = shift;
+
+    # Get NAME section and all words in it.
+    return unless $contents =~ /=head1 NAME(.*)=head1 SYNOPSIS/ms;
+    my $tmp = $1;
+    $tmp =~ tr/\n/ /;
+    $tmp =~ s/-.*//g;
+    $tmp =~ s/,//g;
+
+    my $dirname = dirname($filename);
+    my $simplename = basename($filename);
+    $simplename =~ s/.pod$//;
+    my $foundfilename = 0;
+    my %foundfilenames = ();
+    my %names;
+    foreach my $n ( split ' ', $tmp ) {
+        $names{$n} = 1;
+        $foundfilename++ if $n eq $simplename;
+        $foundfilenames{$n} = 1
+            if -f "$dirname/$n.pod" && $n ne $simplename;
+    }
+    print "$id the following exist as other .pod files:\n",
+        join(" ", sort keys %foundfilenames), "\n"
+        if %foundfilenames;
+    print "$id $simplename (filename) missing from NAME section\n",
+        unless $foundfilename;
+
+    # Find all functions in SYNOPSIS
+    return unless $contents =~ /=head1 SYNOPSIS(.*)=head1 DESCRIPTION/ms;
+    my $syn = $1;
+    foreach my $line ( split /\n+/, $syn ) {
+        my $sym;
+        $line =~ s/STACK_OF\([^)]+\)/int/g;
+        $line =~ s/__declspec\([^)]+\)//;
+        if ( $line =~ /env (\S*)=/ ) {
+            # environment variable env NAME=...
+            $sym = $1;
+        } elsif ( $line =~ /typedef.*\(\*(\S+)\)\(.*/ ) {
+            # a callback function: typedef ... (*NAME)(...
+            $sym = $1;
+        } elsif ( $line =~ /typedef.* (\S+);/ ) {
+            # a simple typedef: typedef ... NAME;
+            $sym = $1;
+        } elsif ( $line =~ /#define ([A-Za-z0-9_]+)/ ) {
+            $sym = $1;
+        } elsif ( $line =~ /([A-Za-z0-9_]+)\(/ ) {
+            $sym = $1;
+        }
+        else {
+            next;
+        }
+        print "$id $sym missing from NAME section\n"
+            unless defined $names{$sym};
+        $names{$sym} = 2;
+
+        # Do some sanity checks on the prototype.
+        print "$id prototype missing spaces around commas: $line\n"
+            if ( $line =~ /[a-z0-9],[^ ]/ );
+    }
+
+    foreach my $n ( keys %names ) {
+        next if $names{$n} == 2;
+        print "$id $n missing from SYNOPSIS\n";
+    }
+}
+
+sub check()
+{
+    my $filename = shift;
+    my $dirname = basename(dirname($filename));
+
+    my $contents = '';
+    {
+        local $/ = undef;
+        open POD, $filename or die "Couldn't open $filename, $!";
+        $contents = <POD>;
+        close POD;
+    }
+
+    my $id = "${filename}:1:";
+
+    &name_synopsis($id, $filename, $contents)
+        unless $contents =~ /=for comment generic/
+            or $filename =~ m@man[157]/@;
+
+    print "$id doesn't start with =pod\n"
+        if $contents !~ /^=pod/;
+    print "$id doesn't end with =cut\n"
+        if $contents !~ /=cut\n$/;
+    print "$id more than one cut line.\n"
+        if $contents =~ /=cut.*=cut/ms;
+    print "$id missing copyright\n"
+        if $contents !~ /Copyright .* The OpenSSL Project Authors/;
+    print "$id copyright not last\n"
+        if $contents =~ /head1 COPYRIGHT.*=head/ms;
+    print "$id head2 in All uppercase\n"
+        if $contents =~ /head2\s+[A-Z ]+\n/;
+    print "$id extra space after head\n"
+        if $contents =~ /=head\d\s\s+/;
+    print "$id period in NAME section\n"
+        if $contents =~ /=head1 NAME.*\.\n.*=head1 SYNOPSIS/ms;
+    print "$id POD markup in NAME section\n"
+        if $contents =~ /=head1 NAME.*[<>].*=head1 SYNOPSIS/ms;
+
+    # Look for multiple consecutive openssl #include lines.
+    # Consecutive because of files like md5.pod. Sometimes it's okay
+    # or necessary, as in ssl/SSL_set1_host.pod
+    if ( $contents !~ /=for comment multiple includes/ ) {
+        if ( $contents =~ /=head1 SYNOPSIS(.*)=head1 DESCRIPTION/ms ) {
+            my $count = 0;
+            foreach my $line ( split /\n+/, $1 ) {
+                if ( $line =~ m@include <openssl/@ ) {
+                    if ( ++$count == 2 ) {
+                        print "$id has multiple includes\n";
+                    }
+                } else {
+                    $count = 0;
+                }
+            }
+        }
+    }
+
+    return unless $opt_s;
+
+    # Find what section this page is in.  If run from "." assume
+    # section 3.
+    my $section = 3;
+    $section = $1 if $dirname =~ /man([1-9])/;
+
+    foreach ((@{$mandatory_sections{'*'}}, @{$mandatory_sections{$section}})) {
+        print "$id: missing $_ head1 section\n"
+            if $contents !~ /^=head1\s+${_}\s*$/m;
+    }
+
+    open my $OUT, '>', $temp
+        or die "Can't open $temp, $!";
+    podchecker($filename, $OUT);
+    close $OUT;
+    open $OUT, '<', $temp
+        or die "Can't read $temp, $!";
+    while ( <$OUT> ) {
+        next if /\(section\) in.*deprecated/;
+        print;
+    }
+    close $OUT;
+    unlink $temp || warn "Can't remove $temp, $!";
+}
+
+my %dups;
+
+sub parsenum()
+{
+    my $file = shift;
+    my @apis;
+
+    open my $IN, '<', $file
+        or die "Can't open $file, $!, stopped";
+
+    while ( <$IN> ) {
+        next if /\bNOEXIST\b/;
+        next if /\bEXPORT_VAR_AS_FUNC\b/;
+        push @apis, $1 if /([^\s]+).\s/;
+    }
+
+    close $IN;
+
+    print "# Found ", scalar(@apis), " in $file\n";
+    return sort @apis;
+}
+
+sub getdocced()
+{
+    my $dir = shift;
+    my %return;
+
+    foreach my $pod ( glob("$dir/*.pod") ) {
+        my %podinfo = extract_pod_info($pod);
+        foreach my $n ( @{$podinfo{names}} ) {
+            $return{$n} = $pod;
+            print "# Duplicate $n in $pod and $dups{$n}\n"
+                if defined $dups{$n} && $dups{$n} ne $pod;
+            $dups{$n} = $pod;
+        }
+    }
+
+    return %return;
+}
+
+my %docced;
+
+sub printem()
+{
+    my $libname = shift;
+    my $numfile = shift;
+    my $count = 0;
+
+    foreach my $func ( &parsenum($numfile) ) {
+        next if $docced{$func};
+
+        # Skip ASN1 utilities
+        next if $func =~ /^ASN1_/;
+
+        print "$libname:$func\n";
+        $count++;
+    }
+    print "# Found $count missing from $numfile\n\n";
+}
+
+
+# Collection of links in each POD file.
+# filename => [ "foo(1)", "bar(3)", ... ]
+my %link_collection = ();
+# Collection of names in each POD file.
+# "name(s)" => filename
+my %name_collection = ();
+
+sub collectnames {
+    my $filename = shift;
+    $filename =~ m|man(\d)/|;
+    my $section = $1;
+    my $simplename = basename($filename, ".pod");
+    my $id = "${filename}:1:";
+
+    my $contents = '';
+    {
+        local $/ = undef;
+        open POD, $filename or die "Couldn't open $filename, $!";
+        $contents = <POD>;
+        close POD;
+    }
+
+    $contents =~ /=head1 NAME([^=]*)=head1 /ms;
+    my $tmp = $1;
+    unless (defined $tmp) {
+        print "$id weird name section\n";
+        return;
+    }
+    $tmp =~ tr/\n/ /;
+    $tmp =~ s/-.*//g;
+
+    my @names = map { s/\s+//g; $_ } split(/,/, $tmp);
+    unless (grep { $simplename eq $_ } @names) {
+        print "$id missing $simplename\n";
+        push @names, $simplename;
+    }
+    foreach my $name (@names) {
+        next if $name eq "";
+        my $name_sec = "$name($section)";
+        if (! exists $name_collection{$name_sec}) {
+            $name_collection{$name_sec} = $filename;
+        } else { #elsif ($filename ne $name_collection{$name_sec}) {
+            print "$id $name_sec also in $name_collection{$name_sec}\n";
+        }
+    }
+
+    my @foreign_names =
+        map { map { s/\s+//g; $_ } split(/,/, $_) }
+        $contents =~ /=for\s+comment\s+foreign\s+manuals:\s*(.*)\n\n/;
+    foreach (@foreign_names) {
+        $name_collection{$_} = undef; # It still exists!
+    }
+
+    my @links = $contents =~ /L<
+                              # if the link is of the form L<something|name(s)>,
+                              # then remove 'something'.  Note that 'something'
+                              # may contain POD codes as well...
+                              (?:(?:[^\|]|<[^>]*>)*\|)?
+                              # we're only interested in referenses that have
+                              # a one digit section number
+                              ([^\/>\(]+\(\d\))
+                             /gx;
+    $link_collection{$filename} = [ @links ];
+}
+
+sub checklinks {
+    foreach my $filename (sort keys %link_collection) {
+        foreach my $link (@{$link_collection{$filename}}) {
+            print "${filename}:1: reference to non-existing $link\n"
+                unless exists $name_collection{$link};
+        }
+    }
+}
+
+getopts('lnshu');
+
+&help() if ( $opt_h );
+
+die "Need one of -l -n -s or -u flags.\n"
+    unless $opt_l or $opt_n or $opt_s or $opt_u;
+
+if ( $opt_n or $opt_s ) {
+    foreach (@ARGV ? @ARGV : glob('doc/*/*.pod')) {
+        &check($_);
+    }
+}
+
+if ( $opt_l ) {
+    foreach (@ARGV ? @ARGV : glob('doc/*/*.pod')) {
+        collectnames($_);
+    }
+    checklinks();
+}
+
+if ( $opt_u ) {
+    my %temp = &getdocced('doc/man3');
+    foreach ( keys %temp ) {
+        $docced{$_} = $temp{$_};
+    }
+    &printem('crypto', 'util/libcrypto.num');
+    &printem('ssl', 'util/libssl.num');
+}
+
+exit;
diff --git a/util/find-doc-nits.pl b/util/find-doc-nits.pl
deleted file mode 100755 (executable)
index 74bf246..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-#! /usr/bin/env perl
-# Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
-#
-# Licensed under the OpenSSL license (the "License").  You may not use
-# this file except in compliance with the License.  You can obtain a copy
-# in the file LICENSE in the source distribution or at
-# https://www.openssl.org/source/license.html
-
-
-require 5.10.0;
-use warnings;
-use strict;
-use Pod::Checker;
-use File::Find;
-use File::Basename;
-use Getopt::Std;
-
-our($opt_s);
-
-my $temp = '/tmp/docnits.txt';
-my $OUT;
-
-my %mandatory_sections =
-    ( '*'    => [ 'NAME', 'DESCRIPTION', 'COPYRIGHT' ],
-      1      => [ 'SYNOPSIS', 'OPTIONS' ],
-      3      => [ 'SYNOPSIS', 'RETURN VALUES' ],
-      5      => [ ],
-      7      => [ ] );
-my %default_sections =
-    ( apps   => 1,
-      crypto => 3,
-      ssl    => 3 );
-
-# Cross-check functions in the NAME and SYNOPSIS section.
-sub name_synopsis()
-{
-    my $id = shift;
-    my $filename = shift;
-    my $contents = shift;
-
-    # Get NAME section and all words in it.
-    return unless $contents =~ /=head1 NAME(.*)=head1 SYNOPSIS/ms;
-    my $tmp = $1;
-    $tmp =~ tr/\n/ /;
-    $tmp =~ s/-.*//g;
-    $tmp =~ s/,//g;
-
-    my $dirname = dirname($filename);
-    my $simplename = basename($filename);
-    $simplename =~ s/.pod$//;
-    my $foundfilename = 0;
-    my %foundfilenames = ();
-    my %names;
-    foreach my $n ( split ' ', $tmp ) {
-        $names{$n} = 1;
-        $foundfilename++ if $n eq $simplename;
-        $foundfilenames{$n} = 1
-            if -f "$dirname/$n.pod" && $n ne $simplename;
-    }
-    print "$id the following exist as other .pod files:\n",
-        join(" ", sort keys %foundfilenames), "\n"
-        if %foundfilenames;
-    print "$id $simplename (filename) missing from NAME section\n",
-        unless $foundfilename;
-
-    # Find all functions in SYNOPSIS
-    return unless $contents =~ /=head1 SYNOPSIS(.*)=head1 DESCRIPTION/ms;
-    my $syn = $1;
-    foreach my $line ( split /\n+/, $syn ) {
-        my $sym;
-        $line =~ s/STACK_OF\([^)]+\)/int/g;
-        $line =~ s/__declspec\([^)]+\)//;
-        if ( $line =~ /env (\S*)=/ ) {
-            # environment variable env NAME=...
-            $sym = $1;
-        } elsif ( $line =~ /typedef.*\(\*(\S+)\)\(.*/ ) {
-            # a callback function: typedef ... (*NAME)(...
-            $sym = $1;
-        } elsif ( $line =~ /typedef.* (\S+);/ ) {
-            # a simple typedef: typedef ... NAME;
-            $sym = $1;
-        } elsif ( $line =~ /#define ([A-Za-z0-9_]+)/ ) {
-            $sym = $1;
-        } elsif ( $line =~ /([A-Za-z0-9_]+)\(/ ) {
-            $sym = $1;
-        }
-        else {
-            next;
-        }
-        print "$id $sym missing from NAME section\n"
-            unless defined $names{$sym};
-        $names{$sym} = 2;
-
-        # Do some sanity checks on the prototype.
-        print "$id prototype missing spaces around commas: $line\n"
-            if ( $line =~ /[a-z0-9],[^ ]/ );
-    }
-
-    foreach my $n ( keys %names ) {
-        next if $names{$n} == 2;
-        print "$id $n missing from SYNOPSIS\n";
-    }
-}
-
-sub check()
-{
-    my $filename = shift;
-    my $dirname = basename(dirname($filename));
-
-    my $contents = '';
-    {
-        local $/ = undef;
-        open POD, $filename or die "Couldn't open $filename, $!";
-        $contents = <POD>;
-        close POD;
-    }
-
-    my $id = "${filename}:1:";
-
-    &name_synopsis($id, $filename, $contents)
-        unless $contents =~ /=for comment generic/
-            or $contents =~ /=for comment openssl_manual_section:7/
-            or $filename =~ m@/apps/@;
-
-    print "$id doesn't start with =pod\n"
-        if $contents !~ /^=pod/;
-    print "$id doesn't end with =cut\n"
-        if $contents !~ /=cut\n$/;
-    print "$id more than one cut line.\n"
-        if $contents =~ /=cut.*=cut/ms;
-    print "$id missing copyright\n"
-        if $contents !~ /Copyright .* The OpenSSL Project Authors/;
-    print "$id copyright not last\n"
-        if $contents =~ /head1 COPYRIGHT.*=head/ms;
-    print "$id head2 in All uppercase\n"
-        if $contents =~ /head2\s+[A-Z ]+\n/;
-    print "$id extra space after head\n"
-        if $contents =~ /=head\d\s\s+/;
-    print "$id period in NAME section\n"
-        if $contents =~ /=head1 NAME.*\.\n.*=head1 SYNOPSIS/ms;
-    print "$id POD markup in NAME section\n"
-        if $contents =~ /=head1 NAME.*[<>].*=head1 SYNOPSIS/ms;
-
-    # Look for multiple consecutive openssl #include lines.
-    # Consecutive because of files like md5.pod. Sometimes it's okay
-    # or necessary, as in ssl/SSL_set1_host.pod
-    if ( $contents !~ /=for comment multiple includes/ ) {
-        if ( $contents =~ /=head1 SYNOPSIS(.*)=head1 DESCRIPTION/ms ) {
-            my $count = 0;
-            foreach my $line ( split /\n+/, $1 ) {
-                if ( $line =~ m@include <openssl/@ ) {
-                    if ( ++$count == 2 ) {
-                        print "$id has multiple includes\n";
-                    }
-                } else {
-                    $count = 0;
-                }
-            }
-        }
-    }
-
-    return unless $opt_s;
-
-    # Find what section this page is in.  If run from "." assume
-    # section 3.
-    my $section = $default_sections{$dirname} || 3;
-    if ($contents =~ /^=for\s+comment\s+openssl_manual_section:\s*(\d+)\s*$/m) {
-        $section = $1;
-    }
-
-    foreach ((@{$mandatory_sections{'*'}}, @{$mandatory_sections{$section}})) {
-        print "$id: missing $_ head1 section\n"
-            if $contents !~ /^=head1\s+${_}\s*$/m;
-    }
-
-    open my $OUT, '>', $temp
-        or die "Can't open $temp, $!";
-    podchecker($filename, $OUT);
-    close $OUT;
-    open $OUT, '<', $temp
-        or die "Can't read $temp, $!";
-    while ( <$OUT> ) {
-        next if /\(section\) in.*deprecated/;
-        print;
-    }
-    close $OUT;
-    unlink $temp || warn "Can't remove $temp, $!";
-}
-
-getopts('s');
-
-foreach (@ARGV ? @ARGV : glob('doc/*/*.pod')) {
-    &check($_);
-}
-
-exit;