Latest update.
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
ASN1_INTEGER_new, ASN1_INTEGER_free - ASN1_INTEGER allocation functions
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
=for openssl generic
|
||||
|
||||
#include <openssl/asn1.h>
|
||||
|
||||
ASN1_INTEGER *ASN1_INTEGER_new(void);
|
||||
void ASN1_INTEGER_free(ASN1_INTEGER *a);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
ASN1_INTEGER_new() returns an allocated B<ASN1_INTEGER> structure.
|
||||
|
||||
ASN1_INTEGER_free() frees up a single B<ASN1_INTEGER> object.
|
||||
|
||||
B<ASN1_INTEGER> structure representing the ASN.1 INTEGER type
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
ASN1_INTEGER_new() return a valid B<ASN1_INTEGER> structure or NULL
|
||||
if an error occurred.
|
||||
|
||||
ASN1_INTEGER_free() does not return a value.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<ERR_get_error(3)>
|
||||
|
||||
=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
|
||||
@@ -0,0 +1,52 @@
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
CMS_EnvelopedData_create - Create CMS envelope
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
#include <openssl/cms.h>
|
||||
|
||||
CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
CMS_EnvelopedData_create() creates a B<CMS_ContentInfo> structure with
|
||||
a type B<NID_pkcs7_enveloped>. B<cipher> is the symmetric cipher to use.
|
||||
|
||||
The algorithm passed in the B<cipher> parameter must support ASN1 encoding of
|
||||
its parameters.
|
||||
|
||||
The recipients can be added later using L<CMS_add1_recipient_cert(3)> or
|
||||
L<CMS_add0_recipient_key(3)>.
|
||||
|
||||
The B<CMS_ContentInfo> structure needs to be finalized using L<CMS_final(3)>
|
||||
and then freed using L<CMS_ContentInfo_free(3)>.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
Although CMS_EnvelopedData_create() allocates a new B<CMS_ContentInfo>
|
||||
structure it is usually not used in applications. The wrappers
|
||||
L<CMS_encrypt(3)> and L<CMS_decrypt(3)> are often used instead.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
If the allocation fails, CMS_EnvelopedData_create() returns NULL and sets
|
||||
an error code that can be obtained by L<ERR_get_error(3)>.
|
||||
Otherwise it returns a pointer to the newly allocated structure.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<ERR_get_error(3)>, L<CMS_encrypt(3)>, L<CMS_decrypt(3)>, L<CMS_final(3)>
|
||||
|
||||
=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
|
||||
@@ -64,27 +64,31 @@ functions that wrap around the utility B<OPENSSL_sk_> API.
|
||||
In the description here, B<I<TYPE>> is used
|
||||
as a placeholder for any of the OpenSSL datatypes, such as B<X509>.
|
||||
|
||||
STACK_OF() returns the name for a stack of the specified B<I<TYPE>>.
|
||||
DEFINE_STACK_OF() creates set of functions for a stack of B<I<TYPE>>. This
|
||||
will mean that type B<I<TYPE>> is stored in each stack, the type is referenced by
|
||||
The STACK_OF() macro returns the name for a stack of the specified B<I<TYPE>>.
|
||||
This is an opaque pointer to a structure declaration.
|
||||
This can be used in every header file that references the stack.
|
||||
There are several B<DEFINE...> macros that create static inline functions
|
||||
for all of the functions described on this page.
|
||||
This should normally be used in one source file, and the stack manipulation
|
||||
is wrapped with application-specific functions.
|
||||
|
||||
DEFINE_STACK_OF() creates set of functions for a stack of B<I<TYPE>> elements.
|
||||
The type is referenced by
|
||||
B<STACK_OF>(B<I<TYPE>>) and each function name begins with B<sk_I<TYPE>_>.
|
||||
For example:
|
||||
|
||||
TYPE *sk_TYPE_value(STACK_OF(TYPE) *sk, int idx);
|
||||
|
||||
DEFINE_STACK_OF_CONST() is identical to DEFINE_STACK_OF() except
|
||||
each element is constant. For example:
|
||||
each element is constant.
|
||||
|
||||
/* DEFINE_STACK_OF(TYPE) */
|
||||
TYPE *sk_TYPE_value(STACK_OF(TYPE) *sk, int idx);
|
||||
/* DEFINE_STACK_OF_CONST(TYPE) */
|
||||
const TYPE *sk_TYPE_value(STACK_OF(TYPE) *sk, int idx);
|
||||
|
||||
DEFINE_SPECIAL_STACK_OF() defines a stack of B<I<TYPE>> but
|
||||
each function uses B<FUNCNAME> in the function name. For example:
|
||||
DEFINE_SPECIAL_STACK_OF() and DEFINE_SPECIAL_STACK_OF_CONST() are similar
|
||||
except B<FUNCNAME> is used in the function names:
|
||||
|
||||
/* DEFINE_SPECIAL_STACK_OF(TYPE, FUNCNAME) */
|
||||
TYPE *sk_FUNCNAME_value(STACK_OF(TYPE) *sk, int idx);
|
||||
|
||||
DEFINE_SPECIAL_STACK_OF_CONST() is similar except that each element is
|
||||
constant:
|
||||
|
||||
/* DEFINE_SPECIAL_STACK_OF(TYPE, FUNCNAME) */
|
||||
const TYPE *sk_FUNCNAME_value(STACK_OF(TYPE) *sk, int idx);
|
||||
|
||||
B<sk_I<TYPE>_num>() returns the number of elements in I<sk> or -1 if I<sk> is
|
||||
@@ -266,7 +270,7 @@ B<sk_I<TYPE>_reserve>() and B<sk_I<TYPE>_new_reserve>() were added in OpenSSL
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2017 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
|
||||
|
||||
+12
-12
@@ -9,39 +9,39 @@ security bits
|
||||
|
||||
#include <openssl/dh.h>
|
||||
|
||||
int DH_bits(const DH *dh);
|
||||
|
||||
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 DH_size(const DH *dh);
|
||||
|
||||
int DH_bits(const DH *dh);
|
||||
|
||||
int DH_security_bits(const DH *dh);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
All of the functions described on this page are deprecated.
|
||||
Applications should instead use L<EVP_PKEY_bits(3)>,
|
||||
L<EVP_PKEY_security_bits(3)> and L<EVP_PKEY_size(3)>.
|
||||
DH_bits() returns the number of significant bits.
|
||||
|
||||
B<dh> and B<dh-E<gt>p> must not be B<NULL>.
|
||||
|
||||
The remaining functions described on this page are deprecated.
|
||||
Applications should instead use L<EVP_PKEY_security_bits(3)> and
|
||||
L<EVP_PKEY_size(3)>.
|
||||
|
||||
DH_size() returns the Diffie-Hellman prime size in bytes. It can be used
|
||||
to determine how much memory must be allocated for the shared secret
|
||||
computed by L<DH_compute_key(3)>.
|
||||
|
||||
DH_bits() returns the number of significant bits.
|
||||
|
||||
B<dh> and B<dh-E<gt>p> must not be B<NULL>.
|
||||
|
||||
DH_security_bits() returns the number of security bits of the given B<dh>
|
||||
key. See L<BN_security_bits(3)>.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
DH_size() returns the prime size of Diffie-Hellman in bytes.
|
||||
|
||||
DH_bits() returns the number of bits in the key.
|
||||
|
||||
DH_size() returns the prime size of Diffie-Hellman in bytes.
|
||||
|
||||
DH_security_bits() returns the number of security bits.
|
||||
|
||||
=head1 SEE ALSO
|
||||
@@ -52,7 +52,7 @@ L<BN_num_bits(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
All of these functions were deprecated in OpenSSL 3.0.
|
||||
The DH_size() and DH_security_bits() functions were deprecated in OpenSSL 3.0.
|
||||
|
||||
The DH_bits() function was added in OpenSSL 1.1.0.
|
||||
|
||||
|
||||
+12
-10
@@ -8,19 +8,24 @@ DSA_size, DSA_bits, DSA_security_bits - get DSA signature size, key bits or secu
|
||||
|
||||
#include <openssl/dsa.h>
|
||||
|
||||
int DSA_bits(const DSA *dsa);
|
||||
|
||||
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 DSA_size(const DSA *dsa);
|
||||
int DSA_bits(const DSA *dsa);
|
||||
|
||||
int DSA_security_bits(const DSA *dsa);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
All of the functions described on this page are deprecated.
|
||||
Applications should instead use L<EVP_PKEY_bits(3)>,
|
||||
L<EVP_PKEY_security_bits(3)> and L<EVP_PKEY_size(3)>.
|
||||
DSA_bits() returns the number of bits in key B<dsa>: this is the number
|
||||
of bits in the B<p> parameter.
|
||||
|
||||
The remaining functions described on this page are deprecated.
|
||||
Applications should instead use L<EVP_PKEY_security_bits(3)> and
|
||||
L<EVP_PKEY_size(3)>.
|
||||
|
||||
DSA_size() returns the maximum size of an ASN.1 encoded DSA signature
|
||||
for key B<dsa> in bytes. It can be used to determine how much memory must
|
||||
@@ -28,18 +33,15 @@ be allocated for a DSA signature.
|
||||
|
||||
B<dsa-E<gt>q> must not be B<NULL>.
|
||||
|
||||
DSA_bits() returns the number of bits in key B<dsa>: this is the number
|
||||
of bits in the B<p> parameter.
|
||||
|
||||
DSA_security_bits() returns the number of security bits of the given B<dsa>
|
||||
key. See L<BN_security_bits(3)>.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
DSA_size() returns the signature size in bytes.
|
||||
|
||||
DSA_bits() returns the number of bits in the key.
|
||||
|
||||
DSA_size() returns the signature size in bytes.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<EVP_PKEY_bits(3)>,
|
||||
@@ -49,7 +51,7 @@ L<DSA_new(3)>, L<DSA_sign(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
All of these functions were deprecated in OpenSSL 3.0.
|
||||
The DSA_size() and DSA_security_bits() functions were deprecated in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
|
||||
@@ -18,13 +18,15 @@ EC_POINT_add, EC_POINT_dbl, EC_POINT_invert, EC_POINT_is_at_infinity, EC_POINT_i
|
||||
int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx);
|
||||
int EC_POINTs_make_affine(const EC_GROUP *group, size_t num,
|
||||
EC_POINT *points[], BN_CTX *ctx);
|
||||
int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, size_t num,
|
||||
const EC_POINT *p[], const BIGNUM *m[], BN_CTX *ctx);
|
||||
int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n,
|
||||
const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx);
|
||||
int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx);
|
||||
int EC_GROUP_have_precompute_mult(const EC_GROUP *group);
|
||||
|
||||
Deprecated since OpenSSL 3.0:
|
||||
|
||||
int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, size_t num,
|
||||
const EC_POINT *p[], const BIGNUM *m[], BN_CTX *ctx);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
@@ -43,12 +45,14 @@ The functions EC_POINT_make_affine and EC_POINTs_make_affine force the internal
|
||||
co-ordinate system. In the case of EC_POINTs_make_affine the value B<num> provides the number of points in the array B<points> to be
|
||||
forced.
|
||||
|
||||
EC_POINT_mul is a convenient interface to EC_POINTs_mul: it calculates the value generator * B<n> + B<q> * B<m> and stores the result in B<r>.
|
||||
EC_POINT_mul calculates the value generator * B<n> + B<q> * B<m> and stores the result in B<r>.
|
||||
The value B<n> may be NULL in which case the result is just B<q> * B<m> (variable point multiplication). Alternatively, both B<q> and B<m> may be NULL, and B<n> non-NULL, in which case the result is just generator * B<n> (fixed point multiplication).
|
||||
When performing a single fixed or variable point multiplication, the underlying implementation uses a constant time algorithm, when the input scalar (either B<n> or B<m>) is in the range [0, ec_group_order).
|
||||
|
||||
Although deprecated in OpenSSL 3.0 and should no longer be used,
|
||||
EC_POINTs_mul calculates the value generator * B<n> + B<q[0]> * B<m[0]> + ... + B<q[num-1]> * B<m[num-1]>. As for EC_POINT_mul the value B<n> may be NULL or B<num> may be zero.
|
||||
When performing a fixed point multiplication (B<n> is non-NULL and B<num> is 0) or a variable point multiplication (B<n> is NULL and B<num> is 1), the underlying implementation uses a constant time algorithm, when the input scalar (either B<n> or B<m[0]>) is in the range [0, ec_group_order).
|
||||
Modern versions should instead use EC_POINT_mul(), combined (if needed) with EC_POINT_add() in such rare circumstances.
|
||||
|
||||
The function EC_GROUP_precompute_mult stores multiples of the generator for faster point multiplication, whilst
|
||||
EC_GROUP_have_precompute_mult tests whether precomputation has already been done. See L<EC_GROUP_copy(3)> for information
|
||||
@@ -74,6 +78,10 @@ L<crypto(7)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
|
||||
L<EC_POINT_new(3)>, L<EC_KEY_new(3)>,
|
||||
L<EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
EC_POINTs_mul() was deprecated in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2013-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -226,7 +226,7 @@ EVP_DigestInit_ex() can be called to initialize a new digest operation.
|
||||
=item EVP_DigestFinalXOF()
|
||||
|
||||
Interfaces to extendable-output functions, XOFs, such as SHAKE128 and SHAKE256.
|
||||
It retrieves the digest value from I<ctx> and places it in I<len>-sized <B>md.
|
||||
It retrieves the digest value from I<ctx> and places it in I<len>-sized I<md>.
|
||||
After calling this function no additional calls to EVP_DigestUpdate() can be
|
||||
made, but EVP_DigestInit_ex() can be called to initialize a new operation.
|
||||
|
||||
|
||||
@@ -94,16 +94,16 @@ TODO Write a set of cookbook documents and link to them.
|
||||
* and secure application is expected to use BIGNUMs, and to build
|
||||
* this array dynamically.
|
||||
*/
|
||||
const unsigned long rsa_n = 0xbc747fc5;
|
||||
const unsigned long rsa_e = 0x10001;
|
||||
const unsigned long rsa_d = 0x7b133399;
|
||||
const OSSL_PARAM[] = {
|
||||
unsigned long rsa_n = 0xbc747fc5;
|
||||
unsigned long rsa_e = 0x10001;
|
||||
unsigned long rsa_d = 0x7b133399;
|
||||
OSSL_PARAM params[] = {
|
||||
OSSL_PARAM_ulong("n", &rsa_n),
|
||||
OSSL_PARAM_ulong("e", &rsa_e),
|
||||
OSSL_PARAM_ulong("d", &rsa_d),
|
||||
OSSL_PARAM_END
|
||||
};
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
EVP_PKEY_CTX *ctx = EVP_PKEY_CTX_new_from_name(NULL, "RSA", NULL);
|
||||
|
||||
+43
-10
@@ -5,7 +5,9 @@
|
||||
EVP_PKEY_new,
|
||||
EVP_PKEY_up_ref,
|
||||
EVP_PKEY_free,
|
||||
EVP_PKEY_new_raw_private_key_with_libctx,
|
||||
EVP_PKEY_new_raw_private_key,
|
||||
EVP_PKEY_new_raw_public_key_with_libctx,
|
||||
EVP_PKEY_new_raw_public_key,
|
||||
EVP_PKEY_new_CMAC_key,
|
||||
EVP_PKEY_new_mac_key,
|
||||
@@ -21,8 +23,18 @@ EVP_PKEY_get_raw_public_key
|
||||
int EVP_PKEY_up_ref(EVP_PKEY *key);
|
||||
void EVP_PKEY_free(EVP_PKEY *key);
|
||||
|
||||
EVP_PKEY *EVP_PKEY_new_raw_private_key_with_libctx(OPENSSL_CTX *libctx,
|
||||
const char *keytype,
|
||||
const char *propq,
|
||||
const unsigned char *key,
|
||||
size_t keylen);
|
||||
EVP_PKEY *EVP_PKEY_new_raw_private_key(int type, ENGINE *e,
|
||||
const unsigned char *key, size_t keylen);
|
||||
EVP_PKEY *EVP_PKEY_new_raw_public_key_with_libctx(OPENSSL_CTX *libctx,
|
||||
const char *keytype,
|
||||
const char *propq,
|
||||
const unsigned char *key,
|
||||
size_t keylen);
|
||||
EVP_PKEY *EVP_PKEY_new_raw_public_key(int type, ENGINE *e,
|
||||
const unsigned char *key, size_t keylen);
|
||||
EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv,
|
||||
@@ -46,16 +58,34 @@ EVP_PKEY_up_ref() increments the reference count of B<key>.
|
||||
EVP_PKEY_free() decrements the reference count of B<key> and, if the reference
|
||||
count is zero, frees it up. If B<key> is NULL, nothing is done.
|
||||
|
||||
EVP_PKEY_new_raw_private_key() allocates a new B<EVP_PKEY>. If B<e> is non-NULL
|
||||
then the new B<EVP_PKEY> structure is associated with the engine B<e>. The
|
||||
B<type> argument indicates what kind of key this is. The value should be a NID
|
||||
for a public key algorithm that supports raw private keys, i.e. one of
|
||||
B<EVP_PKEY_HMAC>, B<EVP_PKEY_POLY1305>, B<EVP_PKEY_SIPHASH>, B<EVP_PKEY_X25519>,
|
||||
B<EVP_PKEY_ED25519>, B<EVP_PKEY_X448> or B<EVP_PKEY_ED448>. B<key> points to the
|
||||
raw private key data for this B<EVP_PKEY> which should be of length B<keylen>.
|
||||
The length should be appropriate for the type of the key. The public key data
|
||||
will be automatically derived from the given private key data (if appropriate
|
||||
for the algorithm type).
|
||||
EVP_PKEY_new_raw_private_key_with_libctx() allocates a new B<EVP_PKEY>. Unless
|
||||
an engine should be used for the key type, a provider for the key is found using
|
||||
the library context I<libctx> and the property query string I<propq>. The
|
||||
I<keytype> argument indicates what kind of key this is. The value should be a
|
||||
string for a public key algorithm that supports raw private keys, i.e one of
|
||||
"POLY1305", "SIPHASH", "X25519", "ED25519", "X448" or "ED448". Note that you may
|
||||
also use "HMAC" which is not a public key algorithm but is treated as such by
|
||||
some OpenSSL APIs. You are encouraged to use the EVP_MAC APIs instead for HMAC
|
||||
(see L<EVP_MAC(3)>). I<key> points to the raw private key data for this
|
||||
B<EVP_PKEY> which should be of length I<keylen>. The length should be
|
||||
appropriate for the type of the key. The public key data will be automatically
|
||||
derived from the given private key data (if appropriate for the algorithm type).
|
||||
|
||||
EVP_PKEY_new_raw_private_key() does the same as
|
||||
EVP_PKEY_new_raw_private_key_with_libctx() except that the default library
|
||||
context and default property query are used instead. If B<e> is non-NULL then
|
||||
the new B<EVP_PKEY> structure is associated with the engine B<e>. The B<type>
|
||||
argument indicates what kind of key this is. The value should be a NID for a
|
||||
public key algorithm that supports raw private keys, i.e. one of
|
||||
B<EVP_PKEY_POLY1305>, B<EVP_PKEY_SIPHASH>, B<EVP_PKEY_X25519>,
|
||||
B<EVP_PKEY_ED25519>, B<EVP_PKEY_X448> or B<EVP_PKEY_ED448>. As for
|
||||
EVP_PKEY_new_raw_private_key_with_libctx() you may also use B<EVP_PKEY_HMAC>.
|
||||
|
||||
EVP_PKEY_new_raw_public_key_with_libctx() works in the same way as
|
||||
EVP_PKEY_new_raw_private_key_with_libctx() except that B<key> points to the raw
|
||||
public key data. The B<EVP_PKEY> structure will be initialised without any
|
||||
private key information. Algorithm types that support raw public keys are
|
||||
"X25519", "ED25519", "X448" or "ED448".
|
||||
|
||||
EVP_PKEY_new_raw_public_key() works in the same way as
|
||||
EVP_PKEY_new_raw_private_key() except that B<key> points to the raw public key
|
||||
@@ -127,6 +157,9 @@ EVP_PKEY_new_raw_private_key(), EVP_PKEY_new_raw_public_key(),
|
||||
EVP_PKEY_new_CMAC_key(), EVP_PKEY_new_raw_private_key() and
|
||||
EVP_PKEY_get_raw_public_key() functions were added in OpenSSL 1.1.1.
|
||||
|
||||
The EVP_PKEY_new_raw_private_key_with_libctx and
|
||||
EVP_PKEY_new_raw_public_key_with_libctx functions were added in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
|
||||
=head1 NAME
|
||||
|
||||
EVP_set_default_properties
|
||||
EVP_set_default_properties, EVP_default_properties_enable_fips,
|
||||
EVP_default_properties_is_fips_enabled
|
||||
- Set default properties for future algorithm fetches
|
||||
|
||||
=head1 SYNOPSIS
|
||||
@@ -10,6 +11,8 @@ EVP_set_default_properties
|
||||
#include <openssl/evp.h>
|
||||
|
||||
int EVP_set_default_properties(OPENSSL_CTX *libctx, const char *propq);
|
||||
int EVP_default_properties_enable_fips(OPENSSL_CTX *libctx, int enable);
|
||||
int EVP_default_properties_is_fips_enabled(OPENSSL_CTX *libctx);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
@@ -27,10 +30,22 @@ given with I<libctx> (NULL signifies the default library context).
|
||||
Any previous default property for the specified library context will
|
||||
be dropped.
|
||||
|
||||
EVP_default_properties_enable_fips() sets the 'fips=yes' to be a default property
|
||||
if I<enable> is non zero, otherwise it clears 'fips' from the default property
|
||||
query for the given I<libctx>. It merges the fips default property query with any
|
||||
existing query strings that have been set via EVP_set_default_properties().
|
||||
|
||||
EVP_default_properties_is_fips_enabled() indicates if 'fips=yes' is a default
|
||||
property for the given I<libctx>.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
EVP_set_default_properties() returns 1 on success, or 0 on failure.
|
||||
The latter adds an error on the error stack.
|
||||
EVP_set_default_properties() and EVP_default_properties_enable_fips() return 1
|
||||
on success, or 0 on failure. An error is placed on the the error stack if a
|
||||
failure occurs.
|
||||
|
||||
EVP_default_properties_is_fips_enabled() returns 1 if the 'fips=yes' default
|
||||
property is set for the given I<libctx>, otherwise it returns 0.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
@@ -42,7 +57,7 @@ The functions described here were added in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
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
|
||||
|
||||
@@ -28,7 +28,7 @@ OSSL_CMP_CTX_set0_trustedStore,
|
||||
OSSL_CMP_CTX_get0_trustedStore,
|
||||
OSSL_CMP_CTX_set1_untrusted_certs,
|
||||
OSSL_CMP_CTX_get0_untrusted_certs,
|
||||
OSSL_CMP_CTX_set1_clCert,
|
||||
OSSL_CMP_CTX_set1_cert,
|
||||
OSSL_CMP_CTX_set1_pkey,
|
||||
OSSL_CMP_CTX_set1_referenceValue,
|
||||
OSSL_CMP_CTX_set1_secretValue,
|
||||
@@ -102,7 +102,7 @@ OSSL_CMP_CTX_set1_senderNonce
|
||||
STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted_certs(const OSSL_CMP_CTX *ctx);
|
||||
|
||||
/* client authentication: */
|
||||
int OSSL_CMP_CTX_set1_clCert(OSSL_CMP_CTX *ctx, X509 *cert);
|
||||
int OSSL_CMP_CTX_set1_cert(OSSL_CMP_CTX *ctx, X509 *cert);
|
||||
int OSSL_CMP_CTX_set1_pkey(OSSL_CMP_CTX *ctx, EVP_PKEY *pkey);
|
||||
int OSSL_CMP_CTX_set1_referenceValue(OSSL_CMP_CTX *ctx,
|
||||
const unsigned char *ref, int len);
|
||||
@@ -226,18 +226,18 @@ The following options can be set:
|
||||
|
||||
=item B<OSSL_CMP_OPT_DIGEST_ALGNID>
|
||||
|
||||
The digest algorithm NID to be used in RFC 4210's MSG_SIG_ALG,
|
||||
if applicable used for message protection and Proof-of-Possession.
|
||||
The NID of the digest algorithm to be used in RFC 4210's MSG_SIG_ALG
|
||||
for signature-based message protection and Proof-of-Possession (POPO).
|
||||
Default is SHA256.
|
||||
|
||||
OSSL_CMP_OPT_OWF_ALGNID
|
||||
The digest algorithm NID to be used as one-way function (OWF)
|
||||
in RFC 4210's MSG_MAC_ALG, if applicable used for message protection.
|
||||
=item B<OSSL_CMP_OPT_OWF_ALGNID>
|
||||
The NID of the digest algorithm to be used as one-way function (OWF)
|
||||
in RFC 4210's MSG_MAC_ALG for PBM-based message protection.
|
||||
Default is SHA256.
|
||||
|
||||
OSSL_CMP_OPT_MAC_ALGNID
|
||||
The MAC algorithm NID to be used in RFC 4210's MSG_MAC_ALG,
|
||||
if applicable used for message protection.
|
||||
=item B<OSSL_CMP_OPT_MAC_ALGNID>
|
||||
The NID of the MAC algorithm to be used in RFC 4210's MSG_MAC_ALG
|
||||
for PBM-based message protection.
|
||||
Default is HMAC-SHA1 as per RFC 4210.
|
||||
|
||||
=item B<OSSL_CMP_OPT_REVOCATION_REASON>
|
||||
@@ -403,26 +403,26 @@ parameter the entry is cleared.
|
||||
OSSL_CMP_CTX_get0_trustedStore() returns a pointer to the certificate store
|
||||
containing trusted root CA certificates, which may be empty if unset.
|
||||
|
||||
OSSL_CMP_CTX_set1_untrusted_certs() takes over a list of certificates containing
|
||||
non-trusted intermediate certs used for path construction in authentication
|
||||
of the CMP server and potentially others (TLS server, newly enrolled cert).
|
||||
OSSL_CMP_CTX_set1_untrusted_certs() sets up a list of non-trusted certificates
|
||||
of intermediate CAs that may be useful for path construction when authenticating
|
||||
the CMP server and when verifying newly enrolled certificates.
|
||||
The reference counts of those certificates handled successfully are increased.
|
||||
|
||||
OSSL_CMP_CTX_get0_untrusted_certs(OSSL_CMP_CTX *ctx) returns a pointer to the
|
||||
list of untrusted certs, which my be empty if unset.
|
||||
list of untrusted certs, which may be empty if unset.
|
||||
|
||||
OSSL_CMP_CTX_set1_clCert() sets the client certificate in the given B<ctx>.
|
||||
The public key of this B<clCert> must correspond to
|
||||
OSSL_CMP_CTX_set1_cert() sets the certificate used for CMP message protection.
|
||||
The public key of this B<cert> must correspond to
|
||||
the private key set via B<OSSL_CMP_CTX_set1_pkey()>.
|
||||
When using signature-based protection of CMP request messages
|
||||
this "protection certificate" will be included first in the extraCerts field.
|
||||
The subject of this B<clCert> will be used as the "sender" field
|
||||
The subject of this B<cert> will be used as the "sender" field
|
||||
of outgoing CMP messages, with the fallback being
|
||||
the B<subjectName> set via B<OSSL_CMP_CTX_set1_subjectName()>.
|
||||
The B<cert> argument may be NULL to clear the entry.
|
||||
|
||||
OSSL_CMP_CTX_set1_pkey() sets the private key corresponding to
|
||||
the client certificate B<clCert> set via B<OSSL_CMP_CTX_set1_clCert()>.
|
||||
OSSL_CMP_CTX_set1_pkey() sets the private key corresponding to the
|
||||
protecting certificate B<cert> set via B<OSSL_CMP_CTX_set1_cert()>.
|
||||
This key is used create signature-based protection (protectionAlg = MSG_SIG_ALG)
|
||||
of outgoing messages
|
||||
unless a PBM secret has been set via B<OSSL_CMP_CTX_set1_secretValue()>.
|
||||
@@ -438,11 +438,11 @@ PBM-based protection takes precedence over signature-based protection.
|
||||
OSSL_CMP_CTX_set1_referenceValue() sets the given referenceValue B<ref> with
|
||||
length B<len> in the given B<ctx> or clears it if the B<ref> argument is NULL.
|
||||
According to RFC 4210 section 5.1.1, if no value for the "sender" field in
|
||||
CMP message headers can be determined (i.e., no B<clCert> and no B<subjectName>
|
||||
is given) then the "sender" field will contain the NULL-DN
|
||||
CMP message headers can be determined (i.e., no protecting certificate B<cert>
|
||||
and no B<subjectName> is given) then the "sender" field will contain the NULL-DN
|
||||
and the senderKID field of the CMP message header must be set.
|
||||
When signature-based protection is used the senderKID will be set to
|
||||
the subjectKeyIdentifier of the <clCert> as far as present.
|
||||
the subjectKeyIdentifier of the protecting B<cert> as far as present.
|
||||
If not present or when PBM-based protection is used
|
||||
the B<ref> value is taken as the fallback value for the senderKID.
|
||||
|
||||
@@ -451,7 +451,7 @@ PKIHeader of a request message, i.e. the X509 name of the (CA) server.
|
||||
Setting is overruled by subject of B<srvCert> if set.
|
||||
If neither B<srvCert> nor recipient are set, the recipient of the PKI message is
|
||||
determined in the following order: issuer, issuer of old cert (oldCert),
|
||||
issuer of client cert (B<clCert>), else NULL-DN.
|
||||
issuer of protecting certificate (B<cert>), else NULL-DN.
|
||||
When a response is received, its sender must match the recipient of the request.
|
||||
|
||||
OSSL_CMP_CTX_push0_geninfo_ITAV() adds B<itav> to the stack in the B<ctx> to be
|
||||
@@ -481,7 +481,7 @@ the CertTemplate structure when requesting a new cert. For Key Update Requests
|
||||
see B<OSSL_CMP_CTX_set1_oldCert()>. This default is used for Initialization
|
||||
Requests (IR) and Certification Requests (CR) only if no SANs are set.
|
||||
The B<subjectName> is also used as the "sender" field for outgoing CMP messages
|
||||
if no B<clCert> has been set (e.g., in case requests are protected using PBM).
|
||||
if no B<cert> has been set (e.g., in case requests are protected using PBM).
|
||||
|
||||
OSSL_CMP_CTX_push1_subjectAltName() adds the given X509 name to the list of
|
||||
alternate names on the certificate template request. This cannot be used if
|
||||
@@ -507,7 +507,7 @@ to the X509_EXTENSIONS of the requested certificate template.
|
||||
|
||||
OSSL_CMP_CTX_set1_oldCert() sets the old certificate to be updated in
|
||||
Key Update Requests (KUR) or to be revoked in Revocation Requests (RR).
|
||||
It must be given for RR, else it defaults to B<clCert>.
|
||||
It must be given for RR, else it defaults to the protecting B<cert>.
|
||||
The B<reference certificate> determined in this way, if any, is also used for
|
||||
deriving default subject DN and Subject Alternative Names for IR, CR, and KUR.
|
||||
Its issuer, if any, is used as default recipient in the CMP message header.
|
||||
@@ -608,53 +608,57 @@ All other functions return 1 on success, 0 on error.
|
||||
|
||||
=head1 EXAMPLES
|
||||
|
||||
The following code does an Initialization Request:
|
||||
The following code omits error handling.
|
||||
|
||||
cmp_ctx = OSSL_CMP_CTX_new();
|
||||
OSSL_CMP_CTX_set1_server(cmp_ctx, address);
|
||||
OSSL_CMP_CTX_set1_referenceValue(cmp_ctx, ref, ref_len);
|
||||
OSSL_CMP_CTX_set1_secretValue(cmp_ctx, sec, sec_len);
|
||||
OSSL_CMP_CTX_set0_newPkey(cmp_ctx, new_pkey, 1);
|
||||
OSSL_CMP_CTX_set1_caCert(cmp_ctx, ca_cert);
|
||||
|
||||
initialClCert = OSSL_CMP_exec_IR_ses(cmp_ctx);
|
||||
|
||||
The following code does an Initialization Request using an
|
||||
external identity certificate (RFC 4210, Appendix E.7):
|
||||
|
||||
cmp_ctx = OSSL_CMP_CTX_new();
|
||||
OSSL_CMP_CTX_set1_server(cmp_ctx, sname);
|
||||
OSSL_CMP_CTX_set1_clCert(cmp_ctx, cl_cert);
|
||||
OSSL_CMP_CTX_set1_pkey(cmp_ctx, pkey);
|
||||
OSSL_CMP_CTX_set0_newPkey(cmp_ctx, new_pkey, 1);
|
||||
OSSL_CMP_CTX_set1_caCert(cmp_ctx, ca_cert);
|
||||
|
||||
initialClCert = OSSL_CMP_exec_IR_ses(cmp_ctx);
|
||||
|
||||
Here externalCert is an X509 certificate granted to the EE by another CA
|
||||
which is trusted by the current CA the code will connect to.
|
||||
|
||||
|
||||
The following code does a Key Update Request:
|
||||
|
||||
cmp_ctx = OSSL_CMP_CTX_new();
|
||||
OSSL_CMP_CTX_set1_server(cmp_ctx, url);
|
||||
OSSL_CMP_CTX_set1_pkey(cmp_ctx, pkey);
|
||||
OSSL_CMP_CTX_set0_newPkey(cmp_ctx, new_pkey, 1);
|
||||
OSSL_CMP_CTX_set1_clCert(cmp_ctx, cl_cert);
|
||||
OSSL_CMP_CTX_set1_caCert(cmp_ctx, ca_cert);
|
||||
|
||||
updatedClCert = OSSL_CMP_exec_KUR_ses(cmp_ctx);
|
||||
|
||||
The following code (which omits error handling) sends a General Message
|
||||
including, as an example, the id-it-signKeyPairTypes OID and prints info on
|
||||
the General Response contents.
|
||||
Set up a CMP client context for sending requests and verifying responses:
|
||||
|
||||
cmp_ctx = OSSL_CMP_CTX_new();
|
||||
OSSL_CMP_CTX_set1_server(cmp_ctx, sname);
|
||||
OSSL_CMP_CTX_set1_server(cmp_ctx, name_or_address);
|
||||
OSSL_CMP_CTX_set1_serverPort(cmp_ctx, port_string);
|
||||
OSSL_CMP_CTX_set1_serverPath(cmp_ctx, path_or_alias);
|
||||
OSSL_CMP_CTX_set0_trustedStore(cmp_ctx, ts);
|
||||
|
||||
Set up client credentials for password-based protection (PBM):
|
||||
|
||||
OSSL_CMP_CTX_set1_referenceValue(cmp_ctx, ref, ref_len);
|
||||
OSSL_CMP_CTX_set1_secretValue(cmp_ctx, sec, sec_len);
|
||||
|
||||
Set up the details for certificate requests:
|
||||
|
||||
OSSL_CMP_CTX_set1_subjectName(cmp_ctx, name);
|
||||
OSSL_CMP_CTX_set0_newPkey(cmp_ctx, 1, initialKey);
|
||||
|
||||
Perform an Initialization Request transaction:
|
||||
|
||||
initialCert = OSSL_CMP_exec_IR_ses(cmp_ctx);
|
||||
|
||||
Reset the transaction state of the CMP context and the credentials:
|
||||
|
||||
OSSL_CMP_CTX_reinit(cmp_ctx);
|
||||
OSSL_CMP_CTX_set1_referenceValue(cmp_ctx, NULL, 0);
|
||||
OSSL_CMP_CTX_set1_secretValue(cmp_ctx, NULL, 0);
|
||||
|
||||
Perform a Certification Request transaction, making use of the new credentials:
|
||||
|
||||
OSSL_CMP_CTX_set1_cert(cmp_ctx, initialCert);
|
||||
OSSL_CMP_CTX_set1_pkey(cmp_ctx, initialKey);
|
||||
OSSL_CMP_CTX_set0_newPkey(cmp_ctx, 1, curentKey);
|
||||
currentCert = OSSL_CMP_exec_CR_ses(cmp_ctx);
|
||||
|
||||
Perform a Key Update Request, signed using the cert (and key) to be updated:
|
||||
|
||||
OSSL_CMP_CTX_reinit(cmp_ctx);
|
||||
OSSL_CMP_CTX_set1_cert(cmp_ctx, currentCert);
|
||||
OSSL_CMP_CTX_set1_pkey(cmp_ctx, currentKey);
|
||||
OSSL_CMP_CTX_set0_newPkey(cmp_ctx, 1, updatedKey);
|
||||
currentCert = OSSL_CMP_exec_KUR_ses(cmp_ctx);
|
||||
currentKey = updatedKey;
|
||||
|
||||
Perform a General Message transaction including, as an example,
|
||||
the id-it-signKeyPairTypes OID and prints info on the General Response contents:
|
||||
|
||||
OSSL_CMP_CTX_reinit(cmp_ctx);
|
||||
|
||||
ASN1_OBJECT *type = OBJ_txt2obj("1.3.6.1.5.5.7.4.2", 1);
|
||||
OSSL_CMP_ITAV *itav = OSSL_CMP_ITAV_new(type, NULL);
|
||||
OSSL_CMP_CTX_push0_genm_ITAV(cmp_ctx, itav);
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
=head1 NAME
|
||||
|
||||
OSSL_CMP_MSG_get0_header,
|
||||
OSSL_CMP_MSG_update_transactionID,
|
||||
d2i_OSSL_CMP_MSG_bio,
|
||||
i2d_OSSL_CMP_MSG_bio
|
||||
- function(s) manipulating CMP messages
|
||||
@@ -12,17 +13,22 @@ i2d_OSSL_CMP_MSG_bio
|
||||
#include <openssl/cmp.h>
|
||||
|
||||
OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg);
|
||||
int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg);
|
||||
OSSL_CMP_MSG *d2i_OSSL_CMP_MSG_bio(BIO *bio, OSSL_CMP_MSG **msg);
|
||||
int i2d_OSSL_CMP_MSG_bio(BIO *bio, const OSSL_CMP_MSG *msg);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
OSSL_CMP_MSG_get0_header returns the header of the given CMP message.
|
||||
OSSL_CMP_MSG_get0_header() returns the header of the given CMP message.
|
||||
|
||||
d2i_OSSL_CMP_MSG_bio parses an ASN.1-encoded OSSL_CMP_MSG from the BIO I<bio>.
|
||||
OSSL_CMP_MSG_update_transactionID() updates the transactionID field
|
||||
in the header of the given message according to the CMP_CTX.
|
||||
This requires re-protecting the message (if it was protected).
|
||||
|
||||
d2i_OSSL_CMP_MSG_bio() parses an ASN.1-encoded OSSL_CMP_MSG from the BIO I<bio>.
|
||||
It assigns a pointer to the new structure to I<*msg> if I<msg> is not NULL.
|
||||
|
||||
i2d_OSSL_CMP_MSG_bio writes the OSSL_CMP_MSG I<msg> in ASN.1 encoding
|
||||
i2d_OSSL_CMP_MSG_bio() writes the OSSL_CMP_MSG I<msg> in ASN.1 encoding
|
||||
to BIO I<bio>.
|
||||
|
||||
=head1 NOTES
|
||||
@@ -36,7 +42,8 @@ or NULL if the respective entry does not exist and on error.
|
||||
|
||||
d2i_OSSL_CMP_MSG_bio() returns the parsed message or NULL on error.
|
||||
|
||||
i2d_OSSL_CMP_MSG_bio() returns 1 on success or 0 on error.
|
||||
i2d_OSSL_CMP_MSG_bio() and OSSL_CMP_MSG_update_transactionID()
|
||||
return 1 on success, 0 on error.
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
|
||||
@@ -17,16 +17,18 @@ OSSL_CRMF_MSG_get_certReqId
|
||||
|
||||
OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm);
|
||||
ASN1_INTEGER
|
||||
*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(OSSL_CRMF_CERTTEMPLATE *tmpl);
|
||||
X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(OSSL_CRMF_CERTTEMPLATE *tmpl);
|
||||
*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl);
|
||||
X509_NAME
|
||||
*OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl);
|
||||
|
||||
ASN1_INTEGER *OSSL_CRMF_CERTID_get0_serialNumber(const OSSL_CRMF_CERTID *cid);
|
||||
const X509_NAME *OSSL_CRMF_CERTID_get0_issuer(const OSSL_CRMF_CERTID *cid);
|
||||
|
||||
X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(OSSL_CRMF_ENCRYPTEDVALUE *ecert,
|
||||
EVP_PKEY *pkey);
|
||||
X509
|
||||
*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert,
|
||||
EVP_PKEY *pkey);
|
||||
|
||||
int OSSL_CRMF_MSG_get_certReqId(OSSL_CRMF_MSG *crm);
|
||||
int OSSL_CRMF_MSG_get_certReqId(const OSSL_CRMF_MSG *crm);
|
||||
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
@@ -38,7 +38,7 @@ OSSL_HTTP_parse_url
|
||||
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,
|
||||
const 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);
|
||||
|
||||
@@ -233,7 +233,9 @@ OSSL_PARAM_get_octet_string() retrieves an OCTET string from the parameter
|
||||
pointed to by B<p>.
|
||||
The OCTETs are either stored into B<*val> with a length limit of B<max_len> or,
|
||||
in the case when B<*val> is B<NULL>, memory is allocated and
|
||||
B<max_len> is ignored.
|
||||
B<max_len> is ignored. B<*used_len> is populated with the number of OCTETs
|
||||
stored. If B<val> is NULL then the OCTETS are not stored, but B<*used_len> is
|
||||
still populated.
|
||||
If memory is allocated by this function, it must be freed by the caller.
|
||||
|
||||
OSSL_PARAM_set_octet_string() sets an OCTET string from the parameter
|
||||
|
||||
@@ -4,12 +4,14 @@
|
||||
|
||||
OSSL_STORE_LOADER, OSSL_STORE_LOADER_CTX, OSSL_STORE_LOADER_new,
|
||||
OSSL_STORE_LOADER_get0_engine, OSSL_STORE_LOADER_get0_scheme,
|
||||
OSSL_STORE_LOADER_set_open, OSSL_STORE_LOADER_set_ctrl,
|
||||
OSSL_STORE_LOADER_set_expect, OSSL_STORE_LOADER_set_find,
|
||||
OSSL_STORE_LOADER_set_load, OSSL_STORE_LOADER_set_eof,
|
||||
OSSL_STORE_LOADER_set_error, OSSL_STORE_LOADER_set_close,
|
||||
OSSL_STORE_LOADER_set_open, OSSL_STORE_LOADER_set_attach,
|
||||
OSSL_STORE_LOADER_set_ctrl, OSSL_STORE_LOADER_set_expect,
|
||||
OSSL_STORE_LOADER_set_find, OSSL_STORE_LOADER_set_load,
|
||||
OSSL_STORE_LOADER_set_eof, OSSL_STORE_LOADER_set_error,
|
||||
OSSL_STORE_LOADER_set_close,
|
||||
OSSL_STORE_LOADER_free, OSSL_STORE_register_loader,
|
||||
OSSL_STORE_unregister_loader, OSSL_STORE_open_fn, OSSL_STORE_ctrl_fn,
|
||||
OSSL_STORE_unregister_loader,
|
||||
OSSL_STORE_open_fn, OSSL_STORE_attach_fn, OSSL_STORE_ctrl_fn,
|
||||
OSSL_STORE_expect_fn, OSSL_STORE_find_fn,
|
||||
OSSL_STORE_load_fn, OSSL_STORE_eof_fn, OSSL_STORE_error_fn,
|
||||
OSSL_STORE_close_fn - Types and functions to manipulate, register and
|
||||
@@ -35,6 +37,16 @@ unregister STORE loaders for different URI schemes
|
||||
void *ui_data);
|
||||
int OSSL_STORE_LOADER_set_open(OSSL_STORE_LOADER *store_loader,
|
||||
OSSL_STORE_open_fn store_open_function);
|
||||
typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_attach_fn)(const OSSL_STORE_LOADER
|
||||
*loader,
|
||||
BIO *bio,
|
||||
OPENSSL_CTX *libctx,
|
||||
const char *propq,
|
||||
const UI_METHOD
|
||||
*ui_method,
|
||||
void *ui_data);
|
||||
int OSSL_STORE_LOADER_set_attach(OSSL_STORE_LOADER *loader,
|
||||
OSSL_STORE_attach_fn attach_function);
|
||||
typedef int (*OSSL_STORE_ctrl_fn)(OSSL_STORE_LOADER_CTX *ctx, int cmd,
|
||||
va_list args);
|
||||
int OSSL_STORE_LOADER_set_ctrl(OSSL_STORE_LOADER *store_loader,
|
||||
@@ -99,6 +111,10 @@ initialized, to create a private data store (B<OSSL_STORE_LOADER_CTX>, see
|
||||
above), and to return it.
|
||||
If something goes wrong, this function is expected to return NULL.
|
||||
|
||||
=item B<OSSL_STORE_open_fn>
|
||||
|
||||
This function takes a B<BIO>, otherwise works like B<OSSL_STORE_open_fn>.
|
||||
|
||||
=item B<OSSL_STORE_ctrl_fn>
|
||||
|
||||
This function takes a B<OSSL_STORE_LOADER_CTX> pointer, a command number
|
||||
@@ -189,6 +205,9 @@ OSSL_STORE_LOADER_get0_scheme() returns the scheme of the B<store_loader>.
|
||||
OSSL_STORE_LOADER_set_open() sets the opener function for the
|
||||
B<store_loader>.
|
||||
|
||||
OSSL_STORE_LOADER_set_attach() sets the attacher function for the
|
||||
B<store_loader>.
|
||||
|
||||
OSSL_STORE_LOADER_set_ctrl() sets the control function for the
|
||||
B<store_loader>.
|
||||
|
||||
@@ -254,7 +273,7 @@ were added in OpenSSL 1.1.1.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
Copyright 2016-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
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
OSSL_STORE_attach - Functions to read objects from a BIO
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
#include <openssl/store.h>
|
||||
|
||||
OSSL_STORE_CTX *OSSL_STORE_attach(BIO *bio, OPENSSL_CTX *libctx,
|
||||
const char *scheme, const char *propq,
|
||||
const UI_METHOD *ui_method, void *ui_data,
|
||||
OSSL_STORE_post_process_info_fn post_process,
|
||||
void *post_process_data);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
OSSL_STORE_attach() works like L<OSSL_STORE_open(3)>, except it takes a B<BIO>
|
||||
I<bio> instead of a I<uri>, along with a I<scheme> to determine what loader
|
||||
should be used to process the data.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
OSSL_STORE_attach() returns a pointer to a B<OSSL_STORE_CTX> on success, or
|
||||
NULL on failure.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<ossl_store(7)>, L<OSSL_STORE_open(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
OSSL_STORE_attach() was added in OpenSSL 3.0.
|
||||
|
||||
=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
|
||||
+10
-10
@@ -8,19 +8,23 @@ RSA_size, RSA_bits, RSA_security_bits - get RSA modulus size or security bits
|
||||
|
||||
#include <openssl/rsa.h>
|
||||
|
||||
int RSA_bits(const RSA *rsa);
|
||||
|
||||
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 RSA_size(const RSA *rsa);
|
||||
|
||||
int RSA_bits(const RSA *rsa);
|
||||
|
||||
int RSA_security_bits(const RSA *rsa)
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
All of the functions described on this page are deprecated.
|
||||
RSA_bits() returns the number of significant bits.
|
||||
|
||||
B<rsa> and B<rsa-E<gt>n> must not be B<NULL>.
|
||||
|
||||
The remaining functions described on this page are deprecated.
|
||||
Applications should instead use L<EVP_PKEY_size(3)>, L<EVP_PKEY_bits(3)>
|
||||
and L<EVP_PKEY_security_bits(3)>.
|
||||
|
||||
@@ -28,18 +32,14 @@ RSA_size() returns the RSA modulus size in bytes. It can be used to
|
||||
determine how much memory must be allocated for an RSA encrypted
|
||||
value.
|
||||
|
||||
RSA_bits() returns the number of significant bits.
|
||||
|
||||
B<rsa> and B<rsa-E<gt>n> must not be B<NULL>.
|
||||
|
||||
RSA_security_bits() returns the number of security bits of the given B<rsa>
|
||||
key. See L<BN_security_bits(3)>.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
RSA_size() returns the size of modulus in bytes.
|
||||
RSA_bits() returns the number of bits in the key.
|
||||
|
||||
DSA_bits() returns the number of bits in the key.
|
||||
RSA_size() returns the size of modulus in bytes.
|
||||
|
||||
RSA_security_bits() returns the number of security bits.
|
||||
|
||||
@@ -49,7 +49,7 @@ L<BN_num_bits(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
All of these functions were deprecated in OpenSSL 3.0.
|
||||
The RSA_size() and RSA_security_bits() functions were deprecated in OpenSSL 3.0.
|
||||
|
||||
The RSA_bits() function was added in OpenSSL 1.1.0.
|
||||
|
||||
|
||||
@@ -507,6 +507,10 @@ B<ExtendedMasterSecret>: use extended master secret extension, enabled by
|
||||
default. Inverse of B<SSL_OP_NO_EXTENDED_MASTER_SECRET>: that is,
|
||||
B<-ExtendedMasterSecret> is the same as setting B<SSL_OP_NO_EXTENDED_MASTER_SECRET>.
|
||||
|
||||
B<CANames>: use CA names extension, enabled by
|
||||
default. Inverse of B<SSL_OP_DISABLE_TLSEXT_CA_NAMES>: that is,
|
||||
B<-CANames> is the same as setting B<SSL_OP_DISABLE_TLSEXT_CA_NAMES>.
|
||||
|
||||
=item B<VerifyMode>
|
||||
|
||||
The B<value> argument is a comma separated list of flags to set.
|
||||
|
||||
@@ -80,7 +80,7 @@ The SSL_CTX_config() and SSL_config() functions were added in OpenSSL 1.1.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
Copyright 2015-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
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
SSL_set_num_tickets,
|
||||
SSL_get_num_tickets,
|
||||
SSL_CTX_set_num_tickets,
|
||||
SSL_CTX_get_num_tickets
|
||||
SSL_CTX_get_num_tickets,
|
||||
SSL_new_session_ticket
|
||||
- control the number of TLSv1.3 session tickets that are issued
|
||||
|
||||
=head1 SYNOPSIS
|
||||
@@ -16,6 +17,7 @@ SSL_CTX_get_num_tickets
|
||||
size_t SSL_get_num_tickets(SSL *s);
|
||||
int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets);
|
||||
size_t SSL_CTX_get_num_tickets(SSL_CTX *ctx);
|
||||
int SSL_new_session_ticket(SSL *s);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
@@ -40,14 +42,29 @@ handshake then SSL_set_num_tickets() can be called again prior to calling
|
||||
SSL_verify_client_post_handshake() to update the number of tickets that will be
|
||||
sent.
|
||||
|
||||
To issue tickets after other events (such as application-layer changes),
|
||||
SSL_new_session_ticket() is used by a server application to request that a new
|
||||
ticket be sent when it is safe to do so. New tickets are only allowed to be
|
||||
sent in this manner after the initial handshake has completed, and only for TLS
|
||||
1.3 connections. The ticket generation and transmission are delayed until the
|
||||
server is starting a new write operation, so that it is bundled with other
|
||||
application data being written and properly aligned to a record boundary.
|
||||
SSL_new_session_ticket() can be called more than once to request additional
|
||||
tickets be sent; all such requests are queued and written together when it is
|
||||
safe to do so. Note that a successful return from SSL_new_session_ticket()
|
||||
indicates only that the request to send a ticket was processed, not that the
|
||||
ticket itself was sent. To be notified when the ticket itself is sent, a
|
||||
new-session callback can be registered with L<SSL_CTX_sess_set_new_cb(3)> that
|
||||
will be invoked as the ticket or tickets are generated.
|
||||
|
||||
SSL_CTX_get_num_tickets() and SSL_get_num_tickets() return the number of
|
||||
tickets set by a previous call to SSL_CTX_set_num_tickets() or
|
||||
SSL_set_num_tickets(), or 2 if no such call has been made.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
SSL_CTX_set_num_tickets() and SSL_set_num_tickets() return 1 on success or 0 on
|
||||
failure.
|
||||
SSL_CTX_set_num_tickets(), SSL_set_num_tickets(), and
|
||||
SSL_new_session_ticket() return 1 on success or 0 on failure.
|
||||
|
||||
SSL_CTX_get_num_tickets() and SSL_get_num_tickets() return the number of tickets
|
||||
that have been previously set.
|
||||
@@ -58,11 +75,13 @@ L<ssl(7)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
These functions were added in OpenSSL 1.1.1.
|
||||
SSL_new_session_ticket() was added in OpenSSL 3.0.0.
|
||||
SSL_set_num_tickets(), SSL_get_num_tickets(), SSL_CTX_set_num_tickets(), and
|
||||
SSL_CTX_get_num_tickets() were added in OpenSSL 1.1.1.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
Copyright 2018-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
|
||||
|
||||
@@ -67,6 +67,12 @@ The following B<bug workaround> options are available:
|
||||
Don't prefer ECDHE-ECDSA ciphers when the client appears to be Safari on OS X.
|
||||
OS X 10.8..10.8.3 has broken support for ECDHE-ECDSA ciphers.
|
||||
|
||||
=item SSL_OP_DISABLE_TLSEXT_CA_NAMES
|
||||
|
||||
Disable TLS Extension CA Names. You may want to disable it for security reasons
|
||||
or for compatibility with some Windows TLS implementations crashing when this
|
||||
extension is larger than 1024 bytes.
|
||||
|
||||
=item SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS
|
||||
|
||||
Disables a countermeasure against a SSL 3.0/TLS 1.0 protocol
|
||||
@@ -378,7 +384,7 @@ The B<SSL_OP_NO_EXTENDED_MASTER_SECRET> option was added in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2001-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
Copyright 2001-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
|
||||
|
||||
@@ -88,7 +88,7 @@ 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
|
||||
If the session from the original 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
|
||||
@@ -157,12 +157,12 @@ 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
|
||||
set a different explicit 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
|
||||
the server did not accept it, and then a second handshake occurred 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.
|
||||
|
||||
@@ -121,9 +121,9 @@ SSL_get_async_status() were first added to OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
Copyright 2019-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
Licensed under the OpenSSL license (the "License"). You may not use
|
||||
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>.
|
||||
|
||||
@@ -75,6 +75,16 @@ state but not actually send the close_notify alert messages,
|
||||
see L<SSL_CTX_set_quiet_shutdown(3)>.
|
||||
When "quiet shutdown" is enabled, SSL_shutdown() will always succeed
|
||||
and return 1.
|
||||
Note that this is not standard compliant behaviour.
|
||||
It should only be done when the peer has a way to make sure all
|
||||
data has been received and doesn't wait for the close_notify alert
|
||||
message, otherwise an unexpected EOF will be reported.
|
||||
|
||||
There are implementations that do not send the required close_notify alert.
|
||||
If there is a need to communicate with such an implementation, and it's clear
|
||||
that all data has been received, do not wait for the peer's close_notify alert.
|
||||
Waiting for the close_notify alert when the peer just closes the connection will
|
||||
result in an error being generated.
|
||||
|
||||
=head2 First to close the connection
|
||||
|
||||
@@ -124,8 +134,10 @@ The following return values can occur:
|
||||
The shutdown is not yet finished: the close_notify was sent but the peer
|
||||
did not send it back yet.
|
||||
Call SSL_read() to do a bidirectional shutdown.
|
||||
The output of L<SSL_get_error(3)> may be misleading, as an
|
||||
erroneous SSL_ERROR_SYSCALL may be flagged even though no error occurred.
|
||||
|
||||
Unlike most other function, returning 0 does not indicate an error.
|
||||
L<SSL_get_error(3)> should not get called, it may misleadingly
|
||||
indicate an error even though no error occurred.
|
||||
|
||||
=item Z<>1
|
||||
|
||||
@@ -153,7 +165,7 @@ L<ssl(7)>, L<bio(7)>
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2018 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
|
||||
|
||||
@@ -327,7 +327,7 @@ Unhandled critical CRL extension.
|
||||
|
||||
Invalid non-CA certificate has CA markings.
|
||||
|
||||
=item B<X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED: proxy path length contraint exceeded>
|
||||
=item B<X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED: proxy path length constraint exceeded>
|
||||
|
||||
Proxy path length constraint exceeded.
|
||||
|
||||
@@ -340,7 +340,7 @@ certificates.
|
||||
|
||||
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>
|
||||
=item B<X509_V_ERR_UNNESTED_RESOURCE: RFC 3779 resource not subset of parent's resources>
|
||||
|
||||
See RFC 3779 for details.
|
||||
|
||||
@@ -415,7 +415,7 @@ recognized by the OCSP responder.
|
||||
|
||||
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>
|
||||
=item B<X509_V_ERROR_SIGNATURE_ALGORITHM_MISMATCH, Subject signature algorithm and issuer public key algorithm mismatch>
|
||||
|
||||
The issuer's public key is not of the type required by the signature in
|
||||
the subject's certificate.
|
||||
|
||||
@@ -10,11 +10,13 @@ X509_VERIFY_PARAM_get_depth, X509_VERIFY_PARAM_set_auth_level,
|
||||
X509_VERIFY_PARAM_get_auth_level, X509_VERIFY_PARAM_set_time,
|
||||
X509_VERIFY_PARAM_get_time,
|
||||
X509_VERIFY_PARAM_add0_policy, X509_VERIFY_PARAM_set1_policies,
|
||||
X509_VERIFY_PARAM_get0_host,
|
||||
X509_VERIFY_PARAM_set1_host, X509_VERIFY_PARAM_add1_host,
|
||||
X509_VERIFY_PARAM_set_hostflags,
|
||||
X509_VERIFY_PARAM_get_hostflags,
|
||||
X509_VERIFY_PARAM_get0_peername,
|
||||
X509_VERIFY_PARAM_set1_email, X509_VERIFY_PARAM_set1_ip,
|
||||
X509_VERIFY_PARAM_get0_email, X509_VERIFY_PARAM_set1_email,
|
||||
X509_VERIFY_PARAM_set1_ip, X509_VERIFY_PARAM_get1_ip_asc,
|
||||
X509_VERIFY_PARAM_set1_ip_asc
|
||||
- X509 verification parameters
|
||||
|
||||
@@ -50,6 +52,7 @@ X509_VERIFY_PARAM_set1_ip_asc
|
||||
int auth_level);
|
||||
int X509_VERIFY_PARAM_get_auth_level(const X509_VERIFY_PARAM *param);
|
||||
|
||||
char *X509_VERIFY_PARAM_get0_host(X509_VERIFY_PARAM *param, int n);
|
||||
int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param,
|
||||
const char *name, size_t namelen);
|
||||
int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param,
|
||||
@@ -58,8 +61,10 @@ X509_VERIFY_PARAM_set1_ip_asc
|
||||
unsigned int flags);
|
||||
unsigned int X509_VERIFY_PARAM_get_hostflags(const X509_VERIFY_PARAM *param);
|
||||
char *X509_VERIFY_PARAM_get0_peername(const X509_VERIFY_PARAM *param);
|
||||
char *X509_VERIFY_PARAM_get0_email(X509_VERIFY_PARAM *param);
|
||||
int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param,
|
||||
const char *email, size_t emaillen);
|
||||
char *X509_VERIFY_PARAM_get1_ip_asc(X509_VERIFY_PARAM *param);
|
||||
int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param,
|
||||
const unsigned char *ip, size_t iplen);
|
||||
int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, const char *ipasc);
|
||||
@@ -128,6 +133,11 @@ Security level 1 requires at least 80-bit-equivalent security and is broadly
|
||||
interoperable, though it will, for example, reject MD5 signatures or RSA keys
|
||||
shorter than 1024 bits.
|
||||
|
||||
X509_VERIFY_PARAM_get0_host() returns the B<n>th expected DNS hostname that has
|
||||
been set using X509_VERIFY_PARAM_set1_host() or X509_VERIFY_PARAM_add1_host().
|
||||
To obtain all names start with B<n> = 0 and increment B<n> as long as no NULL
|
||||
pointer is returned.
|
||||
|
||||
X509_VERIFY_PARAM_set1_host() sets the expected DNS hostname to
|
||||
B<name> clearing any previously specified hostname. If
|
||||
B<name> is NULL, or empty the list of hostnames is cleared, and
|
||||
@@ -177,12 +187,17 @@ string is allocated by the library and is no longer valid once the
|
||||
associated B<param> argument is freed. Applications must not free
|
||||
the return value.
|
||||
|
||||
X509_VERIFY_PARAM_get0_email() returns the expected RFC822 email address.
|
||||
|
||||
X509_VERIFY_PARAM_set1_email() sets the expected RFC822 email address to
|
||||
B<email>. If B<email> is NUL-terminated, B<emaillen> may be zero, otherwise
|
||||
B<emaillen> must be set to the length of B<email>. When an email address
|
||||
is specified, certificate verification automatically invokes
|
||||
L<X509_check_email(3)>.
|
||||
|
||||
X509_VERIFY_PARAM_get1_ip_asc() returns the expected IP address as a string.
|
||||
The caller is responsible for freeing it.
|
||||
|
||||
X509_VERIFY_PARAM_set1_ip() sets the expected IP address to B<ip>.
|
||||
The B<ip> argument is in binary format, in network byte-order and
|
||||
B<iplen> must be set to 4 for IPv4 and 16 for IPv6. When an IP
|
||||
@@ -205,6 +220,10 @@ X509_VERIFY_PARAM_set1_email(), X509_VERIFY_PARAM_set1_ip() and
|
||||
X509_VERIFY_PARAM_set1_ip_asc() return 1 for success and 0 for
|
||||
failure.
|
||||
|
||||
X509_VERIFY_PARAM_get0_host(), X509_VERIFY_PARAM_get0_email(), and
|
||||
X509_VERIFY_PARAM_get1_ip_asc(), return the string pointers pecified above
|
||||
or NULL if the respective value has not been set or on error.
|
||||
|
||||
X509_VERIFY_PARAM_get_flags() returns the current verification flags.
|
||||
|
||||
X509_VERIFY_PARAM_get_hostflags() returns any current host flags.
|
||||
@@ -374,6 +393,9 @@ and has no effect.
|
||||
|
||||
The X509_VERIFY_PARAM_get_hostflags() function was added in OpenSSL 1.1.0i.
|
||||
|
||||
The X509_VERIFY_PARAM_get0_host(), X509_VERIFY_PARAM_get0_email(),
|
||||
and X509_VERIFY_PARAM_get1_ip_asc() functions were added in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -24,7 +24,7 @@ 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.
|
||||
internal 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.
|
||||
@@ -36,7 +36,7 @@ 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.
|
||||
and without the possibility to specify custom BIOs.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ i2s_ASN1_ENUMERATED_TABLE,
|
||||
=head1 DESCRIPTION
|
||||
|
||||
These functions convert OpenSSL objects to and from their ASN.1/string
|
||||
representation. This function is used for B<X509v3> extentions.
|
||||
representation. This function is used for B<X509v3> extensions.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
|
||||
Reference in New Issue
Block a user