Do not have duplicate section heads
Change find-doc-nits to complain if a section header is repeated, within a parent header (i.e., duplicate =head2 within a =head1). In almost all cases, we just remove the duplicate header, as it was a "continuation" of the =head1 that was already in affect. In some cases, just remove "=head1 NOTES", possibly moving text around, because the "NOTES" were really important parts of the DESCRIPTION section. No =headX sections should end with a period. All =head1 labels should be in all uppercase. No sub-head (=head2, etc) should be in all uppercase. Update find-doc-nits to reject the above. Fixup an internal POD link Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Paul Yang <kaishen.yy@antfin.com> Reviewed-by: Paul Dale <paul.dale@oracle.com> (Merged from https://github.com/openssl/openssl/pull/9631)
This commit is contained in:
parent
6d745d740d
commit
485d336137
20 changed files with 103 additions and 98 deletions
|
@ -508,7 +508,7 @@ Note: these ciphers can also be used in SSL v3.
|
||||||
|
|
||||||
TLS_DHE_DSS_WITH_RC4_128_SHA DHE-DSS-RC4-SHA
|
TLS_DHE_DSS_WITH_RC4_128_SHA DHE-DSS-RC4-SHA
|
||||||
|
|
||||||
=head2 Elliptic curve cipher suites.
|
=head2 Elliptic curve cipher suites
|
||||||
|
|
||||||
TLS_ECDHE_RSA_WITH_NULL_SHA ECDHE-RSA-NULL-SHA
|
TLS_ECDHE_RSA_WITH_NULL_SHA ECDHE-RSA-NULL-SHA
|
||||||
TLS_ECDHE_RSA_WITH_RC4_128_SHA ECDHE-RSA-RC4-SHA
|
TLS_ECDHE_RSA_WITH_RC4_128_SHA ECDHE-RSA-RC4-SHA
|
||||||
|
|
|
@ -559,7 +559,7 @@ The B<-debug_decrypt> option can be used to disable the MMA attack protection
|
||||||
and return an error if no recipient can be found: this option should be used
|
and return an error if no recipient can be found: this option should be used
|
||||||
with caution. For a fuller description see L<CMS_decrypt(3)>).
|
with caution. For a fuller description see L<CMS_decrypt(3)>).
|
||||||
|
|
||||||
=head1 CAdES Basic Electronic Signature (CAdES-BES)
|
=head1 CADES BASIC ELECTRONIC SIGNATURE (CADES-BES)
|
||||||
|
|
||||||
A CAdES Basic Electronic Signature (CAdES-BES), as defined in the European Standard ETSI EN 319 122-1 V1.1.1, contains:
|
A CAdES Basic Electronic Signature (CAdES-BES), as defined in the European Standard ETSI EN 319 122-1 V1.1.1, contains:
|
||||||
|
|
||||||
|
@ -625,7 +625,7 @@ the signers certificates.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head1 COMPATIBILITY WITH PKCS#7 format.
|
=head1 COMPATIBILITY WITH PKCS#7 FORMAT
|
||||||
|
|
||||||
The B<smime> utility can only process the older B<PKCS#7> format. The B<cms>
|
The B<smime> utility can only process the older B<PKCS#7> format. The B<cms>
|
||||||
utility supports Cryptographic Message Syntax format. Use of some features
|
utility supports Cryptographic Message Syntax format. Use of some features
|
||||||
|
|
|
@ -392,7 +392,7 @@ immediately available.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head1 OCSP Response verification.
|
=head1 OCSP RESPONSE VERIFICATION
|
||||||
|
|
||||||
OCSP Response follows the rules specified in RFC2560.
|
OCSP Response follows the rules specified in RFC2560.
|
||||||
|
|
||||||
|
|
|
@ -209,7 +209,7 @@ It is possible to write out DER encoded encrypted private keys in
|
||||||
PKCS#8 format because the encryption details are included at an ASN1
|
PKCS#8 format because the encryption details are included at an ASN1
|
||||||
level whereas the traditional format includes them at a PEM level.
|
level whereas the traditional format includes them at a PEM level.
|
||||||
|
|
||||||
=head1 PKCS#5 v1.5 and PKCS#12 algorithms.
|
=head1 PKCS#5 V1.5 AND PKCS#12 ALGORITHMS
|
||||||
|
|
||||||
Various algorithms can be used with the B<-v1> command line option,
|
Various algorithms can be used with the B<-v1> command line option,
|
||||||
including PKCS#5 v1.5 and PKCS#12. These are described in more detail
|
including PKCS#5 v1.5 and PKCS#12. These are described in more detail
|
||||||
|
|
|
@ -309,12 +309,12 @@ The EC algorithm supports sign, verify and derive operations. The sign and
|
||||||
verify operations use ECDSA and derive uses ECDH. SHA1 is assumed by default for
|
verify operations use ECDSA and derive uses ECDH. SHA1 is assumed by default for
|
||||||
the B<-pkeyopt> B<digest> option.
|
the B<-pkeyopt> B<digest> option.
|
||||||
|
|
||||||
=head1 X25519 and X448 ALGORITHMS
|
=head1 X25519 AND X448 ALGORITHMS
|
||||||
|
|
||||||
The X25519 and X448 algorithms support key derivation only. Currently there are
|
The X25519 and X448 algorithms support key derivation only. Currently there are
|
||||||
no additional options.
|
no additional options.
|
||||||
|
|
||||||
=head1 Ed25519 and Ed448 ALGORITHMS
|
=head1 ED25519 AND ED448 ALGORITHMS
|
||||||
|
|
||||||
These algorithms only support signing and verifying. OpenSSL only implements the
|
These algorithms only support signing and verifying. OpenSSL only implements the
|
||||||
"pure" variants of these algorithms so raw data can be passed directly to them
|
"pure" variants of these algorithms so raw data can be passed directly to them
|
||||||
|
|
|
@ -17,8 +17,6 @@ is the compression algorithm to use or B<NID_undef> to use the default
|
||||||
algorithm (zlib compression). B<in> is the content to be compressed.
|
algorithm (zlib compression). B<in> is the content to be compressed.
|
||||||
B<flags> is an optional set of flags.
|
B<flags> is an optional set of flags.
|
||||||
|
|
||||||
=head1 NOTES
|
|
||||||
|
|
||||||
The only currently supported compression algorithm is zlib using the NID
|
The only currently supported compression algorithm is zlib using the NID
|
||||||
NID_zlib_compression.
|
NID_zlib_compression.
|
||||||
|
|
||||||
|
@ -41,8 +39,6 @@ The compressed data is included in the CMS_ContentInfo structure, unless
|
||||||
B<CMS_DETACHED> is set in which case it is omitted. This is rarely used in
|
B<CMS_DETACHED> is set in which case it is omitted. This is rarely used in
|
||||||
practice and is not supported by SMIME_write_CMS().
|
practice and is not supported by SMIME_write_CMS().
|
||||||
|
|
||||||
=head1 NOTES
|
|
||||||
|
|
||||||
If the flag B<CMS_STREAM> is set the returned B<CMS_ContentInfo> structure is
|
If the flag B<CMS_STREAM> is set the returned B<CMS_ContentInfo> structure is
|
||||||
B<not> complete and outputting its contents via a function that does not
|
B<not> complete and outputting its contents via a function that does not
|
||||||
properly finalize the B<CMS_ContentInfo> structure will give unpredictable
|
properly finalize the B<CMS_ContentInfo> structure will give unpredictable
|
||||||
|
|
|
@ -17,8 +17,6 @@ CMS_encrypt() creates and returns a CMS EnvelopedData structure. B<certs>
|
||||||
is a list of recipient certificates. B<in> is the content to be encrypted.
|
is a list of recipient certificates. B<in> is the content to be encrypted.
|
||||||
B<cipher> is the symmetric cipher to use. B<flags> is an optional set of flags.
|
B<cipher> is the symmetric cipher to use. B<flags> is an optional set of flags.
|
||||||
|
|
||||||
=head1 NOTES
|
|
||||||
|
|
||||||
Only certificates carrying RSA, Diffie-Hellman or EC keys are supported by this
|
Only certificates carrying RSA, Diffie-Hellman or EC keys are supported by this
|
||||||
function.
|
function.
|
||||||
|
|
||||||
|
@ -60,8 +58,6 @@ The data being encrypted is included in the CMS_ContentInfo structure, unless
|
||||||
B<CMS_DETACHED> is set in which case it is omitted. This is rarely used in
|
B<CMS_DETACHED> is set in which case it is omitted. This is rarely used in
|
||||||
practice and is not supported by SMIME_write_CMS().
|
practice and is not supported by SMIME_write_CMS().
|
||||||
|
|
||||||
=head1 NOTES
|
|
||||||
|
|
||||||
If the flag B<CMS_STREAM> is set the returned B<CMS_ContentInfo> structure is
|
If the flag B<CMS_STREAM> is set the returned B<CMS_ContentInfo> structure is
|
||||||
B<not> complete and outputting its contents via a function that does not
|
B<not> complete and outputting its contents via a function that does not
|
||||||
properly finalize the B<CMS_ContentInfo> structure will give unpredictable
|
properly finalize the B<CMS_ContentInfo> structure will give unpredictable
|
||||||
|
|
|
@ -99,6 +99,15 @@ crypto.h where use of CRYPTO_THREAD_* types and functions is required.
|
||||||
|
|
||||||
=head1 EXAMPLES
|
=head1 EXAMPLES
|
||||||
|
|
||||||
|
You can find out if OpenSSL was configured with thread support:
|
||||||
|
|
||||||
|
#include <openssl/opensslconf.h>
|
||||||
|
#if defined(OPENSSL_THREADS)
|
||||||
|
/* thread support enabled */
|
||||||
|
#else
|
||||||
|
/* no thread support */
|
||||||
|
#endif
|
||||||
|
|
||||||
This example safely initializes and uses a lock.
|
This example safely initializes and uses a lock.
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
@ -144,17 +153,6 @@ no longer in use and is unloaded.
|
||||||
The simplest solution is to just "leak" the lock in applications and not
|
The simplest solution is to just "leak" the lock in applications and not
|
||||||
repeatedly load/unload shared libraries that allocate locks.
|
repeatedly load/unload shared libraries that allocate locks.
|
||||||
|
|
||||||
=head1 NOTES
|
|
||||||
|
|
||||||
You can find out if OpenSSL was configured with thread support:
|
|
||||||
|
|
||||||
#include <openssl/opensslconf.h>
|
|
||||||
#if defined(OPENSSL_THREADS)
|
|
||||||
/* thread support enabled */
|
|
||||||
#else
|
|
||||||
/* no thread support */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
=head1 SEE ALSO
|
=head1 SEE ALSO
|
||||||
|
|
||||||
L<crypto(7)>
|
L<crypto(7)>
|
||||||
|
|
|
@ -406,7 +406,7 @@ Null cipher: does nothing.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head1 AEAD Interface
|
=head1 AEAD INTERFACE
|
||||||
|
|
||||||
The EVP interface for Authenticated Encryption with Associated Data (AEAD)
|
The EVP interface for Authenticated Encryption with Associated Data (AEAD)
|
||||||
modes are subtly altered and several additional I<ctrl> operations are supported
|
modes are subtly altered and several additional I<ctrl> operations are supported
|
||||||
|
@ -485,7 +485,7 @@ the length of the tag (with the C<tag> parameter set to NULL) when encrypting.
|
||||||
The tag length is often referred to as B<M>. If not set a default value is
|
The tag length is often referred to as B<M>. If not set a default value is
|
||||||
used (12 for AES). When decrypting, the tag needs to be set before passing
|
used (12 for AES). When decrypting, the tag needs to be set before passing
|
||||||
in data to be decrypted, but as in GCM and OCB mode, it can be set after
|
in data to be decrypted, but as in GCM and OCB mode, it can be set after
|
||||||
passing additional authenticated data (see L<AEAD Interface>).
|
passing additional authenticated data (see L</AEAD INTERFACE>).
|
||||||
|
|
||||||
=item EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_CCM_SET_L, ivlen, NULL)
|
=item EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_CCM_SET_L, ivlen, NULL)
|
||||||
|
|
||||||
|
|
|
@ -214,7 +214,7 @@ the following:
|
||||||
BIO_dump(trc_out, bar, sizeof(bar));
|
BIO_dump(trc_out, bar, sizeof(bar));
|
||||||
} OSSL_TRACE_END(TLS);
|
} OSSL_TRACE_END(TLS);
|
||||||
|
|
||||||
=head1 Simple example
|
=head2 Simple example
|
||||||
|
|
||||||
An example with just a channel and constant prefix / suffix.
|
An example with just a channel and constant prefix / suffix.
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,6 @@ PKCS12_newpass() changes the password of a PKCS12 structure.
|
||||||
B<p12> is a pointer to a PKCS12 structure. B<oldpass> is the existing password
|
B<p12> is a pointer to a PKCS12 structure. B<oldpass> is the existing password
|
||||||
and B<newpass> is the new password.
|
and B<newpass> is the new password.
|
||||||
|
|
||||||
=head1 NOTES
|
|
||||||
|
|
||||||
Each of B<oldpass> and B<newpass> is independently interpreted as a string in
|
Each of B<oldpass> and B<newpass> is independently interpreted as a string in
|
||||||
the UTF-8 encoding. If it is not valid UTF-8, it is assumed to be ISO8859-1
|
the UTF-8 encoding. If it is not valid UTF-8, it is assumed to be ISO8859-1
|
||||||
instead.
|
instead.
|
||||||
|
@ -29,6 +27,15 @@ use. This may include passwords from local text files, or input from
|
||||||
the terminal or command line. Refer to the documentation of
|
the terminal or command line. Refer to the documentation of
|
||||||
L<UI_OpenSSL(3)>, for example.
|
L<UI_OpenSSL(3)>, for example.
|
||||||
|
|
||||||
|
If the PKCS#12 structure does not have a password, then you must use the empty
|
||||||
|
string "" for B<oldpass>. Using NULL for B<oldpass> will result in a
|
||||||
|
PKCS12_newpass() failure.
|
||||||
|
|
||||||
|
If the wrong password is used for B<oldpass> then the function will fail,
|
||||||
|
with a MAC verification error. In rare cases the PKCS12 structure does not
|
||||||
|
contain a MAC: in this case it will usually fail with a decryption padding
|
||||||
|
error.
|
||||||
|
|
||||||
=head1 RETURN VALUES
|
=head1 RETURN VALUES
|
||||||
|
|
||||||
PKCS12_newpass() returns 1 on success or 0 on failure. Applications can
|
PKCS12_newpass() returns 1 on success or 0 on failure. Applications can
|
||||||
|
@ -83,17 +90,6 @@ the result to a new file.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
=head1 NOTES
|
|
||||||
|
|
||||||
If the PKCS#12 structure does not have a password, then you must use the empty
|
|
||||||
string "" for B<oldpass>. Using NULL for B<oldpass> will result in a
|
|
||||||
PKCS12_newpass() failure.
|
|
||||||
|
|
||||||
If the wrong password is used for B<oldpass> then the function will fail,
|
|
||||||
with a MAC verification error. In rare cases the PKCS12 structure does not
|
|
||||||
contain a MAC: in this case it will usually fail with a decryption padding
|
|
||||||
error.
|
|
||||||
|
|
||||||
=head1 BUGS
|
=head1 BUGS
|
||||||
|
|
||||||
The password format is a NULL terminated ASCII string which is converted to
|
The password format is a NULL terminated ASCII string which is converted to
|
||||||
|
|
|
@ -17,8 +17,6 @@ PKCS7_encrypt() creates and returns a PKCS#7 envelopedData structure. B<certs>
|
||||||
is a list of recipient certificates. B<in> is the content to be encrypted.
|
is a list of recipient certificates. B<in> is the content to be encrypted.
|
||||||
B<cipher> is the symmetric cipher to use. B<flags> is an optional set of flags.
|
B<cipher> is the symmetric cipher to use. B<flags> is an optional set of flags.
|
||||||
|
|
||||||
=head1 NOTES
|
|
||||||
|
|
||||||
Only RSA keys are supported in PKCS#7 and envelopedData so the recipient
|
Only RSA keys are supported in PKCS#7 and envelopedData so the recipient
|
||||||
certificates supplied to this function must all contain RSA public keys, though
|
certificates supplied to this function must all contain RSA public keys, though
|
||||||
they do not have to be signed using the RSA algorithm.
|
they do not have to be signed using the RSA algorithm.
|
||||||
|
@ -52,8 +50,6 @@ B<PKCS7_TEXT> is ignored.
|
||||||
If the B<PKCS7_STREAM> flag is set a partial B<PKCS7> structure is output
|
If the B<PKCS7_STREAM> flag is set a partial B<PKCS7> structure is output
|
||||||
suitable for streaming I/O: no data is read from the BIO B<in>.
|
suitable for streaming I/O: no data is read from the BIO B<in>.
|
||||||
|
|
||||||
=head1 NOTES
|
|
||||||
|
|
||||||
If the flag B<PKCS7_STREAM> is set the returned B<PKCS7> structure is B<not>
|
If the flag B<PKCS7_STREAM> is set the returned B<PKCS7> structure is B<not>
|
||||||
complete and outputting its contents via a function that does not
|
complete and outputting its contents via a function that does not
|
||||||
properly finalize the B<PKCS7> structure will give unpredictable
|
properly finalize the B<PKCS7> structure will give unpredictable
|
||||||
|
|
|
@ -22,8 +22,6 @@ The data to be signed is read from BIO B<data>.
|
||||||
|
|
||||||
B<flags> is an optional set of flags.
|
B<flags> is an optional set of flags.
|
||||||
|
|
||||||
=head1 NOTES
|
|
||||||
|
|
||||||
Any of the following flags (ored together) can be passed in the B<flags>
|
Any of the following flags (ored together) can be passed in the B<flags>
|
||||||
parameter.
|
parameter.
|
||||||
|
|
||||||
|
@ -66,8 +64,6 @@ way data can be signed in a single pass.
|
||||||
If the B<PKCS7_PARTIAL> flag is set a partial B<PKCS7> structure is output to
|
If the B<PKCS7_PARTIAL> flag is set a partial B<PKCS7> structure is output to
|
||||||
which additional signers and capabilities can be added before finalization.
|
which additional signers and capabilities can be added before finalization.
|
||||||
|
|
||||||
=head1 NOTES
|
|
||||||
|
|
||||||
If the flag B<PKCS7_STREAM> is set the returned B<PKCS7> structure is B<not>
|
If the flag B<PKCS7_STREAM> is set the returned B<PKCS7> structure is B<not>
|
||||||
complete and outputting its contents via a function that does not properly
|
complete and outputting its contents via a function that does not properly
|
||||||
finalize the B<PKCS7> structure will give unpredictable results.
|
finalize the B<PKCS7> structure will give unpredictable results.
|
||||||
|
|
|
@ -313,7 +313,7 @@ unaware of the unpatched nature of the client.
|
||||||
If the option B<SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION> is set then
|
If the option B<SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION> is set then
|
||||||
renegotiation B<always> succeeds.
|
renegotiation B<always> succeeds.
|
||||||
|
|
||||||
=head2 Patched OpenSSL client and unpatched server.
|
=head2 Patched OpenSSL client and unpatched server
|
||||||
|
|
||||||
If the option B<SSL_OP_LEGACY_SERVER_CONNECT> or
|
If the option B<SSL_OP_LEGACY_SERVER_CONNECT> or
|
||||||
B<SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION> is set then initial connections
|
B<SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION> is set then initial connections
|
||||||
|
|
|
@ -85,8 +85,6 @@ check to see if a callback has been set via SSL_CTX_set_psk_server_callback() or
|
||||||
SSL_set_psk_server_callback() and use that. In this case the handshake digest
|
SSL_set_psk_server_callback() and use that. In this case the handshake digest
|
||||||
will default to SHA-256 for any returned PSK.
|
will default to SHA-256 for any returned PSK.
|
||||||
|
|
||||||
=head1 NOTES
|
|
||||||
|
|
||||||
A connection established via a TLSv1.3 PSK will appear as if session resumption
|
A connection established via a TLSv1.3 PSK will appear as if session resumption
|
||||||
has occurred so that L<SSL_session_reused(3)> will return true.
|
has occurred so that L<SSL_session_reused(3)> will return true.
|
||||||
|
|
||||||
|
|
|
@ -15,8 +15,6 @@ SSL_shutdown - shut down a TLS/SSL connection
|
||||||
SSL_shutdown() shuts down an active TLS/SSL connection. It sends the
|
SSL_shutdown() shuts down an active TLS/SSL connection. It sends the
|
||||||
close_notify shutdown alert to the peer.
|
close_notify shutdown alert to the peer.
|
||||||
|
|
||||||
=head1 NOTES
|
|
||||||
|
|
||||||
SSL_shutdown() tries to send the close_notify shutdown alert to the peer.
|
SSL_shutdown() tries to send the close_notify shutdown alert to the peer.
|
||||||
Whether the operation succeeds or not, the SSL_SENT_SHUTDOWN flag is set and
|
Whether the operation succeeds or not, the SSL_SENT_SHUTDOWN flag is set and
|
||||||
a currently open session is considered closed and good and will be kept in the
|
a currently open session is considered closed and good and will be kept in the
|
||||||
|
@ -52,6 +50,32 @@ SSL_shutdown() only closes the write direction.
|
||||||
It is not possible to call SSL_write() after calling SSL_shutdown().
|
It is not possible to call SSL_write() after calling SSL_shutdown().
|
||||||
The read direction is closed by the peer.
|
The read direction is closed by the peer.
|
||||||
|
|
||||||
|
The behaviour of SSL_shutdown() additionally depends on the underlying BIO.
|
||||||
|
If the underlying BIO is B<blocking>, SSL_shutdown() will only return once the
|
||||||
|
handshake step has been finished or an error occurred.
|
||||||
|
|
||||||
|
If the underlying BIO is B<non-blocking>, SSL_shutdown() will also return
|
||||||
|
when the underlying BIO could not satisfy the needs of SSL_shutdown()
|
||||||
|
to continue the handshake. In this case a call to SSL_get_error() with the
|
||||||
|
return value of SSL_shutdown() will yield B<SSL_ERROR_WANT_READ> or
|
||||||
|
B<SSL_ERROR_WANT_WRITE>. The calling process then must repeat the call after
|
||||||
|
taking appropriate action to satisfy the needs of SSL_shutdown().
|
||||||
|
The action depends on the underlying BIO. When using a non-blocking socket,
|
||||||
|
nothing is to be done, but select() can be used to check for the required
|
||||||
|
condition. When using a buffering BIO, like a BIO pair, data must be written
|
||||||
|
into or retrieved out of the BIO before being able to continue.
|
||||||
|
|
||||||
|
After SSL_shutdown() returned 0, it is possible to call SSL_shutdown() again
|
||||||
|
to wait for the peer's close_notify alert.
|
||||||
|
SSL_shutdown() will return 1 in that case.
|
||||||
|
However, it is recommended to wait for it using SSL_read() instead.
|
||||||
|
|
||||||
|
SSL_shutdown() can be modified to only set the connection to "shutdown"
|
||||||
|
state but not actually send the close_notify alert messages,
|
||||||
|
see L<SSL_CTX_set_quiet_shutdown(3)>.
|
||||||
|
When "quiet shutdown" is enabled, SSL_shutdown() will always succeed
|
||||||
|
and return 1.
|
||||||
|
|
||||||
=head2 First to close the connection
|
=head2 First to close the connection
|
||||||
|
|
||||||
When the application is the first party to send the close_notify
|
When the application is the first party to send the close_notify
|
||||||
|
@ -89,34 +113,6 @@ If successful, SSL_shutdown() will return 1.
|
||||||
Whether SSL_RECEIVED_SHUTDOWN is already set can be checked using the
|
Whether SSL_RECEIVED_SHUTDOWN is already set can be checked using the
|
||||||
SSL_get_shutdown() (see also L<SSL_set_shutdown(3)> call.
|
SSL_get_shutdown() (see also L<SSL_set_shutdown(3)> call.
|
||||||
|
|
||||||
=head1 NOTES
|
|
||||||
|
|
||||||
The behaviour of SSL_shutdown() additionally depends on the underlying BIO.
|
|
||||||
If the underlying BIO is B<blocking>, SSL_shutdown() will only return once the
|
|
||||||
handshake step has been finished or an error occurred.
|
|
||||||
|
|
||||||
If the underlying BIO is B<non-blocking>, SSL_shutdown() will also return
|
|
||||||
when the underlying BIO could not satisfy the needs of SSL_shutdown()
|
|
||||||
to continue the handshake. In this case a call to SSL_get_error() with the
|
|
||||||
return value of SSL_shutdown() will yield B<SSL_ERROR_WANT_READ> or
|
|
||||||
B<SSL_ERROR_WANT_WRITE>. The calling process then must repeat the call after
|
|
||||||
taking appropriate action to satisfy the needs of SSL_shutdown().
|
|
||||||
The action depends on the underlying BIO. When using a non-blocking socket,
|
|
||||||
nothing is to be done, but select() can be used to check for the required
|
|
||||||
condition. When using a buffering BIO, like a BIO pair, data must be written
|
|
||||||
into or retrieved out of the BIO before being able to continue.
|
|
||||||
|
|
||||||
After SSL_shutdown() returned 0, it is possible to call SSL_shutdown() again
|
|
||||||
to wait for the peer's close_notify alert.
|
|
||||||
SSL_shutdown() will return 1 in that case.
|
|
||||||
However, it is recommended to wait for it using SSL_read() instead.
|
|
||||||
|
|
||||||
SSL_shutdown() can be modified to only set the connection to "shutdown"
|
|
||||||
state but not actually send the close_notify alert messages,
|
|
||||||
see L<SSL_CTX_set_quiet_shutdown(3)>.
|
|
||||||
When "quiet shutdown" is enabled, SSL_shutdown() will always succeed
|
|
||||||
and return 1.
|
|
||||||
|
|
||||||
=head1 RETURN VALUES
|
=head1 RETURN VALUES
|
||||||
|
|
||||||
The following return values can occur:
|
The following return values can occur:
|
||||||
|
|
|
@ -56,7 +56,7 @@ must be used, see the L<ARBITRARY EXTENSIONS|/"ARBITRARY EXTENSIONS"> section fo
|
||||||
|
|
||||||
The following sections describe each supported extension in detail.
|
The following sections describe each supported extension in detail.
|
||||||
|
|
||||||
=head2 Basic Constraints.
|
=head2 Basic Constraints
|
||||||
|
|
||||||
This is a multi valued extension which indicates whether a certificate is
|
This is a multi valued extension which indicates whether a certificate is
|
||||||
a CA certificate. The first (mandatory) name is B<CA> followed by B<TRUE> or
|
a CA certificate. The first (mandatory) name is B<CA> followed by B<TRUE> or
|
||||||
|
@ -81,7 +81,7 @@ below this one in a chain. So if you have a CA with a pathlen of zero it can
|
||||||
only be used to sign end user certificates and not further CAs.
|
only be used to sign end user certificates and not further CAs.
|
||||||
|
|
||||||
|
|
||||||
=head2 Key Usage.
|
=head2 Key Usage
|
||||||
|
|
||||||
Key usage is a multi valued extension consisting of a list of names of the
|
Key usage is a multi valued extension consisting of a list of names of the
|
||||||
permitted key usages.
|
permitted key usages.
|
||||||
|
@ -97,7 +97,7 @@ Examples:
|
||||||
keyUsage=critical, keyCertSign
|
keyUsage=critical, keyCertSign
|
||||||
|
|
||||||
|
|
||||||
=head2 Extended Key Usage.
|
=head2 Extended Key Usage
|
||||||
|
|
||||||
This extensions consists of a list of usages indicating purposes for which
|
This extensions consists of a list of usages indicating purposes for which
|
||||||
the certificate public key can be used for,
|
the certificate public key can be used for,
|
||||||
|
@ -126,7 +126,7 @@ Examples:
|
||||||
extendedKeyUsage=serverAuth,clientAuth
|
extendedKeyUsage=serverAuth,clientAuth
|
||||||
|
|
||||||
|
|
||||||
=head2 Subject Key Identifier.
|
=head2 Subject Key Identifier
|
||||||
|
|
||||||
This is really a string extension and can take two possible values. Either
|
This is really a string extension and can take two possible values. Either
|
||||||
the word B<hash> which will automatically follow the guidelines in RFC3280
|
the word B<hash> which will automatically follow the guidelines in RFC3280
|
||||||
|
@ -138,7 +138,7 @@ Example:
|
||||||
subjectKeyIdentifier=hash
|
subjectKeyIdentifier=hash
|
||||||
|
|
||||||
|
|
||||||
=head2 Authority Key Identifier.
|
=head2 Authority Key Identifier
|
||||||
|
|
||||||
The authority key identifier extension permits two options. keyid and issuer:
|
The authority key identifier extension permits two options. keyid and issuer:
|
||||||
both can take the optional value "always".
|
both can take the optional value "always".
|
||||||
|
@ -156,7 +156,7 @@ Example:
|
||||||
authorityKeyIdentifier=keyid,issuer
|
authorityKeyIdentifier=keyid,issuer
|
||||||
|
|
||||||
|
|
||||||
=head2 Subject Alternative Name.
|
=head2 Subject Alternative Name
|
||||||
|
|
||||||
The subject alternative name extension allows various literal values to be
|
The subject alternative name extension allows various literal values to be
|
||||||
included in the configuration file. These include B<email> (an email address)
|
included in the configuration file. These include B<email> (an email address)
|
||||||
|
@ -195,7 +195,7 @@ Examples:
|
||||||
CN=My Name
|
CN=My Name
|
||||||
|
|
||||||
|
|
||||||
=head2 Issuer Alternative Name.
|
=head2 Issuer Alternative Name
|
||||||
|
|
||||||
The issuer alternative name option supports all the literal options of
|
The issuer alternative name option supports all the literal options of
|
||||||
subject alternative name. It does B<not> support the email:copy option because
|
subject alternative name. It does B<not> support the email:copy option because
|
||||||
|
@ -208,7 +208,7 @@ Example:
|
||||||
issuerAltName = issuer:copy
|
issuerAltName = issuer:copy
|
||||||
|
|
||||||
|
|
||||||
=head2 Authority Info Access.
|
=head2 Authority Info Access
|
||||||
|
|
||||||
The authority information access extension gives details about how to access
|
The authority information access extension gives details about how to access
|
||||||
certain information relating to the CA. Its syntax is accessOID;location
|
certain information relating to the CA. Its syntax is accessOID;location
|
||||||
|
@ -300,7 +300,7 @@ Example:
|
||||||
CN=Some Name
|
CN=Some Name
|
||||||
|
|
||||||
|
|
||||||
=head2 Certificate Policies.
|
=head2 Certificate Policies
|
||||||
|
|
||||||
This is a I<raw> extension. All the fields of this extension can be set by
|
This is a I<raw> extension. All the fields of this extension can be set by
|
||||||
using the appropriate syntax.
|
using the appropriate syntax.
|
||||||
|
@ -424,7 +424,7 @@ Example:
|
||||||
The following extensions are non standard, Netscape specific and largely
|
The following extensions are non standard, Netscape specific and largely
|
||||||
obsolete. Their use in new applications is discouraged.
|
obsolete. Their use in new applications is discouraged.
|
||||||
|
|
||||||
=head2 Netscape String extensions.
|
=head2 Netscape String extensions
|
||||||
|
|
||||||
Netscape Comment (B<nsComment>) is a string extension containing a comment
|
Netscape Comment (B<nsComment>) is a string extension containing a comment
|
||||||
which will be displayed when the certificate is viewed in some browsers.
|
which will be displayed when the certificate is viewed in some browsers.
|
||||||
|
|
|
@ -209,7 +209,7 @@ The last feature has been added to support the common practice used with
|
||||||
previous OpenSSL versions to call RAND_add() before calling RAND_bytes().
|
previous OpenSSL versions to call RAND_add() before calling RAND_bytes().
|
||||||
|
|
||||||
|
|
||||||
=head2 Entropy Input vs. Additional Data
|
=head2 Entropy Input and Additional Data
|
||||||
|
|
||||||
The DRBG distinguishes two different types of random input: I<entropy>,
|
The DRBG distinguishes two different types of random input: I<entropy>,
|
||||||
which comes from a trusted source, and I<additional input>',
|
which comes from a trusted source, and I<additional input>',
|
||||||
|
|
|
@ -204,7 +204,7 @@ an implementation.
|
||||||
The method object that is fetched can then be used with diverse other
|
The method object that is fetched can then be used with diverse other
|
||||||
functions that use them, for example L<EVP_DigestInit_ex(3)>.
|
functions that use them, for example L<EVP_DigestInit_ex(3)>.
|
||||||
|
|
||||||
=head2 Implicit fetch
|
=head3 Implicit fetch
|
||||||
|
|
||||||
I<NOTE: This section is mostly interesting to OpenSSL users.>
|
I<NOTE: This section is mostly interesting to OpenSSL users.>
|
||||||
|
|
||||||
|
|
|
@ -159,12 +159,44 @@ sub check_section_location()
|
||||||
my $section = shift;
|
my $section = shift;
|
||||||
my $before = shift;
|
my $before = shift;
|
||||||
|
|
||||||
return
|
return unless $contents =~ /=head1 $section/
|
||||||
unless $contents =~ /=head1 $section/ and $contents =~ /=head1 $before/;
|
and $contents =~ /=head1 $before/;
|
||||||
print "$id $section should be placed before $before section\n"
|
print "$id $section should appear before $before section\n"
|
||||||
if $contents =~ /=head1 $before.*=head1 $section/ms;
|
if $contents =~ /=head1 $before.*=head1 $section/ms;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Check if a =head1 is duplicated, or a =headX is duplicated within a
|
||||||
|
# =head1. Treats =head2 =head3 as equivalent -- it doesn't reset the head3
|
||||||
|
# sets if it finds a =head2 -- but that is good enough for now. Also check
|
||||||
|
# for proper capitalization, trailing periods, etc.
|
||||||
|
sub check_head_style()
|
||||||
|
{
|
||||||
|
my $id = shift;
|
||||||
|
my $contents = shift;
|
||||||
|
my %head1;
|
||||||
|
my %subheads;
|
||||||
|
|
||||||
|
foreach my $line ( split /\n+/, $contents ) {
|
||||||
|
next unless $line =~ /^=head/;
|
||||||
|
if ( $line =~ /head1/ ) {
|
||||||
|
print "$id duplicate section $line\n"
|
||||||
|
if defined $head1{$line};
|
||||||
|
$head1{$line} = 1;
|
||||||
|
%subheads = ();
|
||||||
|
} else {
|
||||||
|
print "$id duplicate subsection $line\n"
|
||||||
|
if defined $subheads{$line};
|
||||||
|
$subheads{$line} = 1;
|
||||||
|
}
|
||||||
|
print "$id period in =head\n"
|
||||||
|
if $line =~ /\.[^\w]/ or $line =~ /\.$/;
|
||||||
|
print "$id not all uppercase in =head1\n"
|
||||||
|
if $line =~ /head1.*[a-z]/;
|
||||||
|
print "$id all uppercase in subhead\n"
|
||||||
|
if $line =~ /head[234][ A-Z0-9]+$/;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sub check()
|
sub check()
|
||||||
{
|
{
|
||||||
my $filename = shift;
|
my $filename = shift;
|
||||||
|
@ -179,6 +211,7 @@ sub check()
|
||||||
}
|
}
|
||||||
|
|
||||||
my $id = "${filename}:1:";
|
my $id = "${filename}:1:";
|
||||||
|
&check_head_style($id, $contents);
|
||||||
|
|
||||||
# Check ordering of some sections in man3
|
# Check ordering of some sections in man3
|
||||||
if ( $filename =~ m|man3/| ) {
|
if ( $filename =~ m|man3/| ) {
|
||||||
|
|
Loading…
Reference in a new issue