Latest update and remove TLSv1.3 draft
This commit is contained in:
@@ -106,5 +106,5 @@ some applications, you don't even have to do that.
|
||||
By now, you have your certificate and your private key and can start
|
||||
using applications that depend on it.
|
||||
|
||||
--
|
||||
--
|
||||
Richard Levitte
|
||||
@@ -315,5 +315,5 @@ certificates checked properly, using the code above:
|
||||
SSL_CTX_set_cert_verify_callback(s_ctx, my_X509_verify_cert, &needed_rights);
|
||||
|
||||
|
||||
--
|
||||
--
|
||||
Richard Levitte
|
||||
@@ -18,7 +18,7 @@ uid Richard Levitte <richard@opensslfoundation.com>
|
||||
uid Richard Levitte <levitte@openssl.org>
|
||||
uid Richard Levitte <richard@openssl.com>
|
||||
|
||||
pub 2048R/0E604491 2013-04-30
|
||||
pub 2048R/0E604491 2013-04-30
|
||||
Key fingerprint = 8657 ABB2 60F0 56B1 E519 0839 D9C4 D26D 0E60 4491
|
||||
uid Matt Caswell <matt@openssl.org>
|
||||
uid Matt Caswell <frodo@baggins.org>
|
||||
+1
-1
@@ -475,7 +475,7 @@ the B<-selfsign> command line option.
|
||||
|
||||
Note that it is valid in some circumstances for certificates to be created
|
||||
without any subject. In the case where there are multiple certificates without
|
||||
subjects this does not count as a duplicate.
|
||||
subjects this does not count as a duplicate.
|
||||
|
||||
=item B<serial>
|
||||
|
||||
|
||||
+2
-1
@@ -154,7 +154,8 @@ Don't attempt to verify the integrity MAC before reading the file.
|
||||
|
||||
Prompt for separate integrity and encryption passwords: most software
|
||||
always assumes these are the same so this option will render such
|
||||
PKCS#12 files unreadable.
|
||||
PKCS#12 files unreadable. Cannot be used in combination with the options
|
||||
-password, -passin (if importing) or -passout (if exporting).
|
||||
|
||||
=back
|
||||
|
||||
|
||||
@@ -102,6 +102,7 @@ B<openssl> B<s_client>
|
||||
[B<-dtls1>]
|
||||
[B<-dtls1_2>]
|
||||
[B<-sctp>]
|
||||
[B<-sctp_label_bug>]
|
||||
[B<-fallback_scsv>]
|
||||
[B<-async>]
|
||||
[B<-max_send_frag>]
|
||||
@@ -506,6 +507,14 @@ Use SCTP for the transport protocol instead of UDP in DTLS. Must be used in
|
||||
conjunction with B<-dtls>, B<-dtls1> or B<-dtls1_2>. This option is only
|
||||
available where OpenSSL has support for SCTP enabled.
|
||||
|
||||
=item B<-sctp_label_bug>
|
||||
|
||||
Use the incorrect behaviour of older OpenSSL implementations when computing
|
||||
endpoint-pair shared secrets for DTLS/SCTP. This allows communication with
|
||||
older broken implementations but breaks interoperability with correct
|
||||
implementations. Must be used in conjunction with B<-sctp>. This option is only
|
||||
available where OpenSSL has support for SCTP enabled.
|
||||
|
||||
=item B<-fallback_scsv>
|
||||
|
||||
Send TLS_FALLBACK_SCSV in the ClientHello.
|
||||
|
||||
+10
-1
@@ -173,6 +173,7 @@ B<openssl> B<s_server>
|
||||
[B<-dtls1>]
|
||||
[B<-dtls1_2>]
|
||||
[B<-sctp>]
|
||||
[B<-sctp_label_bug>]
|
||||
[B<-no_dhe>]
|
||||
[B<-nextprotoneg val>]
|
||||
[B<-use_srtp val>]
|
||||
@@ -685,6 +686,14 @@ Use SCTP for the transport protocol instead of UDP in DTLS. Must be used in
|
||||
conjunction with B<-dtls>, B<-dtls1> or B<-dtls1_2>. This option is only
|
||||
available where OpenSSL has support for SCTP enabled.
|
||||
|
||||
=item B<-sctp_label_bug>
|
||||
|
||||
Use the incorrect behaviour of older OpenSSL implementations when computing
|
||||
endpoint-pair shared secrets for DTLS/SCTP. This allows communication with
|
||||
older broken implementations but breaks interoperability with correct
|
||||
implementations. Must be used in conjunction with B<-sctp>. This option is only
|
||||
available where OpenSSL has support for SCTP enabled.
|
||||
|
||||
=item B<-no_dhe>
|
||||
|
||||
If this option is set then no DH parameters will be loaded effectively
|
||||
@@ -825,7 +834,7 @@ unknown cipher suites a client says it supports.
|
||||
L<SSL_CONF_cmd(3)>, L<sess_id(1)>, L<s_client(1)>, L<ciphers(1)>
|
||||
L<SSL_CTX_set_max_send_fragment(3)>,
|
||||
L<SSL_CTX_set_split_send_fragment(3)>,
|
||||
L<SSL_CTX_set_max_pipelines(3)>
|
||||
L<SSL_CTX_set_max_pipelines(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
|
||||
+10
-7
@@ -87,9 +87,6 @@ through diverse controls.
|
||||
This should be called before calling EVP_MAC_update() and
|
||||
EVP_MAC_final().
|
||||
|
||||
EVP_MAC_reset() resets the computation for the given context.
|
||||
This may not be supported by the MAC implementation.
|
||||
|
||||
EVP_MAC_update() adds C<datalen> bytes from C<data> to the MAC input.
|
||||
|
||||
EVP_MAC_final() does the final computation and stores the result in
|
||||
@@ -171,18 +168,23 @@ Some MAC implementations require an IV, this control sets the IV.
|
||||
|
||||
=item B<EVP_MAC_CTRL_SET_CUSTOM>
|
||||
|
||||
This control expects two arguments: C<unsigned char *key>, C<size_t keylen>
|
||||
This control expects two arguments: C<unsigned char *custom>, C<size_t customlen>
|
||||
|
||||
Some MAC implementations (KMAC) require an Customization String,
|
||||
Some MAC implementations (KMAC, BLAKE2) accept a Customization String,
|
||||
this control sets the Customization String. The default value is "".
|
||||
|
||||
=item B<EVP_MAC_CTRL_SET_SALT>
|
||||
|
||||
This control expects two arguments: C<unsigned char *salt>, C<size_t saltlen>
|
||||
|
||||
This option is used by BLAKE2 MAC.
|
||||
|
||||
=item B<EVP_MAC_CTRL_SET_XOF>
|
||||
|
||||
This control expects one argument: C<int xof>
|
||||
|
||||
This option is used by KMAC.
|
||||
|
||||
|
||||
=item B<EVP_MAC_CTRL_SET_FLAGS>
|
||||
|
||||
This control expects one argument: C<unsigned long flags>
|
||||
@@ -231,7 +233,7 @@ created EVP_MAC_CTX, or NULL if allocation failed.
|
||||
|
||||
EVP_MAC_CTX_free() returns nothing at all.
|
||||
|
||||
EVP_MAC_CTX_copy(), EVP_MAC_reset(), EVP_MAC_init(), EVP_MAC_update(),
|
||||
EVP_MAC_CTX_copy(), EVP_MAC_init(), EVP_MAC_update(),
|
||||
and EVP_MAC_final() return 1 on success, 0 on error.
|
||||
|
||||
EVP_MAC_ctrl(), EVP_MAC_ctrl_str(), EVP_MAC_str2ctrl() and
|
||||
@@ -346,6 +348,7 @@ F<./foo>)
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<EVP_MAC_BLAKE2(7)>,
|
||||
L<EVP_MAC_CMAC(7)>,
|
||||
L<EVP_MAC_GMAC(7)>,
|
||||
L<EVP_MAC_HMAC(7)>,
|
||||
|
||||
@@ -23,6 +23,8 @@ EVP_PKEY_CTX_get_rsa_oaep_md,
|
||||
EVP_PKEY_CTX_set0_rsa_oaep_label,
|
||||
EVP_PKEY_CTX_get0_rsa_oaep_label,
|
||||
EVP_PKEY_CTX_set_dsa_paramgen_bits,
|
||||
EVP_PKEY_CTX_set_dsa_paramgen_q_bits,
|
||||
EVP_PKEY_CTX_set_dsa_paramgen_md,
|
||||
EVP_PKEY_CTX_set_dh_paramgen_prime_len,
|
||||
EVP_PKEY_CTX_set_dh_paramgen_subprime_len,
|
||||
EVP_PKEY_CTX_set_dh_paramgen_generator,
|
||||
@@ -93,6 +95,8 @@ EVP_PKEY_CTX_set1_id, EVP_PKEY_CTX_get1_id, EVP_PKEY_CTX_get1_id_len
|
||||
#include <openssl/dsa.h>
|
||||
|
||||
int EVP_PKEY_CTX_set_dsa_paramgen_bits(EVP_PKEY_CTX *ctx, int nbits);
|
||||
int EVP_PKEY_CTX_set_dsa_paramgen_q_bits(EVP_PKEY_CTX *ctx, int qbits);
|
||||
int EVP_PKEY_CTX_set_dsa_paramgen_md(EVP_PKEY_CTX *ctx, const EVP_MD *md);
|
||||
|
||||
#include <openssl/dh.h>
|
||||
|
||||
@@ -255,7 +259,17 @@ by the library and should not be freed by the caller.
|
||||
=head2 DSA parameters
|
||||
|
||||
The EVP_PKEY_CTX_set_dsa_paramgen_bits() macro sets the number of bits used
|
||||
for DSA parameter generation to B<bits>. If not specified 1024 is used.
|
||||
for DSA parameter generation to B<nbits>. If not specified, 1024 is used.
|
||||
|
||||
The EVP_PKEY_CTX_set_dsa_paramgen_q_bits() macro sets the number of bits in the
|
||||
subprime parameter B<q> for DSA parameter generation to B<qbits>. If not
|
||||
specified, 160 is used. If a digest function is specified below, this parameter
|
||||
is ignored and instead, the number of bits in B<q> matches the size of the
|
||||
digest.
|
||||
|
||||
The EVP_PKEY_CTX_set_dsa_paramgen_md() macro sets the digest function used for
|
||||
DSA parameter generation to B<md>. If not specified, one of SHA-1, SHA-224, or
|
||||
SHA-256 is selected to match the bit length of B<q> above.
|
||||
|
||||
=head2 DH parameters
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ engine that implements it.
|
||||
|
||||
EVP_PKEY_asn1_get0_info() returns the public key ID, base public key
|
||||
ID (both NIDs), any flags, the method description and PEM type string
|
||||
associated with the public key ASN.1 method B<*ameth>.
|
||||
associated with the public key ASN.1 method B<*ameth>.
|
||||
|
||||
EVP_PKEY_asn1_count(), EVP_PKEY_asn1_get0(), EVP_PKEY_asn1_find() and
|
||||
EVP_PKEY_asn1_find_str() are not thread safe, but as long as all
|
||||
|
||||
+1
-1
@@ -91,7 +91,7 @@ because reuse of an existing key with a different digest is not supported.
|
||||
|
||||
HMAC_Init() initializes a B<HMAC_CTX> structure to use the hash
|
||||
function B<evp_md> and the key B<key> which is B<key_len> bytes
|
||||
long.
|
||||
long.
|
||||
|
||||
HMAC_Update() can be called repeatedly with chunks of the message to
|
||||
be authenticated (B<len> bytes at B<data>).
|
||||
|
||||
@@ -90,10 +90,8 @@ generally macro's that add the standard C B<__FILE__> and B<__LINE__>
|
||||
parameters and call a lower-level B<CRYPTO_xxx> API.
|
||||
Some functions do not add those parameters, but exist for consistency.
|
||||
|
||||
OPENSSL_malloc_init() sets the lower-level memory allocation functions
|
||||
to their default implementation.
|
||||
It is generally not necessary to call this, except perhaps in certain
|
||||
shared-library situations.
|
||||
OPENSSL_malloc_init() does nothing and does not need to be called. It is
|
||||
included for compatibility with older versions of OpenSSL.
|
||||
|
||||
OPENSSL_malloc(), OPENSSL_realloc(), and OPENSSL_free() are like the
|
||||
C malloc(), realloc(), and free() functions.
|
||||
|
||||
@@ -101,7 +101,7 @@ set CA names using the "client CA list" functions and then get them using the
|
||||
used on the server side then the "client CA list" functions take precedence.
|
||||
Typically, on the server side, the "client CA list " functions should be used in
|
||||
preference. As noted above in most cases it is not necessary to set CA names on
|
||||
the client side.
|
||||
the client side.
|
||||
|
||||
SSL_CTX_set0_CA_list() sets the list of CAs to be sent to the peer to
|
||||
B<name_list>. Ownership of B<name_list> is transferred to B<ctx> and
|
||||
|
||||
@@ -24,7 +24,7 @@ See L<CTLOG_STORE_new(3)> for the file format.
|
||||
=head1 NOTES
|
||||
|
||||
These functions will not clear the existing CT log list - it will be appended
|
||||
to. To replace the existing list, use L<SSL_CTX_set0_ctlog_store> first.
|
||||
to. To replace the existing list, use L<SSL_CTX_set0_ctlog_store> first.
|
||||
|
||||
If an error occurs whilst parsing a particular log entry in the file, that log
|
||||
entry will be skipped.
|
||||
|
||||
@@ -121,6 +121,15 @@ Kernel TLS might not support all the features of OpenSSL. For instance,
|
||||
renegotiation, and setting the maximum fragment size is not possible as of
|
||||
Linux 4.20.
|
||||
|
||||
=item SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG
|
||||
|
||||
Older versions of OpenSSL had a bug in the computation of the label length
|
||||
used for computing the endpoint-pair shared secret. The bug was that the
|
||||
terminating zero was included in the length of the label. Setting this option
|
||||
enables this behaviour to allow interoperability with such broken
|
||||
implementations. Please note that setting this option breaks interoperability
|
||||
with correct implementations. This option only applies to DTLS over SCTP.
|
||||
|
||||
=back
|
||||
|
||||
All modes are off by default except for SSL_MODE_AUTO_RETRY which is on by
|
||||
|
||||
@@ -19,10 +19,10 @@ SSL_set_block_padding - install callback to specify TLS 1.3 record padding
|
||||
void SSL_set_record_padding_callback(SSL *ssl, size_t (*cb)(SSL *s, int type, size_t len, void *arg));
|
||||
|
||||
void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg);
|
||||
void *SSL_CTX_get_record_padding_callback_arg(SSL_CTX *ctx);
|
||||
void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx);
|
||||
|
||||
void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg);
|
||||
void *SSL_get_record_padding_callback_arg(SSL *ssl);
|
||||
void *SSL_get_record_padding_callback_arg(const SSL *ssl);
|
||||
|
||||
int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size);
|
||||
int SSL_set_block_padding(SSL *ssl, size_t block_size);
|
||||
|
||||
@@ -11,7 +11,7 @@ SSL_CTX_set_ssl_version, SSL_set_ssl_method, SSL_get_ssl_method
|
||||
|
||||
int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *method);
|
||||
int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method);
|
||||
const SSL_METHOD *SSL_get_ssl_method(SSL *ssl);
|
||||
const SSL_METHOD *SSL_get_ssl_method(const SSL *ssl);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
|
||||
@@ -14,11 +14,11 @@ SSL_renegotiate_pending
|
||||
#include <openssl/ssl.h>
|
||||
|
||||
int SSL_key_update(SSL *s, int updatetype);
|
||||
int SSL_get_key_update_type(SSL *s);
|
||||
int SSL_get_key_update_type(const SSL *s);
|
||||
|
||||
int SSL_renegotiate(SSL *s);
|
||||
int SSL_renegotiate_abbreviated(SSL *s);
|
||||
int SSL_renegotiate_pending(SSL *s);
|
||||
int SSL_renegotiate_pending(const SSL *s);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
|
||||
@@ -93,7 +93,7 @@ the server.
|
||||
A client uses the function SSL_write_early_data() to send early data. This
|
||||
function is similar to the L<SSL_write_ex(3)> function, but with the following
|
||||
differences. See L<SSL_write_ex(3)> for information on how to write bytes to
|
||||
the underlying connection, and how to handle any errors that may arise. This
|
||||
the underlying connection, and how to handle any errors that may arise. This
|
||||
page describes the differences between SSL_write_early_data() and
|
||||
L<SSL_write_ex(3)>.
|
||||
|
||||
|
||||
@@ -50,15 +50,19 @@ If the B<*a> is not NULL when calling d2i_PrivateKey() or d2i_AutoPrivateKey()
|
||||
(i.e. an existing structure is being reused) and the key format is PKCS#8
|
||||
then B<*a> will be freed and replaced on a successful call.
|
||||
|
||||
To decode a key with type B<EVP_PKEY_EC>, d2i_PublicKey() requires B<*a> to be
|
||||
a non-NULL EVP_PKEY structure assigned an EC_KEY structure referencing the proper
|
||||
EC_GROUP.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
d2i_PrivateKey() and d2i_AutoPrivateKey() return a valid B<EVP_KEY> structure
|
||||
or B<NULL> if an error occurs. The error code can be obtained by calling
|
||||
L<ERR_get_error(3)>.
|
||||
The d2i_PrivateKey(), d2i_AutoPrivateKey(), d2i_PrivateKey_bio(), d2i_PrivateKey_fp(),
|
||||
and d2i_PublicKey() functions return a valid B<EVP_KEY> structure or B<NULL> if an
|
||||
error occurs. The error code can be obtained by calling L<ERR_get_error(3)>.
|
||||
|
||||
i2d_PrivateKey() returns the number of bytes successfully encoded or a
|
||||
negative value if an error occurs. The error code can be obtained by calling
|
||||
L<ERR_get_error(3)>.
|
||||
i2d_PrivateKey() and i2d_PublicKey() return the number of bytes successfully
|
||||
encoded or a negative value if an error occurs. The error code can be obtained
|
||||
by calling L<ERR_get_error(3)>.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
@@ -67,7 +71,7 @@ L<d2i_PKCS8PrivateKey_bio(3)>
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
this file except in compliance with the License. You can obtain a copy
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
EVP_MAC_BLAKE2 - The BLAKE2 EVP_MAC implementation
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Support for computing BLAKE2 MACs through the B<EVP_MAC> API.
|
||||
|
||||
=head2 Numeric identity
|
||||
|
||||
B<EVP_MAC_BLAKE2B> and B<EVP_MAC_BLAKE2S> are the numeric identities for this
|
||||
implementation, and can be used in functions like EVP_MAC_CTX_new_id() and
|
||||
EVP_get_macbynid().
|
||||
|
||||
=head2 Supported controls
|
||||
|
||||
The supported controls are:
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<EVP_MAC_CTRL_SET_KEY>
|
||||
|
||||
This is a string value of at most 64 bytes for EVP_MAC_BLAKE2B
|
||||
or 32 for EVP_MAC_BLAKE2S and at least 1 byte in both cases.
|
||||
This must be set before calling EVP_MAC_init().
|
||||
|
||||
EVP_MAC_ctrl_str() takes two type strings for this control:
|
||||
|
||||
=over 4
|
||||
|
||||
=item "key"
|
||||
|
||||
The value string is used as is.
|
||||
|
||||
=item "hexkey"
|
||||
|
||||
The value string is expected to be a hexadecimal number, which will be
|
||||
decoded before passing on as control value.
|
||||
|
||||
=back
|
||||
|
||||
=item B<EVP_MAC_CTRL_SET_CUSTOM>
|
||||
|
||||
This is an optional string value of at most 16 bytes for EVP_MAC_BLAKE2B
|
||||
or 8 for EVP_MAC_BLAKE2S, set to all-NULL by default.
|
||||
If used this must be set before calling EVP_MAC_init().
|
||||
|
||||
EVP_MAC_ctrl_str() takes two type strings for this control:
|
||||
|
||||
=over 4
|
||||
|
||||
=item "custom"
|
||||
|
||||
The value string is used as is.
|
||||
|
||||
=item "hexcustom"
|
||||
|
||||
The value string is expected to be a hexadecimal number, which will be
|
||||
decoded before passing on as control value.
|
||||
|
||||
=back
|
||||
|
||||
=item B<EVP_MAC_CTRL_SET_SALT>
|
||||
|
||||
This is an optional string value of at most 16 bytes for EVP_MAC_BLAKE2B
|
||||
or 8 for EVP_MAC_BLAKE2S, set to all-NULL by default.
|
||||
If used this must be set before calling EVP_MAC_init().
|
||||
|
||||
EVP_MAC_ctrl_str() takes two type strings for this control:
|
||||
|
||||
=over 4
|
||||
|
||||
=item "salt"
|
||||
|
||||
The value string is used as is.
|
||||
|
||||
=item "hexsalt"
|
||||
|
||||
The value string is expected to be a hexadecimal number, which will be
|
||||
decoded before passing on as control value.
|
||||
|
||||
=back
|
||||
|
||||
=item B<EVP_MAC_CTRL_SET_SIZE>
|
||||
|
||||
EVP_MAC_ctrl_str() type string: "outlen"
|
||||
|
||||
This is an optional value string containing a decimal number between 1 and
|
||||
32 for EVP_MAC_BLAKE2S or 64 for EVP_MAC_BLAKE2B.
|
||||
If it is not set it uses the default digest size of 32 and 64 respectively.
|
||||
If used this must be set before calling EVP_MAC_init().
|
||||
|
||||
=back
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<EVP_MAC_ctrl(3)>, L<EVP_MAC(3)/CONTROLS>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
The macros and functions described here were added to OpenSSL 3.0.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
Licensed under the Apache License 2.0 (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
|
||||
L<https://www.openssl.org/source/license.html>.
|
||||
|
||||
=cut
|
||||
Reference in New Issue
Block a user