Latest update.
This commit is contained in:
@@ -70,7 +70,7 @@ If either or both of the parameters passed to ASN1_TYPE_cmp() is NULL the
|
||||
return value is nonzero. Technically if both parameters are NULL the two
|
||||
types could be absent OPTIONAL fields and so should match, however passing
|
||||
NULL values could also indicate a programming error (for example an
|
||||
unparseable type which returns NULL) for types which do B<not> match. So
|
||||
unparsable type which returns NULL) for types which do B<not> match. So
|
||||
applications should handle the case of two absent values separately.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
@@ -48,7 +48,7 @@ out information relating to each BIO operation. If the callback
|
||||
argument is set it is interpreted as a BIO to send the information
|
||||
to, otherwise stderr is used.
|
||||
|
||||
BIO_callback_fn_ex() is the type of the callback function and BIO_callback_fn()
|
||||
BIO_callback_fn_ex is the type of the callback function and BIO_callback_fn
|
||||
is the type of the old format callback function. The meaning of each argument
|
||||
is described below:
|
||||
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
BIO_socket_wait,
|
||||
BIO_wait,
|
||||
BIO_connect_retry
|
||||
- BIO socket utility functions
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
#include <openssl/bio.h>
|
||||
|
||||
int BIO_socket_wait(int fd, int for_read, time_t max_time);
|
||||
int BIO_wait(BIO *bio, time_t max_time);
|
||||
int BIO_connect_retry(BIO *bio, long timeout);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
BIO_socket_wait() waits on the socket B<fd> for reading if B<for_read> is not 0,
|
||||
else for writing, at most until B<max_time>.
|
||||
It succeeds immediately if B<max_time> == 0 (which means no timeout given).
|
||||
|
||||
BIO_wait() waits on the socket underlying the given B<bio>, for reading if
|
||||
B<bio> is supposed to read, else for writing, at most until B<max_time>.
|
||||
It succeeds immediately if B<max_time> == 0 (which means no timeout given).
|
||||
|
||||
BIO_connect_retry() connects via the given B<bio>, retrying BIO_do_connect()
|
||||
until success or a timeout or error condition is reached.
|
||||
If the B<timeout> parameter is > 0 this indicates the maximum number of seconds
|
||||
to wait until the connection is established. A value of 0 enables waiting
|
||||
indefinitely, while a value < 0 immediately leads to a timeout condition.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
BIO_socket_wait(), BIO_wait(), and BIO_connect_retry()
|
||||
return -1 on error, 0 on timeout, and 1 on success.
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
BIO_socket_wait(), BIO_wait(), and BIO_connect_retry()
|
||||
were added in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2019-2020 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
|
||||
@@ -16,6 +16,10 @@ DES_fcrypt, DES_crypt - DES encryption
|
||||
|
||||
#include <openssl/des.h>
|
||||
|
||||
Deprecated since OpenSSL 3.0, can be hidden entirely by defining
|
||||
B<OPENSSL_API_COMPAT> with a suitable version value, see
|
||||
L<openssl_user_macros(7)>:
|
||||
|
||||
void DES_random_key(DES_cblock *ret);
|
||||
|
||||
int DES_set_key(const_DES_cblock *key, DES_key_schedule *schedule);
|
||||
@@ -94,6 +98,10 @@ DES_fcrypt, DES_crypt - DES encryption
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
All of the functions described on this page are deprecated. Applications should
|
||||
instead use L<EVP_EncryptInit_ex(3)>, L<EVP_EncryptUpdate(3)> and
|
||||
L<EVP_EncryptFinal_ex(3)> or the equivalently named decrypt functions.
|
||||
|
||||
This library contains a fast implementation of the DES encryption
|
||||
algorithm.
|
||||
|
||||
@@ -302,6 +310,8 @@ L<EVP_EncryptInit(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
All of these functions were deprecated in OpenSSL 3.0.
|
||||
|
||||
The requirement that the B<salt> parameter to DES_crypt() and DES_fcrypt()
|
||||
be two ASCII characters was first enforced in
|
||||
OpenSSL 1.1.0. Previous versions tried to use the letter uppercase B<A>
|
||||
@@ -310,7 +320,7 @@ on some platforms.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
Copyright 2000-2020 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
|
||||
|
||||
@@ -8,13 +8,16 @@ DH_new_by_nid, DH_get_nid - get or find DH named parameters
|
||||
|
||||
#include <openssl/dh.h>
|
||||
DH *DH_new_by_nid(int nid);
|
||||
int *DH_get_nid(const DH *dh);
|
||||
int *DH_get_nid(DH *dh);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
DH_new_by_nid() creates and returns a DH structure containing named parameters
|
||||
B<nid>. Currently B<nid> must be B<NID_ffdhe2048>, B<NID_ffdhe3072>,
|
||||
B<NID_ffdhe4096>, B<NID_ffdhe6144> or B<NID_ffdhe8192>.
|
||||
B<NID_ffdhe4096>, B<NID_ffdhe6144>, B<NID_ffdhe8192>,
|
||||
B<NID_modp_1536>, B<NID_modp_2048>, B<NID_modp_3072>,
|
||||
B<NID_modp_4096>, B<NID_modp_6144> or B<NID_modp_8192>.
|
||||
|
||||
|
||||
DH_get_nid() determines if the parameters contained in B<dh> match
|
||||
any named set. It returns the NID corresponding to the matching parameters or
|
||||
@@ -29,7 +32,7 @@ B<NID_undef> if there is no match.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.
|
||||
Copyright 2017-2020 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
|
||||
|
||||
@@ -18,6 +18,11 @@ functions
|
||||
const BIGNUM *ECDSA_SIG_get0_r(const ECDSA_SIG *sig);
|
||||
const BIGNUM *ECDSA_SIG_get0_s(const ECDSA_SIG *sig);
|
||||
int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s);
|
||||
|
||||
Deprecated since OpenSSL 3.0, can be hidden entirely by defining
|
||||
B<OPENSSL_API_COMPAT> with a suitable version value, see
|
||||
L<openssl_user_macros(7)>:
|
||||
|
||||
int ECDSA_size(const EC_KEY *eckey);
|
||||
|
||||
int ECDSA_sign(int type, const unsigned char *dgst, int dgstlen,
|
||||
@@ -40,10 +45,6 @@ functions
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Note: these functions provide a low level interface to ECDSA. Most
|
||||
applications should use the higher level B<EVP> interface such as
|
||||
L<EVP_DigestSignInit(3)> or L<EVP_DigestVerifyInit(3)> instead.
|
||||
|
||||
B<ECDSA_SIG> is an opaque structure consisting of two BIGNUMs for the
|
||||
B<r> and B<s> value of an ECDSA signature (see X9.62 or FIPS 186-2).
|
||||
|
||||
@@ -69,8 +70,13 @@ after this function has been called.
|
||||
See L<i2d_ECDSA_SIG(3)> and L<d2i_ECDSA_SIG(3)> for information about encoding
|
||||
and decoding ECDSA signatures to/from DER.
|
||||
|
||||
All of the functions described below are deprecated. Applications should
|
||||
use the higher level B<EVP> interface such as L<EVP_DigestSignInit(3)>
|
||||
or L<EVP_DigestVerifyInit(3)> instead.
|
||||
|
||||
ECDSA_size() returns the maximum length of a DER encoded ECDSA signature
|
||||
created with the private EC key B<eckey>.
|
||||
created with the private EC key B<eckey>. To obtain the actual signature
|
||||
size use L<EVP_PKEY_sign(3)> with a NULL B<sig> parameter.
|
||||
|
||||
ECDSA_sign() computes a digital signature of the B<dgstlen> bytes hash value
|
||||
B<dgst> using the private EC key B<eckey>. The DER encoded signatures is
|
||||
@@ -194,9 +200,16 @@ ANSI X9.62, US Federal Information Processing Standard FIPS 186-2
|
||||
L<EC_KEY_new(3)>,
|
||||
L<EVP_DigestSignInit(3)>,
|
||||
L<EVP_DigestVerifyInit(3)>,
|
||||
L<EVP_PKEY_sign(3)>
|
||||
L<i2d_ECDSA_SIG(3)>,
|
||||
L<d2i_ECDSA_SIG(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
The ECDSA_size(), ECDSA_sign(), ECDSA_do_sign(), ECDSA_verify(),
|
||||
ECDSA_do_verify(), ECDSA_sign_setup(), ECDSA_sign_ex() and ECDSA_do_sign_ex()
|
||||
functions were deprecated in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -128,7 +128,7 @@ EVP_DigestSignFinal().
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
EVP_DigestSignInit(), EVP_DigestSignUpdate(), EVP_DigestSignaFinal() and
|
||||
EVP_DigestSignInit(), EVP_DigestSignUpdate(), EVP_DigestSignFinal() and
|
||||
EVP_DigestSign() return 1 for success and 0 for failure.
|
||||
|
||||
The error codes can be obtained from L<ERR_get_error(3)>.
|
||||
|
||||
@@ -168,8 +168,7 @@ Not all parameters may be supported by all providers.
|
||||
See L<OSSL_PROVIDER(3)> for more information on providers.
|
||||
See L<OSSL_PARAM(3)> for more information on parameters.
|
||||
These functions must only be called after the EVP_PKEY_CTX has been initialised
|
||||
for use in an operation (for example by L<EVP_PKEY_sign_init_ex(3)>,
|
||||
L<EVP_PKEY_derive_init_ex(3)> or other similar functions).
|
||||
for use in an operation.
|
||||
|
||||
The parameters currently supported by the default provider are:
|
||||
|
||||
@@ -204,8 +203,7 @@ that can be used with EVP_PKEY_CTX_get_params() and EVP_PKEY_CTX_set_params()
|
||||
respectively.
|
||||
See L<OSSL_PARAM(3)> for the use of B<OSSL_PARAM> as parameter descriptor.
|
||||
These functions must only be called after the EVP_PKEY_CTX has been initialised
|
||||
for use in an operation (for example by L<EVP_PKEY_sign_init_ex(3)>,
|
||||
L<EVP_PKEY_derive_init_ex(3)> or other similar functions).
|
||||
for use in an operation.
|
||||
|
||||
The function EVP_PKEY_CTX_ctrl() sends a control operation to the context
|
||||
B<ctx>. The key type used must match B<keytype> if it is not -1. The parameter
|
||||
@@ -392,19 +390,37 @@ SHA-256 is selected to match the bit length of B<q> above.
|
||||
|
||||
The EVP_PKEY_CTX_set_dh_paramgen_prime_len() macro sets the length of the DH
|
||||
prime parameter B<p> for DH parameter generation. If this macro is not called
|
||||
then 1024 is used. Only accepts lengths greater than or equal to 256.
|
||||
then 2048 is used. Only accepts lengths greater than or equal to 256.
|
||||
|
||||
The EVP_PKEY_CTX_set_dh_paramgen_subprime_len() macro sets the length of the DH
|
||||
optional subprime parameter B<q> for DH parameter generation. The default is
|
||||
256 if the prime is at least 2048 bits long or 160 otherwise. The DH
|
||||
paramgen type must have been set to x9.42.
|
||||
paramgen type must have been set to B<DH_PARAMGEN_TYPE_FIPS_186_2> or
|
||||
B<DH_PARAMGEN_TYPE_FIPS_186_4>.
|
||||
|
||||
The EVP_PKEY_CTX_set_dh_paramgen_generator() macro sets DH generator to B<gen>
|
||||
for DH parameter generation. If not specified 2 is used.
|
||||
|
||||
The EVP_PKEY_CTX_set_dh_paramgen_type() macro sets the key type for DH
|
||||
parameter generation. Use 0 for PKCS#3 DH and 1 for X9.42 DH.
|
||||
The default is 0.
|
||||
parameter generation. The supported parameters are:
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<DH_PARAMGEN_TYPE_GENERATOR>
|
||||
|
||||
Uses a generator g (PKCS#3 format).
|
||||
|
||||
=item B<DH_PARAMGEN_TYPE_FIPS_186_2>
|
||||
|
||||
FIPS186-2 FFC parameter generator (X9.42 DH).
|
||||
|
||||
=item B<DH_PARAMGEN_TYPE_FIPS_186_4>
|
||||
|
||||
FIPS186-4 FFC parameter generator.
|
||||
|
||||
=back
|
||||
|
||||
The default is B<DH_PARAMGEN_TYPE_GENERATOR>.
|
||||
|
||||
The EVP_PKEY_CTX_set_dh_pad() function sets the DH padding mode.
|
||||
If B<pad> is 1 the shared secret is padded with zeros up to the size of the DH
|
||||
@@ -412,10 +428,11 @@ prime B<p>.
|
||||
If B<pad> is zero (the default) then no padding is performed.
|
||||
|
||||
EVP_PKEY_CTX_set_dh_nid() sets the DH parameters to values corresponding to
|
||||
B<nid> as defined in RFC7919. The B<nid> parameter must be B<NID_ffdhe2048>,
|
||||
B<NID_ffdhe3072>, B<NID_ffdhe4096>, B<NID_ffdhe6144>, B<NID_ffdhe8192>
|
||||
or B<NID_undef> to clear the stored value. This macro can be called during
|
||||
parameter or key generation.
|
||||
B<nid> as defined in RFC7919 or RFC3526. The B<nid> parameter must be
|
||||
B<NID_ffdhe2048>, B<NID_ffdhe3072>, B<NID_ffdhe4096>, B<NID_ffdhe6144>,
|
||||
B<NID_ffdhe8192>, B<NID_modp_1536>, B<NID_modp_2048>, B<NID_modp_3072>,
|
||||
B<NID_modp_4096>, B<NID_modp_6144>, B<NID_modp_8192> or B<NID_undef> to clear
|
||||
the stored value. This macro can be called during parameter or key generation.
|
||||
The nid parameter and the rfc5114 parameter are mutually exclusive.
|
||||
|
||||
The EVP_PKEY_CTX_set_dh_rfc5114() and EVP_PKEY_CTX_set_dhx_rfc5114() macros are
|
||||
|
||||
@@ -36,9 +36,9 @@ lifetime of the returned B<EVP_PKEY_CTX> or of any of its duplicates.
|
||||
|
||||
The EVP_PKEY_CTX_new_from_pkey() function allocates a public key algorithm
|
||||
context using the library context I<libctx> (see L<OPENSSL_CTX(3)>) and the
|
||||
algorithm specified by I<pkey> . None of the arguments are duplicated, so they
|
||||
must remain unchanged for the lifetime of the returned B<EVP_PKEY_CTX> or of
|
||||
any of its duplicates.
|
||||
algorithm specified by I<pkey> and the property query I<propquery>. None of the
|
||||
arguments are duplicated, so they must remain unchanged for the lifetime of the
|
||||
returned B<EVP_PKEY_CTX> or any of its duplicates.
|
||||
|
||||
EVP_PKEY_CTX_new_id() and EVP_PKEY_CTX_new_from_name() are normally
|
||||
used when no B<EVP_PKEY> structure is associated with the operations,
|
||||
|
||||
@@ -29,7 +29,7 @@ EVP_PKEY_CTX_set_scrypt_maxmem_bytes
|
||||
|
||||
These functions are used to set up the necessary data to use the
|
||||
scrypt KDF.
|
||||
For more information on scrypt, see L<EVP_KDF_SCRYPT(7)>.
|
||||
For more information on scrypt, see L<EVP_KDF-SCRYPT(7)>.
|
||||
|
||||
EVP_PKEY_CTX_set1_scrypt_salt() sets the B<saltlen> bytes long salt
|
||||
value.
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
EVP_PKEY_check, EVP_PKEY_param_check, EVP_PKEY_public_check,
|
||||
EVP_PKEY_private_check, EVP_PKEY_pairwise_check
|
||||
- key and parameter validation functions
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
#include <openssl/evp.h>
|
||||
|
||||
int EVP_PKEY_check(EVP_PKEY_CTX *ctx);
|
||||
int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx);
|
||||
int EVP_PKEY_public_check(EVP_PKEY_CTX *ctx);
|
||||
int EVP_PKEY_private_check(EVP_PKEY_CTX *ctx);
|
||||
int EVP_PKEY_pairwise_check(EVP_PKEY_CTX *ctx);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
EVP_PKEY_param_check() validates the parameters component of the key
|
||||
given by B<ctx>.
|
||||
|
||||
EVP_PKEY_public_check() validates the public component of the key given by B<ctx>.
|
||||
|
||||
EVP_PKEY_private_check() validates the private component of the key given by B<ctx>.
|
||||
|
||||
EVP_PKEY_pairwise_check() validates that the public and private components have
|
||||
the correct mathematical relationship to each other for the key given by B<ctx>.
|
||||
|
||||
EVP_PKEY_check() validates all components of a key given by B<ctx>.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
Refer to SP800-56A and SP800-56B for rules relating to when these functions
|
||||
should be called during key establishment.
|
||||
It is not necessary to call these functions after locally calling an approved key
|
||||
generation method, but may be required for assurance purposes when receiving
|
||||
keys from a third party.
|
||||
|
||||
In OpenSSL an EVP_PKEY structure containing a private key also contains the
|
||||
public key components and parameters (if any). An OpenSSL private key is
|
||||
equivalent to what some libraries call a "key pair". A private key can be used
|
||||
in functions which require the use of a public key or parameters.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
All functions return 1 for success or others for failure.
|
||||
They return -2 if the operation is not supported for the specific algorithm.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<EVP_PKEY_CTX_new(3)>,
|
||||
L<EVP_PKEY_fromdata(3)>,
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
EVP_PKEY_check(), EVP_PKEY_public_check() and EVP_PKEY_param_check() were added
|
||||
in OpenSSL 1.1.1.
|
||||
|
||||
EVP_PKEY_private_check() and EVP_PKEY_pairwise_check() were added
|
||||
in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2006-2020 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
|
||||
@@ -33,7 +33,7 @@ written to I<keylen>.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
After the call to EVP_PKEY_derive_init() or EVP_PKEY_derive_init_ex() algorithm
|
||||
After the call to EVP_PKEY_derive_init(), algorithm
|
||||
specific control operations can be performed to set any appropriate parameters
|
||||
for the operation.
|
||||
|
||||
@@ -42,7 +42,7 @@ context if several operations are performed using the same parameters.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
EVP_PKEY_derive_init_ex(), EVP_PKEY_derive_init() and EVP_PKEY_derive() return 1
|
||||
EVP_PKEY_derive_init() and EVP_PKEY_derive() return 1
|
||||
for success and 0 or a negative value for failure.
|
||||
In particular a return value of -2 indicates the operation is not supported by
|
||||
the public key algorithm.
|
||||
@@ -95,8 +95,7 @@ L<EVP_KEYEXCH_fetch(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
These functions were added in OpenSSL 1.0.0. The EVP_PKEY_derive_init_ex()
|
||||
function was added in OpenSSL 3.0.
|
||||
These functions were added in OpenSSL 1.0.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
EVP_PKEY_param_fromdata_init, EVP_PKEY_key_fromdata_init, EVP_PKEY_fromdata,
|
||||
EVP_PKEY_param_fromdata_settable, EVP_PKEY_key_fromdata_settable
|
||||
- functions to create domain parameters and keys from user data
|
||||
- functions to create key parameters and keys from user data
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
@@ -19,12 +19,12 @@ EVP_PKEY_param_fromdata_settable, EVP_PKEY_key_fromdata_settable
|
||||
=head1 DESCRIPTION
|
||||
|
||||
EVP_PKEY_param_fromdata_init() initializes a public key algorithm context
|
||||
for creating domain parameters from user data.
|
||||
for creating key parameters from user data.
|
||||
|
||||
EVP_PKEY_key_fromdata_init() initializes a public key algorithm context for
|
||||
creating a key from user data.
|
||||
|
||||
EVP_PKEY_fromdata() creates domain parameters or a key, given data from
|
||||
EVP_PKEY_fromdata() creates key parameters or a key, given data from
|
||||
I<params> and a context that's been initialized with
|
||||
EVP_PKEY_param_fromdata_init() or EVP_PKEY_key_fromdata_init(). The result is
|
||||
written to I<*ppkey>.
|
||||
|
||||
@@ -2,19 +2,32 @@
|
||||
|
||||
=head1 NAME
|
||||
|
||||
EVP_PKEY_get_default_digest_nid - get default signature digest
|
||||
EVP_PKEY_get_default_digest_nid, EVP_PKEY_get_default_digest_name
|
||||
- get default signature digest
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
#include <openssl/evp.h>
|
||||
|
||||
int EVP_PKEY_get_default_digest_name(EVP_PKEY *pkey,
|
||||
char *mdname, size_t mdname_sz)
|
||||
int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
The EVP_PKEY_get_default_digest_nid() function sets B<pnid> to the default
|
||||
message digest NID for the public key signature operations associated with key
|
||||
B<pkey>. Note that some signature algorithms (i.e. Ed25519 and Ed448) do not use
|
||||
a digest during signing. In this case B<pnid> will be set to NID_undef.
|
||||
EVP_PKEY_get_default_digest_name() fills in the default message digest
|
||||
name for the public key signature operations associated with key
|
||||
I<pkey> into I<mdname>, up to at most I<mdname_sz> bytes including the
|
||||
ending NUL byte.
|
||||
|
||||
EVP_PKEY_get_default_digest_nid() sets I<pnid> to the default message
|
||||
digest NID for the public key signature operations associated with key
|
||||
I<pkey>. Note that some signature algorithms (i.e. Ed25519 and Ed448)
|
||||
do not use a digest during signing. In this case I<pnid> will be set
|
||||
to NID_undef. This function is only reliable for legacy keys, which
|
||||
are keys with a B<EVP_PKEY_ASN1_METHOD>; these keys have typically
|
||||
been loaded from engines, or created with L<EVP_PKEY_assign_RSA(3)> or
|
||||
similar.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
@@ -22,11 +35,12 @@ For all current standard OpenSSL public key algorithms SHA256 is returned.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
The EVP_PKEY_get_default_digest_nid() function returns 1 if the message digest
|
||||
is advisory (that is other digests can be used) and 2 if it is mandatory (other
|
||||
digests can not be used). It returns 0 or a negative value for failure. In
|
||||
particular a return value of -2 indicates the operation is not supported by the
|
||||
public key algorithm.
|
||||
EVP_PKEY_get_default_digest_name() and EVP_PKEY_get_default_digest_nid()
|
||||
both return 1 if the message digest is advisory (that is other digests
|
||||
can be used) and 2 if it is mandatory (other digests can not be used).
|
||||
They return 0 or a negative value for failure. In particular a return
|
||||
value of -2 indicates the operation is not supported by the public key
|
||||
algorithm.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
|
||||
@@ -6,8 +6,7 @@ EVP_PKEY_keygen_init, EVP_PKEY_keygen, EVP_PKEY_paramgen_init,
|
||||
EVP_PKEY_paramgen, EVP_PKEY_CTX_set_cb, EVP_PKEY_CTX_get_cb,
|
||||
EVP_PKEY_CTX_get_keygen_info, EVP_PKEY_CTX_set_app_data,
|
||||
EVP_PKEY_CTX_get_app_data,
|
||||
EVP_PKEY_gen_cb, EVP_PKEY_check, EVP_PKEY_public_check,
|
||||
EVP_PKEY_param_check
|
||||
EVP_PKEY_gen_cb
|
||||
- key and parameter generation and check functions
|
||||
|
||||
=head1 SYNOPSIS
|
||||
@@ -29,10 +28,6 @@ EVP_PKEY_param_check
|
||||
void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data);
|
||||
void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx);
|
||||
|
||||
int EVP_PKEY_check(EVP_PKEY_CTX *ctx);
|
||||
int EVP_PKEY_public_check(EVP_PKEY_CTX *ctx);
|
||||
int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
The EVP_PKEY_keygen_init() function initializes a public key algorithm
|
||||
@@ -63,18 +58,6 @@ and retrieve an opaque pointer. This can be used to set some application
|
||||
defined value which can be retrieved in the callback: for example a handle
|
||||
which is used to update a "progress dialog".
|
||||
|
||||
EVP_PKEY_check() validates the key-pair given by B<ctx>. This function first tries
|
||||
to use customized key check method in B<EVP_PKEY_METHOD> if it's present; otherwise
|
||||
it calls a default one defined in B<EVP_PKEY_ASN1_METHOD>.
|
||||
|
||||
EVP_PKEY_public_check() validates the public component of the key-pair given by B<ctx>.
|
||||
This function first tries to use customized key check method in B<EVP_PKEY_METHOD>
|
||||
if it's present; otherwise it calls a default one defined in B<EVP_PKEY_ASN1_METHOD>.
|
||||
|
||||
EVP_PKEY_param_check() validates the algorithm parameters of the key-pair given by B<ctx>.
|
||||
This function first tries to use customized key check method in B<EVP_PKEY_METHOD>
|
||||
if it's present; otherwise it calls a default one defined in B<EVP_PKEY_ASN1_METHOD>.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
After the call to EVP_PKEY_keygen_init() or EVP_PKEY_paramgen_init() algorithm
|
||||
@@ -106,10 +89,6 @@ EVP_PKEY_paramgen() return 1 for success and 0 or a negative value for failure.
|
||||
In particular a return value of -2 indicates the operation is not supported by
|
||||
the public key algorithm.
|
||||
|
||||
EVP_PKEY_check(), EVP_PKEY_public_check() and EVP_PKEY_param_check() return 1
|
||||
for success or others for failure. They return -2 if the operation is not supported
|
||||
for the specific algorithm.
|
||||
|
||||
=head1 EXAMPLES
|
||||
|
||||
Generate a 2048 bit RSA key:
|
||||
@@ -191,9 +170,6 @@ L<EVP_PKEY_derive(3)>
|
||||
|
||||
These functions were added in OpenSSL 1.0.0.
|
||||
|
||||
EVP_PKEY_check(), EVP_PKEY_public_check() and EVP_PKEY_param_check() were added
|
||||
in OpenSSL 1.1.1.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -90,8 +90,7 @@ If B<engine> does not include an B<EVP_PKEY_METHOD> for B<pkey> an
|
||||
error occurs.
|
||||
|
||||
EVP_PKEY_set_alias_type() allows modifying a EVP_PKEY to use a
|
||||
different set of algorithms than the default. This is currently used
|
||||
to support SM2 keys, which use an identical encoding to ECDSA.
|
||||
different set of algorithms than the default.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
@@ -103,6 +102,16 @@ EVP_PKEY_assign_RSA(), EVP_PKEY_assign_DSA(), EVP_PKEY_assign_DH(),
|
||||
EVP_PKEY_assign_EC_KEY(), EVP_PKEY_assign_POLY1305()
|
||||
and EVP_PKEY_assign_SIPHASH() are implemented as macros.
|
||||
|
||||
EVP_PKEY_assign_EC_KEY() looks at the curve name id to determine if
|
||||
the passed B<EC_KEY> is an L<SM2(7)> key, and will set the B<EVP_PKEY>
|
||||
type to B<EVP_PKEY_SM2> in that case, instead of B<EVP_PKEY_EC>.
|
||||
|
||||
It's possible to switch back and forth between the types B<EVP_PKEY_EC>
|
||||
and B<EVP_PKEY_SM2> with a call to EVP_PKEY_set_alias_type() on keys
|
||||
assigned with this macro if it's desirable to do a normal EC
|
||||
computations with the SM2 curve instead of the special SM2
|
||||
computations, and vice versa.
|
||||
|
||||
Most applications wishing to know a key type will simply call
|
||||
EVP_PKEY_base_id() and will not care about the actual type:
|
||||
which will be identical in almost all cases.
|
||||
@@ -143,7 +152,7 @@ algorithms with EVP_PKEY_set_alias_type:
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<EVP_PKEY_new(3)>
|
||||
L<EVP_PKEY_new(3)>, L<SM2(7)>
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
|
||||
@@ -105,7 +105,6 @@ L<EVP_PKEY_derive(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
EVP_PKEY_sign_init_ex() was added in OpenSSL 3.0.
|
||||
These functions were added in OpenSSL 1.0.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
@@ -93,8 +93,7 @@ L<EVP_PKEY_derive(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
EVP_PKEY_verify_init_ex() was added in OpenSSL 3.0.
|
||||
All other functions were added in OpenSSL 1.0.0.
|
||||
These functions were added in OpenSSL 1.0.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
|
||||
@@ -20,6 +20,10 @@ HMAC_size
|
||||
|
||||
#include <openssl/hmac.h>
|
||||
|
||||
Deprecated since OpenSSL 3.0, can be hidden entirely by defining
|
||||
B<OPENSSL_API_COMPAT> with a suitable version value, see
|
||||
L<openssl_user_macros(7)>:
|
||||
|
||||
unsigned char *HMAC(const EVP_MD *evp_md, const void *key,
|
||||
int key_len, const unsigned char *d, int n,
|
||||
unsigned char *md, unsigned int *md_len);
|
||||
@@ -49,6 +53,10 @@ L<openssl_user_macros(7)>:
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
All of the functions described on this page are deprecated. Applications should
|
||||
instead use L<EVP_MAC_CTX_new(3)>, L<EVP_MAC_CTX_free(3)>, L<EVP_MAC_init(3)>,
|
||||
L<EVP_MAC_update(3)> and L<EVP_MAC_final(3)>.
|
||||
|
||||
HMAC is a MAC (message authentication code), i.e. a keyed hash
|
||||
function used for message authentication, which is based on a hash
|
||||
function.
|
||||
@@ -138,6 +146,8 @@ L<SHA1(3)>, L<evp(7)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
All of these functions were deprecated in OpenSSL 3.0.
|
||||
|
||||
HMAC_CTX_init() was replaced with HMAC_CTX_reset() in OpenSSL 1.1.0.
|
||||
|
||||
HMAC_CTX_cleanup() existed in OpenSSL before version 1.1.0.
|
||||
|
||||
@@ -24,7 +24,7 @@ it adds a nonce to OCSP basic response B<resp>.
|
||||
|
||||
OCSP_check_nonce() compares the nonce value in B<req> and B<resp>.
|
||||
|
||||
OCSP_copy_nonce() copys any nonce value present in B<req> to B<resp>.
|
||||
OCSP_copy_nonce() copies any nonce value present in B<req> to B<resp>.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ with the X509 certificate B<cert>.
|
||||
|
||||
OCSP_basic_sign() signs OCSP response B<brsp> using certificate B<signer>, private key
|
||||
B<key>, digest B<dgst> and additional certificates B<certs>. If the B<flags> option
|
||||
B<OCSP_NOCERTS> is set then no certificates will be included in the request. If the
|
||||
B<OCSP_NOCERTS> is set then no certificates will be included in the response. If the
|
||||
B<flags> option B<OCSP_RESPID_KEY> is set then the responder is identified by key ID
|
||||
rather than by name. OCSP_basic_sign_ctx() also signs OCSP response B<brsp> but
|
||||
uses the parameters contained in digest context B<ctx>.
|
||||
|
||||
@@ -10,22 +10,22 @@ OCSP_REQ_CTX_set1_req, OCSP_sendreq_bio - OCSP responder query functions
|
||||
|
||||
#include <openssl/ocsp.h>
|
||||
|
||||
OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, OCSP_REQUEST *req,
|
||||
int maxline);
|
||||
OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path,
|
||||
OCSP_REQUEST *req, int maxline);
|
||||
|
||||
int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx);
|
||||
|
||||
void OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx);
|
||||
|
||||
void OCSP_set_max_response_length(OCSP_REQ_CTX *rctx, unsigned long len);
|
||||
void OCSP_set_max_response_length(OCSP_REQ_CTX *rctx,
|
||||
unsigned long len);
|
||||
|
||||
int OCSP_REQ_CTX_add1_header(OCSP_REQ_CTX *rctx,
|
||||
const char *name, const char *value);
|
||||
|
||||
int OCSP_REQ_CTX_set1_req(OCSP_REQ_CTX *rctx, OCSP_REQUEST *req);
|
||||
int OCSP_REQ_CTX_set1_req(OCSP_REQ_CTX *rctx, const OCSP_REQUEST *req);
|
||||
|
||||
OCSP_RESPONSE *OCSP_sendreq_bio(BIO *io, const char *path, OCSP_REQUEST *req,
|
||||
int maxline);
|
||||
OCSP_RESPONSE *OCSP_sendreq_bio(BIO *io, const char *path, OCSP_REQUEST *req);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
@@ -35,14 +35,14 @@ response header maximum line length of B<maxline>. If B<maxline> is zero a
|
||||
default value of 4k is used. The OCSP request B<req> may be set to B<NULL>
|
||||
and provided later if required.
|
||||
|
||||
OCSP_sendreq_nbio() performs non-blocking I/O on the OCSP request context
|
||||
B<rctx>. When the operation is complete it returns the response in B<*presp>.
|
||||
OCSP_sendreq_nbio() performs I/O on the OCSP request context B<rctx>.
|
||||
When the operation is complete it returns the response in B<*presp>.
|
||||
|
||||
OCSP_REQ_CTX_free() frees up the OCSP context B<rctx>.
|
||||
|
||||
OCSP_set_max_response_length() sets the maximum response length for B<rctx>
|
||||
to B<len>. If the response exceeds this length an error occurs. If not
|
||||
set a default value of 100k is used.
|
||||
OCSP_set_max_response_length() sets the maximum response length
|
||||
for B<rctx> to B<len>. If the response exceeds this length an error occurs.
|
||||
If not set a default value of 100k is used.
|
||||
|
||||
OCSP_REQ_CTX_add1_header() adds header B<name> with value B<value> to the
|
||||
context B<rctx>. It can be called more than once to add multiple headers.
|
||||
@@ -55,23 +55,21 @@ function should be called after any calls to OCSP_REQ_CTX_add1_header().
|
||||
|
||||
OCSP_sendreq_bio() performs an OCSP request using the responder B<io>, the URL
|
||||
path B<path>, the OCSP request B<req> and with a response header maximum line
|
||||
length of B<maxline>. If B<maxline> is zero a default value of 4k is used.
|
||||
length 4k. It waits indefinitely on a response.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
OCSP_sendreq_new() returns a valid B<OCSP_REQ_CTX> structure or B<NULL> if
|
||||
an error occurred.
|
||||
OCSP_sendreq_new() returns a valid B<OCSP_REQ_CTX> structure or B<NULL>
|
||||
if an error occurred.
|
||||
|
||||
OCSP_sendreq_nbio() returns B<1> if the operation was completed successfully,
|
||||
B<-1> if the operation should be retried and B<0> if an error occurred.
|
||||
|
||||
OCSP_REQ_CTX_add1_header() and OCSP_REQ_CTX_set1_req() return B<1> for success
|
||||
and B<0> for failure.
|
||||
OCSP_sendreq_nbio(), OCSP_REQ_CTX_add1_header() and OCSP_REQ_CTX_set1_req()
|
||||
return B<1> for success and B<0> for failure.
|
||||
|
||||
OCSP_sendreq_bio() returns the B<OCSP_RESPONSE> structure sent by the
|
||||
responder or B<NULL> if an error occurred.
|
||||
|
||||
OCSP_REQ_CTX_free() and OCSP_set_max_response_length() do not return values.
|
||||
OCSP_REQ_CTX_free() and OCSP_set_max_response_length()
|
||||
do not return values.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
@@ -92,14 +90,9 @@ a Host header for B<ocsp.com> you would call:
|
||||
|
||||
OCSP_REQ_CTX_add1_header(ctx, "Host", "ocsp.com");
|
||||
|
||||
If OCSP_sendreq_nbio() indicates an operation should be retried the
|
||||
corresponding BIO can be examined to determine which operation (read or
|
||||
write) should be retried and appropriate action taken (for example a select()
|
||||
call on the underlying socket).
|
||||
|
||||
OCSP_sendreq_bio() does not support retries and so cannot handle non-blocking
|
||||
I/O efficiently. It is retained for compatibility and its use in new
|
||||
applications is not recommended.
|
||||
OCSP_sendreq_bio() does not support timeout nor setting extra headers.
|
||||
It is retained for compatibility.
|
||||
Better use B<OCSP_sendreq_nbio()> instead.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
|
||||
+31
-27
@@ -12,6 +12,7 @@ CRYPTO_strdup, CRYPTO_strndup,
|
||||
OPENSSL_mem_debug_push, OPENSSL_mem_debug_pop,
|
||||
CRYPTO_mem_debug_push, CRYPTO_mem_debug_pop,
|
||||
CRYPTO_clear_realloc, CRYPTO_clear_free,
|
||||
CRYPTO_malloc_fn, CRYPTO_realloc_fn, CRYPTO_free_fn,
|
||||
CRYPTO_get_mem_functions, CRYPTO_set_mem_functions,
|
||||
CRYPTO_get_alloc_counts,
|
||||
CRYPTO_set_mem_debug, CRYPTO_mem_ctrl,
|
||||
@@ -24,41 +25,43 @@ OPENSSL_MALLOC_FD
|
||||
|
||||
#include <openssl/crypto.h>
|
||||
|
||||
int OPENSSL_malloc_init(void)
|
||||
int OPENSSL_malloc_init(void);
|
||||
|
||||
void *OPENSSL_malloc(size_t num)
|
||||
void *OPENSSL_zalloc(size_t num)
|
||||
void *OPENSSL_realloc(void *addr, size_t num)
|
||||
void OPENSSL_free(void *addr)
|
||||
char *OPENSSL_strdup(const char *str)
|
||||
char *OPENSSL_strndup(const char *str, size_t s)
|
||||
void *OPENSSL_malloc(size_t num);
|
||||
void *OPENSSL_zalloc(size_t num);
|
||||
void *OPENSSL_realloc(void *addr, size_t num);
|
||||
void OPENSSL_free(void *addr);
|
||||
char *OPENSSL_strdup(const char *str);
|
||||
char *OPENSSL_strndup(const char *str, size_t s);
|
||||
size_t OPENSSL_strlcat(char *dst, const char *src, size_t size);
|
||||
size_t OPENSSL_strlcpy(char *dst, const char *src, size_t size);
|
||||
void *OPENSSL_memdup(void *data, size_t s)
|
||||
void *OPENSSL_clear_realloc(void *p, size_t old_len, size_t num)
|
||||
void OPENSSL_clear_free(void *str, size_t num)
|
||||
void *OPENSSL_memdup(void *data, size_t s);
|
||||
void *OPENSSL_clear_realloc(void *p, size_t old_len, size_t num);
|
||||
void OPENSSL_clear_free(void *str, size_t num);
|
||||
void OPENSSL_cleanse(void *ptr, size_t len);
|
||||
|
||||
void *CRYPTO_malloc(size_t num, const char *file, int line)
|
||||
void *CRYPTO_zalloc(size_t num, const char *file, int line)
|
||||
void *CRYPTO_realloc(void *p, size_t num, const char *file, int line)
|
||||
void CRYPTO_free(void *str, const char *, int)
|
||||
char *CRYPTO_strdup(const char *p, const char *file, int line)
|
||||
char *CRYPTO_strndup(const char *p, size_t num, const char *file, int line)
|
||||
void *CRYPTO_malloc(size_t num, const char *file, int line);
|
||||
void *CRYPTO_zalloc(size_t num, const char *file, int line);
|
||||
void *CRYPTO_realloc(void *p, size_t num, const char *file, int line);
|
||||
void CRYPTO_free(void *str, const char *, int);
|
||||
char *CRYPTO_strdup(const char *p, const char *file, int line);
|
||||
char *CRYPTO_strndup(const char *p, size_t num, const char *file, int line);
|
||||
void *CRYPTO_clear_realloc(void *p, size_t old_len, size_t num,
|
||||
const char *file, int line)
|
||||
const char *file, int line);
|
||||
void CRYPTO_clear_free(void *str, size_t num, const char *, int)
|
||||
|
||||
void CRYPTO_get_mem_functions(
|
||||
void *(**m)(size_t, const char *, int),
|
||||
void *(**r)(void *, size_t, const char *, int),
|
||||
void (**f)(void *, const char *, int))
|
||||
int CRYPTO_set_mem_functions(
|
||||
void *(*m)(size_t, const char *, int),
|
||||
void *(*r)(void *, size_t, const char *, int),
|
||||
void (*f)(void *, const char *, int))
|
||||
typedef void *(*CRYPTO_malloc_fn)(size_t num, const char *file, int line);
|
||||
typedef void *(*CRYPTO_realloc_fn)(void *addr, size_t num, const char *file,
|
||||
int line);
|
||||
typedef void (*CRYPTO_free_fn)(void *addr, const char *file, int line);
|
||||
void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn,
|
||||
CRYPTO_realloc_fn *realloc_fn,
|
||||
CRYPTO_free_fn *free_fn);
|
||||
int CRYPTO_set_mem_functions(CRYPTO_malloc_fn malloc_fn,
|
||||
CRYPTO_realloc_fn realloc_fn,
|
||||
CRYPTO_free_fn free_fn);
|
||||
|
||||
void CRYPTO_get_alloc_counts(int *m, int *r, int *f)
|
||||
void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount);
|
||||
|
||||
env OPENSSL_MALLOC_FAILURES=... <application>
|
||||
env OPENSSL_MALLOC_FD=... <application>
|
||||
@@ -118,7 +121,8 @@ and replace them with alternate versions.
|
||||
CRYPTO_get_mem_functions() function fills in the given arguments with the
|
||||
function pointers for the current implementations.
|
||||
With CRYPTO_set_mem_functions(), you can specify a different set of functions.
|
||||
If any of B<m>, B<r>, or B<f> are NULL, then the function is not changed.
|
||||
If any of B<malloc_fn>, B<realloc_fn>, or B<free_fn> are NULL, then
|
||||
the function is not changed.
|
||||
While it's permitted to swap out only a few and not all the functions
|
||||
with CRYPTO_set_mem_functions(), it's recommended to swap them all out
|
||||
at once.
|
||||
|
||||
@@ -14,7 +14,7 @@ CRYPTO_secure_used - secure heap storage
|
||||
|
||||
#include <openssl/crypto.h>
|
||||
|
||||
int CRYPTO_secure_malloc_init(size_t size, int minsize);
|
||||
int CRYPTO_secure_malloc_init(size_t size, size_t minsize);
|
||||
|
||||
int CRYPTO_secure_malloc_initialized();
|
||||
|
||||
@@ -126,6 +126,9 @@ L<BN_new(3)>
|
||||
|
||||
The OPENSSL_secure_clear_free() function was added in OpenSSL 1.1.0g.
|
||||
|
||||
The second argument to CRYPTO_secure_malloc_init() was changed from an B<int> to
|
||||
a B<size_t> in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -16,7 +16,6 @@ OSSL_CMP_CTX_set_serverPort,
|
||||
OSSL_CMP_CTX_set1_proxyName,
|
||||
OSSL_CMP_CTX_set_proxyPort,
|
||||
OSSL_CMP_DEFAULT_PORT,
|
||||
OSSL_cmp_http_cb_t,
|
||||
OSSL_CMP_CTX_set_http_cb,
|
||||
OSSL_CMP_CTX_set_http_cb_arg,
|
||||
OSSL_CMP_CTX_get_http_cb_arg,
|
||||
@@ -84,14 +83,11 @@ OSSL_CMP_CTX_set1_senderNonce
|
||||
int OSSL_CMP_CTX_set1_proxyName(OSSL_CMP_CTX *ctx, const char *name);
|
||||
int OSSL_CMP_CTX_set_proxyPort(OSSL_CMP_CTX *ctx, int port);
|
||||
#define OSSL_CMP_DEFAULT_PORT 80
|
||||
typedef BIO *(*OSSL_cmp_http_cb_t)(OSSL_CMP_CTX *ctx, BIO *hbio,
|
||||
unsigned long detail);
|
||||
int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_cmp_http_cb_t cb);
|
||||
int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, HTTP_bio_cb_t cb);
|
||||
int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg);
|
||||
void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx);
|
||||
typedef int (*OSSL_cmp_transfer_cb_t)(OSSL_CMP_CTX *ctx,
|
||||
const OSSL_CMP_MSG *req,
|
||||
OSSL_CMP_MSG **res);
|
||||
typedef OSSL_CMP_MSG *(*OSSL_cmp_transfer_cb_t)(OSSL_CMP_CTX *ctx,
|
||||
const OSSL_CMP_MSG *req);
|
||||
int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx,
|
||||
OSSL_cmp_transfer_cb_t cb);
|
||||
int OSSL_CMP_CTX_set_transfer_cb_arg(OSSL_CMP_CTX *ctx, void *arg);
|
||||
@@ -324,22 +320,22 @@ for connecting to the CA server.
|
||||
OSSL_CMP_CTX_set_proxyPort() sets the port of the HTTP proxy.
|
||||
Port defaults to OSSL_CMP_DEFAULT_PORT = 80 if not set explicitly.
|
||||
|
||||
OSSL_CMP_CTX_set_http_cb() sets the optional http connect/disconnect callback
|
||||
OSSL_CMP_CTX_set_http_cb() sets the optional BIO connect/disconnect callback
|
||||
function, which has the prototype
|
||||
|
||||
typedef BIO *(*OSSL_cmp_http_cb_t)(OSSL_CMP_CTX *ctx, BIO *hbio,
|
||||
unsigned long detail);
|
||||
typedef BIO *(*HTTP_bio_cb_t) (BIO *bio, void *ctx, int connect, int detail);
|
||||
|
||||
It may modify the HTTP BIO given in the B<hbio> argument
|
||||
used by OSSL_CMP_MSG_http_perform().
|
||||
On connect the B<detail> argument is 1.
|
||||
On disconnect it is 0 if no error occurred or else the last error code.
|
||||
For instance, on connect a TLS BIO may be prepended to implement HTTPS,
|
||||
and on disconnect some error diagnostics and/or cleanup may be done.
|
||||
The callback function should return NULL to indicate failure.
|
||||
It may make use of a custom defined argument stored in the ctx
|
||||
by means of OSSL_CMP_CTX_set_http_cb_arg(),
|
||||
which may be retrieved again through OSSL_CMP_CTX_get_http_cb_arg().
|
||||
The callback may modify the BIO B<bio> provided by OSSL_CMP_MSG_http_perform(),
|
||||
whereby it may make use of a custom defined argument B<ctx>
|
||||
stored in the OSSL_CMP_CTX by means of OSSL_CMP_CTX_set_http_cb_arg().
|
||||
During connection establishment, just after calling BIO_connect_retry(),
|
||||
the function is invoked with the B<connect> argument being 1 and the B<detail>
|
||||
argument being 1 if HTTPS is requested, i.e., SSL/TLS should be enabled. On
|
||||
disconnect B<connect> is 0 and B<detail> is 1 in case no error occurred, else 0.
|
||||
For instance, on connect the function may prepend a TLS BIO to implement HTTPS;
|
||||
after disconnect it may do some diagnostic output and/or specific cleanup.
|
||||
The function should return NULL to indicate failure.
|
||||
After disconnect the modified BIO will be deallocated using BIO_free_all().
|
||||
|
||||
OSSL_CMP_CTX_set_http_cb_arg() sets an argument, respectively a pointer to
|
||||
a structure containing arguments,
|
||||
@@ -354,18 +350,17 @@ OSSL_CMP_CTX_set_http_cb_arg() or NULL if unset.
|
||||
OSSL_CMP_CTX_set_transfer_cb() sets the message transfer callback function,
|
||||
which has the type
|
||||
|
||||
typedef int (*OSSL_cmp_transfer_cb_t)(const OSSL_CMP_CTX *ctx,
|
||||
const OSSL_CMP_MSG *req,
|
||||
OSSL_CMP_MSG **res);
|
||||
typedef OSSL_CMP_MSG *(*OSSL_cmp_transfer_cb_t) (OSSL_CMP_CTX *ctx,
|
||||
const OSSL_CMP_MSG *req);
|
||||
|
||||
Returns 1 on success, 0 on error.
|
||||
|
||||
Default is NULL, which implies the use of L<OSSL_CMP_MSG_http_perform(3)>.
|
||||
The callback should send the CMP request it obtains via the B<req> parameter
|
||||
and on success place the response in the B<*res> output parameter.
|
||||
The callback should send the CMP request message it obtains via the B<req>
|
||||
parameter and on success return the response.
|
||||
The transfer callback may make use of a custom defined argument stored in
|
||||
the ctx by means of OSSL_CMP_CTX_set_transfer_cb_arg(), which may be retrieved
|
||||
again through OSSL_CMP_CTX_get_transfer_cb_arg().
|
||||
On success the cb must return 0, else a CMP error reason code defined in cmp.h.
|
||||
|
||||
|
||||
OSSL_CMP_CTX_set_transfer_cb_arg() sets an argument, respectively a pointer to a
|
||||
|
||||
@@ -0,0 +1,210 @@
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
OSSL_HTTP_get,
|
||||
OSSL_HTTP_get_asn1,
|
||||
OSSL_HTTP_post_asn1,
|
||||
OSSL_HTTP_transfer,
|
||||
OSSL_HTTP_bio_cb_t,
|
||||
OSSL_HTTP_proxy_connect,
|
||||
OSSL_HTTP_parse_url
|
||||
- http client functions
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
#include <openssl/http.h>
|
||||
|
||||
typedef BIO *(*OSSL_HTTP_bio_cb_t)(BIO *bio, void *arg,
|
||||
int connect, int detail);
|
||||
BIO *OSSL_HTTP_get(const char *url, const char *proxy, const char *proxy_port,
|
||||
BIO *bio, BIO *rbio,
|
||||
OSSL_HTTP_bio_cb_t bio_update_fn, void *arg,
|
||||
const STACK_OF(CONF_VALUE) *headers,
|
||||
int maxline, unsigned long max_resp_len, int timeout,
|
||||
const char *expected_content_type, int expect_asn1);
|
||||
ASN1_VALUE *OSSL_HTTP_get_asn1(const char *url,
|
||||
const char *proxy, const char *proxy_port,
|
||||
BIO *bio, BIO *rbio,
|
||||
OSSL_HTTP_bio_cb_t bio_update_fn, void *arg,
|
||||
const STACK_OF(CONF_VALUE) *headers,
|
||||
int maxline, unsigned long max_resp_len,
|
||||
int timeout, const char *expected_content_type,
|
||||
const ASN1_ITEM *it);
|
||||
ASN1_VALUE *OSSL_HTTP_post_asn1(const char *server, const char *port,
|
||||
const char *path, int use_ssl,
|
||||
const char *proxy, const char *proxy_port,
|
||||
BIO *bio, BIO *rbio,
|
||||
OSSL_HTTP_bio_cb_t bio_update_fn, void *arg,
|
||||
const STACK_OF(CONF_VALUE) *headers,
|
||||
const char *content_type,
|
||||
ASN1_VALUE *req, const ASN1_ITEM *req_it,
|
||||
int maxline, unsigned long max_resp_len,
|
||||
int timeout, const char *expected_ct,
|
||||
const ASN1_ITEM *rsp_it);
|
||||
BIO *OSSL_HTTP_transfer(const char *server, const char *port, const char *path,
|
||||
int use_ssl, const char *proxy, const char *proxy_port,
|
||||
BIO *bio, BIO *rbio,
|
||||
OSSL_HTTP_bio_cb_t bio_update_fn, void *arg,
|
||||
const STACK_OF(CONF_VALUE) *headers,
|
||||
const char *content_type, BIO *req_mem,
|
||||
int maxline, unsigned long max_resp_len, int timeout,
|
||||
const char *expected_ct, int expect_asn1,
|
||||
char **redirection_url);
|
||||
int OSSL_HTTP_proxy_connect(BIO *bio, const char *server, const char *port,
|
||||
const char *proxyuser, const char *proxypass,
|
||||
int timeout, BIO *bio_err, const char *prog);
|
||||
int OSSL_HTTP_parse_url(const char *url, char **phost, char **pport,
|
||||
char **ppath, int *pssl);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
OSSL_HTTP_get() uses HTTP GET to obtain data (of any type) from the given B<url>
|
||||
and returns it as a memory BIO.
|
||||
|
||||
OSSL_HTTP_get_asn1() uses HTTP GET to obtain an ASN.1-encoded value
|
||||
(e.g., an X.509 certificate) with the expected structure specified by B<it>
|
||||
(e.g., I<ASN1_ITEM_rptr(X509)>) from the given B<url>
|
||||
and returns it on success as a pointer to I<ASN1_VALUE>.
|
||||
|
||||
OSSL_HTTP_post_asn1() uses the HTTP POST method to send a request B<req>
|
||||
with the ASN.1 structure defined in B<req_it> and the given B<content_type> to
|
||||
the given B<server> and optional B<port> and B<path>, which defaults to "/".
|
||||
If B<use_ssl> is nonzero a TLS connection is requested and the B<bio_update_fn>
|
||||
parameter, described below, must be provided.
|
||||
The optional list B<headers> may contain additional custom HTTP header lines.
|
||||
The expected structure of the response is specified by B<rsp_it>.
|
||||
On success it returns the response as a pointer to B<ASN1_VALUE>.
|
||||
|
||||
OSSL_HTTP_transfer() exchanges an HTTP request and response with
|
||||
the given B<server> and optional B<port> and B<path>, which defaults to "/".
|
||||
If B<use_ssl> is nonzero a TLS connection is requested and the B<bio_update_fn>
|
||||
parameter, described below, must be provided.
|
||||
If B<req_mem> is NULL it uses the HTTP GET method, else it uses HTTP POST to
|
||||
send a request with the contents of the memory BIO and optional B<content_type>.
|
||||
The optional list B<headers> may contain additional custom HTTP header lines.
|
||||
If B<req_mem> is NULL (i.e., the HTTP method is GET) and B<redirection_url>
|
||||
is not NULL the latter pointer is used to provide any new location that
|
||||
the server may return with HTTP code 301 (MOVED_PERMANENTLY) or 302 (FOUND).
|
||||
In this case the caller is responsible for deallocating this URL with
|
||||
L<OPENSSL_free(3)>.
|
||||
|
||||
The above functions have the following parameters in common.
|
||||
|
||||
If the B<proxy> parameter is not NULL the HTTP client functions connect
|
||||
via the given proxy and the optionally given B<proxy_port>.
|
||||
Proxying plain HTTP is supported directly,
|
||||
while using a proxy for HTTPS connections requires a suitable callback function
|
||||
such as OSSL_HTTP_proxy_connect(), described below.
|
||||
|
||||
Typically the B<bio> and B<rbio> parameters are NULL and the client creates a
|
||||
network BIO internally for connecting to the given server and port (optionally
|
||||
via a proxy and its port), and uses it for exchanging the request and response.
|
||||
If B<bio> is given and B<rbio> is NULL then the client uses this BIO instead.
|
||||
If both B<bio> and B<rbio> are given (which may be memory BIOs for instance)
|
||||
then no explicit connection is attempted,
|
||||
B<bio> is used for writing the request, and B<rbio> for reading the response.
|
||||
As soon as the client has flushed B<bio> the server must be ready to provide
|
||||
a response or indicate a waiting condition via B<rbio>.
|
||||
|
||||
The B<maxline> parameter specifies the response header maximum line length,
|
||||
where 0 indicates the default value, which currently is 4k.
|
||||
The B<max_resp_len> parameter specifies the maximum response length,
|
||||
where 0 indicates the default value, which currently is 100k.
|
||||
|
||||
An ASN.1-encoded response is expected by OSSL_HTTP_get_asn1() and
|
||||
OSSL_HTTP_post_asn1(), while for OSSL_HTTP_get() or OSSL_HTTP_transfer()
|
||||
this is only the case if the B<expect_asn1> parameter is nonzero.
|
||||
If the response header contains one or more Content-Length header lines and/or
|
||||
an ASN.1-encoded response is expected, which should include a total length,
|
||||
the length indications received are checked for consistency
|
||||
and for not exceeding the maximum response length.
|
||||
|
||||
If the parameter B<expected_content_type> (or B<expected_ct>, respectively)
|
||||
is not NULL then the HTTP client checks that the given content type string
|
||||
is included in the HTTP header of the response and returns an error if not.
|
||||
|
||||
If the B<timeout> parameter is > 0 this indicates the maximum number of seconds
|
||||
to wait until the transfer is complete.
|
||||
A value of 0 enables waiting indefinitely,
|
||||
while a value < 0 immediately leads to a timeout condition.
|
||||
|
||||
The optional parameter B<bio_update_fn> with its optional argument B<arg> may
|
||||
be used to modify the connection BIO used by the HTTP client (and cannot be
|
||||
used when both B<bio> and B<rbio> are given).
|
||||
B<bio_update_fn> is a BIO connect/disconnect callback function with prototype
|
||||
|
||||
BIO *(*OSSL_HTTP_bio_cb_t)(BIO *bio, void *arg, int connect, int detail)
|
||||
|
||||
The callback may modify the HTTP BIO provided in the B<bio> argument,
|
||||
whereby it may make use of a custom defined argument B<arg>,
|
||||
which may for instance refer to an I<SSL_CTX> structure.
|
||||
During connection establishment, just after calling BIO_connect_retry(),
|
||||
the function is invoked with the B<connect> argument being 1 and the B<detail>
|
||||
argument being 1 if HTTPS is requested, i.e., SSL/TLS should be enabled.
|
||||
On disconnect B<connect> is 0 and B<detail> is 1 if no error occurred, else 0.
|
||||
For instance, on connect the function may prepend a TLS BIO to implement HTTPS;
|
||||
after disconnect it may do some diagnostic output and/or specific cleanup.
|
||||
The function should return NULL to indicate failure.
|
||||
Here is a simple example that supports TLS connections (but not via a proxy):
|
||||
|
||||
BIO *http_tls_cb(BIO *hbio, void *arg, int connect, int detail)
|
||||
{
|
||||
SSL_CTX *ctx = (SSL_CTX *)arg;
|
||||
|
||||
if (connect && detail) { /* connecting with TLS */
|
||||
BIO *sbio = BIO_new_ssl(ctx, 1);
|
||||
hbio = sbio != NULL ? BIO_push(sbio, hbio) : NULL;
|
||||
} else if (!connect && !detail) { /* disconnecting after error */
|
||||
/* optionally add diagnostics here */
|
||||
}
|
||||
return hbio;
|
||||
}
|
||||
|
||||
After disconnect the modified BIO will be deallocated using BIO_free_all().
|
||||
|
||||
OSSL_HTTP_proxy_connect() may be used by an above BIO connect callback function
|
||||
to set up an SSL/TLS connection via an HTTP proxy.
|
||||
It promotes the given BIO B<bio> representing a connection
|
||||
pre-established with a TLS proxy using the HTTP CONNECT method,
|
||||
optionally using proxy client credentials B<proxyuser> and B<proxypass>,
|
||||
to connect with TLS protection ultimately to B<server> and B<port>.
|
||||
The B<timeout> parameter is used as described above.
|
||||
Since this function is typically called by appplications such as
|
||||
L<openssl-s_client(1)> it uses the B<bio_err> and B<prog> parameters (unless
|
||||
NULL) to print additional diagnostic information in a user-oriented way.
|
||||
|
||||
OSSL_HTTP_parse_url() parses its input string B<url> as a URL and splits it up
|
||||
into host, port and path components and a flag whether it begins with 'https'.
|
||||
The host component may be a DNS name or an IPv4 or an IPv6 address.
|
||||
The port component is optional and defaults to "443" for HTTPS, else "80".
|
||||
The path component is also optional and defaults to "/".
|
||||
As far as the result pointer arguments are not NULL it assigns via
|
||||
them copies of the respective string components.
|
||||
The strings returned this way must be deallocated by the caller using
|
||||
L<OPENSSL_free(3)> unless they are NULL, which is their default value on error.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
OSSL_HTTP_get(), OSSL_HTTP_get_asn1(), OSSL_HTTP_post_asn1(), and
|
||||
OSSL_HTTP_transfer() return on success the data received via HTTP, else NULL.
|
||||
Error conditions include connection/transfer timeout, parse errors, etc.
|
||||
|
||||
OSSL_HTTP_proxy_connect() and OSSL_HTTP_parse_url()
|
||||
return 1 on success, 0 on error.
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
OSSL_HTTP_get(), OSSL_HTTP_get_asn1(), OSSL_HTTP_post_asn1(),
|
||||
OSSL_HTTP_proxy_connect(), and OSSL_HTTP_parse_url() were added in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2019-2020 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
|
||||
@@ -167,7 +167,9 @@ size B<rsize> is created.
|
||||
OSSL_PARAM_construct_utf8_string() is a function that constructs a UTF8
|
||||
string OSSL_PARAM structure.
|
||||
A parameter with name B<key>, storage B<buf> and size B<bsize> is created.
|
||||
If B<bsize> is zero, the string length is determined using strlen(3).
|
||||
If B<bsize> is zero, the string length is determined using strlen(3) + 1 for the
|
||||
null termination byte.
|
||||
Generally pass zero for B<bsize> instead of calling strlen(3) yourself.
|
||||
|
||||
OSSL_PARAM_construct_octet_string() is a function that constructs an OCTET
|
||||
string OSSL_PARAM structure.
|
||||
|
||||
@@ -36,11 +36,11 @@ OSSL_SERIALIZER_Parameters_TO_TEXT_PQ
|
||||
|
||||
#define OSSL_SERIALIZER_PUBKEY_TO_PEM_PQ "format=pem,type=public"
|
||||
#define OSSL_SERIALIZER_PrivateKey_TO_PEM_PQ "format=pem,type=private"
|
||||
#define OSSL_SERIALIZER_Parameters_TO_PEM_PQ "format=pem,type=domainparams"
|
||||
#define OSSL_SERIALIZER_Parameters_TO_PEM_PQ "format=pem,type=parameters"
|
||||
|
||||
#define OSSL_SERIALIZER_PUBKEY_TO_TEXT_PQ "format=text,type=public"
|
||||
#define OSSL_SERIALIZER_PrivateKey_TO_TEXT_PQ "format=text,type=private"
|
||||
#define OSSL_SERIALIZER_Parameters_TO_TEXT_PQ "format=text,type=domainparams"
|
||||
#define OSSL_SERIALIZER_Parameters_TO_TEXT_PQ "format=text,type=parameters"
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
=pod
|
||||
|
||||
=for openssl foreign manuals: atexit(3)
|
||||
=for openssl foreign manual atexit(3)
|
||||
|
||||
=head1 NAME
|
||||
|
||||
|
||||
@@ -35,7 +35,6 @@ is still owned by the B<PKCS12_SAFEBAG> in which it resides.
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<PKCS12_get_friendlyname(3)>,
|
||||
L<PKCS12_get_localkeyid(3)>,
|
||||
L<PKCS12_add_friendlyname_asc(3)>
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
PKCS8_pkey_get0_attrs, PKCS8_pkey_add1_attr, PKCS8_pkey_add1_attr_by_NID, PKCS8_pkey_add1_attr_by_OBJ - PKCS8 attribute functions
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
#include <openssl/x509.h>
|
||||
|
||||
const STACK_OF(X509_ATTRIBUTE) *
|
||||
PKCS8_pkey_get0_attrs(const PKCS8_PRIV_KEY_INFO *p8);
|
||||
int PKCS8_pkey_add1_attr(PKCS8_PRIV_KEY_INFO *p8, X509_ATTRIBUTE *attr);
|
||||
int PKCS8_pkey_add1_attr_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type,
|
||||
const unsigned char *bytes, int len);
|
||||
int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj,
|
||||
int type, const unsigned char *bytes, int len);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
PKCS8_pkey_get0_attrs() returns a const STACK of X509_ATTRIBUTE present in
|
||||
the passed const PKCS8_PRIV_KEY_INFO structure B<p8>.
|
||||
|
||||
PKCS8_pkey_add1_attr() adds a constructed X509_ATTRIBUTE B<attr> to the
|
||||
existing PKCS8_PRIV_KEY_INFO structure B<p8>.
|
||||
|
||||
PKCS8_pkey_add1_attr_by_NID() and PKCS8_pkey_add1_attr_by_OBJ() construct a new
|
||||
X509_ATTRIBUTE from the passed arguments and add it to the existing
|
||||
PKCS8_PRIV_KEY_INFO structure B<p8>.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
PKCS8_pkey_add1_attr(), PKCS8_pkey_add1_attr_by_NID(), and
|
||||
PKCS8_pkey_add1_attr_by_OBJ() return 1 for success and 0 for failure.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
STACK of X509_ATTRIBUTE is present in many X509-related structures and some of
|
||||
them have the corresponding set of similar functions.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<crypto(7)>
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2020 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
|
||||
@@ -3,6 +3,8 @@
|
||||
=head1 NAME
|
||||
|
||||
RAND_DRBG_set_callbacks,
|
||||
RAND_DRBG_set_callback_data,
|
||||
RAND_DRBG_get_callback_data,
|
||||
RAND_DRBG_get_entropy_fn,
|
||||
RAND_DRBG_cleanup_entropy_fn,
|
||||
RAND_DRBG_get_nonce_fn,
|
||||
@@ -20,6 +22,9 @@ RAND_DRBG_cleanup_nonce_fn
|
||||
RAND_DRBG_get_nonce_fn get_nonce,
|
||||
RAND_DRBG_cleanup_nonce_fn cleanup_nonce);
|
||||
|
||||
int RAND_DRBG_set_callback_data(RAND_DRBG *drbg, void *ctx);
|
||||
|
||||
void *RAND_DRBG_get_callback_data(RAND_DRBG *drbg);
|
||||
|
||||
=head2 Callback Functions
|
||||
|
||||
@@ -53,7 +58,16 @@ the nonce when reseeding the given B<drbg>.
|
||||
The callback functions are implemented and provided by the caller.
|
||||
Their parameter lists need to match the function prototypes above.
|
||||
|
||||
Setting the callbacks is allowed only if the DRBG has not been initialized yet.
|
||||
RAND_DRBG_set_callback_data() can be used to store a pointer to some context
|
||||
specific data, which can subsequently be retrieved by the entropy and nonce
|
||||
callbacks using RAND_DRBG_get_callback_data().
|
||||
The ownership of the context data remains with the caller, i.e., it is the
|
||||
caller's responsibility to keep it available as long as it is needed by the
|
||||
callbacks and free it after use.
|
||||
For more information about the the callback data see the NOTES section.
|
||||
|
||||
Setting the callbacks or the callback data is allowed only if the DRBG has
|
||||
not been initialized yet.
|
||||
Otherwise, the operation will fail.
|
||||
To change the settings for one of the three shared DRBGs it is necessary to call
|
||||
RAND_DRBG_uninstantiate() first.
|
||||
@@ -95,7 +109,12 @@ setting them to NULL.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
RAND_DRBG_set_callbacks() return 1 on success, and 0 on failure
|
||||
RAND_DRBG_set_callbacks() returns 1 on success, and 0 on failure.
|
||||
|
||||
RAND_DRBG_set_callback_data() returns 1 on success, and 0 on failure.
|
||||
|
||||
RAND_DRBG_get_callback_data() returns the pointer to the callback data,
|
||||
which is NULL if none has been set previously.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
@@ -121,6 +140,14 @@ In this case the DRBG will automatically request an extra amount of entropy
|
||||
utilize for the nonce, following the recommendations of [NIST SP 800-90A Rev. 1],
|
||||
section 8.6.7.
|
||||
|
||||
The callback data is a rather specialized feature, because in general the
|
||||
random sources don't (and in fact, they must not) depend on any state provided
|
||||
by the DRBG.
|
||||
There are however exceptional cases where this feature is useful, most notably
|
||||
for implementing known answer tests (KATs) or deterministic signatures like
|
||||
those specified in RFC6979, which require passing a specified entropy and nonce
|
||||
for instantiating the DRBG.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<RAND_DRBG_new(3)>,
|
||||
|
||||
@@ -58,7 +58,7 @@ if an error occurred. The error can be obtained from ERR_get_error(3).
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<ERR_get_error(3)>, L<CMS_type(3)>,
|
||||
L<ERR_get_error(3)>,
|
||||
L<SMIME_read_CMS(3)>, L<CMS_sign(3)>,
|
||||
L<CMS_verify(3)>, L<CMS_encrypt(3)>,
|
||||
L<CMS_decrypt(3)>
|
||||
|
||||
+185
-174
@@ -9,168 +9,38 @@ SSL_CONF_cmd - send configuration command
|
||||
|
||||
#include <openssl/ssl.h>
|
||||
|
||||
int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value);
|
||||
int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd);
|
||||
int SSL_CONF_cmd(SSL_CONF_CTX *ctx, const char *option, const char *value);
|
||||
int SSL_CONF_cmd_value_type(SSL_CONF_CTX *ctx, const char *option);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
The function SSL_CONF_cmd() performs configuration operation B<cmd> with
|
||||
The function SSL_CONF_cmd() performs configuration operation B<option> with
|
||||
optional parameter B<value> on B<ctx>. Its purpose is to simplify application
|
||||
configuration of B<SSL_CTX> or B<SSL> structures by providing a common
|
||||
framework for command line options or configuration files.
|
||||
|
||||
SSL_CONF_cmd_value_type() returns the type of value that B<cmd> refers to.
|
||||
SSL_CONF_cmd_value_type() returns the type of value that B<option> refers to.
|
||||
|
||||
=head1 SUPPORTED COMMAND LINE COMMANDS
|
||||
|
||||
Currently supported B<cmd> names for command lines (i.e. when the
|
||||
flag B<SSL_CONF_CMDLINE> is set) are listed below. Note: all B<cmd> names
|
||||
Currently supported B<option> names for command lines (i.e. when the
|
||||
flag B<SSL_CONF_CMDLINE> is set) are listed below. Note: all B<option> names
|
||||
are case sensitive. Unless otherwise stated commands can be used by
|
||||
both clients and servers and the B<value> parameter is not used. The default
|
||||
prefix for command line commands is B<-> and that is reflected below.
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<-sigalgs>
|
||||
|
||||
This sets the supported signature algorithms for TLSv1.2 and TLSv1.3.
|
||||
For clients this
|
||||
value is used directly for the supported signature algorithms extension. For
|
||||
servers it is used to determine which signature algorithms to support.
|
||||
|
||||
The B<value> argument should be a colon separated list of signature algorithms
|
||||
in order of decreasing preference of the form B<algorithm+hash> or
|
||||
B<signature_scheme>. B<algorithm>
|
||||
is one of B<RSA>, B<DSA> or B<ECDSA> and B<hash> is a supported algorithm
|
||||
OID short name such as B<SHA1>, B<SHA224>, B<SHA256>, B<SHA384> of B<SHA512>.
|
||||
Note: algorithm and hash names are case sensitive.
|
||||
B<signature_scheme> is one of the signature schemes defined in TLSv1.3,
|
||||
specified using the IETF name, e.g., B<ecdsa_secp256r1_sha256>, B<ed25519>,
|
||||
or B<rsa_pss_pss_sha256>.
|
||||
|
||||
If this option is not set then all signature algorithms supported by the
|
||||
OpenSSL library are permissible.
|
||||
|
||||
Note: algorithms which specify a PKCS#1 v1.5 signature scheme (either by
|
||||
using B<RSA> as the B<algorithm> or by using one of the B<rsa_pkcs1_*>
|
||||
identifiers) are ignored in TLSv1.3 and will not be negotiated.
|
||||
|
||||
=item B<-client_sigalgs>
|
||||
|
||||
This sets the supported signature algorithms associated with client
|
||||
authentication for TLSv1.2 and TLSv1.3.
|
||||
For servers the value is used in the
|
||||
B<signature_algorithms> field of a B<CertificateRequest> message.
|
||||
For clients it is
|
||||
used to determine which signature algorithm to use with the client certificate.
|
||||
If a server does not request a certificate this option has no effect.
|
||||
|
||||
The syntax of B<value> is identical to B<-sigalgs>. If not set then
|
||||
the value set for B<-sigalgs> will be used instead.
|
||||
|
||||
=item B<-groups>
|
||||
|
||||
This sets the supported groups. For clients, the groups are
|
||||
sent using the supported groups extension. For servers, it is used
|
||||
to determine which group to use. This setting affects groups used for
|
||||
signatures (in TLSv1.2 and earlier) and key exchange. The first group listed
|
||||
will also be used for the B<key_share> sent by a client in a TLSv1.3
|
||||
B<ClientHello>.
|
||||
|
||||
The B<value> argument is a colon separated list of groups. The group can be
|
||||
either the B<NIST> name (e.g. B<P-256>), some other commonly used name where
|
||||
applicable (e.g. B<X25519>, B<ffdhe2048>) or an OpenSSL OID name
|
||||
(e.g B<prime256v1>). Group names are case sensitive. The list should be in
|
||||
order of preference with the most preferred group first.
|
||||
|
||||
Currently supported groups for B<TLSv1.3> are B<P-256>, B<P-384>, B<P-521>,
|
||||
B<X25519>, B<X448>, B<ffdhe2048>, B<ffdhe3072>, B<ffdhe4096>, B<ffdhe6144>,
|
||||
B<ffdhe8192>.
|
||||
|
||||
=item B<-curves>
|
||||
|
||||
This is a synonym for the "-groups" command.
|
||||
|
||||
=item B<-named_curve>
|
||||
|
||||
This sets the temporary curve used for ephemeral ECDH modes. Only used by
|
||||
servers
|
||||
|
||||
The B<value> argument is a curve name or the special value B<auto> which
|
||||
picks an appropriate curve based on client and server preferences. The curve
|
||||
can be either the B<NIST> name (e.g. B<P-256>) or an OpenSSL OID name
|
||||
(e.g B<prime256v1>). Curve names are case sensitive.
|
||||
|
||||
=item B<-cipher>
|
||||
|
||||
Sets the TLSv1.2 and below ciphersuite list to B<value>. This list will be
|
||||
combined with any configured TLSv1.3 ciphersuites. Note: syntax checking
|
||||
of B<value> is currently not performed unless a B<SSL> or B<SSL_CTX> structure is
|
||||
associated with B<cctx>.
|
||||
|
||||
=item B<-ciphersuites>
|
||||
|
||||
Sets the available ciphersuites for TLSv1.3 to value. This is a simple colon
|
||||
(":") separated list of TLSv1.3 ciphersuite names in order of preference. This
|
||||
list will be combined any configured TLSv1.2 and below ciphersuites.
|
||||
See L<openssl-ciphers(1)> for more information.
|
||||
|
||||
|
||||
=item B<-cert>
|
||||
|
||||
Attempts to use the file B<value> as the certificate for the appropriate
|
||||
context. It currently uses SSL_CTX_use_certificate_chain_file() if an B<SSL_CTX>
|
||||
structure is set or SSL_use_certificate_file() with filetype PEM if an B<SSL>
|
||||
structure is set. This option is only supported if certificate operations
|
||||
are permitted.
|
||||
|
||||
=item B<-key>
|
||||
|
||||
Attempts to use the file B<value> as the private key for the appropriate
|
||||
context. This option is only supported if certificate operations
|
||||
are permitted. Note: if no B<-key> option is set then a private key is
|
||||
not loaded unless the flag B<SSL_CONF_FLAG_REQUIRE_PRIVATE> is set.
|
||||
|
||||
=item B<-dhparam>
|
||||
|
||||
Attempts to use the file B<value> as the set of temporary DH parameters for
|
||||
the appropriate context. This option is only supported if certificate
|
||||
operations are permitted.
|
||||
|
||||
=item B<-record_padding>
|
||||
|
||||
Attempts to pad TLSv1.3 records so that they are a multiple of B<value> in
|
||||
length on send. A B<value> of 0 or 1 turns off padding. Otherwise, the
|
||||
B<value> must be >1 or <=16384.
|
||||
|
||||
=item B<-no_renegotiation>
|
||||
|
||||
Disables all attempts at renegotiation in TLSv1.2 and earlier, same as setting
|
||||
B<SSL_OP_NO_RENEGOTIATION>.
|
||||
|
||||
=item B<-min_protocol>, B<-max_protocol>
|
||||
|
||||
Sets the minimum and maximum supported protocol.
|
||||
Currently supported protocol values are B<SSLv3>, B<TLSv1>,
|
||||
B<TLSv1.1>, B<TLSv1.2>, B<TLSv1.3> for TLS and B<DTLSv1>, B<DTLSv1.2> for DTLS,
|
||||
and B<None> for no limit.
|
||||
If either bound is not specified then only the other bound applies,
|
||||
if specified.
|
||||
To restrict the supported protocol versions use these commands rather
|
||||
than the deprecated alternative commands below.
|
||||
|
||||
=item B<-no_ssl3>, B<-no_tls1>, B<-no_tls1_1>, B<-no_tls1_2>, B<-no_tls1_3>
|
||||
|
||||
Disables protocol support for SSLv3, TLSv1.0, TLSv1.1, TLSv1.2 or TLSv1.3 by
|
||||
setting the corresponding options B<SSL_OP_NO_SSLv3>, B<SSL_OP_NO_TLSv1>,
|
||||
B<SSL_OP_NO_TLSv1_1>, B<SSL_OP_NO_TLSv1_2> and B<SSL_OP_NO_TLSv1_3>
|
||||
respectively. These options are deprecated, instead use B<-min_protocol> and
|
||||
B<-max_protocol>.
|
||||
|
||||
=item B<-bugs>
|
||||
|
||||
Various bug workarounds are set, same as setting B<SSL_OP_ALL>.
|
||||
|
||||
=item B<-no_comp>
|
||||
|
||||
Disables support for SSL/TLS compression, same as setting
|
||||
B<SSL_OP_NO_COMPRESSION>.
|
||||
As of OpenSSL 1.1.0, compression is off by default.
|
||||
|
||||
=item B<-comp>
|
||||
|
||||
Enables support for SSL/TLS compression, same as clearing
|
||||
@@ -178,12 +48,6 @@ B<SSL_OP_NO_COMPRESSION>.
|
||||
This command was introduced in OpenSSL 1.1.0.
|
||||
As of OpenSSL 1.1.0, compression is off by default.
|
||||
|
||||
=item B<-no_comp>
|
||||
|
||||
Disables support for SSL/TLS compression, same as setting
|
||||
B<SSL_OP_NO_COMPRESSION>.
|
||||
As of OpenSSL 1.1.0, compression is off by default.
|
||||
|
||||
=item B<-no_ticket>
|
||||
|
||||
Disables support for session tickets, same as setting B<SSL_OP_NO_TICKET>.
|
||||
@@ -194,28 +58,33 @@ Use server and not client preference order when determining which cipher suite,
|
||||
signature algorithm or elliptic curve to use for an incoming connection.
|
||||
Equivalent to B<SSL_OP_CIPHER_SERVER_PREFERENCE>. Only used by servers.
|
||||
|
||||
=item B<-prioritize_chacha>
|
||||
|
||||
Prioritize ChaCha ciphers when the client has a ChaCha20 cipher at the top of
|
||||
its preference list. This usually indicates a client without AES hardware
|
||||
acceleration (e.g. mobile) is in use. Equivalent to B<SSL_OP_PRIORITIZE_CHACHA>.
|
||||
Only used by servers. Requires B<-serverpref>.
|
||||
|
||||
=item B<-no_resumption_on_reneg>
|
||||
|
||||
set SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION flag. Only used by servers.
|
||||
|
||||
=item B<-legacyrenegotiation>
|
||||
|
||||
permits the use of unsafe legacy renegotiation. Equivalent to setting
|
||||
B<SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION>.
|
||||
|
||||
=item B<-no_renegotiation>
|
||||
|
||||
Disables all attempts at renegotiation in TLSv1.2 and earlier, same as setting
|
||||
B<SSL_OP_NO_RENEGOTIATION>.
|
||||
|
||||
=item B<-no_resumption_on_reneg>
|
||||
|
||||
set SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION flag. Only used by servers.
|
||||
|
||||
=item B<-legacy_server_connect>, B<-no_legacy_server_connect>
|
||||
|
||||
permits or prohibits the use of unsafe legacy renegotiation for OpenSSL
|
||||
clients only. Equivalent to setting or clearing B<SSL_OP_LEGACY_SERVER_CONNECT>.
|
||||
Set by default.
|
||||
|
||||
=item B<-prioritize_chacha>
|
||||
|
||||
Prioritize ChaCha ciphers when the client has a ChaCha20 cipher at the top of
|
||||
its preference list. This usually indicates a client without AES hardware
|
||||
acceleration (e.g. mobile) is in use. Equivalent to B<SSL_OP_PRIORITIZE_CHACHA>.
|
||||
Only used by servers. Requires B<-serverpref>.
|
||||
|
||||
=item B<-allow_no_dhe_kex>
|
||||
|
||||
In TLSv1.3 allow a non-(ec)dhe based key exchange mode on resumption. This means
|
||||
@@ -226,6 +95,148 @@ that there will be no forward secrecy for the resumed session.
|
||||
enables strict mode protocol handling. Equivalent to setting
|
||||
B<SSL_CERT_FLAG_TLS_STRICT>.
|
||||
|
||||
=item B<-sigalgs> I<algs>
|
||||
|
||||
This sets the supported signature algorithms for TLSv1.2 and TLSv1.3.
|
||||
For clients this value is used directly for the supported signature
|
||||
algorithms extension. For servers it is used to determine which signature
|
||||
algorithms to support.
|
||||
|
||||
The B<algs> argument should be a colon separated list of signature
|
||||
algorithms in order of decreasing preference of the form B<algorithm+hash>
|
||||
or B<signature_scheme>. B<algorithm> is one of B<RSA>, B<DSA> or B<ECDSA> and
|
||||
B<hash> is a supported algorithm OID short name such as B<SHA1>, B<SHA224>,
|
||||
B<SHA256>, B<SHA384> of B<SHA512>. Note: algorithm and hash names are case
|
||||
sensitive. B<signature_scheme> is one of the signature schemes defined in
|
||||
TLSv1.3, specified using the IETF name, e.g., B<ecdsa_secp256r1_sha256>,
|
||||
B<ed25519>, or B<rsa_pss_pss_sha256>.
|
||||
|
||||
If this option is not set then all signature algorithms supported by the
|
||||
OpenSSL library are permissible.
|
||||
|
||||
Note: algorithms which specify a PKCS#1 v1.5 signature scheme (either by
|
||||
using B<RSA> as the B<algorithm> or by using one of the B<rsa_pkcs1_*>
|
||||
identifiers) are ignored in TLSv1.3 and will not be negotiated.
|
||||
|
||||
=item B<-client_sigalgs> I<algs>
|
||||
|
||||
This sets the supported signature algorithms associated with client
|
||||
authentication for TLSv1.2 and TLSv1.3. For servers the B<algs> is used
|
||||
in the B<signature_algorithms> field of a B<CertificateRequest> message.
|
||||
For clients it is used to determine which signature algorithm to use with
|
||||
the client certificate. If a server does not request a certificate this
|
||||
option has no effect.
|
||||
|
||||
The syntax of B<algs> is identical to B<-sigalgs>. If not set, then the
|
||||
value set for B<-sigalgs> will be used instead.
|
||||
|
||||
=item B<-groups> I<groups>
|
||||
|
||||
This sets the supported groups. For clients, the groups are sent using
|
||||
the supported groups extension. For servers, it is used to determine which
|
||||
group to use. This setting affects groups used for signatures (in TLSv1.2
|
||||
and earlier) and key exchange. The first group listed will also be used
|
||||
for the B<key_share> sent by a client in a TLSv1.3 B<ClientHello>.
|
||||
|
||||
The B<groups> argument is a colon separated list of groups. The group can
|
||||
be either the B<NIST> name (e.g. B<P-256>), some other commonly used name
|
||||
where applicable (e.g. B<X25519>, B<ffdhe2048>) or an OpenSSL OID name
|
||||
(e.g B<prime256v1>). Group names are case sensitive. The list should be
|
||||
in order of preference with the most preferred group first.
|
||||
|
||||
Currently supported groups for B<TLSv1.3> are B<P-256>, B<P-384>, B<P-521>,
|
||||
B<X25519>, B<X448>, B<ffdhe2048>, B<ffdhe3072>, B<ffdhe4096>, B<ffdhe6144>,
|
||||
B<ffdhe8192>.
|
||||
|
||||
=item B<-curves> I<groups>
|
||||
|
||||
This is a synonym for the B<-groups> command.
|
||||
|
||||
=item B<-named_curve> I<curve>
|
||||
|
||||
This sets the temporary curve used for ephemeral ECDH modes. Only used
|
||||
by servers.
|
||||
|
||||
The B<groups> argument is a curve name or the special value B<auto> which
|
||||
picks an appropriate curve based on client and server preferences. The
|
||||
curve can be either the B<NIST> name (e.g. B<P-256>) or an OpenSSL OID name
|
||||
(e.g B<prime256v1>). Curve names are case sensitive.
|
||||
|
||||
=item B<-cipher> I<ciphers>
|
||||
|
||||
Sets the TLSv1.2 and below ciphersuite list to B<ciphers>. This list will be
|
||||
combined with any configured TLSv1.3 ciphersuites. Note: syntax checking
|
||||
of B<ciphers> is currently not performed unless a B<SSL> or B<SSL_CTX>
|
||||
structure is associated with B<ctx>.
|
||||
|
||||
=item B<-ciphersuites> I<1.3ciphers>
|
||||
|
||||
Sets the available ciphersuites for TLSv1.3 to value. This is a
|
||||
colon-separated list of TLSv1.3 ciphersuite names in order of preference. This
|
||||
list will be combined any configured TLSv1.2 and below ciphersuites.
|
||||
See L<openssl-ciphers(1)> for more information.
|
||||
|
||||
=item B<-min_protocol> I<minprot>, B<-max_protocol> I<maxprot>
|
||||
|
||||
Sets the minimum and maximum supported protocol. Currently supported
|
||||
protocol values are B<SSLv3>, B<TLSv1>, B<TLSv1.1>, B<TLSv1.2>, B<TLSv1.3>
|
||||
for TLS and B<DTLSv1>, B<DTLSv1.2> for DTLS, and B<None> for no limit.
|
||||
If either bound is not specified then only the other bound applies,
|
||||
if specified. To restrict the supported protocol versions use these
|
||||
commands rather than the deprecated alternative commands below.
|
||||
|
||||
=item B<-record_padding> I<padding>
|
||||
|
||||
Attempts to pad TLSv1.3 records so that they are a multiple of B<padding>
|
||||
in length on send. A B<padding> of 0 or 1 turns off padding. Otherwise,
|
||||
the B<padding> must be >1 or <=16384.
|
||||
|
||||
=item B<-debug_broken_protocol>
|
||||
|
||||
Ignored.
|
||||
|
||||
=item B<-no_middlebox>
|
||||
|
||||
Turn off "middlebox compatibility", as described below.
|
||||
|
||||
=back
|
||||
|
||||
=head2 Additional Options
|
||||
|
||||
The following options are accepted by SSL_CONF_cmd(), but are not
|
||||
processed by the OpenSSL commands.
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<-cert> I<file>
|
||||
|
||||
Attempts to use B<file> as the certificate for the appropriate context. It
|
||||
currently uses SSL_CTX_use_certificate_chain_file() if an B<SSL_CTX>
|
||||
structure is set or SSL_use_certificate_file() with filetype PEM if an
|
||||
B<SSL> structure is set. This option is only supported if certificate
|
||||
operations are permitted.
|
||||
|
||||
=item B<-key> I<file>
|
||||
|
||||
Attempts to use B<file> as the private key for the appropriate context. This
|
||||
option is only supported if certificate operations are permitted. Note:
|
||||
if no B<-key> option is set then a private key is not loaded unless the
|
||||
flag B<SSL_CONF_FLAG_REQUIRE_PRIVATE> is set.
|
||||
|
||||
=item B<-dhparam> I<file>
|
||||
|
||||
Attempts to use B<file> as the set of temporary DH parameters for
|
||||
the appropriate context. This option is only supported if certificate
|
||||
operations are permitted.
|
||||
|
||||
=item B<-no_ssl3>, B<-no_tls1>, B<-no_tls1_1>, B<-no_tls1_2>, B<-no_tls1_3>
|
||||
|
||||
Disables protocol support for SSLv3, TLSv1.0, TLSv1.1, TLSv1.2 or TLSv1.3 by
|
||||
setting the corresponding options B<SSL_OP_NO_SSLv3>, B<SSL_OP_NO_TLSv1>,
|
||||
B<SSL_OP_NO_TLSv1_1>, B<SSL_OP_NO_TLSv1_2> and B<SSL_OP_NO_TLSv1_3>
|
||||
respectively. These options are deprecated, use B<-min_protocol> and
|
||||
B<-max_protocol> instead.
|
||||
|
||||
=item B<-anti_replay>, B<-no_anti_replay>
|
||||
|
||||
Switches replay protection, on or off respectively. With replay protection on,
|
||||
@@ -242,13 +253,13 @@ required. Switching off anti-replay is equivalent to B<SSL_OP_NO_ANTI_REPLAY>.
|
||||
|
||||
=head1 SUPPORTED CONFIGURATION FILE COMMANDS
|
||||
|
||||
Currently supported B<cmd> names for configuration files (i.e. when the
|
||||
Currently supported B<option> names for configuration files (i.e., when the
|
||||
flag B<SSL_CONF_FLAG_FILE> is set) are listed below. All configuration file
|
||||
B<cmd> names are case insensitive so B<signaturealgorithms> is recognised
|
||||
B<option> names are case insensitive so B<signaturealgorithms> is recognised
|
||||
as well as B<SignatureAlgorithms>. Unless otherwise stated the B<value> names
|
||||
are also case insensitive.
|
||||
|
||||
Note: the command prefix (if set) alters the recognised B<cmd> values.
|
||||
Note: the command prefix (if set) alters the recognised B<option> values.
|
||||
|
||||
=over 4
|
||||
|
||||
@@ -257,12 +268,12 @@ Note: the command prefix (if set) alters the recognised B<cmd> values.
|
||||
Sets the ciphersuite list for TLSv1.2 and below to B<value>. This list will be
|
||||
combined with any configured TLSv1.3 ciphersuites. Note: syntax
|
||||
checking of B<value> is currently not performed unless an B<SSL> or B<SSL_CTX>
|
||||
structure is associated with B<cctx>.
|
||||
structure is associated with B<ctx>.
|
||||
|
||||
=item B<Ciphersuites>
|
||||
|
||||
Sets the available ciphersuites for TLSv1.3 to B<value>. This is a simple colon
|
||||
(":") separated list of TLSv1.3 ciphersuite names in order of preference. This
|
||||
Sets the available ciphersuites for TLSv1.3 to B<value>. This is a
|
||||
colon-separated list of TLSv1.3 ciphersuite names in order of preference. This
|
||||
list will be combined any configured TLSv1.2 and below ciphersuites.
|
||||
See L<openssl-ciphers(1)> for more information.
|
||||
|
||||
@@ -540,7 +551,7 @@ types:
|
||||
|
||||
=item B<SSL_CONF_TYPE_UNKNOWN>
|
||||
|
||||
The B<cmd> string is unrecognised, this return value can be use to flag
|
||||
The B<option> string is unrecognised, this return value can be use to flag
|
||||
syntax errors.
|
||||
|
||||
=item B<SSL_CONF_TYPE_STRING>
|
||||
@@ -580,7 +591,7 @@ SSLv3 is B<always> disabled and attempt to override this by the user are
|
||||
ignored.
|
||||
|
||||
By checking the return code of SSL_CONF_cmd() it is possible to query if a
|
||||
given B<cmd> is recognised, this is useful if SSL_CONF_cmd() values are
|
||||
given B<option> is recognised, this is useful if SSL_CONF_cmd() values are
|
||||
mixed with additional application specific operations.
|
||||
|
||||
For example an application might call SSL_CONF_cmd() and if it returns
|
||||
@@ -590,12 +601,12 @@ commands.
|
||||
Applications can also use SSL_CONF_cmd() to process command lines though the
|
||||
utility function SSL_CONF_cmd_argv() is normally used instead. One way
|
||||
to do this is to set the prefix to an appropriate value using
|
||||
SSL_CONF_CTX_set1_prefix(), pass the current argument to B<cmd> and the
|
||||
SSL_CONF_CTX_set1_prefix(), pass the current argument to B<option> and the
|
||||
following argument to B<value> (which may be NULL).
|
||||
|
||||
In this case if the return value is positive then it is used to skip that
|
||||
number of arguments as they have been processed by SSL_CONF_cmd(). If -2 is
|
||||
returned then B<cmd> is not recognised and application specific arguments
|
||||
returned then B<option> is not recognised and application specific arguments
|
||||
can be checked instead. If -3 is returned a required argument is missing
|
||||
and an error is indicated. If 0 is returned some other error occurred and
|
||||
this can be reported back to the user.
|
||||
@@ -608,17 +619,17 @@ pathname to an absolute pathname.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
SSL_CONF_cmd() returns 1 if the value of B<cmd> is recognised and B<value> is
|
||||
B<NOT> used and 2 if both B<cmd> and B<value> are used. In other words it
|
||||
SSL_CONF_cmd() returns 1 if the value of B<option> is recognised and B<value> is
|
||||
B<NOT> used and 2 if both B<option> and B<value> are used. In other words it
|
||||
returns the number of arguments processed. This is useful when processing
|
||||
command lines.
|
||||
|
||||
A return value of -2 means B<cmd> is not recognised.
|
||||
A return value of -2 means B<option> is not recognised.
|
||||
|
||||
A return value of -3 means B<cmd> is recognised and the command requires a
|
||||
A return value of -3 means B<option> is recognised and the command requires a
|
||||
value but B<value> is NULL.
|
||||
|
||||
A return code of 0 indicates that both B<cmd> and B<value> are valid but an
|
||||
A return code of 0 indicates that both B<option> and B<value> are valid but an
|
||||
error occurred attempting to perform the operation: for example due to an
|
||||
error in the syntax of B<value> in this case the error queue may provide
|
||||
additional information.
|
||||
|
||||
+30
-16
@@ -3,13 +3,14 @@
|
||||
=head1 NAME
|
||||
|
||||
TLSv1_2_method, TLSv1_2_server_method, TLSv1_2_client_method,
|
||||
SSL_CTX_new, SSL_CTX_up_ref, SSLv3_method, SSLv3_server_method,
|
||||
SSLv3_client_method, TLSv1_method, TLSv1_server_method, TLSv1_client_method,
|
||||
TLSv1_1_method, TLSv1_1_server_method, TLSv1_1_client_method, TLS_method,
|
||||
TLS_server_method, TLS_client_method, SSLv23_method, SSLv23_server_method,
|
||||
SSLv23_client_method, DTLS_method, DTLS_server_method, DTLS_client_method,
|
||||
DTLSv1_method, DTLSv1_server_method, DTLSv1_client_method,
|
||||
DTLSv1_2_method, DTLSv1_2_server_method, DTLSv1_2_client_method
|
||||
SSL_CTX_new, SSL_CTX_new_with_libctx, SSL_CTX_up_ref, SSLv3_method,
|
||||
SSLv3_server_method, SSLv3_client_method, TLSv1_method, TLSv1_server_method,
|
||||
TLSv1_client_method, TLSv1_1_method, TLSv1_1_server_method,
|
||||
TLSv1_1_client_method, TLS_method, TLS_server_method, TLS_client_method,
|
||||
SSLv23_method, SSLv23_server_method, SSLv23_client_method, DTLS_method,
|
||||
DTLS_server_method, DTLS_client_method, DTLSv1_method, DTLSv1_server_method,
|
||||
DTLSv1_client_method, DTLSv1_2_method, DTLSv1_2_server_method,
|
||||
DTLSv1_2_client_method
|
||||
- create a new SSL_CTX object as framework for TLS/SSL or DTLS enabled
|
||||
functions
|
||||
|
||||
@@ -17,6 +18,8 @@ functions
|
||||
|
||||
#include <openssl/ssl.h>
|
||||
|
||||
SSL_CTX *SSL_CTX_new_with_libctx(OPENSSL_CTX *libctx, const char *propq,
|
||||
const SSL_METHOD *method);
|
||||
SSL_CTX *SSL_CTX_new(const SSL_METHOD *method);
|
||||
int SSL_CTX_up_ref(SSL_CTX *ctx);
|
||||
|
||||
@@ -70,20 +73,29 @@ functions
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
SSL_CTX_new() creates a new B<SSL_CTX> object as framework to
|
||||
establish TLS/SSL or DTLS enabled connections. An B<SSL_CTX> object is
|
||||
reference counted. Creating an B<SSL_CTX> object for the first time increments
|
||||
the reference count. Freeing it (using SSL_CTX_free) decrements it. When the
|
||||
reference count drops to zero, any memory or resources allocated to the
|
||||
B<SSL_CTX> object are freed. SSL_CTX_up_ref() increments the reference count for
|
||||
an existing B<SSL_CTX> structure.
|
||||
SSL_CTX_new_with_libctx() creates a new B<SSL_CTX> object as a framework to
|
||||
establish TLS/SSL or DTLS enabled connections using the library context
|
||||
I<libctx> (see L<OPENSSL_CTX(3)>). Any cryptographic algorithms that are used
|
||||
by any B<SSL> objects created from this B<SSL_CTX> will be fetched from the
|
||||
I<libctx> using the property query string I<propq> (see
|
||||
L<provider(7)/Fetching algorithms>. Either or both the I<libctx> or I<propq>
|
||||
parameters may be NULL.
|
||||
|
||||
SSL_CTX_new() does the same as SSL_CTX_new_with_libctx() except that the default
|
||||
library context is used and no property query string is specified.
|
||||
|
||||
An B<SSL_CTX> object is reference counted. Creating an B<SSL_CTX> object for the
|
||||
first time increments the reference count. Freeing the B<SSL_CTX> (using
|
||||
SSL_CTX_free) decrements it. When the reference count drops to zero, any memory
|
||||
or resources allocated to the B<SSL_CTX> object are freed. SSL_CTX_up_ref()
|
||||
increments the reference count for an existing B<SSL_CTX> structure.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
The SSL_CTX object uses B<method> as connection method.
|
||||
The SSL_CTX object uses I<method> as the connection method.
|
||||
The methods exist in a generic type (for client and server use), a server only
|
||||
type, and a client only type.
|
||||
B<method> can be of the following types:
|
||||
B<method> can be one of the following types:
|
||||
|
||||
=over 4
|
||||
|
||||
@@ -212,6 +224,8 @@ and TLS_client_method() functions were added in OpenSSL 1.1.0.
|
||||
|
||||
All version-specific methods were deprecated in OpenSSL 1.1.0.
|
||||
|
||||
SSL_CTX_new_with_libctx() was added in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -69,7 +69,7 @@ sufficient to allow the connection to continue.
|
||||
The TLS handshake is aborted if the verification mode is not B<SSL_VERIFY_NONE>
|
||||
and the callback returns a non-positive result.
|
||||
|
||||
An arbitrary callback context argument, B<arg>, can be passed in when setting
|
||||
An arbitrary callback data argument, B<arg>, can be passed in when setting
|
||||
the callback.
|
||||
This will be passed to the callback whenever it is invoked.
|
||||
Ownership of this context remains with the caller.
|
||||
|
||||
@@ -11,7 +11,7 @@ SSL_set_tlsext_host_name - handle server name indication (SNI)
|
||||
#include <openssl/ssl.h>
|
||||
|
||||
long SSL_CTX_set_tlsext_servername_callback(SSL_CTX *ctx,
|
||||
int (*cb)(SSL *, int *, void *));
|
||||
int (*cb)(SSL *s, int *al, void *arg));
|
||||
long SSL_CTX_set_tlsext_servername_arg(SSL_CTX *ctx, void *arg);
|
||||
|
||||
const char *SSL_get_servername(const SSL *s, const int type);
|
||||
@@ -21,21 +21,106 @@ SSL_set_tlsext_host_name - handle server name indication (SNI)
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
The functionality provided by the servername callback is superseded by the
|
||||
ClientHello callback, which can be set using SSL_CTX_set_client_hello_cb().
|
||||
The servername callback is retained for historical compatibility.
|
||||
The functionality provided by the servername callback is mostly superseded by
|
||||
the ClientHello callback, which can be set using SSL_CTX_set_client_hello_cb().
|
||||
However, even where the ClientHello callback is used, the servername callback is
|
||||
still necessary in order to acknowledge the servername requested by the client.
|
||||
|
||||
SSL_CTX_set_tlsext_servername_callback() sets the application callback B<cb>
|
||||
used by a server to perform any actions or configuration required based on
|
||||
the servername extension received in the incoming connection. When B<cb>
|
||||
is NULL, SNI is not used. The B<arg> value is a pointer which is passed to
|
||||
the application callback.
|
||||
is NULL, SNI is not used.
|
||||
|
||||
The servername callback should return one of the following values:
|
||||
|
||||
=over 4
|
||||
|
||||
=item SSL_TLSEXT_ERR_OK
|
||||
|
||||
This is used to indicate that the servername requested by the client has been
|
||||
accepted. Typically a server will call SSL_set_SSL_CTX() in the callback to set
|
||||
up a different configuration for the selected servername in this case.
|
||||
|
||||
=item SSL_TLSEXT_ERR_ALERT_FATAL
|
||||
|
||||
In this case the servername requested by the client is not accepted and the
|
||||
handshake will be aborted. The value of the alert to be used should be stored in
|
||||
the location pointed to by the B<al> parameter to the callback. By default this
|
||||
value is initialised to SSL_AD_UNRECOGNIZED_NAME.
|
||||
|
||||
=item SSL_TLSEXT_ERR_ALERT_WARNING
|
||||
|
||||
If this value is returned then the servername is not accepted by the server.
|
||||
However the handshake will continue and send a warning alert instead. The value
|
||||
of the alert should be stored in the location pointed to by the B<al> parameter
|
||||
as for SSL_TLSEXT_ERR_ALERT_FATAL above. Note that TLSv1.3 does not support
|
||||
warning alerts, so if TLSv1.3 has been negotiated then this return value is
|
||||
treated the same way as SSL_TLSEXT_ERR_NOACK.
|
||||
|
||||
=item SSL_TLSEXT_ERR_NOACK
|
||||
|
||||
This return value indicates that the servername is not accepted by the server.
|
||||
No alerts are sent and the server will not acknowledge the requested servername.
|
||||
|
||||
=back
|
||||
|
||||
SSL_CTX_set_tlsext_servername_arg() sets a context-specific argument to be
|
||||
passed into the callback for this B<SSL_CTX>.
|
||||
passed into the callback (via the B<arg> parameter) for this B<SSL_CTX>.
|
||||
|
||||
SSL_get_servername() returns a servername extension value of the specified
|
||||
type if provided in the Client Hello or NULL.
|
||||
The behaviour of SSL_get_servername() depends on a number of different factors.
|
||||
In particular note that in TLSv1.3 the servername is negotiated in every
|
||||
handshake. In TLSv1.2 the servername is only negotiated on initial handshakes
|
||||
and not on resumption handshakes.
|
||||
|
||||
=over 4
|
||||
|
||||
=item On the client, before the handshake
|
||||
|
||||
If a servername has been set via a call to SSL_set_tlsext_host_name() then it
|
||||
will return that servername.
|
||||
|
||||
If one has not been set, but a TLSv1.2 resumption is being attempted and the
|
||||
session from the original handshake had a servername accepted by the server then
|
||||
it will return that servername.
|
||||
|
||||
Otherwise it returns NULL.
|
||||
|
||||
=item On the client, during or after the handshake and a TLSv1.2 (or below)
|
||||
resumption occurred
|
||||
|
||||
If the session from the orignal handshake had a servername accepted by the
|
||||
server then it will return that servername.
|
||||
|
||||
Otherwise it returns the servername set via SSL_set_tlsext_host_name() or NULL
|
||||
if it was not called.
|
||||
|
||||
=item On the client, during or after the handshake and a TLSv1.2 (or below)
|
||||
resumption did not occur
|
||||
|
||||
It will return the servername set via SSL_set_tlsext_host_name() or NULL if it
|
||||
was not called.
|
||||
|
||||
=item On the server, before the handshake
|
||||
|
||||
The function will always return NULL before the handshake
|
||||
|
||||
=item On the server, after the servername extension has been processed and a
|
||||
TLSv1.2 (or below) resumption occurred
|
||||
|
||||
If a servername was accepted by the server in the original handshake then it
|
||||
will return that servername, or NULL otherwise.
|
||||
|
||||
=item On the server, after the servername extension has been processed and a
|
||||
TLSv1.2 (or below) resumption did not occur
|
||||
|
||||
The function will return the servername requested by the client in this
|
||||
handshake or NULL if none was requested.
|
||||
|
||||
=back
|
||||
|
||||
Note that the ClientHello callback occurs before a servername extension from the
|
||||
client is processed. The servername, certificate and ALPN callbacks occur after
|
||||
a servername extension from the client is processed.
|
||||
|
||||
SSL_get_servername_type() returns the servername type or -1 if no servername
|
||||
is present. Currently the only supported type (defined in RFC3546) is
|
||||
@@ -65,6 +150,23 @@ SSL_set_tlsext_host_name() returns 1 on success, 0 in case of error.
|
||||
L<ssl(7)>, L<SSL_CTX_set_alpn_select_cb(3)>,
|
||||
L<SSL_get0_alpn_selected(3)>, L<SSL_CTX_set_client_hello_cb(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
SSL_get_servername() historically provided some unexpected results in certain
|
||||
corner cases. This has been fixed from OpenSSL 1.1.1e.
|
||||
|
||||
Prior to 1.1.1e, when the client requested a servername in an initial TLSv1.2
|
||||
handshake, the server accepted it, and then the client successfully resumed but
|
||||
set a different explict servername in the second handshake then when called by
|
||||
the client it returned the servername from the second handshake. This has now
|
||||
been changed to return the servername requested in the original handshake.
|
||||
|
||||
Also prior to 1.1.1e, if the client sent a servername in the first handshake but
|
||||
the server did not accept it, and then a second handshake occured where TLSv1.2
|
||||
resumption was successful then when called by the server it returned the
|
||||
servername requested in the original handshake. This has now been changed to
|
||||
NULL.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -2,20 +2,31 @@
|
||||
|
||||
=head1 NAME
|
||||
|
||||
SSL_CTX_set_tlsext_ticket_key_cb - set a callback for session ticket processing
|
||||
SSL_CTX_set_tlsext_ticket_key_evp_cb,
|
||||
SSL_CTX_set_tlsext_ticket_key_cb
|
||||
- set a callback for session ticket processing
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
#include <openssl/tls1.h>
|
||||
|
||||
long SSL_CTX_set_tlsext_ticket_key_cb(SSL_CTX sslctx,
|
||||
int SSL_CTX_set_tlsext_ticket_key_evp_cb(SSL_CTX sslctx,
|
||||
int (*cb)(SSL *s, unsigned char key_name[16],
|
||||
unsigned char iv[EVP_MAX_IV_LENGTH],
|
||||
EVP_CIPHER_CTX *ctx, EVP_MAC_CTX *hctx, int enc));
|
||||
|
||||
Deprecated since OpenSSL 3.0, can be hidden entirely by defining
|
||||
B<OPENSSL_API_COMPAT> with a suitable version value, see
|
||||
L<openssl_user_macros(7)>:
|
||||
|
||||
int SSL_CTX_set_tlsext_ticket_key_cb(SSL_CTX sslctx,
|
||||
int (*cb)(SSL *s, unsigned char key_name[16],
|
||||
unsigned char iv[EVP_MAX_IV_LENGTH],
|
||||
EVP_CIPHER_CTX *ctx, HMAC_CTX *hctx, int enc));
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
SSL_CTX_set_tlsext_ticket_key_cb() sets a callback function I<cb> for handling
|
||||
SSL_CTX_set_tlsext_ticket_key_evp_cb() sets a callback function I<cb> for handling
|
||||
session tickets for the ssl context I<sslctx>. Session tickets, defined in
|
||||
RFC5077 provide an enhanced session resumption capability where the server
|
||||
implementation is not required to maintain per session state. It only applies
|
||||
@@ -38,7 +49,8 @@ ticket information or it starts a full TLS handshake to create a new session
|
||||
ticket.
|
||||
|
||||
Before the callback function is started I<ctx> and I<hctx> have been
|
||||
initialised with L<EVP_CIPHER_CTX_reset(3)> and L<HMAC_CTX_reset(3)> respectively.
|
||||
initialised with L<EVP_CIPHER_CTX_reset(3)> and L<EVP_MAC_CTX_new(3)>
|
||||
respectively.
|
||||
|
||||
For new sessions tickets, when the client doesn't present a session ticket, or
|
||||
an attempted retrieval of the ticket failed, or a renew option was indicated,
|
||||
@@ -53,8 +65,9 @@ maximum IV length is B<EVP_MAX_IV_LENGTH> bytes defined in B<evp.h>.
|
||||
|
||||
The initialization vector I<iv> should be a random value. The cipher context
|
||||
I<ctx> should use the initialisation vector I<iv>. The cipher context can be
|
||||
set using L<EVP_EncryptInit_ex(3)>. The hmac context can be set using
|
||||
L<HMAC_Init_ex(3)>.
|
||||
set using L<EVP_EncryptInit_ex(3)>. The hmac context and digest can be set using
|
||||
L<EVP_MAC_CTX_set_params(3)> with the B<OSSL_MAC_PARAM_KEY> and
|
||||
B<OSSL_MAC_PARAM_DIGEST> parameters respectively.
|
||||
|
||||
When the client presents a session ticket, the callback function with be called
|
||||
with I<enc> set to 0 indicating that the I<cb> function should retrieve a set
|
||||
@@ -62,8 +75,9 @@ of parameters. In this case I<name> and I<iv> have already been parsed out of
|
||||
the session ticket. The OpenSSL library expects that the I<name> will be used
|
||||
to retrieve a cryptographic parameters and that the cryptographic context
|
||||
I<ctx> will be set with the retrieved parameters and the initialization vector
|
||||
I<iv>. using a function like L<EVP_DecryptInit_ex(3)>. The I<hctx> needs to be
|
||||
set using L<HMAC_Init_ex(3)>.
|
||||
I<iv>. using a function like L<EVP_DecryptInit_ex(3)>. The key material and
|
||||
digest for I<hctx> need to be set using L<EVP_MAC_CTX_set_params(3)> with the
|
||||
B<OSSL_MAC_PARAM_KEY> and B<OSSL_MAC_PARAM_DIGEST> parameters respectively.
|
||||
|
||||
If the I<name> is still valid but a renewal of the ticket is required the
|
||||
callback function should return 2. The library will call the callback again
|
||||
@@ -102,6 +116,14 @@ This indicates an error.
|
||||
|
||||
=back
|
||||
|
||||
The SSL_CTX_set_tlsext_ticket_key_cb() function is identical to
|
||||
SSL_CTX_set_tlsext_ticket_key_evp_cb() except that it takes a deprecated
|
||||
HMAC_CTX pointer instead of an EVP_MAC_CTX one.
|
||||
Before this callback function is started I<hctx> will have been
|
||||
initialised with L<EVP_MAC_CTX_new(3)> and the digest set with
|
||||
L<EVP_MAC_CTX_set_params(3)>.
|
||||
The I<hctx> key material can be set using L<HMAC_Init_ex(3)>.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
Session resumption shortcuts the TLS so that the client certificate
|
||||
@@ -129,13 +151,15 @@ returns 0 to indicate the callback function was set.
|
||||
|
||||
Reference Implementation:
|
||||
|
||||
SSL_CTX_set_tlsext_ticket_key_cb(SSL, ssl_tlsext_ticket_key_cb);
|
||||
SSL_CTX_set_tlsext_ticket_key_evp_cb(SSL, ssl_tlsext_ticket_key_cb);
|
||||
...
|
||||
|
||||
static int ssl_tlsext_ticket_key_cb(SSL *s, unsigned char key_name[16],
|
||||
unsigned char *iv, EVP_CIPHER_CTX *ctx,
|
||||
HMAC_CTX *hctx, int enc)
|
||||
EVP_MAC_CTX *hctx, int enc)
|
||||
{
|
||||
OSSL_PARAM params[3];
|
||||
|
||||
if (enc) { /* create new session */
|
||||
if (RAND_bytes(iv, EVP_MAX_IV_LENGTH) <= 0)
|
||||
return -1; /* insufficient random */
|
||||
@@ -155,7 +179,13 @@ Reference Implementation:
|
||||
memcpy(key_name, key->name, 16);
|
||||
|
||||
EVP_EncryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, key->aes_key, iv);
|
||||
HMAC_Init_ex(&hctx, key->hmac_key, 16, EVP_sha256(), NULL);
|
||||
|
||||
params[0] = OSSL_PARAM_construct_octet_string(OSSL_MAC_PARAM_KEY,
|
||||
key->hmac_key, 16);
|
||||
params[1] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST,
|
||||
"sha256", 0);
|
||||
params[2] = OSSL_PARAM_construct_end();
|
||||
EVP_MAC_CTX_set_params(hctx, params);
|
||||
|
||||
return 1;
|
||||
|
||||
@@ -165,7 +195,13 @@ Reference Implementation:
|
||||
if (key == NULL || key->expire < now())
|
||||
return 0;
|
||||
|
||||
HMAC_Init_ex(&hctx, key->hmac_key, 16, EVP_sha256(), NULL);
|
||||
params[0] = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_KEY,
|
||||
key->hmac_key, 16);
|
||||
params[1] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST,
|
||||
"sha256", 0);
|
||||
params[2] = OSSL_PARAM_construct_end();
|
||||
EVP_MAC_CTX_set_params(hctx, params);
|
||||
|
||||
EVP_DecryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, key->aes_key, iv);
|
||||
|
||||
if (key->expire < now() - RENEW_TIME) {
|
||||
@@ -188,6 +224,13 @@ L<SSL_CTX_sess_number(3)>,
|
||||
L<SSL_CTX_sess_set_get_cb(3)>,
|
||||
L<SSL_CTX_set_session_id_context(3)>,
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
The SSL_CTX_set_tlsext_ticket_key_cb() function was deprecated in OpenSSL 3.0.
|
||||
|
||||
The SSL_CTX_set_tlsext_ticket_key_evp_cb() function was introduced in
|
||||
OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -24,7 +24,10 @@ SSL_SESSION_set1_alpn_selected
|
||||
=head1 DESCRIPTION
|
||||
|
||||
SSL_SESSION_get0_hostname() retrieves the SNI value that was sent by the
|
||||
client when the session was created, or NULL if no value was sent.
|
||||
client when the session was created if it was accepted by the server and TLSv1.2
|
||||
or below was negotiated. Otherwise NULL is returned. Note that in TLSv1.3 the
|
||||
SNI hostname is negotiated with each handshake including resumption handshakes
|
||||
and is therefore never associated with the session.
|
||||
|
||||
The value returned is a pointer to memory maintained within B<s> and
|
||||
should not be free'd.
|
||||
|
||||
@@ -116,14 +116,14 @@ hashed names for all files with F<.pem> suffix in a given directory.
|
||||
|
||||
B<X509_LOOKUP_store> is a method that allows access to any store of
|
||||
certificates and CRLs through any loader supported by
|
||||
L<OSSL_STORE(3)>.
|
||||
L<ossl_store(7)>.
|
||||
It works with the help of URIs, which can be direct references to
|
||||
certificates or CRLs, but can also be references to catalogues of such
|
||||
objects (that behave like directories).
|
||||
|
||||
This method overlaps the L</File Method> and L</Hashed Directory Method>
|
||||
because of the 'file:' scheme loader.
|
||||
It does no caching of its own, but can use a caching L<OSSL_STORE(3)>
|
||||
It does no caching of its own, but can use a caching L<ossl_store(7)>
|
||||
loader, and therefore depends on the loader's capability.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
@@ -141,7 +141,7 @@ L<X509_STORE_load_locations(3)>,
|
||||
L<X509_store_add_lookup(3)>,
|
||||
L<SSL_CTX_load_verify_locations(3)>,
|
||||
L<X509_LOOKUP_meth_new(3)>,
|
||||
L<OSSL_STORE(3)>
|
||||
L<ossl_store(7)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
|
||||
@@ -97,160 +97,163 @@ error codes are defined but currently never returned: these are described as
|
||||
|
||||
=item B<X509_V_OK: ok>
|
||||
|
||||
the operation was successful.
|
||||
The operation was successful.
|
||||
|
||||
=item B<X509_V_ERR_UNSPECIFIED: unspecified certificate verification error>
|
||||
|
||||
Unspecified error; should not happen.
|
||||
|
||||
=item B<X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT: unable to get issuer certificate>
|
||||
|
||||
the issuer certificate of a locally looked up certificate could not be found.
|
||||
The issuer certificate of a locally looked up certificate could not be found.
|
||||
This normally means the list of trusted certificates is not complete.
|
||||
|
||||
=item B<X509_V_ERR_UNABLE_TO_GET_CRL: unable to get certificate CRL>
|
||||
|
||||
the CRL of a certificate could not be found.
|
||||
The CRL of a certificate could not be found.
|
||||
|
||||
=item B<X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE: unable to decrypt certificate's signature>
|
||||
|
||||
the certificate signature could not be decrypted. This means that the actual
|
||||
The certificate signature could not be decrypted. This means that the actual
|
||||
signature value could not be determined rather than it not matching the
|
||||
expected value, this is only meaningful for RSA keys.
|
||||
|
||||
=item B<X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE: unable to decrypt CRL's signature>
|
||||
|
||||
the CRL signature could not be decrypted: this means that the actual signature
|
||||
The CRL signature could not be decrypted: this means that the actual signature
|
||||
value could not be determined rather than it not matching the expected value.
|
||||
Unused.
|
||||
|
||||
=item B<X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY: unable to decode issuer public key>
|
||||
|
||||
the public key in the certificate SubjectPublicKeyInfo could not be read.
|
||||
The public key in the certificate C<SubjectPublicKeyInfo> field could
|
||||
not be read.
|
||||
|
||||
=item B<X509_V_ERR_CERT_SIGNATURE_FAILURE: certificate signature failure>
|
||||
|
||||
the signature of the certificate is invalid.
|
||||
The signature of the certificate is invalid.
|
||||
|
||||
=item B<X509_V_ERR_CRL_SIGNATURE_FAILURE: CRL signature failure>
|
||||
|
||||
the signature of the certificate is invalid.
|
||||
The signature of the certificate is invalid.
|
||||
|
||||
=item B<X509_V_ERR_CERT_NOT_YET_VALID: certificate is not yet valid>
|
||||
|
||||
the certificate is not yet valid: the notBefore date is after the current time.
|
||||
The certificate is not yet valid: the C<notBefore> date is after the
|
||||
current time.
|
||||
|
||||
=item B<X509_V_ERR_CERT_HAS_EXPIRED: certificate has expired>
|
||||
|
||||
the certificate has expired: that is the notAfter date is before the current time.
|
||||
The certificate has expired: that is the C<notAfter> date is before the
|
||||
current time.
|
||||
|
||||
=item B<X509_V_ERR_CRL_NOT_YET_VALID: CRL is not yet valid>
|
||||
|
||||
the CRL is not yet valid.
|
||||
The CRL is not yet valid.
|
||||
|
||||
=item B<X509_V_ERR_CRL_HAS_EXPIRED: CRL has expired>
|
||||
|
||||
the CRL has expired.
|
||||
The CRL has expired.
|
||||
|
||||
=item B<X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD: format error in certificate's notBefore field>
|
||||
|
||||
the certificate notBefore field contains an invalid time.
|
||||
The certificate B<notBefore> field contains an invalid time.
|
||||
|
||||
=item B<X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD: format error in certificate's notAfter field>
|
||||
|
||||
the certificate notAfter field contains an invalid time.
|
||||
The certificate B<notAfter> field contains an invalid time.
|
||||
|
||||
=item B<X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD: format error in CRL's lastUpdate field>
|
||||
|
||||
the CRL lastUpdate field contains an invalid time.
|
||||
The CRL B<lastUpdate> field contains an invalid time.
|
||||
|
||||
=item B<X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD: format error in CRL's nextUpdate field>
|
||||
|
||||
the CRL nextUpdate field contains an invalid time.
|
||||
The CRL B<nextUpdate> field contains an invalid time.
|
||||
|
||||
=item B<X509_V_ERR_OUT_OF_MEM: out of memory>
|
||||
|
||||
an error occurred trying to allocate memory. This should never happen.
|
||||
An error occurred trying to allocate memory.
|
||||
|
||||
=item B<X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: self signed certificate>
|
||||
|
||||
the passed certificate is self signed and the same certificate cannot be found
|
||||
The passed certificate is self-signed and the same certificate cannot be found
|
||||
in the list of trusted certificates.
|
||||
|
||||
=item B<X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: self signed certificate in certificate chain>
|
||||
|
||||
the certificate chain could be built up using the untrusted certificates but
|
||||
The certificate chain could be built up using the untrusted certificates but
|
||||
the root could not be found locally.
|
||||
|
||||
=item B<X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY: unable to get local issuer certificate>
|
||||
|
||||
the issuer certificate could not be found: this occurs if the issuer certificate
|
||||
The issuer certificate could not be found: this occurs if the issuer certificate
|
||||
of an untrusted certificate cannot be found.
|
||||
|
||||
=item B<X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE: unable to verify the first certificate>
|
||||
|
||||
no signatures could be verified because the chain contains only one certificate
|
||||
No signatures could be verified because the chain contains only one certificate
|
||||
and it is not self signed.
|
||||
|
||||
=item B<X509_V_ERR_CERT_CHAIN_TOO_LONG: certificate chain too long>
|
||||
|
||||
the certificate chain length is greater than the supplied maximum depth. Unused.
|
||||
The certificate chain length is greater than the supplied maximum depth. Unused.
|
||||
|
||||
=item B<X509_V_ERR_CERT_REVOKED: certificate revoked>
|
||||
|
||||
the certificate has been revoked.
|
||||
The certificate has been revoked.
|
||||
|
||||
=item B<X509_V_ERR_INVALID_CA: invalid CA certificate>
|
||||
|
||||
a CA certificate is invalid. Either it is not a CA or its extensions are not
|
||||
A CA certificate is invalid. Either it is not a CA or its extensions are not
|
||||
consistent with the supplied purpose.
|
||||
|
||||
=item B<X509_V_ERR_PATH_LENGTH_EXCEEDED: path length constraint exceeded>
|
||||
|
||||
the basicConstraints path-length parameter has been exceeded.
|
||||
The basicConstraints path-length parameter has been exceeded.
|
||||
|
||||
=item B<X509_V_ERR_INVALID_PURPOSE: unsupported certificate purpose>
|
||||
|
||||
the supplied certificate cannot be used for the specified purpose.
|
||||
The supplied certificate cannot be used for the specified purpose.
|
||||
|
||||
=item B<X509_V_ERR_CERT_UNTRUSTED: certificate not trusted>
|
||||
|
||||
the root CA is not marked as trusted for the specified purpose.
|
||||
The root CA is not marked as trusted for the specified purpose.
|
||||
|
||||
=item B<X509_V_ERR_CERT_REJECTED: certificate rejected>
|
||||
|
||||
the root CA is marked to reject the specified purpose.
|
||||
The root CA is marked to reject the specified purpose.
|
||||
|
||||
=item B<X509_V_ERR_SUBJECT_ISSUER_MISMATCH: subject issuer mismatch>
|
||||
|
||||
the current candidate issuer certificate was rejected because its subject name
|
||||
did not match the issuer name of the current certificate. This is only set
|
||||
if issuer check debugging is enabled it is used for status notification and
|
||||
is B<not> in itself an error.
|
||||
The current candidate issuer certificate was rejected because its subject name
|
||||
did not match the issuer name of the current certificate.
|
||||
|
||||
=item B<X509_V_ERR_AKID_SKID_MISMATCH: authority and subject key identifier mismatch>
|
||||
|
||||
the current candidate issuer certificate was rejected because its subject key
|
||||
The current candidate issuer certificate was rejected because its subject key
|
||||
identifier was present and did not match the authority key identifier current
|
||||
certificate. This is only set if issuer check debugging is enabled it is used
|
||||
for status notification and is B<not> in itself an error.
|
||||
certificate.
|
||||
Not used as of OpenSSL 1.1.0.
|
||||
|
||||
=item B<X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH: authority and issuer serial number mismatch>
|
||||
|
||||
the current candidate issuer certificate was rejected because its issuer name
|
||||
The current candidate issuer certificate was rejected because its issuer name
|
||||
and serial number was present and did not match the authority key identifier of
|
||||
the current certificate. This is only set if issuer check debugging is enabled
|
||||
it is used for status notification and is B<not> in itself an error.
|
||||
the current certificate.
|
||||
Not used as of OpenSSL 1.1.0.
|
||||
|
||||
=item B<X509_V_ERR_KEYUSAGE_NO_CERTSIGN:key usage does not include certificate signing>
|
||||
|
||||
the current candidate issuer certificate was rejected because its keyUsage
|
||||
extension does not permit certificate signing. This is only set if issuer check
|
||||
debugging is enabled it is used for status notification and is B<not> in itself
|
||||
an error.
|
||||
The current candidate issuer certificate was rejected because its B<keyUsage>
|
||||
extension does not permit certificate signing.
|
||||
Not used as of OpenSSL 1.1.0.
|
||||
|
||||
=item B<X509_V_ERR_INVALID_EXTENSION: invalid or inconsistent certificate extension>
|
||||
|
||||
A certificate extension had an invalid value (for example an incorrect
|
||||
encoding) or some value inconsistent with other extensions.
|
||||
|
||||
|
||||
=item B<X509_V_ERR_INVALID_POLICY_EXTENSION: invalid or inconsistent certificate policy extension>
|
||||
|
||||
A certificate policies extension had an invalid value (for example an incorrect
|
||||
@@ -301,8 +304,121 @@ happen if extended CRL checking is enabled.
|
||||
|
||||
=item B<X509_V_ERR_APPLICATION_VERIFICATION: application verification failure>
|
||||
|
||||
an application specific error. This will never be returned unless explicitly
|
||||
set by an application.
|
||||
An application specific error. This will never be returned unless explicitly
|
||||
set by an application callback.
|
||||
|
||||
=item B<X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER: unable to get CRL issuer certificate>
|
||||
|
||||
Unable to get CRL issuer certificate.
|
||||
|
||||
=item B<X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION: unhandled critical extension>
|
||||
|
||||
Unhandled critical extension.
|
||||
|
||||
=item B<X509_V_ERR_KEYUSAGE_NO_CRL_SIGN: key usage does not include CRL signing>
|
||||
|
||||
Key usage does not include CRL signing.
|
||||
|
||||
=item B<X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION: unhandled critical CRL extension>
|
||||
|
||||
Unhandled critical CRL extension.
|
||||
|
||||
=item B<X509_V_ERR_INVALID_NON_CA: invalid non-CA certificate (has CA markings)>
|
||||
|
||||
Invalid non-CA certificate has CA markings.
|
||||
|
||||
=item B<X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED: proxy path length contraint exceeded>
|
||||
|
||||
Proxy path length constraint exceeded.
|
||||
|
||||
=item B<X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE: key usage does not include digital signature>
|
||||
|
||||
Key usage does not include digital signature, and therefore cannot sign
|
||||
certificates.
|
||||
|
||||
=item B<X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED: proxy certificates not allowed, please set the appropriate flag>
|
||||
|
||||
Proxy certificates not allowed unless the B<-allow_proxy_certs> option is used.
|
||||
|
||||
=item B<X509_V_ERR_UNNESTED_RESOURCE: RFC 3779 resource not subset of parent's resrouces>
|
||||
|
||||
See RFC 3779 for details.
|
||||
|
||||
=item B<X509_V_ERR_UNSUPPORTED_NAME_SYNTAX: unsupported or invalid name syntax>
|
||||
|
||||
Unsupported or invalid name syntax.
|
||||
|
||||
=item B<X509_V_ERR_PATH_LOOP: path loop>
|
||||
|
||||
Path loop.
|
||||
|
||||
=item B<X509_V_ERR_HOSTNAME_MISMATCH: hostname mismatch>
|
||||
|
||||
Hostname mismatch.
|
||||
|
||||
=item B<X509_V_ERR_EMAIL_MISMATCH: email address mismatch>
|
||||
|
||||
Email address mismatch.
|
||||
|
||||
=item B<X509_V_ERR_IP_ADDRESS_MISMATCH: IP address mismatch>
|
||||
|
||||
IP address mismatch.
|
||||
|
||||
=item B<X509_V_ERR_DANE_NO_MATCH: no matching DANE TLSA records>
|
||||
|
||||
DANE TLSA authentication is enabled, but no TLSA records matched the
|
||||
certificate chain.
|
||||
This error is only possible in L<openssl-s_client(1)>.
|
||||
|
||||
=item B<X509_V_ERR_EE_KEY_TOO_SMALL: EE certificate key too weak>
|
||||
|
||||
EE certificate key too weak.
|
||||
|
||||
=item B<X509_ERR_CA_KEY_TOO_SMALL: CA certificate key too weak>
|
||||
|
||||
CA certificate key too weak.
|
||||
|
||||
=item B<X509_ERR_CA_MD_TOO_WEAK: CA signature digest algorithm too weak>
|
||||
|
||||
CA signature digest algorithm too weak.
|
||||
|
||||
=item B<X509_V_ERR_INVALID_CALL: invalid certificate verification context>
|
||||
|
||||
invalid certificate verification context.
|
||||
|
||||
=item B<X509_V_ERR_STORE_LOOKUP: issuer certificate lookup error>
|
||||
|
||||
Issuer certificate lookup error.
|
||||
|
||||
=item B<X509_V_ERR_NO_VALID_SCTS: certificate transparency required, but no valid SCTs found>
|
||||
|
||||
Certificate Transparency required, but no valid SCTs found.
|
||||
|
||||
=item B<X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION: proxy subject name violation>
|
||||
|
||||
Proxy subject name violation.
|
||||
|
||||
=item B<X509_V_ERR_OCSP_VERIFY_NEEDED: OCSP verification needed>
|
||||
|
||||
Returned by the verify callback to indicate an OCSP verification is needed.
|
||||
|
||||
=item B<X509_V_ERR_OCSP_VERIFY_FAILED: OCSP verification failed>
|
||||
|
||||
Returned by the verify callback to indicate OCSP verification failed.
|
||||
|
||||
=item B<X509_V_ERR_OCSP_CERT_UNKNOWN: OCSP unknown cert>
|
||||
|
||||
Returned by the verify callback to indicate that the certificate is not
|
||||
recognized by the OCSP responder.
|
||||
|
||||
=item B<509_V_ERROR_NO_ISSUER_PUBLI_KEY, issuer certificate doesn't have a public key>
|
||||
|
||||
The issuer certificate does not have a public key.
|
||||
|
||||
=item B<X509_V_ERROR_SIGNATURE_ALGORITHM_MISMATCH, Subject signature algorithm and issuer public key algoritm mismatch>
|
||||
|
||||
The issuer's public key is not of the type required by the signature in
|
||||
the subject's certificate.
|
||||
|
||||
=back
|
||||
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
X509_load_http,
|
||||
X509_http_nbio,
|
||||
X509_CRL_load_http,
|
||||
X509_CRL_http_nbio
|
||||
- certificate and CRL loading functions
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
#include <openssl/x509.h>
|
||||
|
||||
X509 *X509_load_http(const char *url, BIO *bio, BIO *rbio, int timeout);
|
||||
X509_CRL *X509_CRL_load_http(const char *url, BIO *bio, BIO *rbio, int timeout);
|
||||
|
||||
#define X509_http_nbio(url)
|
||||
#define X509_CRL_http_nbio(url)
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
X509_load_http() and X509_CRL_load_http() loads a certificate or a CRL,
|
||||
respectively, in ASN.1 format using HTTP from the given B<url>.
|
||||
|
||||
If B<bio> is given and B<rbio> is NULL then this BIO is used instead of an
|
||||
interal one for connecting, writing the request, and reading the response.
|
||||
If both B<bio> and B<rbio> are given (which may be memory BIOs, for instance)
|
||||
then no explicit connection is attempted,
|
||||
B<bio> is used for writing the request, and B<rbio> for reading the response.
|
||||
|
||||
If the B<timeout> parameter is > 0 this indicates the maximum number of seconds
|
||||
to wait until the transfer is complete.
|
||||
A value of 0 enables waiting indefinitely,
|
||||
while a value < 0 immediately leads to a timeout condition.
|
||||
|
||||
X509_http_nbio() and X509_CRL_http_nbio() are macros for backward compatibility
|
||||
that have the same effect as the functions above but with infinite timeout
|
||||
and without the possiblity to specify custom BIOs.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
On success the function yield the loaded value, else NULL.
|
||||
Error conditions include connection/transfer timeout, parse errors, etc.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<OSSL_HTTP_get_asn1(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
X509_load_http() and X509_CRL_load_http() were added in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2019-2020 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
|
||||
@@ -16,17 +16,6 @@ The X509_verify_cert() function attempts to discover and validate a
|
||||
certificate chain based on parameters in B<ctx>. A complete description of
|
||||
the process is contained in the L<openssl-verify(1)> manual page.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
If a complete chain can be built and validated this function returns 1,
|
||||
otherwise it return zero, in exceptional circumstances it can also
|
||||
return a negative code.
|
||||
|
||||
If the function fails additional error information can be obtained by
|
||||
examining B<ctx> using, for example X509_STORE_CTX_get_error().
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
Applications rarely call this function directly but it is used by
|
||||
OpenSSL internally for certificate validation, in both the S/MIME and
|
||||
SSL/TLS code.
|
||||
@@ -39,10 +28,20 @@ a retry operation is requested during internal lookups (which never happens
|
||||
with standard lookup methods).
|
||||
Applications must check for <= 0 return value on error.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
If a complete chain can be built and validated this function returns 1,
|
||||
otherwise it return zero, in exceptional circumstances it can also
|
||||
return a negative code.
|
||||
|
||||
If the function fails additional error information can be obtained by
|
||||
examining B<ctx> using, for example X509_STORE_CTX_get_error().
|
||||
|
||||
=head1 BUGS
|
||||
|
||||
This function uses the header B<x509.h> as opposed to most chain verification
|
||||
functions which use B<x509_vfy.h>.
|
||||
This function uses the header F<< <x509.h> >>
|
||||
as opposed to most chain verification
|
||||
functions which use F<< <x509_vfy.h> >>.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ use any key specific format or PKCS#8 unencrypted PrivateKeyInfo format. The
|
||||
B<type> parameter should be a public key algorithm constant such as
|
||||
B<EVP_PKEY_RSA>. An error occurs if the decoded key does not match B<type>.
|
||||
d2i_PublicKey() does the same for public keys.
|
||||
d2i_KeyParams() does the same for domain parameter keys.
|
||||
d2i_KeyParams() does the same for key parameters.
|
||||
|
||||
d2i_AutoPrivateKey() is similar to d2i_PrivateKey() except it attempts to
|
||||
automatically detect the private key format.
|
||||
@@ -44,7 +44,7 @@ automatically detect the private key format.
|
||||
i2d_PrivateKey() encodes B<key>. It uses a key specific format or, if none is
|
||||
defined for that key type, PKCS#8 unencrypted PrivateKeyInfo format.
|
||||
i2d_PublicKey() does the same for public keys.
|
||||
i2d_KeyParams() does the same for domain parameter keys.
|
||||
i2d_KeyParams() does the same for key parameters.
|
||||
These functions are similar to the d2i_X509() functions; see L<d2i_X509(3)>.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
@@ -491,7 +491,7 @@ Represents an ASN1 OBJECT IDENTIFIER.
|
||||
|
||||
Represents a PKCS#3 DH parameters structure.
|
||||
|
||||
=item B<DHparamx>
|
||||
=item B<DHxparams>
|
||||
|
||||
Represents an ANSI X9.42 DH parameters structure.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user