diff options
100 files changed, 2781 insertions, 283 deletions
diff --git a/src/lib/libcrypto/doc/DH_generate_parameters.pod b/src/lib/libcrypto/doc/DH_generate_parameters.pod index 3832c25315..bd0782cb0c 100644 --- a/src/lib/libcrypto/doc/DH_generate_parameters.pod +++ b/src/lib/libcrypto/doc/DH_generate_parameters.pod | |||
@@ -2,31 +2,37 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | DH_generate_parameters, DH_check - generate and check Diffie-Hellman parameters | 5 | DH_generate_parameters_ex, DH_generate_parameters, |
6 | DH_check - generate and check Diffie-Hellman parameters | ||
6 | 7 | ||
7 | =head1 SYNOPSIS | 8 | =head1 SYNOPSIS |
8 | 9 | ||
9 | #include <openssl/dh.h> | 10 | #include <openssl/dh.h> |
10 | 11 | ||
11 | DH *DH_generate_parameters(int prime_len, int generator, | 12 | int DH_generate_parameters_ex(DH *dh, int prime_len,int generator, BN_GENCB *cb); |
12 | void (*callback)(int, int, void *), void *cb_arg); | ||
13 | 13 | ||
14 | int DH_check(DH *dh, int *codes); | 14 | int DH_check(DH *dh, int *codes); |
15 | 15 | ||
16 | Deprecated: | ||
17 | |||
18 | DH *DH_generate_parameters(int prime_len, int generator, | ||
19 | void (*callback)(int, int, void *), void *cb_arg); | ||
20 | |||
16 | =head1 DESCRIPTION | 21 | =head1 DESCRIPTION |
17 | 22 | ||
18 | DH_generate_parameters() generates Diffie-Hellman parameters that can | 23 | DH_generate_parameters_ex() generates Diffie-Hellman parameters that can |
19 | be shared among a group of users, and returns them in a newly | 24 | be shared among a group of users, and stores them in the provided B<DH> |
20 | allocated B<DH> structure. | 25 | structure. |
21 | 26 | ||
22 | B<prime_len> is the length in bits of the safe prime to be generated. | 27 | B<prime_len> is the length in bits of the safe prime to be generated. |
23 | B<generator> is a small number E<gt> 1, typically 2 or 5. | 28 | B<generator> is a small number E<gt> 1, typically 2 or 5. |
24 | 29 | ||
25 | A callback function may be used to provide feedback about the progress of the | 30 | A callback function may be used to provide feedback about the progress |
26 | key generation. If B<callback> is not B<NULL>, it will be called as described | 31 | of the key generation. If B<cb> is not B<NULL>, it will be |
27 | in L<BN_generate_prime(3)|BN_generate_prime(3)> while a random prime number is | 32 | called as described in L<BN_generate_prime(3)|BN_generate_prime(3)> while a random prime number is |
28 | generated, and when a prime has been found, B<callback(3, 0, cb_arg)> is | 33 | generated, and when a prime has been found, B<BN_GENCB_call(cb, 3, 0)> is |
29 | called. | 34 | called. See L<BN_generate_prime(3)|BN_generate_prime(3)> for information on |
35 | the BN_GENCB_call() function. | ||
30 | 36 | ||
31 | DH_check() validates Diffie-Hellman parameters. It checks that B<p> is | 37 | DH_check() validates Diffie-Hellman parameters. It checks that B<p> is |
32 | a safe prime, and that B<g> is a suitable generator. In the case of an | 38 | a safe prime, and that B<g> is a suitable generator. In the case of an |
@@ -37,19 +43,21 @@ checked, i.e. it does not equal 2 or 5. | |||
37 | 43 | ||
38 | =head1 RETURN VALUES | 44 | =head1 RETURN VALUES |
39 | 45 | ||
40 | DH_generate_parameters() returns a pointer to the DH structure, or | 46 | DH_generate_parameters_ex() and DH_check() return 1 if the check could be |
41 | NULL if the parameter generation fails. The error codes can be | 47 | performed, 0 otherwise. |
42 | obtained by L<ERR_get_error(3)|ERR_get_error(3)>. | 48 | |
49 | DH_generate_parameters() (deprecated) returns a pointer to the DH structure, or | ||
50 | NULL if the parameter generation fails. | ||
43 | 51 | ||
44 | DH_check() returns 1 if the check could be performed, 0 otherwise. | 52 | The error codes can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. |
45 | 53 | ||
46 | =head1 NOTES | 54 | =head1 NOTES |
47 | 55 | ||
48 | DH_generate_parameters() may run for several hours before finding a | 56 | DH_generate_parameters_ex() and DH_generate_parameters() may run for several |
49 | suitable prime. | 57 | hours before finding a suitable prime. |
50 | 58 | ||
51 | The parameters generated by DH_generate_parameters() are not to be | 59 | The parameters generated by DH_generate_parameters_ex() and DH_generate_parameters() |
52 | used in signature schemes. | 60 | are not to be used in signature schemes. |
53 | 61 | ||
54 | =head1 BUGS | 62 | =head1 BUGS |
55 | 63 | ||
diff --git a/src/lib/libcrypto/doc/DSA_generate_parameters.pod b/src/lib/libcrypto/doc/DSA_generate_parameters.pod index b64f0ca546..698b555a0e 100644 --- a/src/lib/libcrypto/doc/DSA_generate_parameters.pod +++ b/src/lib/libcrypto/doc/DSA_generate_parameters.pod | |||
@@ -2,20 +2,26 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | DSA_generate_parameters - generate DSA parameters | 5 | DSA_generate_parameters_ex, DSA_generate_parameters - generate DSA parameters |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
9 | #include <openssl/dsa.h> | 9 | #include <openssl/dsa.h> |
10 | 10 | ||
11 | int DSA_generate_parameters_ex(DSA *dsa, int bits, | ||
12 | const unsigned char *seed,int seed_len, | ||
13 | int *counter_ret, unsigned long *h_ret, BN_GENCB *cb); | ||
14 | |||
15 | Deprecated: | ||
16 | |||
11 | DSA *DSA_generate_parameters(int bits, unsigned char *seed, | 17 | DSA *DSA_generate_parameters(int bits, unsigned char *seed, |
12 | int seed_len, int *counter_ret, unsigned long *h_ret, | 18 | int seed_len, int *counter_ret, unsigned long *h_ret, |
13 | void (*callback)(int, int, void *), void *cb_arg); | 19 | void (*callback)(int, int, void *), void *cb_arg); |
14 | 20 | ||
15 | =head1 DESCRIPTION | 21 | =head1 DESCRIPTION |
16 | 22 | ||
17 | DSA_generate_parameters() generates primes p and q and a generator g | 23 | DSA_generate_parameters_ex() generates primes p and q and a generator g |
18 | for use in the DSA. | 24 | for use in the DSA and stores the result in B<dsa>. |
19 | 25 | ||
20 | B<bits> is the length of the prime to be generated; the DSS allows a | 26 | B<bits> is the length of the prime to be generated; the DSS allows a |
21 | maximum of 1024 bits. | 27 | maximum of 1024 bits. |
@@ -25,64 +31,74 @@ generated at random. Otherwise, the seed is used to generate | |||
25 | them. If the given seed does not yield a prime q, a new random | 31 | them. If the given seed does not yield a prime q, a new random |
26 | seed is chosen and placed at B<seed>. | 32 | seed is chosen and placed at B<seed>. |
27 | 33 | ||
28 | DSA_generate_parameters() places the iteration count in | 34 | DSA_generate_parameters_ex() places the iteration count in |
29 | *B<counter_ret> and a counter used for finding a generator in | 35 | *B<counter_ret> and a counter used for finding a generator in |
30 | *B<h_ret>, unless these are B<NULL>. | 36 | *B<h_ret>, unless these are B<NULL>. |
31 | 37 | ||
32 | A callback function may be used to provide feedback about the progress | 38 | A callback function may be used to provide feedback about the progress |
33 | of the key generation. If B<callback> is not B<NULL>, it will be | 39 | of the key generation. If B<cb> is not B<NULL>, it will be |
34 | called as follows: | 40 | called as shown below. For information on the BN_GENCB structure and the |
41 | BN_GENCB_call function discussed below, refer to | ||
42 | L<BN_generate_prime(3)|BN_generate_prime(3)>. | ||
35 | 43 | ||
36 | =over 4 | 44 | =over 4 |
37 | 45 | ||
38 | =item * | 46 | =item * |
39 | 47 | ||
40 | When a candidate for q is generated, B<callback(0, m++, cb_arg)> is called | 48 | When a candidate for q is generated, B<BN_GENCB_call(cb, 0, m++)> is called |
41 | (m is 0 for the first candidate). | 49 | (m is 0 for the first candidate). |
42 | 50 | ||
43 | =item * | 51 | =item * |
44 | 52 | ||
45 | When a candidate for q has passed a test by trial division, | 53 | When a candidate for q has passed a test by trial division, |
46 | B<callback(1, -1, cb_arg)> is called. | 54 | B<BN_GENCB_call(cb, 1, -1)> is called. |
47 | While a candidate for q is tested by Miller-Rabin primality tests, | 55 | While a candidate for q is tested by Miller-Rabin primality tests, |
48 | B<callback(1, i, cb_arg)> is called in the outer loop | 56 | B<BN_GENCB_call(cb, 1, i)> is called in the outer loop |
49 | (once for each witness that confirms that the candidate may be prime); | 57 | (once for each witness that confirms that the candidate may be prime); |
50 | i is the loop counter (starting at 0). | 58 | i is the loop counter (starting at 0). |
51 | 59 | ||
52 | =item * | 60 | =item * |
53 | 61 | ||
54 | When a prime q has been found, B<callback(2, 0, cb_arg)> and | 62 | When a prime q has been found, B<BN_GENCB_call(cb, 2, 0)> and |
55 | B<callback(3, 0, cb_arg)> are called. | 63 | B<BN_GENCB_call(cb, 3, 0)> are called. |
56 | 64 | ||
57 | =item * | 65 | =item * |
58 | 66 | ||
59 | Before a candidate for p (other than the first) is generated and tested, | 67 | Before a candidate for p (other than the first) is generated and tested, |
60 | B<callback(0, counter, cb_arg)> is called. | 68 | B<BN_GENCB_call(cb, 0, counter)> is called. |
61 | 69 | ||
62 | =item * | 70 | =item * |
63 | 71 | ||
64 | When a candidate for p has passed the test by trial division, | 72 | When a candidate for p has passed the test by trial division, |
65 | B<callback(1, -1, cb_arg)> is called. | 73 | B<BN_GENCB_call(cb, 1, -1)> is called. |
66 | While it is tested by the Miller-Rabin primality test, | 74 | While it is tested by the Miller-Rabin primality test, |
67 | B<callback(1, i, cb_arg)> is called in the outer loop | 75 | B<BN_GENCB_call(cb, 1, i)> is called in the outer loop |
68 | (once for each witness that confirms that the candidate may be prime). | 76 | (once for each witness that confirms that the candidate may be prime). |
69 | i is the loop counter (starting at 0). | 77 | i is the loop counter (starting at 0). |
70 | 78 | ||
71 | =item * | 79 | =item * |
72 | 80 | ||
73 | When p has been found, B<callback(2, 1, cb_arg)> is called. | 81 | When p has been found, B<BN_GENCB_call(cb, 2, 1)> is called. |
74 | 82 | ||
75 | =item * | 83 | =item * |
76 | 84 | ||
77 | When the generator has been found, B<callback(3, 1, cb_arg)> is called. | 85 | When the generator has been found, B<BN_GENCB_call(cb, 3, 1)> is called. |
78 | 86 | ||
79 | =back | 87 | =back |
80 | 88 | ||
89 | DSA_generate_parameters() (deprecated) works in much the same way as for DSA_generate_parameters_ex, except that no B<dsa> parameter is passed and | ||
90 | instead a newly allocated B<DSA> structure is returned. Additionally "old | ||
91 | style" callbacks are used instead of the newer BN_GENCB based approach. | ||
92 | Refer to L<BN_generate_prime(3)|BN_generate_prime(3)> for further information. | ||
93 | |||
81 | =head1 RETURN VALUE | 94 | =head1 RETURN VALUE |
82 | 95 | ||
96 | DSA_generate_parameters_ex() returns a 1 on success, or 0 otherwise. | ||
97 | |||
83 | DSA_generate_parameters() returns a pointer to the DSA structure, or | 98 | DSA_generate_parameters() returns a pointer to the DSA structure, or |
84 | B<NULL> if the parameter generation fails. The error codes can be | 99 | B<NULL> if the parameter generation fails. |
85 | obtained by L<ERR_get_error(3)|ERR_get_error(3)>. | 100 | |
101 | The error codes can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. | ||
86 | 102 | ||
87 | =head1 BUGS | 103 | =head1 BUGS |
88 | 104 | ||
@@ -91,7 +107,7 @@ Seed lengths E<gt> 20 are not supported. | |||
91 | =head1 SEE ALSO | 107 | =head1 SEE ALSO |
92 | 108 | ||
93 | L<dsa(3)|dsa(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>, | 109 | L<dsa(3)|dsa(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>, |
94 | L<DSA_free(3)|DSA_free(3)> | 110 | L<DSA_free(3)|DSA_free(3)>, L<BN_generate_prime(3)|BN_generate_prime(3)> |
95 | 111 | ||
96 | =head1 HISTORY | 112 | =head1 HISTORY |
97 | 113 | ||
diff --git a/src/lib/libcrypto/doc/EC_GFp_simple_method.pod b/src/lib/libcrypto/doc/EC_GFp_simple_method.pod new file mode 100644 index 0000000000..aff20ac175 --- /dev/null +++ b/src/lib/libcrypto/doc/EC_GFp_simple_method.pod | |||
@@ -0,0 +1,60 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | EC_GFp_simple_method, EC_GFp_mont_method, EC_GFp_nist_method, EC_GFp_nistp224_method, EC_GFp_nistp256_method, EC_GFp_nistp521_method, EC_GF2m_simple_method, EC_METHOD_get_field_type - Functions for obtaining B<EC_METHOD> objects. | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/ec.h> | ||
10 | |||
11 | const EC_METHOD *EC_GFp_simple_method(void); | ||
12 | const EC_METHOD *EC_GFp_mont_method(void); | ||
13 | const EC_METHOD *EC_GFp_nist_method(void); | ||
14 | const EC_METHOD *EC_GFp_nistp224_method(void); | ||
15 | const EC_METHOD *EC_GFp_nistp256_method(void); | ||
16 | const EC_METHOD *EC_GFp_nistp521_method(void); | ||
17 | |||
18 | const EC_METHOD *EC_GF2m_simple_method(void); | ||
19 | |||
20 | int EC_METHOD_get_field_type(const EC_METHOD *meth); | ||
21 | |||
22 | =head1 DESCRIPTION | ||
23 | |||
24 | The Elliptic Curve library provides a number of different implementations through a single common interface. | ||
25 | When constructing a curve using EC_GROUP_new (see L<EC_GROUP_new(3)|EC_GROUP_new(3)>) an | ||
26 | implementation method must be provided. The functions described here all return a const pointer to an | ||
27 | B<EC_METHOD> structure that can be passed to EC_GROUP_NEW. It is important that the correct implementation | ||
28 | type for the form of curve selected is used. | ||
29 | |||
30 | For F2^m curves there is only one implementation choice, i.e. EC_GF2_simple_method. | ||
31 | |||
32 | For Fp curves the lowest common denominator implementation is the EC_GFp_simple_method implementation. All | ||
33 | other implementations are based on this one. EC_GFp_mont_method builds on EC_GFp_simple_method but adds the | ||
34 | use of montgomery multiplication (see L<BN_mod_mul_montgomery(3)|BN_mod_mul_montgomery(3)>). EC_GFp_nist_method | ||
35 | offers an implementation optimised for use with NIST recommended curves (NIST curves are available through | ||
36 | EC_GROUP_new_by_curve_name as described in L<EC_GROUP_new(3)|EC_GROUP_new(3)>). | ||
37 | |||
38 | The functions EC_GFp_nistp224_method, EC_GFp_nistp256_method and EC_GFp_nistp521_method offer 64 bit | ||
39 | optimised implementations for the NIST P224, P256 and P521 curves respectively. Note, however, that these | ||
40 | implementations are not available on all platforms. | ||
41 | |||
42 | EC_METHOD_get_field_type identifies what type of field the EC_METHOD structure supports, which will be either | ||
43 | F2^m or Fp. If the field type is Fp then the value B<NID_X9_62_prime_field> is returned. If the field type is | ||
44 | F2^m then the value B<NID_X9_62_characteristic_two_field> is returned. These values are defined in the | ||
45 | obj_mac.h header file. | ||
46 | |||
47 | =head1 RETURN VALUES | ||
48 | |||
49 | All EC_GFp* functions and EC_GF2m_simple_method always return a const pointer to an EC_METHOD structure. | ||
50 | |||
51 | EC_METHOD_get_field_type returns an integer that identifies the type of field the EC_METHOD structure supports. | ||
52 | |||
53 | =head1 SEE ALSO | ||
54 | |||
55 | L<crypto(3)|crypto(3)>, L<ec(3)|ec(3)>, L<EC_GROUP_new(3)|EC_GROUP_new(3)>, L<EC_GROUP_copy(3)|EC_GROUP_copy(3)>, | ||
56 | L<EC_POINT_new(3)|EC_POINT_new(3)>, L<EC_POINT_add(3)|EC_POINT_add(3)>, L<EC_KEY_new(3)|EC_KEY_new(3)>, | ||
57 | L<d2i_ECPKParameters(3)|d2i_ECPKParameters(3)>, | ||
58 | L<BN_mod_mul_montgomery(3)|BN_mod_mul_montgomery(3)> | ||
59 | |||
60 | =cut | ||
diff --git a/src/lib/libcrypto/doc/EC_GROUP_copy.pod b/src/lib/libcrypto/doc/EC_GROUP_copy.pod new file mode 100644 index 0000000000..954af469d5 --- /dev/null +++ b/src/lib/libcrypto/doc/EC_GROUP_copy.pod | |||
@@ -0,0 +1,174 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | EC_GROUP_copy, EC_GROUP_dup, EC_GROUP_method_of, EC_GROUP_set_generator, EC_GROUP_get0_generator, EC_GROUP_get_order, EC_GROUP_get_cofactor, EC_GROUP_set_curve_name, EC_GROUP_get_curve_name, EC_GROUP_set_asn1_flag, EC_GROUP_get_asn1_flag, EC_GROUP_set_point_conversion_form, EC_GROUP_get_point_conversion_form, EC_GROUP_get0_seed, EC_GROUP_get_seed_len, EC_GROUP_set_seed, EC_GROUP_get_degree, EC_GROUP_check, EC_GROUP_check_discriminant, EC_GROUP_cmp, EC_GROUP_get_basis_type, EC_GROUP_get_trinomial_basis, EC_GROUP_get_pentanomial_basis - Functions for manipulating B<EC_GROUP> objects. | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/ec.h> | ||
10 | #include <openssl/bn.h> | ||
11 | |||
12 | int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); | ||
13 | EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); | ||
14 | |||
15 | const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); | ||
16 | |||
17 | int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, const BIGNUM *order, const BIGNUM *cofactor); | ||
18 | const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); | ||
19 | |||
20 | int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); | ||
21 | int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, BN_CTX *ctx); | ||
22 | |||
23 | void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); | ||
24 | int EC_GROUP_get_curve_name(const EC_GROUP *group); | ||
25 | |||
26 | void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); | ||
27 | int EC_GROUP_get_asn1_flag(const EC_GROUP *group); | ||
28 | |||
29 | void EC_GROUP_set_point_conversion_form(EC_GROUP *group, point_conversion_form_t form); | ||
30 | point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); | ||
31 | |||
32 | unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); | ||
33 | size_t EC_GROUP_get_seed_len(const EC_GROUP *); | ||
34 | size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); | ||
35 | |||
36 | int EC_GROUP_get_degree(const EC_GROUP *group); | ||
37 | |||
38 | int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); | ||
39 | |||
40 | int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); | ||
41 | |||
42 | int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); | ||
43 | |||
44 | int EC_GROUP_get_basis_type(const EC_GROUP *); | ||
45 | int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k); | ||
46 | int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, | ||
47 | unsigned int *k2, unsigned int *k3); | ||
48 | |||
49 | =head1 DESCRIPTION | ||
50 | |||
51 | EC_GROUP_copy copies the curve B<src> into B<dst>. Both B<src> and B<dst> must use the same EC_METHOD. | ||
52 | |||
53 | EC_GROUP_dup creates a new EC_GROUP object and copies the content from B<src> to the newly created | ||
54 | EC_GROUP object. | ||
55 | |||
56 | EC_GROUP_method_of obtains the EC_METHOD of B<group>. | ||
57 | |||
58 | EC_GROUP_set_generator sets curve paramaters that must be agreed by all participants using the curve. These | ||
59 | paramaters include the B<generator>, the B<order> and the B<cofactor>. The B<generator> is a well defined point on the | ||
60 | curve chosen for cryptographic operations. Integers used for point multiplications will be between 0 and | ||
61 | n-1 where n is the B<order>. The B<order> multipied by the B<cofactor> gives the number of points on the curve. | ||
62 | |||
63 | EC_GROUP_get0_generator returns the generator for the identified B<group>. | ||
64 | |||
65 | The functions EC_GROUP_get_order and EC_GROUP_get_cofactor populate the provided B<order> and B<cofactor> parameters | ||
66 | with the respective order and cofactors for the B<group>. | ||
67 | |||
68 | The functions EC_GROUP_set_curve_name and EC_GROUP_get_curve_name, set and get the NID for the curve respectively | ||
69 | (see L<EC_GROUP_new(3)|EC_GROUP_new(3)>). If a curve does not have a NID associated with it, then EC_GROUP_get_curve_name | ||
70 | will return 0. | ||
71 | |||
72 | The asn1_flag value on a curve is used to determine whether there is a specific ASN1 OID to describe the curve or not. | ||
73 | If the asn1_flag is 1 then this is a named curve with an associated ASN1 OID. If not then asn1_flag is 0. The functions | ||
74 | EC_GROUP_get_asn1_flag and EC_GROUP_set_asn1_flag get and set the status of the asn1_flag for the curve. If set then | ||
75 | the curve_name must also be set. | ||
76 | |||
77 | The point_coversion_form for a curve controls how EC_POINT data is encoded as ASN1 as defined in X9.62 (ECDSA). | ||
78 | point_conversion_form_t is an enum defined as follows: | ||
79 | |||
80 | typedef enum { | ||
81 | /** the point is encoded as z||x, where the octet z specifies | ||
82 | * which solution of the quadratic equation y is */ | ||
83 | POINT_CONVERSION_COMPRESSED = 2, | ||
84 | /** the point is encoded as z||x||y, where z is the octet 0x02 */ | ||
85 | POINT_CONVERSION_UNCOMPRESSED = 4, | ||
86 | /** the point is encoded as z||x||y, where the octet z specifies | ||
87 | * which solution of the quadratic equation y is */ | ||
88 | POINT_CONVERSION_HYBRID = 6 | ||
89 | } point_conversion_form_t; | ||
90 | |||
91 | |||
92 | For POINT_CONVERSION_UNCOMPRESSED the point is encoded as an octet signifying the UNCOMPRESSED form has been used followed by | ||
93 | the octets for x, followed by the octets for y. | ||
94 | |||
95 | For any given x co-ordinate for a point on a curve it is possible to derive two possible y values. For | ||
96 | POINT_CONVERSION_COMPRESSED the point is encoded as an octet signifying that the COMPRESSED form has been used AND which of | ||
97 | the two possible solutions for y has been used, followed by the octets for x. | ||
98 | |||
99 | For POINT_CONVERSION_HYBRID the point is encoded as an octet signifying the HYBRID form has been used AND which of the two | ||
100 | possible solutions for y has been used, followed by the octets for x, followed by the octets for y. | ||
101 | |||
102 | The functions EC_GROUP_set_point_conversion_form and EC_GROUP_get_point_conversion_form set and get the point_conversion_form | ||
103 | for the curve respectively. | ||
104 | |||
105 | ANSI X9.62 (ECDSA standard) defines a method of generating the curve parameter b from a random number. This provides advantages | ||
106 | in that a parameter obtained in this way is highly unlikely to be susceptible to special purpose attacks, or have any trapdoors in it. | ||
107 | If the seed is present for a curve then the b parameter was generated in a verifiable fashion using that seed. The OpenSSL EC library | ||
108 | does not use this seed value but does enable you to inspect it using EC_GROUP_get0_seed. This returns a pointer to a memory block | ||
109 | containing the seed that was used. The length of the memory block can be obtained using EC_GROUP_get_seed_len. A number of the | ||
110 | builtin curves within the library provide seed values that can be obtained. It is also possible to set a custom seed using | ||
111 | EC_GROUP_set_seed and passing a pointer to a memory block, along with the length of the seed. Again, the EC library will not use | ||
112 | this seed value, although it will be preserved in any ASN1 based communications. | ||
113 | |||
114 | EC_GROUP_get_degree gets the degree of the field. For Fp fields this will be the number of bits in p. For F2^m fields this will be | ||
115 | the value m. | ||
116 | |||
117 | The function EC_GROUP_check_discriminant calculates the discriminant for the curve and verifies that it is valid. | ||
118 | For a curve defined over Fp the discriminant is given by the formula 4*a^3 + 27*b^2 whilst for F2^m curves the discriminant is | ||
119 | simply b. In either case for the curve to be valid the discriminant must be non zero. | ||
120 | |||
121 | The function EC_GROUP_check performs a number of checks on a curve to verify that it is valid. Checks performed include | ||
122 | verifying that the discriminant is non zero; that a generator has been defined; that the generator is on the curve and has | ||
123 | the correct order. | ||
124 | |||
125 | EC_GROUP_cmp compares B<a> and B<b> to determine whether they represent the same curve or not. | ||
126 | |||
127 | The functions EC_GROUP_get_basis_type, EC_GROUP_get_trinomial_basis and EC_GROUP_get_pentanomial_basis should only be called for curves | ||
128 | defined over an F2^m field. Addition and multiplication operations within an F2^m field are performed using an irreducible polynomial | ||
129 | function f(x). This function is either a trinomial of the form: | ||
130 | |||
131 | f(x) = x^m + x^k + 1 with m > k >= 1 | ||
132 | |||
133 | or a pentanomial of the form: | ||
134 | |||
135 | f(x) = x^m + x^k3 + x^k2 + x^k1 + 1 with m > k3 > k2 > k1 >= 1 | ||
136 | |||
137 | The function EC_GROUP_get_basis_type returns a NID identifying whether a trinomial or pentanomial is in use for the field. The | ||
138 | function EC_GROUP_get_trinomial_basis must only be called where f(x) is of the trinomial form, and returns the value of B<k>. Similary | ||
139 | the function EC_GROUP_get_pentanomial_basis must only be called where f(x) is of the pentanomial form, and returns the values of B<k1>, | ||
140 | B<k2> and B<k3> respectively. | ||
141 | |||
142 | =head1 RETURN VALUES | ||
143 | |||
144 | The following functions return 1 on success or 0 on error: EC_GROUP_copy, EC_GROUP_set_generator, EC_GROUP_check, | ||
145 | EC_GROUP_check_discriminant, EC_GROUP_get_trinomial_basis and EC_GROUP_get_pentanomial_basis. | ||
146 | |||
147 | EC_GROUP_dup returns a pointer to the duplicated curve, or NULL on error. | ||
148 | |||
149 | EC_GROUP_method_of returns the EC_METHOD implementation in use for the given curve or NULL on error. | ||
150 | |||
151 | EC_GROUP_get0_generator returns the generator for the given curve or NULL on error. | ||
152 | |||
153 | EC_GROUP_get_order, EC_GROUP_get_cofactor, EC_GROUP_get_curve_name, EC_GROUP_get_asn1_flag, EC_GROUP_get_point_conversion_form | ||
154 | and EC_GROUP_get_degree return the order, cofactor, curve name (NID), ASN1 flag, point_conversion_form and degree for the | ||
155 | specified curve respectively. If there is no curve name associated with a curve then EC_GROUP_get_curve_name will return 0. | ||
156 | |||
157 | EC_GROUP_get0_seed returns a pointer to the seed that was used to generate the parameter b, or NULL if the seed is not | ||
158 | specified. EC_GROUP_get_seed_len returns the length of the seed or 0 if the seed is not specified. | ||
159 | |||
160 | EC_GROUP_set_seed returns the length of the seed that has been set. If the supplied seed is NULL, or the supplied seed length is | ||
161 | 0, the the return value will be 1. On error 0 is returned. | ||
162 | |||
163 | EC_GROUP_cmp returns 0 if the curves are equal, 1 if they are not equal, or -1 on error. | ||
164 | |||
165 | EC_GROUP_get_basis_type returns the values NID_X9_62_tpBasis or NID_X9_62_ppBasis (as defined in <openssl/obj_mac.h>) for a | ||
166 | trinomial or pentanomial respectively. Alternatively in the event of an error a 0 is returned. | ||
167 | |||
168 | =head1 SEE ALSO | ||
169 | |||
170 | L<crypto(3)|crypto(3)>, L<ec(3)|ec(3)>, L<EC_GROUP_new(3)|EC_GROUP_new(3)>, | ||
171 | L<EC_POINT_new(3)|EC_POINT_new(3)>, L<EC_POINT_add(3)|EC_POINT_add(3)>, L<EC_KEY_new(3)|EC_KEY_new(3)>, | ||
172 | L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)|d2i_ECPKParameters(3)> | ||
173 | |||
174 | =cut | ||
diff --git a/src/lib/libcrypto/doc/EC_GROUP_new.pod b/src/lib/libcrypto/doc/EC_GROUP_new.pod new file mode 100644 index 0000000000..ff55bf33a3 --- /dev/null +++ b/src/lib/libcrypto/doc/EC_GROUP_new.pod | |||
@@ -0,0 +1,95 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | EC_GROUP_new, EC_GROUP_free, EC_GROUP_clear_free, EC_GROUP_new_curve_GFp, EC_GROUP_new_curve_GF2m, EC_GROUP_new_by_curve_name, EC_GROUP_set_curve_GFp, EC_GROUP_get_curve_GFp, EC_GROUP_set_curve_GF2m, EC_GROUP_get_curve_GF2m, EC_get_builtin_curves - Functions for creating and destroying B<EC_GROUP> objects. | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/ec.h> | ||
10 | #include <openssl/bn.h> | ||
11 | |||
12 | EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); | ||
13 | void EC_GROUP_free(EC_GROUP *group); | ||
14 | void EC_GROUP_clear_free(EC_GROUP *group); | ||
15 | |||
16 | EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); | ||
17 | EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); | ||
18 | EC_GROUP *EC_GROUP_new_by_curve_name(int nid); | ||
19 | |||
20 | int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); | ||
21 | int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx); | ||
22 | int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); | ||
23 | int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx); | ||
24 | |||
25 | size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); | ||
26 | |||
27 | =head1 DESCRIPTION | ||
28 | |||
29 | Within the library there are two forms of elliptic curve that are of interest. The first form is those defined over the | ||
30 | prime field Fp. The elements of Fp are the integers 0 to p-1, where p is a prime number. This gives us a revised | ||
31 | elliptic curve equation as follows: | ||
32 | |||
33 | y^2 mod p = x^3 +ax + b mod p | ||
34 | |||
35 | The second form is those defined over a binary field F2^m where the elements of the field are integers of length at | ||
36 | most m bits. For this form the elliptic curve equation is modified to: | ||
37 | |||
38 | y^2 + xy = x^3 + ax^2 + b (where b != 0) | ||
39 | |||
40 | Operations in a binary field are performed relative to an B<irreducible polynomial>. All such curves with OpenSSL | ||
41 | use a trinomial or a pentanomial for this parameter. | ||
42 | |||
43 | A new curve can be constructed by calling EC_GROUP_new, using the implementation provided by B<meth> (see | ||
44 | L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>). It is then necessary to call either EC_GROUP_set_curve_GFp or | ||
45 | EC_GROUP_set_curve_GF2m as appropriate to create a curve defined over Fp or over F2^m respectively. | ||
46 | |||
47 | EC_GROUP_set_curve_GFp sets the curve parameters B<p>, B<a> and B<b> for a curve over Fp stored in B<group>. | ||
48 | EC_group_get_curve_GFp obtains the previously set curve parameters. | ||
49 | |||
50 | EC_GROUP_set_curve_GF2m sets the equivalent curve parameters for a curve over F2^m. In this case B<p> represents | ||
51 | the irreducible polybnomial - each bit represents a term in the polynomial. Therefore there will either be three | ||
52 | or five bits set dependant on whether the polynomial is a trinomial or a pentanomial. | ||
53 | EC_group_get_curve_GF2m obtains the previously set curve parameters. | ||
54 | |||
55 | The functions EC_GROUP_new_curve_GFp and EC_GROUP_new_curve_GF2m are shortcuts for calling EC_GROUP_new and the | ||
56 | appropriate EC_group_set_curve function. An appropriate default implementation method will be used. | ||
57 | |||
58 | Whilst the library can be used to create any curve using the functions described above, there are also a number of | ||
59 | predefined curves that are available. In order to obtain a list of all of the predefined curves, call the function | ||
60 | EC_get_builtin_curves. The parameter B<r> should be an array of EC_builtin_curve structures of size B<nitems>. The function | ||
61 | will populate the B<r> array with information about the builtin curves. If B<nitems> is less than the total number of | ||
62 | curves available, then the first B<nitems> curves will be returned. Otherwise the total number of curves will be | ||
63 | provided. The return value is the total number of curves available (whether that number has been populated in B<r> or | ||
64 | not). Passing a NULL B<r>, or setting B<nitems> to 0 will do nothing other than return the total number of curves available. | ||
65 | The EC_builtin_curve structure is defined as follows: | ||
66 | |||
67 | typedef struct { | ||
68 | int nid; | ||
69 | const char *comment; | ||
70 | } EC_builtin_curve; | ||
71 | |||
72 | Each EC_builtin_curve item has a unique integer id (B<nid>), and a human readable comment string describing the curve. | ||
73 | |||
74 | In order to construct a builtin curve use the function EC_GROUP_new_by_curve_name and provide the B<nid> of the curve to | ||
75 | be constructed. | ||
76 | |||
77 | EC_GROUP_free frees the memory associated with the EC_GROUP. | ||
78 | |||
79 | EC_GROUP_clear_free destroys any sensitive data held within the EC_GROUP and then frees its memory. | ||
80 | |||
81 | =head1 RETURN VALUES | ||
82 | |||
83 | All EC_GROUP_new* functions return a pointer to the newly constructed group, or NULL on error. | ||
84 | |||
85 | EC_get_builtin_curves returns the number of builtin curves that are available. | ||
86 | |||
87 | EC_GROUP_set_curve_GFp, EC_GROUP_get_curve_GFp, EC_GROUP_set_curve_GF2m, EC_GROUP_get_curve_GF2m return 1 on success or 0 on error. | ||
88 | |||
89 | =head1 SEE ALSO | ||
90 | |||
91 | L<crypto(3)|crypto(3)>, L<ec(3)|ec(3)>, L<EC_GROUP_copy(3)|EC_GROUP_copy(3)>, | ||
92 | L<EC_POINT_new(3)|EC_POINT_new(3)>, L<EC_POINT_add(3)|EC_POINT_add(3)>, L<EC_KEY_new(3)|EC_KEY_new(3)>, | ||
93 | L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)|d2i_ECPKParameters(3)> | ||
94 | |||
95 | =cut | ||
diff --git a/src/lib/libcrypto/doc/EC_KEY_new.pod b/src/lib/libcrypto/doc/EC_KEY_new.pod new file mode 100644 index 0000000000..b762cbcb73 --- /dev/null +++ b/src/lib/libcrypto/doc/EC_KEY_new.pod | |||
@@ -0,0 +1,115 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | EC_KEY_new, EC_KEY_get_flags, EC_KEY_set_flags, EC_KEY_clear_flags, EC_KEY_new_by_curve_name, EC_KEY_free, EC_KEY_copy, EC_KEY_dup, EC_KEY_up_ref, EC_KEY_get0_group, EC_KEY_set_group, EC_KEY_get0_private_key, EC_KEY_set_private_key, EC_KEY_get0_public_key, EC_KEY_set_public_key, EC_KEY_get_enc_flags, EC_KEY_set_enc_flags, EC_KEY_get_conv_form, EC_KEY_set_conv_form, EC_KEY_get_key_method_data, EC_KEY_insert_key_method_data, EC_KEY_set_asn1_flag, EC_KEY_precompute_mult, EC_KEY_generate_key, EC_KEY_check_key, EC_KEY_set_public_key_affine_coordinates - Functions for creating, destroying and manipulating B<EC_KEY> objects. | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/ec.h> | ||
10 | #include <openssl/bn.h> | ||
11 | |||
12 | EC_KEY *EC_KEY_new(void); | ||
13 | int EC_KEY_get_flags(const EC_KEY *key); | ||
14 | void EC_KEY_set_flags(EC_KEY *key, int flags); | ||
15 | void EC_KEY_clear_flags(EC_KEY *key, int flags); | ||
16 | EC_KEY *EC_KEY_new_by_curve_name(int nid); | ||
17 | void EC_KEY_free(EC_KEY *key); | ||
18 | EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); | ||
19 | EC_KEY *EC_KEY_dup(const EC_KEY *src); | ||
20 | int EC_KEY_up_ref(EC_KEY *key); | ||
21 | const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); | ||
22 | int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); | ||
23 | const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); | ||
24 | int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); | ||
25 | const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); | ||
26 | int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); | ||
27 | unsigned int EC_KEY_get_enc_flags(const EC_KEY *key); | ||
28 | void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); | ||
29 | point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); | ||
30 | void EC_KEY_set_conv_form(EC_KEY *eckey, point_conversion_form_t cform); | ||
31 | void *EC_KEY_get_key_method_data(EC_KEY *key, | ||
32 | void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *)); | ||
33 | void EC_KEY_insert_key_method_data(EC_KEY *key, void *data, | ||
34 | void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *)); | ||
35 | void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); | ||
36 | int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); | ||
37 | int EC_KEY_generate_key(EC_KEY *key); | ||
38 | int EC_KEY_check_key(const EC_KEY *key); | ||
39 | int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x, BIGNUM *y); | ||
40 | |||
41 | =head1 DESCRIPTION | ||
42 | |||
43 | An EC_KEY represents a public key and (optionaly) an associated private key. A new EC_KEY (with no associated curve) can be constructed by calling EC_KEY_new. | ||
44 | The reference count for the newly created EC_KEY is initially set to 1. A curve can be associated with the EC_KEY by calling | ||
45 | EC_KEY_set_group. | ||
46 | |||
47 | Alternatively a new EC_KEY can be constructed by calling EC_KEY_new_by_curve_name and supplying the nid of the associated curve. Refer to L<EC_GROUP_new(3)|EC_GROUP_new(3)> for a description of curve names. This function simply wraps calls to EC_KEY_new and | ||
48 | EC_GROUP_new_by_curve_name. | ||
49 | |||
50 | Calling EC_KEY_free decrements the reference count for the EC_KEY object, and if it has dropped to zero then frees the memory associated | ||
51 | with it. | ||
52 | |||
53 | EC_KEY_copy copies the contents of the EC_KEY in B<src> into B<dest>. | ||
54 | |||
55 | EC_KEY_dup creates a new EC_KEY object and copies B<ec_key> into it. | ||
56 | |||
57 | EC_KEY_up_ref increments the reference count associated with the EC_KEY object. | ||
58 | |||
59 | EC_KEY_generate_key generates a new public and private key for the supplied B<eckey> object. B<eckey> must have an EC_GROUP object | ||
60 | associated with it before calling this function. The private key is a random integer (0 < priv_key < order, where order is the order | ||
61 | of the EC_GROUP object). The public key is an EC_POINT on the curve calculated by multiplying the generator for the curve by the | ||
62 | private key. | ||
63 | |||
64 | EC_KEY_check_key performs various sanity checks on the EC_KEY object to confirm that it is valid. | ||
65 | |||
66 | EC_KEY_set_public_key_affine_coordinates sets the public key for B<key> based on its affine co-ordinates, i.e. it constructs an EC_POINT | ||
67 | object based on the supplied B<x> and B<y> values and sets the public key to be this EC_POINT. It will also performs certain sanity checks | ||
68 | on the key to confirm that it is valid. | ||
69 | |||
70 | The functions EC_KEY_get0_group, EC_KEY_set_group, EC_KEY_get0_private_key, EC_KEY_set_private_key, EC_KEY_get0_public_key, and EC_KEY_set_public_key get and set the EC_GROUP object, the private key and the EC_POINT public key for the B<key> respectively. | ||
71 | |||
72 | The functions EC_KEY_get_enc_flags and EC_KEY_set_enc_flags get and set the value of the encoding flags for the B<key>. There are two encoding | ||
73 | flags currently defined - EC_PKEY_NO_PARAMETERS and EC_PKEY_NO_PUBKEY. These flags define the behaviour of how the B<key> is | ||
74 | converted into ASN1 in a call to i2d_ECPrivateKey. If EC_PKEY_NO_PARAMETERS is set then the public parameters for the curve are not encoded | ||
75 | along with the private key. If EC_PKEY_NO_PUBKEY is set then the public key is not encoded along with the private key. | ||
76 | |||
77 | The functions EC_KEY_get_conv_form and EC_KEY_set_conv_form get and set the point_conversion_form for the B<key>. For a description | ||
78 | of point_conversion_forms please refer to L<EC_POINT_new(3)|EC_POINT_new(3)>. | ||
79 | |||
80 | EC_KEY_insert_key_method_data and EC_KEY_get_key_method_data enable the caller to associate arbitary additional data specific to the | ||
81 | elliptic curve scheme being used with the EC_KEY object. This data is treated as a "black box" by the ec library. The data to be stored by EC_KEY_insert_key_method_data is provided in the B<data> parameter, which must have have associated functions for duplicating, freeing and "clear_freeing" the data item. If a subsequent EC_KEY_get_key_method_data call is issued, the functions for duplicating, freeing and "clear_freeing" the data item must be provided again, and they must be the same as they were when the data item was inserted. | ||
82 | |||
83 | EC_KEY_set_flags sets the flags in the B<flags> parameter on the EC_KEY object. Any flags that are already set are left set. The currently defined standard flags are EC_FLAG_NON_FIPS_ALLOW and EC_FLAG_FIPS_CHECKED. In addition there is the flag EC_FLAG_COFACTOR_ECDH which is specific to ECDH and is defined in ecdh.h. EC_KEY_get_flags returns the current flags that are set for this EC_KEY. EC_KEY_clear_flags clears the flags indicated by the B<flags> parameter. All other flags are left in their existing state. | ||
84 | |||
85 | EC_KEY_set_asn1_flag sets the asn1_flag on the underlying EC_GROUP object (if set). Refer to L<EC_GROUP_copy(3)|EC_GROUP_copy(3)> for further information on the asn1_flag. | ||
86 | |||
87 | EC_KEY_precompute_mult stores multiples of the underlying EC_GROUP generator for faster point multiplication. See also L<EC_POINT_add(3)|EC_POINT_add(3)>. | ||
88 | |||
89 | |||
90 | =head1 RETURN VALUES | ||
91 | |||
92 | EC_KEY_new, EC_KEY_new_by_curve_name and EC_KEY_dup return a pointer to the newly created EC_KEY object, or NULL on error. | ||
93 | |||
94 | EC_KEY_get_flags returns the flags associated with the EC_KEY object as an integer. | ||
95 | |||
96 | EC_KEY_copy returns a pointer to the destination key, or NULL on error. | ||
97 | |||
98 | EC_KEY_up_ref, EC_KEY_set_group, EC_KEY_set_private_key, EC_KEY_set_public_key, EC_KEY_precompute_mult, EC_KEY_generate_key, EC_KEY_check_key and EC_KEY_set_public_key_affine_coordinates return 1 on success or 0 on error. | ||
99 | |||
100 | EC_KEY_get0_group returns the EC_GROUP associated with the EC_KEY. | ||
101 | |||
102 | EC_KEY_get0_private_key returns the private key associated with the EC_KEY. | ||
103 | |||
104 | EC_KEY_get_enc_flags returns the value of the current encoding flags for the EC_KEY. | ||
105 | |||
106 | EC_KEY_get_conv_form return the point_conversion_form for the EC_KEY. | ||
107 | |||
108 | |||
109 | =head1 SEE ALSO | ||
110 | |||
111 | L<crypto(3)|crypto(3)>, L<ec(3)|ec(3)>, L<EC_GROUP_new(3)|EC_GROUP_new(3)>, L<EC_GROUP_copy(3)|EC_GROUP_copy(3)>, | ||
112 | L<EC_POINT_new(3)|EC_POINT_new(3)>, L<EC_POINT_add(3)|EC_POINT_add(3)>, | ||
113 | L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)|d2i_ECPKParameters(3)> | ||
114 | |||
115 | =cut | ||
diff --git a/src/lib/libcrypto/doc/EC_POINT_add.pod b/src/lib/libcrypto/doc/EC_POINT_add.pod new file mode 100644 index 0000000000..ae92640843 --- /dev/null +++ b/src/lib/libcrypto/doc/EC_POINT_add.pod | |||
@@ -0,0 +1,72 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | EC_POINT_add, EC_POINT_dbl, EC_POINT_invert, EC_POINT_is_at_infinity, EC_POINT_is_on_curve, EC_POINT_cmp, EC_POINT_make_affine, EC_POINTs_make_affine, EC_POINTs_mul, EC_POINT_mul, EC_GROUP_precompute_mult, EC_GROUP_have_precompute_mult - Functions for performing mathematical operations and tests on B<EC_POINT> objects. | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/ec.h> | ||
10 | #include <openssl/bn.h> | ||
11 | |||
12 | int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, const EC_POINT *b, BN_CTX *ctx); | ||
13 | int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, BN_CTX *ctx); | ||
14 | int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); | ||
15 | int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p); | ||
16 | int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, BN_CTX *ctx); | ||
17 | int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, BN_CTX *ctx); | ||
18 | int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx); | ||
19 | int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, EC_POINT *points[], BN_CTX *ctx); | ||
20 | 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); | ||
21 | int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); | ||
22 | int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); | ||
23 | int EC_GROUP_have_precompute_mult(const EC_GROUP *group); | ||
24 | |||
25 | |||
26 | =head1 DESCRIPTION | ||
27 | |||
28 | EC_POINT_add adds the two points B<a> and B<b> and places the result in B<r>. Similarly EC_POINT_dbl doubles the point B<a> and places the | ||
29 | result in B<r>. In both cases it is valid for B<r> to be one of B<a> or B<b>. | ||
30 | |||
31 | EC_POINT_invert calculates the inverse of the supplied point B<a>. The result is placed back in B<a>. | ||
32 | |||
33 | The function EC_POINT_is_at_infinity tests whether the supplied point is at infinity or not. | ||
34 | |||
35 | EC_POINT_is_on_curve tests whether the supplied point is on the curve or not. | ||
36 | |||
37 | EC_POINT_cmp compares the two supplied points and tests whether or not they are equal. | ||
38 | |||
39 | The functions EC_POINT_make_affine and EC_POINTs_make_affine force the internal representation of the EC_POINT(s) into the affine | ||
40 | 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 | ||
41 | forced. | ||
42 | |||
43 | 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>. | ||
44 | |||
45 | 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 | ||
46 | B<n> may be NULL. | ||
47 | |||
48 | The function EC_GROUP_precompute_mult stores multiples of the generator for faster point multiplication, whilst | ||
49 | EC_GROUP_have_precompute_mult tests whether precomputation has already been done. See L<EC_GROUP_copy(3)|EC_GROUP_copy(3)> for information | ||
50 | about the generator. | ||
51 | |||
52 | |||
53 | =head1 RETURN VALUES | ||
54 | |||
55 | The following functions return 1 on success or 0 on error: EC_POINT_add, EC_POINT_dbl, EC_POINT_invert, EC_POINT_make_affine, | ||
56 | EC_POINTs_make_affine, EC_POINTs_make_affine, EC_POINT_mul, EC_POINTs_mul and EC_GROUP_precompute_mult. | ||
57 | |||
58 | EC_POINT_is_at_infinity returns 1 if the point is at infinity, or 0 otherwise. | ||
59 | |||
60 | EC_POINT_is_on_curve returns 1 if the point is on the curve, 0 if not, or -1 on error. | ||
61 | |||
62 | EC_POINT_cmp returns 1 if the points are not equal, 0 if they are, or -1 on error. | ||
63 | |||
64 | EC_GROUP_have_precompute_mult return 1 if a precomputation has been done, or 0 if not. | ||
65 | |||
66 | =head1 SEE ALSO | ||
67 | |||
68 | L<crypto(3)|crypto(3)>, L<ec(3)|ec(3)>, L<EC_GROUP_new(3)|EC_GROUP_new(3)>, L<EC_GROUP_copy(3)|EC_GROUP_copy(3)>, | ||
69 | L<EC_POINT_new(3)|EC_POINT_new(3)>, L<EC_KEY_new(3)|EC_KEY_new(3)>, | ||
70 | L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)|d2i_ECPKParameters(3)> | ||
71 | |||
72 | =cut | ||
diff --git a/src/lib/libcrypto/doc/EC_POINT_new.pod b/src/lib/libcrypto/doc/EC_POINT_new.pod new file mode 100644 index 0000000000..69eb0d1a09 --- /dev/null +++ b/src/lib/libcrypto/doc/EC_POINT_new.pod | |||
@@ -0,0 +1,123 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | EC_POINT_new, EC_POINT_free, EC_POINT_clear_free, EC_POINT_copy, EC_POINT_dup, EC_POINT_method_of, EC_POINT_set_to_infinity, EC_POINT_set_Jprojective_coordinates, EC_POINT_get_Jprojective_coordinates_GFp, EC_POINT_set_affine_coordinates_GFp, EC_POINT_get_affine_coordinates_GFp, EC_POINT_set_compressed_coordinates_GFp, EC_POINT_set_affine_coordinates_GF2m, EC_POINT_get_affine_coordinates_GF2m, EC_POINT_set_compressed_coordinates_GF2m, EC_POINT_point2oct, EC_POINT_oct2point, EC_POINT_point2bn, EC_POINT_bn2point, EC_POINT_point2hex, EC_POINT_hex2point - Functions for creating, destroying and manipulating B<EC_POINT> objects. | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/ec.h> | ||
10 | #include <openssl/bn.h> | ||
11 | |||
12 | EC_POINT *EC_POINT_new(const EC_GROUP *group); | ||
13 | void EC_POINT_free(EC_POINT *point); | ||
14 | void EC_POINT_clear_free(EC_POINT *point); | ||
15 | int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); | ||
16 | EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); | ||
17 | const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); | ||
18 | int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); | ||
19 | int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, | ||
20 | const BIGNUM *x, const BIGNUM *y, const BIGNUM *z, BN_CTX *ctx); | ||
21 | int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, | ||
22 | const EC_POINT *p, BIGNUM *x, BIGNUM *y, BIGNUM *z, BN_CTX *ctx); | ||
23 | int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, | ||
24 | const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); | ||
25 | int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, | ||
26 | const EC_POINT *p, BIGNUM *x, BIGNUM *y, BN_CTX *ctx); | ||
27 | int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, | ||
28 | const BIGNUM *x, int y_bit, BN_CTX *ctx); | ||
29 | int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, | ||
30 | const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); | ||
31 | int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, | ||
32 | const EC_POINT *p, BIGNUM *x, BIGNUM *y, BN_CTX *ctx); | ||
33 | int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, | ||
34 | const BIGNUM *x, int y_bit, BN_CTX *ctx); | ||
35 | size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, | ||
36 | point_conversion_form_t form, | ||
37 | unsigned char *buf, size_t len, BN_CTX *ctx); | ||
38 | int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, | ||
39 | const unsigned char *buf, size_t len, BN_CTX *ctx); | ||
40 | BIGNUM *EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *, | ||
41 | point_conversion_form_t form, BIGNUM *, BN_CTX *); | ||
42 | EC_POINT *EC_POINT_bn2point(const EC_GROUP *, const BIGNUM *, | ||
43 | EC_POINT *, BN_CTX *); | ||
44 | char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, | ||
45 | point_conversion_form_t form, BN_CTX *); | ||
46 | EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, | ||
47 | EC_POINT *, BN_CTX *); | ||
48 | |||
49 | |||
50 | =head1 DESCRIPTION | ||
51 | |||
52 | An EC_POINT represents a point on a curve. A new point is constructed by calling the function EC_POINT_new and providing the B<group> | ||
53 | object that the point relates to. | ||
54 | |||
55 | EC_POINT_free frees the memory associated with the EC_POINT. | ||
56 | |||
57 | EC_POINT_clear_free destroys any sensitive data held within the EC_POINT and then frees its memory. | ||
58 | |||
59 | EC_POINT_copy copies the point B<src> into B<dst>. Both B<src> and B<dst> must use the same EC_METHOD. | ||
60 | |||
61 | EC_POINT_dup creates a new EC_POINT object and copies the content from B<src> to the newly created | ||
62 | EC_POINT object. | ||
63 | |||
64 | EC_POINT_method_of obtains the EC_METHOD associated with B<point>. | ||
65 | |||
66 | A valid point on a curve is the special point at infinity. A point is set to be at infinity by calling EC_POINT_set_to_infinity. | ||
67 | |||
68 | The affine co-ordinates for a point describe a point in terms of its x and y position. The functions | ||
69 | EC_POINT_set_affine_coordinates_GFp and EC_POINT_set_affine_coordinates_GF2m set the B<x> and B<y> co-ordinates for the point | ||
70 | B<p> defined over the curve given in B<group>. | ||
71 | |||
72 | As well as the affine co-ordinates, a point can alternatively be described in terms of its Jacobian | ||
73 | projective co-ordinates (for Fp curves only). Jacobian projective co-ordinates are expressed as three values x, y and z. Working in | ||
74 | this co-ordinate system provides more efficient point multiplication operations. | ||
75 | A mapping exists between Jacobian projective co-ordinates and affine co-ordinates. A Jacobian projective co-ordinate (x, y, z) can be written as an affine co-ordinate as (x/(z^2), y/(z^3)). Conversion to Jacobian projective to affine co-ordinates is simple. The co-ordinate (x, y) is | ||
76 | mapped to (x, y, 1). To set or get the projective co-ordinates use EC_POINT_set_Jprojective_coordinates_GFp and | ||
77 | EC_POINT_get_Jprojective_coordinates_GFp respectively. | ||
78 | |||
79 | Points can also be described in terms of their compressed co-ordinates. For a point (x, y), for any given value for x such that the point is | ||
80 | on the curve there will only ever be two possible values for y. Therefore a point can be set using the EC_POINT_set_compressed_coordinates_GFp | ||
81 | and EC_POINT_set_compressed_coordinates_GF2m functions where B<x> is the x co-ordinate and B<y_bit> is a value 0 or 1 to identify which of | ||
82 | the two possible values for y should be used. | ||
83 | |||
84 | In addition EC_POINTs can be converted to and from various external representations. Supported representations are octet strings, BIGNUMs and hexadecimal. The format of the external representation is described by the point_conversion_form. See L<EC_GROUP_copy(3)|EC_GROUP_copy(3)> for | ||
85 | a description of point_conversion_form. Octet strings are stored in a buffer along with an associated buffer length. A point held in a BIGNUM is calculated by converting the point to an octet string and then converting that octet string into a BIGNUM integer. Points in hexadecimal format are stored in a NULL terminated character string where each character is one of the printable values 0-9 or A-F (or a-f). | ||
86 | |||
87 | The functions EC_POINT_point2oct, EC_POINT_oct2point, EC_POINT_point2bn, EC_POINT_bn2point, EC_POINT_point2hex and EC_POINT_hex2point convert | ||
88 | from and to EC_POINTs for the formats: octet string, BIGNUM and hexadecimal respectively. | ||
89 | |||
90 | The function EC_POINT_point2oct must be supplied with a buffer long enough to store the octet string. The return value provides the number of | ||
91 | octets stored. Calling the function with a NULL buffer will not perform the conversion but will still return the required buffer length. | ||
92 | |||
93 | The function EC_POINT_point2hex will allocate sufficient memory to store the hexadecimal string. It is the caller's responsibility to free | ||
94 | this memory with a subsequent call to OPENSSL_free(). | ||
95 | |||
96 | =head1 RETURN VALUES | ||
97 | |||
98 | EC_POINT_new and EC_POINT_dup return the newly allocated EC_POINT or NULL on error. | ||
99 | |||
100 | The following functions return 1 on success or 0 on error: EC_POINT_copy, EC_POINT_set_to_infinity, EC_POINT_set_Jprojective_coordinates_GFp, | ||
101 | EC_POINT_get_Jprojective_coordinates_GFp, EC_POINT_set_affine_coordinates_GFp, EC_POINT_get_affine_coordinates_GFp, | ||
102 | EC_POINT_set_compressed_coordinates_GFp, EC_POINT_set_affine_coordinates_GF2m, EC_POINT_get_affine_coordinates_GF2m, | ||
103 | EC_POINT_set_compressed_coordinates_GF2m and EC_POINT_oct2point. | ||
104 | |||
105 | EC_POINT_method_of returns the EC_METHOD associated with the supplied EC_POINT. | ||
106 | |||
107 | EC_POINT_point2oct returns the length of the required buffer, or 0 on error. | ||
108 | |||
109 | EC_POINT_point2bn returns the pointer to the BIGNUM supplied, or NULL on error. | ||
110 | |||
111 | EC_POINT_bn2point returns the pointer to the EC_POINT supplied, or NULL on error. | ||
112 | |||
113 | EC_POINT_point2hex returns a pointer to the hex string, or NULL on error. | ||
114 | |||
115 | EC_POINT_hex2point returns the pointer to the EC_POINT supplied, or NULL on error. | ||
116 | |||
117 | =head1 SEE ALSO | ||
118 | |||
119 | L<crypto(3)|crypto(3)>, L<ec(3)|ec(3)>, L<EC_GROUP_new(3)|EC_GROUP_new(3)>, L<EC_GROUP_copy(3)|EC_GROUP_copy(3)>, | ||
120 | L<EC_POINT_add(3)|EC_POINT_add(3)>, L<EC_KEY_new(3)|EC_KEY_new(3)>, | ||
121 | L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)|d2i_ECPKParameters(3)> | ||
122 | |||
123 | =cut | ||
diff --git a/src/lib/libcrypto/doc/ERR_get_error.pod b/src/lib/libcrypto/doc/ERR_get_error.pod index 1a765f7aff..01e196c95f 100644 --- a/src/lib/libcrypto/doc/ERR_get_error.pod +++ b/src/lib/libcrypto/doc/ERR_get_error.pod | |||
@@ -49,7 +49,7 @@ additionally store the file name and line number where | |||
49 | the error occurred in *B<file> and *B<line>, unless these are B<NULL>. | 49 | the error occurred in *B<file> and *B<line>, unless these are B<NULL>. |
50 | 50 | ||
51 | ERR_get_error_line_data(), ERR_peek_error_line_data() and | 51 | ERR_get_error_line_data(), ERR_peek_error_line_data() and |
52 | ERR_get_last_error_line_data() store additional data and flags | 52 | ERR_peek_last_error_line_data() store additional data and flags |
53 | associated with the error code in *B<data> | 53 | associated with the error code in *B<data> |
54 | and *B<flags>, unless these are B<NULL>. *B<data> contains a string | 54 | and *B<flags>, unless these are B<NULL>. *B<data> contains a string |
55 | if *B<flags>&B<ERR_TXT_STRING> is true. | 55 | if *B<flags>&B<ERR_TXT_STRING> is true. |
diff --git a/src/lib/libcrypto/doc/ERR_remove_state.pod b/src/lib/libcrypto/doc/ERR_remove_state.pod index 72925fb9f4..a4d38c17fd 100644 --- a/src/lib/libcrypto/doc/ERR_remove_state.pod +++ b/src/lib/libcrypto/doc/ERR_remove_state.pod | |||
@@ -2,26 +2,35 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | ERR_remove_state - free a thread's error queue | 5 | ERR_remove_thread_state, ERR_remove_state - free a thread's error queue |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
9 | #include <openssl/err.h> | 9 | #include <openssl/err.h> |
10 | 10 | ||
11 | void ERR_remove_thread_state(const CRYPTO_THREADID *tid); | ||
12 | |||
13 | Deprecated: | ||
14 | |||
11 | void ERR_remove_state(unsigned long pid); | 15 | void ERR_remove_state(unsigned long pid); |
12 | 16 | ||
13 | =head1 DESCRIPTION | 17 | =head1 DESCRIPTION |
14 | 18 | ||
15 | ERR_remove_state() frees the error queue associated with thread B<pid>. | 19 | ERR_remove_thread_state() frees the error queue associated with thread B<tid>. |
16 | If B<pid> == 0, the current thread will have its error queue removed. | 20 | If B<tid> == B<NULL>, the current thread will have its error queue removed. |
17 | 21 | ||
18 | Since error queue data structures are allocated automatically for new | 22 | Since error queue data structures are allocated automatically for new |
19 | threads, they must be freed when threads are terminated in order to | 23 | threads, they must be freed when threads are terminated in order to |
20 | avoid memory leaks. | 24 | avoid memory leaks. |
21 | 25 | ||
26 | ERR_remove_state is deprecated and has been replaced by | ||
27 | ERR_remove_thread_state. Since threads in OpenSSL are no longer identified | ||
28 | by unsigned long values any argument to this function is ignored. Calling | ||
29 | ERR_remove_state is equivalent to B<ERR_remove_thread_state(NULL)>. | ||
30 | |||
22 | =head1 RETURN VALUE | 31 | =head1 RETURN VALUE |
23 | 32 | ||
24 | ERR_remove_state() returns no value. | 33 | ERR_remove_thread_state and ERR_remove_state() return no value. |
25 | 34 | ||
26 | =head1 SEE ALSO | 35 | =head1 SEE ALSO |
27 | 36 | ||
@@ -29,6 +38,8 @@ L<err(3)|err(3)> | |||
29 | 38 | ||
30 | =head1 HISTORY | 39 | =head1 HISTORY |
31 | 40 | ||
32 | ERR_remove_state() is available in all versions of SSLeay and OpenSSL. | 41 | ERR_remove_state() is available in all versions of SSLeay and OpenSSL. It |
42 | was deprecated in OpenSSL 1.0.0 when ERR_remove_thread_state was introduced | ||
43 | and thread IDs were introduced to identify threads instead of 'unsigned long'. | ||
33 | 44 | ||
34 | =cut | 45 | =cut |
diff --git a/src/lib/libcrypto/doc/EVP_BytesToKey.pod b/src/lib/libcrypto/doc/EVP_BytesToKey.pod index 0ea7d55c0f..fe4c0a9194 100644 --- a/src/lib/libcrypto/doc/EVP_BytesToKey.pod +++ b/src/lib/libcrypto/doc/EVP_BytesToKey.pod | |||
@@ -36,8 +36,8 @@ If the total key and IV length is less than the digest length and | |||
36 | B<MD5> is used then the derivation algorithm is compatible with PKCS#5 v1.5 | 36 | B<MD5> is used then the derivation algorithm is compatible with PKCS#5 v1.5 |
37 | otherwise a non standard extension is used to derive the extra data. | 37 | otherwise a non standard extension is used to derive the extra data. |
38 | 38 | ||
39 | Newer applications should use more standard algorithms such as PKCS#5 | 39 | Newer applications should use more standard algorithms such as PBKDF2 as |
40 | v2.0 for key derivation. | 40 | defined in PKCS#5v2.1 for key derivation. |
41 | 41 | ||
42 | =head1 KEY DERIVATION ALGORITHM | 42 | =head1 KEY DERIVATION ALGORITHM |
43 | 43 | ||
@@ -60,6 +60,7 @@ EVP_BytesToKey() returns the size of the derived key in bytes. | |||
60 | =head1 SEE ALSO | 60 | =head1 SEE ALSO |
61 | 61 | ||
62 | L<evp(3)|evp(3)>, L<rand(3)|rand(3)>, | 62 | L<evp(3)|evp(3)>, L<rand(3)|rand(3)>, |
63 | L<PKCS5_PBKDF2_HMAC(3)|PKCS5_PBKDF2_HMAC(3)>, | ||
63 | L<EVP_EncryptInit(3)|EVP_EncryptInit(3)> | 64 | L<EVP_EncryptInit(3)|EVP_EncryptInit(3)> |
64 | 65 | ||
65 | =head1 HISTORY | 66 | =head1 HISTORY |
diff --git a/src/lib/libcrypto/doc/EVP_DigestInit.pod b/src/lib/libcrypto/doc/EVP_DigestInit.pod index f2c1cfdbf0..3a71efd23d 100644 --- a/src/lib/libcrypto/doc/EVP_DigestInit.pod +++ b/src/lib/libcrypto/doc/EVP_DigestInit.pod | |||
@@ -161,9 +161,8 @@ EVP_MD_CTX_copy_ex() returns 1 if successful or 0 for failure. | |||
161 | EVP_MD_type(), EVP_MD_pkey_type() and EVP_MD_type() return the NID of the | 161 | EVP_MD_type(), EVP_MD_pkey_type() and EVP_MD_type() return the NID of the |
162 | corresponding OBJECT IDENTIFIER or NID_undef if none exists. | 162 | corresponding OBJECT IDENTIFIER or NID_undef if none exists. |
163 | 163 | ||
164 | EVP_MD_size(), EVP_MD_block_size(), EVP_MD_CTX_size(e), EVP_MD_size(), | 164 | EVP_MD_size(), EVP_MD_block_size(), EVP_MD_CTX_size() and |
165 | EVP_MD_CTX_block_size() and EVP_MD_block_size() return the digest or block | 165 | EVP_MD_CTX_block_size() return the digest or block size in bytes. |
166 | size in bytes. | ||
167 | 166 | ||
168 | EVP_md_null(), EVP_md2(), EVP_md5(), EVP_sha(), EVP_sha1(), EVP_dss(), | 167 | EVP_md_null(), EVP_md2(), EVP_md5(), EVP_sha(), EVP_sha1(), EVP_dss(), |
169 | EVP_dss1(), EVP_mdc2() and EVP_ripemd160() return pointers to the | 168 | EVP_dss1(), EVP_mdc2() and EVP_ripemd160() return pointers to the |
diff --git a/src/lib/libcrypto/doc/EVP_EncryptInit.pod b/src/lib/libcrypto/doc/EVP_EncryptInit.pod index b2211ea6d3..a0a782e772 100644 --- a/src/lib/libcrypto/doc/EVP_EncryptInit.pod +++ b/src/lib/libcrypto/doc/EVP_EncryptInit.pod | |||
@@ -16,7 +16,16 @@ EVP_CIPHER_CTX_nid, EVP_CIPHER_CTX_block_size, EVP_CIPHER_CTX_key_length, | |||
16 | EVP_CIPHER_CTX_iv_length, EVP_CIPHER_CTX_get_app_data, | 16 | EVP_CIPHER_CTX_iv_length, EVP_CIPHER_CTX_get_app_data, |
17 | EVP_CIPHER_CTX_set_app_data, EVP_CIPHER_CTX_type, EVP_CIPHER_CTX_flags, | 17 | EVP_CIPHER_CTX_set_app_data, EVP_CIPHER_CTX_type, EVP_CIPHER_CTX_flags, |
18 | EVP_CIPHER_CTX_mode, EVP_CIPHER_param_to_asn1, EVP_CIPHER_asn1_to_param, | 18 | EVP_CIPHER_CTX_mode, EVP_CIPHER_param_to_asn1, EVP_CIPHER_asn1_to_param, |
19 | EVP_CIPHER_CTX_set_padding - EVP cipher routines | 19 | EVP_CIPHER_CTX_set_padding, EVP_enc_null, EVP_des_cbc, EVP_des_ecb, |
20 | EVP_des_cfb, EVP_des_ofb, EVP_des_ede_cbc, EVP_des_ede, EVP_des_ede_ofb, | ||
21 | EVP_des_ede_cfb, EVP_des_ede3_cbc, EVP_des_ede3, EVP_des_ede3_ofb, | ||
22 | EVP_des_ede3_cfb, EVP_desx_cbc, EVP_rc4, EVP_rc4_40, EVP_idea_cbc, | ||
23 | EVP_idea_ecb, EVP_idea_cfb, EVP_idea_ofb, EVP_idea_cbc, EVP_rc2_cbc, | ||
24 | EVP_rc2_ecb, EVP_rc2_cfb, EVP_rc2_ofb, EVP_rc2_40_cbc, EVP_rc2_64_cbc, | ||
25 | EVP_bf_cbc, EVP_bf_ecb, EVP_bf_cfb, EVP_bf_ofb, EVP_cast5_cbc, | ||
26 | EVP_cast5_ecb, EVP_cast5_cfb, EVP_cast5_ofb, | ||
27 | EVP_aes_128_gcm, EVP_aes_192_gcm, EVP_aes_256_gcm, EVP_aes_128_ccm, | ||
28 | EVP_aes_192_ccm, EVP_aes_256_ccm - EVP cipher routines | ||
20 | 29 | ||
21 | =head1 SYNOPSIS | 30 | =head1 SYNOPSIS |
22 | 31 | ||
@@ -155,10 +164,11 @@ similar way to EVP_EncryptInit_ex(), EVP_DecryptInit_ex and | |||
155 | EVP_CipherInit_ex() except the B<ctx> parameter does not need to be | 164 | EVP_CipherInit_ex() except the B<ctx> parameter does not need to be |
156 | initialized and they always use the default cipher implementation. | 165 | initialized and they always use the default cipher implementation. |
157 | 166 | ||
158 | EVP_EncryptFinal(), EVP_DecryptFinal() and EVP_CipherFinal() behave in a | 167 | EVP_EncryptFinal(), EVP_DecryptFinal() and EVP_CipherFinal() are |
159 | similar way to EVP_EncryptFinal_ex(), EVP_DecryptFinal_ex() and | 168 | identical to EVP_EncryptFinal_ex(), EVP_DecryptFinal_ex() and |
160 | EVP_CipherFinal_ex() except B<ctx> is automatically cleaned up | 169 | EVP_CipherFinal_ex(). In previous releases they also used to clean up |
161 | after the call. | 170 | the B<ctx>, but this is no longer done and EVP_CIPHER_CTX_clean() |
171 | must be called to free any context resources. | ||
162 | 172 | ||
163 | EVP_get_cipherbyname(), EVP_get_cipherbynid() and EVP_get_cipherbyobj() | 173 | EVP_get_cipherbyname(), EVP_get_cipherbynid() and EVP_get_cipherbyobj() |
164 | return an EVP_CIPHER structure when passed a cipher name, a NID or an | 174 | return an EVP_CIPHER structure when passed a cipher name, a NID or an |
diff --git a/src/lib/libcrypto/doc/EVP_PKEY_CTX_ctrl.pod b/src/lib/libcrypto/doc/EVP_PKEY_CTX_ctrl.pod index ba6e51100b..91125da62e 100644 --- a/src/lib/libcrypto/doc/EVP_PKEY_CTX_ctrl.pod +++ b/src/lib/libcrypto/doc/EVP_PKEY_CTX_ctrl.pod | |||
@@ -2,7 +2,13 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | EVP_PKEY_ctrl, EVP_PKEY_ctrl_str - algorithm specific control operations | 5 | EVP_PKEY_CTX_ctrl, EVP_PKEY_CTX_ctrl_str, EVP_PKEY_get_default_digest_nid, |
6 | EVP_PKEY_CTX_set_signature_md, EVP_PKEY_CTX_set_rsa_padding, | ||
7 | EVP_PKEY_CTX_set_rsa_pss_saltlen, EVP_PKEY_CTX_set_rsa_rsa_keygen_bits, | ||
8 | EVP_PKEY_CTX_set_rsa_keygen_pubexp, EVP_PKEY_CTX_set_dsa_paramgen_bits, | ||
9 | EVP_PKEY_CTX_set_dh_paramgen_prime_len, | ||
10 | EVP_PKEY_CTX_set_dh_paramgen_generator, | ||
11 | EVP_PKEY_CTX_set_ec_paramgen_curve_nid - algorithm specific control operations | ||
6 | 12 | ||
7 | =head1 SYNOPSIS | 13 | =head1 SYNOPSIS |
8 | 14 | ||
@@ -45,7 +51,7 @@ B<p1> and B<p2>. | |||
45 | Applications will not normally call EVP_PKEY_CTX_ctrl() directly but will | 51 | Applications will not normally call EVP_PKEY_CTX_ctrl() directly but will |
46 | instead call one of the algorithm specific macros below. | 52 | instead call one of the algorithm specific macros below. |
47 | 53 | ||
48 | The function EVP_PKEY_ctrl_str() allows an application to send an algorithm | 54 | The function EVP_PKEY_CTX_ctrl_str() allows an application to send an algorithm |
49 | specific control operation to a context B<ctx> in string form. This is | 55 | specific control operation to a context B<ctx> in string form. This is |
50 | intended to be used for options specified on the command line or in text | 56 | intended to be used for options specified on the command line or in text |
51 | files. The commands supported are documented in the openssl utility | 57 | files. The commands supported are documented in the openssl utility |
diff --git a/src/lib/libcrypto/doc/EVP_SignInit.pod b/src/lib/libcrypto/doc/EVP_SignInit.pod index 6ea6df655e..5a1b67e006 100644 --- a/src/lib/libcrypto/doc/EVP_SignInit.pod +++ b/src/lib/libcrypto/doc/EVP_SignInit.pod | |||
@@ -30,9 +30,11 @@ signature context B<ctx>. This function can be called several times on the | |||
30 | same B<ctx> to include additional data. | 30 | same B<ctx> to include additional data. |
31 | 31 | ||
32 | EVP_SignFinal() signs the data in B<ctx> using the private key B<pkey> and | 32 | EVP_SignFinal() signs the data in B<ctx> using the private key B<pkey> and |
33 | places the signature in B<sig>. The number of bytes of data written (i.e. the | 33 | places the signature in B<sig>. B<sig> must be at least EVP_PKEY_size(pkey) |
34 | length of the signature) will be written to the integer at B<s>, at most | 34 | bytes in size. B<s> is an OUT parameter, and not used as an IN parameter. |
35 | EVP_PKEY_size(pkey) bytes will be written. | 35 | The number of bytes of data written (i.e. the length of the signature) |
36 | will be written to the integer at B<s>, at most EVP_PKEY_size(pkey) bytes | ||
37 | will be written. | ||
36 | 38 | ||
37 | EVP_SignInit() initializes a signing context B<ctx> to use the default | 39 | EVP_SignInit() initializes a signing context B<ctx> to use the default |
38 | implementation of digest B<type>. | 40 | implementation of digest B<type>. |
diff --git a/src/lib/libcrypto/doc/OPENSSL_config.pod b/src/lib/libcrypto/doc/OPENSSL_config.pod index 552ed956ab..897d2cce59 100644 --- a/src/lib/libcrypto/doc/OPENSSL_config.pod +++ b/src/lib/libcrypto/doc/OPENSSL_config.pod | |||
@@ -73,7 +73,7 @@ Neither OPENSSL_config() nor OPENSSL_no_config() return a value. | |||
73 | =head1 SEE ALSO | 73 | =head1 SEE ALSO |
74 | 74 | ||
75 | L<conf(5)|conf(5)>, L<CONF_load_modules_file(3)|CONF_load_modules_file(3)>, | 75 | L<conf(5)|conf(5)>, L<CONF_load_modules_file(3)|CONF_load_modules_file(3)>, |
76 | L<CONF_modules_free(3),CONF_modules_free(3)> | 76 | L<CONF_modules_free(3)|CONF_modules_free(3)> |
77 | 77 | ||
78 | =head1 HISTORY | 78 | =head1 HISTORY |
79 | 79 | ||
diff --git a/src/lib/libcrypto/doc/OPENSSL_load_builtin_modules.pod b/src/lib/libcrypto/doc/OPENSSL_load_builtin_modules.pod index 6c99170197..828fec651d 100644 --- a/src/lib/libcrypto/doc/OPENSSL_load_builtin_modules.pod +++ b/src/lib/libcrypto/doc/OPENSSL_load_builtin_modules.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | OPENSSL_load_builtin_modules - add standard configuration modules | 5 | OPENSSL_load_builtin_modules, ASN1_add_oid_module, ENGINE_add_conf_module - add standard configuration modules |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
diff --git a/src/lib/libcrypto/doc/OpenSSL_add_all_algorithms.pod b/src/lib/libcrypto/doc/OpenSSL_add_all_algorithms.pod index cc6c07fa24..1bba4d0212 100644 --- a/src/lib/libcrypto/doc/OpenSSL_add_all_algorithms.pod +++ b/src/lib/libcrypto/doc/OpenSSL_add_all_algorithms.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | OpenSSL_add_all_algorithms, OpenSSL_add_all_ciphers, OpenSSL_add_all_digests - | 5 | OpenSSL_add_all_algorithms, OpenSSL_add_all_ciphers, OpenSSL_add_all_digests, EVP_cleanup - |
6 | add algorithms to internal table | 6 | add algorithms to internal table |
7 | 7 | ||
8 | =head1 SYNOPSIS | 8 | =head1 SYNOPSIS |
diff --git a/src/lib/libcrypto/doc/PKCS5_PBKDF2_HMAC.pod b/src/lib/libcrypto/doc/PKCS5_PBKDF2_HMAC.pod new file mode 100644 index 0000000000..7a2b8e6187 --- /dev/null +++ b/src/lib/libcrypto/doc/PKCS5_PBKDF2_HMAC.pod | |||
@@ -0,0 +1,64 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | PKCS5_PBKDF2_HMAC, PKCS5_PBKDF2_HMAC_SHA1 - password based derivation routines with salt and iteration count | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/evp.h> | ||
10 | |||
11 | int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, | ||
12 | const unsigned char *salt, int saltlen, int iter, | ||
13 | const EVP_MD *digest, | ||
14 | int keylen, unsigned char *out); | ||
15 | |||
16 | int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, | ||
17 | const unsigned char *salt, int saltlen, int iter, | ||
18 | int keylen, unsigned char *out); | ||
19 | |||
20 | =head1 DESCRIPTION | ||
21 | |||
22 | PKCS5_PBKDF2_HMAC() derives a key from a password using a salt and iteration count | ||
23 | as specified in RFC 2898. | ||
24 | |||
25 | B<pass> is the password used in the derivation of length B<passlen>. B<pass> | ||
26 | is an optional parameter and can be NULL. If B<passlen> is -1, then the | ||
27 | function will calculate the length of B<pass> using strlen(). | ||
28 | |||
29 | B<salt> is the salt used in the derivation of length B<saltlen>. If the | ||
30 | B<salt> is NULL, then B<saltlen> must be 0. The function will not | ||
31 | attempt to calculate the length of the B<salt> because it is not assumed to | ||
32 | be NULL terminated. | ||
33 | |||
34 | B<iter> is the iteration count and its value should be greater than or | ||
35 | equal to 1. RFC 2898 suggests an iteration count of at least 1000. Any | ||
36 | B<iter> less than 1 is treated as a single iteration. | ||
37 | |||
38 | B<digest> is the message digest function used in the derivation. Values include | ||
39 | any of the EVP_* message digests. PKCS5_PBKDF2_HMAC_SHA1() calls | ||
40 | PKCS5_PBKDF2_HMAC() with EVP_sha1(). | ||
41 | |||
42 | The derived key will be written to B<out>. The size of the B<out> buffer | ||
43 | is specified via B<keylen>. | ||
44 | |||
45 | =head1 NOTES | ||
46 | |||
47 | A typical application of this function is to derive keying material for an | ||
48 | encryption algorithm from a password in the B<pass>, a salt in B<salt>, | ||
49 | and an iteration count. | ||
50 | |||
51 | Increasing the B<iter> parameter slows down the algorithm which makes it | ||
52 | harder for an attacker to peform a brute force attack using a large number | ||
53 | of candidate passwords. | ||
54 | |||
55 | =head1 RETURN VALUES | ||
56 | |||
57 | PKCS5_PBKDF2_HMAC() and PBKCS5_PBKDF2_HMAC_SHA1() return 1 on success or 0 on error. | ||
58 | |||
59 | =head1 SEE ALSO | ||
60 | |||
61 | L<evp(3)|evp(3)>, L<rand(3)|rand(3)>, | ||
62 | L<EVP_BytesToKey(3)|EVP_BytesToKey(3)> | ||
63 | |||
64 | =cut | ||
diff --git a/src/lib/libcrypto/doc/PKCS7_verify.pod b/src/lib/libcrypto/doc/PKCS7_verify.pod index f88e66632b..781c6108a9 100644 --- a/src/lib/libcrypto/doc/PKCS7_verify.pod +++ b/src/lib/libcrypto/doc/PKCS7_verify.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | PKCS7_verify - verify a PKCS#7 signedData structure | 5 | PKCS7_verify, PKCS7_get0_signers - verify a PKCS#7 signedData structure |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
diff --git a/src/lib/libcrypto/doc/RSA_generate_key.pod b/src/lib/libcrypto/doc/RSA_generate_key.pod index 867390884b..00026f04df 100644 --- a/src/lib/libcrypto/doc/RSA_generate_key.pod +++ b/src/lib/libcrypto/doc/RSA_generate_key.pod | |||
@@ -2,27 +2,32 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | RSA_generate_key - generate RSA key pair | 5 | RSA_generate_key_ex, RSA_generate_key - generate RSA key pair |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
9 | #include <openssl/rsa.h> | 9 | #include <openssl/rsa.h> |
10 | 10 | ||
11 | int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); | ||
12 | |||
13 | Deprecated: | ||
14 | |||
11 | RSA *RSA_generate_key(int num, unsigned long e, | 15 | RSA *RSA_generate_key(int num, unsigned long e, |
12 | void (*callback)(int,int,void *), void *cb_arg); | 16 | void (*callback)(int,int,void *), void *cb_arg); |
13 | 17 | ||
14 | =head1 DESCRIPTION | 18 | =head1 DESCRIPTION |
15 | 19 | ||
16 | RSA_generate_key() generates a key pair and returns it in a newly | 20 | RSA_generate_key_ex() generates a key pair and stores it in the B<RSA> |
17 | allocated B<RSA> structure. | 21 | structure provided in B<rsa>. |
18 | 22 | ||
19 | The modulus size will be B<num> bits, and the public exponent will be | 23 | The modulus size will be of length B<bits>, and the public exponent will be |
20 | B<e>. Key sizes with B<num> E<lt> 1024 should be considered insecure. | 24 | B<e>. Key sizes with B<num> E<lt> 1024 should be considered insecure. |
21 | The exponent is an odd number, typically 3, 17 or 65537. | 25 | The exponent is an odd number, typically 3, 17 or 65537. |
22 | 26 | ||
23 | A callback function may be used to provide feedback about the | 27 | A callback function may be used to provide feedback about the |
24 | progress of the key generation. If B<callback> is not B<NULL>, it | 28 | progress of the key generation. If B<cb> is not B<NULL>, it |
25 | will be called as follows: | 29 | will be called as follows using the BN_GENCB_call() function |
30 | described on the L<BN_generate_prime(3)|BN_generate_prime(3)> page: | ||
26 | 31 | ||
27 | =over 4 | 32 | =over 4 |
28 | 33 | ||
@@ -34,32 +39,38 @@ described in L<BN_generate_prime(3)|BN_generate_prime(3)>. | |||
34 | =item * | 39 | =item * |
35 | 40 | ||
36 | When the n-th randomly generated prime is rejected as not | 41 | When the n-th randomly generated prime is rejected as not |
37 | suitable for the key, B<callback(2, n, cb_arg)> is called. | 42 | suitable for the key, B<BN_GENCB_call(cb, 2, n)> is called. |
38 | 43 | ||
39 | =item * | 44 | =item * |
40 | 45 | ||
41 | When a random p has been found with p-1 relatively prime to B<e>, | 46 | When a random p has been found with p-1 relatively prime to B<e>, |
42 | it is called as B<callback(3, 0, cb_arg)>. | 47 | it is called as B<BN_GENCB_call(cb, 3, 0)>. |
43 | 48 | ||
44 | =back | 49 | =back |
45 | 50 | ||
46 | The process is then repeated for prime q with B<callback(3, 1, cb_arg)>. | 51 | The process is then repeated for prime q with B<BN_GENCB_call(cb, 3, 1)>. |
52 | |||
53 | RSA_generate_key is deprecated (new applications should use | ||
54 | RSA_generate_key_ex instead). RSA_generate_key works in the same was as | ||
55 | RSA_generate_key_ex except it uses "old style" call backs. See | ||
56 | L<BN_generate_prime(3)|BN_generate_prime(3)> for further details. | ||
47 | 57 | ||
48 | =head1 RETURN VALUE | 58 | =head1 RETURN VALUE |
49 | 59 | ||
50 | If key generation fails, RSA_generate_key() returns B<NULL>; the | 60 | If key generation fails, RSA_generate_key() returns B<NULL>. |
51 | error codes can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. | 61 | |
62 | The error codes can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. | ||
52 | 63 | ||
53 | =head1 BUGS | 64 | =head1 BUGS |
54 | 65 | ||
55 | B<callback(2, x, cb_arg)> is used with two different meanings. | 66 | B<BN_GENCB_call(cb, 2, x)> is used with two different meanings. |
56 | 67 | ||
57 | RSA_generate_key() goes into an infinite loop for illegal input values. | 68 | RSA_generate_key() goes into an infinite loop for illegal input values. |
58 | 69 | ||
59 | =head1 SEE ALSO | 70 | =head1 SEE ALSO |
60 | 71 | ||
61 | L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>, L<rsa(3)|rsa(3)>, | 72 | L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>, L<rsa(3)|rsa(3)>, |
62 | L<RSA_free(3)|RSA_free(3)> | 73 | L<RSA_free(3)|RSA_free(3)>, L<BN_generate_prime(3)|BN_generate_prime(3)> |
63 | 74 | ||
64 | =head1 HISTORY | 75 | =head1 HISTORY |
65 | 76 | ||
diff --git a/src/lib/libcrypto/doc/RSA_sign.pod b/src/lib/libcrypto/doc/RSA_sign.pod index a82f221909..51587bdc41 100644 --- a/src/lib/libcrypto/doc/RSA_sign.pod +++ b/src/lib/libcrypto/doc/RSA_sign.pod | |||
@@ -20,6 +20,10 @@ RSA_sign() signs the message digest B<m> of size B<m_len> using the | |||
20 | private key B<rsa> as specified in PKCS #1 v2.0. It stores the | 20 | private key B<rsa> as specified in PKCS #1 v2.0. It stores the |
21 | signature in B<sigret> and the signature size in B<siglen>. B<sigret> | 21 | signature in B<sigret> and the signature size in B<siglen>. B<sigret> |
22 | must point to RSA_size(B<rsa>) bytes of memory. | 22 | must point to RSA_size(B<rsa>) bytes of memory. |
23 | Note that PKCS #1 adds meta-data, placing limits on the size of the | ||
24 | key that can be used. | ||
25 | See L<RSA_private_encrypt(3)|RSA_private_encrypt(3)> for lower-level | ||
26 | operations. | ||
23 | 27 | ||
24 | B<type> denotes the message digest algorithm that was used to generate | 28 | B<type> denotes the message digest algorithm that was used to generate |
25 | B<m>. It usually is one of B<NID_sha1>, B<NID_ripemd160> and B<NID_md5>; | 29 | B<m>. It usually is one of B<NID_sha1>, B<NID_ripemd160> and B<NID_md5>; |
diff --git a/src/lib/libcrypto/doc/X509_NAME_ENTRY_get_object.pod b/src/lib/libcrypto/doc/X509_NAME_ENTRY_get_object.pod index 86242f8242..4603202db8 100644 --- a/src/lib/libcrypto/doc/X509_NAME_ENTRY_get_object.pod +++ b/src/lib/libcrypto/doc/X509_NAME_ENTRY_get_object.pod | |||
@@ -65,6 +65,6 @@ set first so the relevant field information can be looked up internally. | |||
65 | =head1 SEE ALSO | 65 | =head1 SEE ALSO |
66 | 66 | ||
67 | L<ERR_get_error(3)|ERR_get_error(3)>, L<d2i_X509_NAME(3)|d2i_X509_NAME(3)>, | 67 | L<ERR_get_error(3)|ERR_get_error(3)>, L<d2i_X509_NAME(3)|d2i_X509_NAME(3)>, |
68 | L<OBJ_nid2obj(3),OBJ_nid2obj(3)> | 68 | L<OBJ_nid2obj(3)|OBJ_nid2obj(3)> |
69 | 69 | ||
70 | =cut | 70 | =cut |
diff --git a/src/lib/libcrypto/doc/X509_STORE_CTX_get_ex_new_index.pod b/src/lib/libcrypto/doc/X509_STORE_CTX_get_ex_new_index.pod index 392b36c3ae..25224cef1b 100644 --- a/src/lib/libcrypto/doc/X509_STORE_CTX_get_ex_new_index.pod +++ b/src/lib/libcrypto/doc/X509_STORE_CTX_get_ex_new_index.pod | |||
@@ -17,7 +17,7 @@ structures | |||
17 | 17 | ||
18 | int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *d, int idx, void *arg); | 18 | int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *d, int idx, void *arg); |
19 | 19 | ||
20 | char *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *d, int idx); | 20 | void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *d, int idx); |
21 | 21 | ||
22 | =head1 DESCRIPTION | 22 | =head1 DESCRIPTION |
23 | 23 | ||
diff --git a/src/lib/libcrypto/doc/d2i_DSAPublicKey.pod b/src/lib/libcrypto/doc/d2i_DSAPublicKey.pod index e890841311..eeb96c485f 100644 --- a/src/lib/libcrypto/doc/d2i_DSAPublicKey.pod +++ b/src/lib/libcrypto/doc/d2i_DSAPublicKey.pod | |||
@@ -3,7 +3,7 @@ | |||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | d2i_DSAPublicKey, i2d_DSAPublicKey, d2i_DSAPrivateKey, i2d_DSAPrivateKey, | 5 | d2i_DSAPublicKey, i2d_DSAPublicKey, d2i_DSAPrivateKey, i2d_DSAPrivateKey, |
6 | d2i_DSA_PUBKEY, i2d_DSA_PUBKEY, d2i_DSA_SIG, i2d_DSA_SIG - DSA key encoding | 6 | d2i_DSA_PUBKEY, i2d_DSA_PUBKEY, d2i_DSAparams, i2d_DSAparams, d2i_DSA_SIG, i2d_DSA_SIG - DSA key encoding |
7 | and parsing functions. | 7 | and parsing functions. |
8 | 8 | ||
9 | =head1 SYNOPSIS | 9 | =head1 SYNOPSIS |
diff --git a/src/lib/libcrypto/doc/d2i_ECPKParameters.pod b/src/lib/libcrypto/doc/d2i_ECPKParameters.pod new file mode 100644 index 0000000000..704b4ab352 --- /dev/null +++ b/src/lib/libcrypto/doc/d2i_ECPKParameters.pod | |||
@@ -0,0 +1,84 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | d2i_ECPKParameters, i2d_ECPKParameters, d2i_ECPKParameters_bio, i2d_ECPKParameters_bio, d2i_ECPKParameters_fp, i2d_ECPKParameters_fp, ECPKParameters_print, ECPKParameters_print_fp - Functions for decoding and encoding ASN1 representations of elliptic curve entities | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/ec.h> | ||
10 | |||
11 | EC_GROUP *d2i_ECPKParameters(EC_GROUP **px, const unsigned char **in, long len); | ||
12 | int i2d_ECPKParameters(const EC_GROUP *x, unsigned char **out); | ||
13 | #define d2i_ECPKParameters_bio(bp,x) ASN1_d2i_bio_of(EC_GROUP,NULL,d2i_ECPKParameters,bp,x) | ||
14 | #define i2d_ECPKParameters_bio(bp,x) ASN1_i2d_bio_of_const(EC_GROUP,i2d_ECPKParameters,bp,x) | ||
15 | #define d2i_ECPKParameters_fp(fp,x) (EC_GROUP *)ASN1_d2i_fp(NULL, \ | ||
16 | (char *(*)())d2i_ECPKParameters,(fp),(unsigned char **)(x)) | ||
17 | #define i2d_ECPKParameters_fp(fp,x) ASN1_i2d_fp(i2d_ECPKParameters,(fp), \ | ||
18 | (unsigned char *)(x)) | ||
19 | int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off); | ||
20 | int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off); | ||
21 | |||
22 | |||
23 | =head1 DESCRIPTION | ||
24 | |||
25 | The ECPKParameters encode and decode routines encode and parse the public parameters for an | ||
26 | B<EC_GROUP> structure, which represents a curve. | ||
27 | |||
28 | d2i_ECPKParameters() attempts to decode B<len> bytes at B<*in>. If | ||
29 | successful a pointer to the B<EC_GROUP> structure is returned. If an error | ||
30 | occurred then B<NULL> is returned. If B<px> is not B<NULL> then the | ||
31 | returned structure is written to B<*px>. If B<*px> is not B<NULL> | ||
32 | then it is assumed that B<*px> contains a valid B<EC_GROUP> | ||
33 | structure and an attempt is made to reuse it. If the call is | ||
34 | successful B<*in> is incremented to the byte following the | ||
35 | parsed data. | ||
36 | |||
37 | i2d_ECPKParameters() encodes the structure pointed to by B<x> into DER format. | ||
38 | If B<out> is not B<NULL> is writes the DER encoded data to the buffer | ||
39 | at B<*out>, and increments it to point after the data just written. | ||
40 | If the return value is negative an error occurred, otherwise it | ||
41 | returns the length of the encoded data. | ||
42 | |||
43 | If B<*out> is B<NULL> memory will be allocated for a buffer and the encoded | ||
44 | data written to it. In this case B<*out> is not incremented and it points to | ||
45 | the start of the data just written. | ||
46 | |||
47 | d2i_ECPKParameters_bio() is similar to d2i_ECPKParameters() except it attempts | ||
48 | to parse data from BIO B<bp>. | ||
49 | |||
50 | d2i_ECPKParameters_fp() is similar to d2i_ECPKParameters() except it attempts | ||
51 | to parse data from FILE pointer B<fp>. | ||
52 | |||
53 | i2d_ECPKParameters_bio() is similar to i2d_ECPKParameters() except it writes | ||
54 | the encoding of the structure B<x> to BIO B<bp> and it | ||
55 | returns 1 for success and 0 for failure. | ||
56 | |||
57 | i2d_ECPKParameters_fp() is similar to i2d_ECPKParameters() except it writes | ||
58 | the encoding of the structure B<x> to BIO B<bp> and it | ||
59 | returns 1 for success and 0 for failure. | ||
60 | |||
61 | These functions are very similar to the X509 functions described in L<d2i_X509(3)|d2i_X509(3)>, | ||
62 | where further notes and examples are available. | ||
63 | |||
64 | The ECPKParameters_print and ECPKParameters_print_fp functions print a human-readable output | ||
65 | of the public parameters of the EC_GROUP to B<bp> or B<fp>. The output lines are indented by B<off> spaces. | ||
66 | |||
67 | =head1 RETURN VALUES | ||
68 | |||
69 | d2i_ECPKParameters(), d2i_ECPKParameters_bio() and d2i_ECPKParameters_fp() return a valid B<EC_GROUP> structure | ||
70 | or B<NULL> if an error occurs. | ||
71 | |||
72 | i2d_ECPKParameters() returns the number of bytes successfully encoded or a negative | ||
73 | value if an error occurs. | ||
74 | |||
75 | i2d_ECPKParameters_bio(), i2d_ECPKParameters_fp(), ECPKParameters_print and ECPKParameters_print_fp | ||
76 | return 1 for success and 0 if an error occurs. | ||
77 | |||
78 | =head1 SEE ALSO | ||
79 | |||
80 | L<crypto(3)|crypto(3)>, L<ec(3)|ec(3)>, L<EC_GROUP_new(3)|EC_GROUP_new(3)>, L<EC_GROUP_copy(3)|EC_GROUP_copy(3)>, | ||
81 | L<EC_POINT_new(3)|EC_POINT_new(3)>, L<EC_POINT_add(3)|EC_POINT_add(3)>, L<EC_KEY_new(3)|EC_KEY_new(3)>, | ||
82 | L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>, L<d2i_X509(3)|d2i_X509(3)> | ||
83 | |||
84 | =cut | ||
diff --git a/src/lib/libcrypto/doc/d2i_X509_CRL.pod b/src/lib/libcrypto/doc/d2i_X509_CRL.pod index dcdc86994d..563e4de8e0 100644 --- a/src/lib/libcrypto/doc/d2i_X509_CRL.pod +++ b/src/lib/libcrypto/doc/d2i_X509_CRL.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | d2i_X509_CRL, i2d_X509_CRL, d2i_X509_CRL_bio, d2i_509_CRL_fp, | 5 | d2i_X509_CRL, i2d_X509_CRL, d2i_X509_CRL_bio, d2i_X509_CRL_fp, |
6 | i2d_X509_CRL_bio, i2d_X509_CRL_fp - PKCS#10 certificate request functions. | 6 | i2d_X509_CRL_bio, i2d_X509_CRL_fp - PKCS#10 certificate request functions. |
7 | 7 | ||
8 | =head1 SYNOPSIS | 8 | =head1 SYNOPSIS |
diff --git a/src/lib/libcrypto/doc/ec.pod b/src/lib/libcrypto/doc/ec.pod new file mode 100644 index 0000000000..7d57ba8ea0 --- /dev/null +++ b/src/lib/libcrypto/doc/ec.pod | |||
@@ -0,0 +1,201 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | ec - Elliptic Curve functions | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/ec.h> | ||
10 | #include <openssl/bn.h> | ||
11 | |||
12 | const EC_METHOD *EC_GFp_simple_method(void); | ||
13 | const EC_METHOD *EC_GFp_mont_method(void); | ||
14 | const EC_METHOD *EC_GFp_nist_method(void); | ||
15 | const EC_METHOD *EC_GFp_nistp224_method(void); | ||
16 | const EC_METHOD *EC_GFp_nistp256_method(void); | ||
17 | const EC_METHOD *EC_GFp_nistp521_method(void); | ||
18 | |||
19 | const EC_METHOD *EC_GF2m_simple_method(void); | ||
20 | |||
21 | EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); | ||
22 | void EC_GROUP_free(EC_GROUP *group); | ||
23 | void EC_GROUP_clear_free(EC_GROUP *group); | ||
24 | int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); | ||
25 | EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); | ||
26 | const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); | ||
27 | int EC_METHOD_get_field_type(const EC_METHOD *meth); | ||
28 | int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, const BIGNUM *order, const BIGNUM *cofactor); | ||
29 | const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); | ||
30 | int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); | ||
31 | int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, BN_CTX *ctx); | ||
32 | void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); | ||
33 | int EC_GROUP_get_curve_name(const EC_GROUP *group); | ||
34 | void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); | ||
35 | int EC_GROUP_get_asn1_flag(const EC_GROUP *group); | ||
36 | void EC_GROUP_set_point_conversion_form(EC_GROUP *group, point_conversion_form_t form); | ||
37 | point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); | ||
38 | unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); | ||
39 | size_t EC_GROUP_get_seed_len(const EC_GROUP *); | ||
40 | size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); | ||
41 | int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); | ||
42 | int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx); | ||
43 | int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); | ||
44 | int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx); | ||
45 | int EC_GROUP_get_degree(const EC_GROUP *group); | ||
46 | int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); | ||
47 | int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); | ||
48 | int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); | ||
49 | EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); | ||
50 | EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); | ||
51 | EC_GROUP *EC_GROUP_new_by_curve_name(int nid); | ||
52 | |||
53 | size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); | ||
54 | |||
55 | EC_POINT *EC_POINT_new(const EC_GROUP *group); | ||
56 | void EC_POINT_free(EC_POINT *point); | ||
57 | void EC_POINT_clear_free(EC_POINT *point); | ||
58 | int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); | ||
59 | EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); | ||
60 | const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); | ||
61 | int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); | ||
62 | int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, | ||
63 | const BIGNUM *x, const BIGNUM *y, const BIGNUM *z, BN_CTX *ctx); | ||
64 | int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, | ||
65 | const EC_POINT *p, BIGNUM *x, BIGNUM *y, BIGNUM *z, BN_CTX *ctx); | ||
66 | int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, | ||
67 | const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); | ||
68 | int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, | ||
69 | const EC_POINT *p, BIGNUM *x, BIGNUM *y, BN_CTX *ctx); | ||
70 | int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, | ||
71 | const BIGNUM *x, int y_bit, BN_CTX *ctx); | ||
72 | int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, | ||
73 | const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); | ||
74 | int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, | ||
75 | const EC_POINT *p, BIGNUM *x, BIGNUM *y, BN_CTX *ctx); | ||
76 | int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, | ||
77 | const BIGNUM *x, int y_bit, BN_CTX *ctx); | ||
78 | size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, | ||
79 | point_conversion_form_t form, | ||
80 | unsigned char *buf, size_t len, BN_CTX *ctx); | ||
81 | int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, | ||
82 | const unsigned char *buf, size_t len, BN_CTX *ctx); | ||
83 | BIGNUM *EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *, | ||
84 | point_conversion_form_t form, BIGNUM *, BN_CTX *); | ||
85 | EC_POINT *EC_POINT_bn2point(const EC_GROUP *, const BIGNUM *, | ||
86 | EC_POINT *, BN_CTX *); | ||
87 | char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, | ||
88 | point_conversion_form_t form, BN_CTX *); | ||
89 | EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, | ||
90 | EC_POINT *, BN_CTX *); | ||
91 | |||
92 | int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, const EC_POINT *b, BN_CTX *ctx); | ||
93 | int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, BN_CTX *ctx); | ||
94 | int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); | ||
95 | int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p); | ||
96 | int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, BN_CTX *ctx); | ||
97 | int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, BN_CTX *ctx); | ||
98 | int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx); | ||
99 | int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, EC_POINT *points[], BN_CTX *ctx); | ||
100 | 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); | ||
101 | int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); | ||
102 | int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); | ||
103 | int EC_GROUP_have_precompute_mult(const EC_GROUP *group); | ||
104 | |||
105 | int EC_GROUP_get_basis_type(const EC_GROUP *); | ||
106 | int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k); | ||
107 | int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, | ||
108 | unsigned int *k2, unsigned int *k3); | ||
109 | EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len); | ||
110 | int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out); | ||
111 | #define d2i_ECPKParameters_bio(bp,x) ASN1_d2i_bio_of(EC_GROUP,NULL,d2i_ECPKParameters,bp,x) | ||
112 | #define i2d_ECPKParameters_bio(bp,x) ASN1_i2d_bio_of_const(EC_GROUP,i2d_ECPKParameters,bp,x) | ||
113 | #define d2i_ECPKParameters_fp(fp,x) (EC_GROUP *)ASN1_d2i_fp(NULL, \ | ||
114 | (char *(*)())d2i_ECPKParameters,(fp),(unsigned char **)(x)) | ||
115 | #define i2d_ECPKParameters_fp(fp,x) ASN1_i2d_fp(i2d_ECPKParameters,(fp), \ | ||
116 | (unsigned char *)(x)) | ||
117 | int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off); | ||
118 | int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off); | ||
119 | |||
120 | EC_KEY *EC_KEY_new(void); | ||
121 | int EC_KEY_get_flags(const EC_KEY *key); | ||
122 | void EC_KEY_set_flags(EC_KEY *key, int flags); | ||
123 | void EC_KEY_clear_flags(EC_KEY *key, int flags); | ||
124 | EC_KEY *EC_KEY_new_by_curve_name(int nid); | ||
125 | void EC_KEY_free(EC_KEY *key); | ||
126 | EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); | ||
127 | EC_KEY *EC_KEY_dup(const EC_KEY *src); | ||
128 | int EC_KEY_up_ref(EC_KEY *key); | ||
129 | const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); | ||
130 | int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); | ||
131 | const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); | ||
132 | int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); | ||
133 | const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); | ||
134 | int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); | ||
135 | unsigned EC_KEY_get_enc_flags(const EC_KEY *key); | ||
136 | void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); | ||
137 | point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); | ||
138 | void EC_KEY_set_conv_form(EC_KEY *eckey, point_conversion_form_t cform); | ||
139 | void *EC_KEY_get_key_method_data(EC_KEY *key, | ||
140 | void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *)); | ||
141 | void EC_KEY_insert_key_method_data(EC_KEY *key, void *data, | ||
142 | void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *)); | ||
143 | void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); | ||
144 | int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); | ||
145 | int EC_KEY_generate_key(EC_KEY *key); | ||
146 | int EC_KEY_check_key(const EC_KEY *key); | ||
147 | int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x, BIGNUM *y); | ||
148 | |||
149 | EC_KEY *d2i_ECPrivateKey(EC_KEY **key, const unsigned char **in, long len); | ||
150 | int i2d_ECPrivateKey(EC_KEY *key, unsigned char **out); | ||
151 | |||
152 | EC_KEY *d2i_ECParameters(EC_KEY **key, const unsigned char **in, long len); | ||
153 | int i2d_ECParameters(EC_KEY *key, unsigned char **out); | ||
154 | |||
155 | EC_KEY *o2i_ECPublicKey(EC_KEY **key, const unsigned char **in, long len); | ||
156 | int i2o_ECPublicKey(EC_KEY *key, unsigned char **out); | ||
157 | int ECParameters_print(BIO *bp, const EC_KEY *key); | ||
158 | int EC_KEY_print(BIO *bp, const EC_KEY *key, int off); | ||
159 | int ECParameters_print_fp(FILE *fp, const EC_KEY *key); | ||
160 | int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off); | ||
161 | #define ECParameters_dup(x) ASN1_dup_of(EC_KEY,i2d_ECParameters,d2i_ECParameters,x) | ||
162 | #define EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid) \ | ||
163 | EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, EVP_PKEY_OP_PARAMGEN, \ | ||
164 | EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID, nid, NULL) | ||
165 | |||
166 | |||
167 | =head1 DESCRIPTION | ||
168 | |||
169 | This library provides an extensive set of functions for performing operations on elliptic curves over finite fields. | ||
170 | In general an elliptic curve is one with an equation of the form: | ||
171 | |||
172 | y^2 = x^3 + ax + b | ||
173 | |||
174 | An B<EC_GROUP> structure is used to represent the definition of an elliptic curve. Points on a curve are stored using an | ||
175 | B<EC_POINT> structure. An B<EC_KEY> is used to hold a private/public key pair, where a private key is simply a BIGNUM and a | ||
176 | public key is a point on a curve (represented by an B<EC_POINT>). | ||
177 | |||
178 | The library contains a number of alternative implementations of the different functions. Each implementation is optimised | ||
179 | for different scenarios. No matter which implementation is being used, the interface remains the same. The library | ||
180 | handles calling the correct implementation when an interface function is invoked. An implementation is represented by | ||
181 | an B<EC_METHOD> structure. | ||
182 | |||
183 | The creation and destruction of B<EC_GROUP> objects is described in L<EC_GROUP_new(3)|EC_GROUP_new(3)>. Functions for | ||
184 | manipulating B<EC_GROUP> objects are described in L<EC_GROUP_copy(3)|EC_GROUP_copy(3)>. | ||
185 | |||
186 | Functions for creating, destroying and manipulating B<EC_POINT> objects are explained in L<EC_POINT_new(3)|EC_POINT_new(3)>, | ||
187 | whilst functions for performing mathematical operations and tests on B<EC_POINTs> are coverd in L<EC_POINT_add(3)|EC_POINT_add(3)>. | ||
188 | |||
189 | For working with private and public keys refer to L<EC_KEY_new(3)|EC_KEY_new(3)>. Implementations are covered in | ||
190 | L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>. | ||
191 | |||
192 | For information on encoding and decoding curve parameters to and from ASN1 see L<d2i_ECPKParameters(3)|d2i_ECPKParameters(3)>. | ||
193 | |||
194 | =head1 SEE ALSO | ||
195 | |||
196 | L<crypto(3)|crypto(3)>, L<EC_GROUP_new(3)|EC_GROUP_new(3)>, L<EC_GROUP_copy(3)|EC_GROUP_copy(3)>, | ||
197 | L<EC_POINT_new(3)|EC_POINT_new(3)>, L<EC_POINT_add(3)|EC_POINT_add(3)>, L<EC_KEY_new(3)|EC_KEY_new(3)>, | ||
198 | L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)|d2i_ECPKParameters(3)> | ||
199 | |||
200 | |||
201 | =cut | ||
diff --git a/src/lib/libcrypto/doc/evp.pod b/src/lib/libcrypto/doc/evp.pod index 33ce7cb6d6..57c761d01f 100644 --- a/src/lib/libcrypto/doc/evp.pod +++ b/src/lib/libcrypto/doc/evp.pod | |||
@@ -13,22 +13,58 @@ evp - high-level cryptographic functions | |||
13 | The EVP library provides a high-level interface to cryptographic | 13 | The EVP library provides a high-level interface to cryptographic |
14 | functions. | 14 | functions. |
15 | 15 | ||
16 | B<EVP_Seal>I<...> and B<EVP_Open>I<...> provide public key encryption | 16 | L<B<EVP_Seal>I<...>|EVP_SealInit(3)> and L<B<EVP_Open>I<...>|EVP_OpenInit(3)> |
17 | and decryption to implement digital "envelopes". | 17 | provide public key encryption and decryption to implement digital "envelopes". |
18 | 18 | ||
19 | The B<EVP_Sign>I<...> and B<EVP_Verify>I<...> functions implement | 19 | The L<B<EVP_DigestSign>I<...>|EVP_DigestSignInit(3)> and |
20 | digital signatures. | 20 | L<B<EVP_DigestVerify>I<...>|EVP_DigestVerifyInit(3)> functions implement |
21 | digital signatures and Message Authentication Codes (MACs). Also see the older | ||
22 | L<B<EVP_Sign>I<...>|EVP_SignInit(3)> and L<B<EVP_Verify>I<...>|EVP_VerifyInit(3)> | ||
23 | functions. | ||
21 | 24 | ||
22 | Symmetric encryption is available with the B<EVP_Encrypt>I<...> | 25 | Symmetric encryption is available with the L<B<EVP_Encrypt>I<...>|EVP_EncryptInit(3)> |
23 | functions. The B<EVP_Digest>I<...> functions provide message digests. | 26 | functions. The L<B<EVP_Digest>I<...>|EVP_DigestInit(3)> functions provide message digests. |
24 | 27 | ||
25 | The B<EVP_PKEY>I<...> functions provide a high level interface to | 28 | The B<EVP_PKEY>I<...> functions provide a high level interface to |
26 | asymmetric algorithms. | 29 | asymmetric algorithms. To create a new EVP_PKEY see |
30 | L<EVP_PKEY_new(3)|EVP_PKEY_new(3)>. EVP_PKEYs can be associated | ||
31 | with a private key of a particular algorithm by using the functions | ||
32 | described on the L<EVP_PKEY_set1_RSA(3)|EVP_PKEY_set1_RSA(3)> page, or | ||
33 | new keys can be generated using L<EVP_PKEY_keygen(3)|EVP_PKEY_keygen(3)>. | ||
34 | EVP_PKEYs can be compared using L<EVP_PKEY_cmp(3)|EVP_PKEY_cmp(3)>, or printed using | ||
35 | L<EVP_PKEY_print_private(3)|EVP_PKEY_print_private(3)>. | ||
36 | |||
37 | The EVP_PKEY functions support the full range of asymmetric algorithm operations: | ||
38 | |||
39 | =over | ||
40 | |||
41 | =item For key agreement see L<EVP_PKEY_derive(3)|EVP_PKEY_derive(3)> | ||
42 | |||
43 | =item For signing and verifying see L<EVP_PKEY_sign(3)|EVP_PKEY_sign(3)>, | ||
44 | L<EVP_PKEY_verify(3)|EVP_PKEY_verify(3)> and L<EVP_PKEY_verify_recover(3)|EVP_PKEY_verify_recover(3)>. | ||
45 | However, note that | ||
46 | these functions do not perform a digest of the data to be signed. Therefore | ||
47 | normally you would use the L<B<EVP_DigestSign>I<...>|EVP_DigestSignInit(3)> | ||
48 | functions for this purpose. | ||
49 | |||
50 | =item For encryption and decryption see L<EVP_PKEY_encrypt(3)|EVP_PKEY_encrypt(3)> | ||
51 | and L<EVP_PKEY_decrypt(3)|EVP_PKEY_decrypt(3)> respectively. However, note that | ||
52 | these functions perform encryption and decryption only. As public key | ||
53 | encryption is an expensive operation, normally you would wrap | ||
54 | an encrypted message in a "digital envelope" using the L<B<EVP_Seal>I<...>|EVP_SealInit(3)> and | ||
55 | L<B<EVP_Open>I<...>|EVP_OpenInit(3)> functions. | ||
56 | |||
57 | =back | ||
58 | |||
59 | The L<EVP_BytesToKey(3)|EVP_BytesToKey(3)> function provides some limited support for password | ||
60 | based encryption. Careful selection of the parameters will provide a PKCS#5 PBKDF1 compatible | ||
61 | implementation. However, new applications should not typically use this (preferring, for example, | ||
62 | PBKDF2 from PCKS#5). | ||
27 | 63 | ||
28 | Algorithms are loaded with OpenSSL_add_all_algorithms(3). | 64 | Algorithms are loaded with L<OpenSSL_add_all_algorithms(3)|OpenSSL_add_all_algorithms(3)>. |
29 | 65 | ||
30 | All the symmetric algorithms (ciphers), digests and asymmetric algorithms | 66 | All the symmetric algorithms (ciphers), digests and asymmetric algorithms |
31 | (public key algorithms) can be replaced by ENGINE modules providing alternative | 67 | (public key algorithms) can be replaced by L<ENGINE|engine(3)> modules providing alternative |
32 | implementations. If ENGINE implementations of ciphers or digests are registered | 68 | implementations. If ENGINE implementations of ciphers or digests are registered |
33 | as defaults, then the various EVP functions will automatically use those | 69 | as defaults, then the various EVP functions will automatically use those |
34 | implementations automatically in preference to built in software | 70 | implementations automatically in preference to built in software |
@@ -47,8 +83,20 @@ L<EVP_DigestInit(3)|EVP_DigestInit(3)>, | |||
47 | L<EVP_EncryptInit(3)|EVP_EncryptInit(3)>, | 83 | L<EVP_EncryptInit(3)|EVP_EncryptInit(3)>, |
48 | L<EVP_OpenInit(3)|EVP_OpenInit(3)>, | 84 | L<EVP_OpenInit(3)|EVP_OpenInit(3)>, |
49 | L<EVP_SealInit(3)|EVP_SealInit(3)>, | 85 | L<EVP_SealInit(3)|EVP_SealInit(3)>, |
86 | L<EVP_DigestSignInit(3)|EVP_DigestSignInit(3)>, | ||
50 | L<EVP_SignInit(3)|EVP_SignInit(3)>, | 87 | L<EVP_SignInit(3)|EVP_SignInit(3)>, |
51 | L<EVP_VerifyInit(3)|EVP_VerifyInit(3)>, | 88 | L<EVP_VerifyInit(3)|EVP_VerifyInit(3)>, |
89 | L<EVP_PKEY_new(3)|EVP_PKEY_new(3)>, | ||
90 | L<EVP_PKEY_set1_RSA(3)|EVP_PKEY_set1_RSA(3)>, | ||
91 | L<EVP_PKEY_keygen(3)|EVP_PKEY_keygen(3)>, | ||
92 | L<EVP_PKEY_print_private(3)|EVP_PKEY_print_private(3)>, | ||
93 | L<EVP_PKEY_decrypt(3)|EVP_PKEY_decrypt(3)>, | ||
94 | L<EVP_PKEY_encrypt(3)|EVP_PKEY_encrypt(3)>, | ||
95 | L<EVP_PKEY_sign(3)|EVP_PKEY_sign(3)>, | ||
96 | L<EVP_PKEY_verify(3)|EVP_PKEY_verify(3)>, | ||
97 | L<EVP_PKEY_verify_recover(3)|EVP_PKEY_verify_recover(3)>, | ||
98 | L<EVP_PKEY_derive(3)|EVP_PKEY_derive(3)>, | ||
99 | L<EVP_BytesToKey(3)|EVP_BytesToKey(3)>, | ||
52 | L<OpenSSL_add_all_algorithms(3)|OpenSSL_add_all_algorithms(3)>, | 100 | L<OpenSSL_add_all_algorithms(3)|OpenSSL_add_all_algorithms(3)>, |
53 | L<engine(3)|engine(3)> | 101 | L<engine(3)|engine(3)> |
54 | 102 | ||
diff --git a/src/lib/libcrypto/doc/i2d_PKCS7_bio_stream.pod b/src/lib/libcrypto/doc/i2d_PKCS7_bio_stream.pod index dc4d884c59..a37231e267 100644 --- a/src/lib/libcrypto/doc/i2d_PKCS7_bio_stream.pod +++ b/src/lib/libcrypto/doc/i2d_PKCS7_bio_stream.pod | |||
@@ -23,7 +23,7 @@ streaming. | |||
23 | 23 | ||
24 | =head1 BUGS | 24 | =head1 BUGS |
25 | 25 | ||
26 | The prefix "d2i" is arguably wrong because the function outputs BER format. | 26 | The prefix "i2d" is arguably wrong because the function outputs BER format. |
27 | 27 | ||
28 | =head1 RETURN VALUES | 28 | =head1 RETURN VALUES |
29 | 29 | ||
diff --git a/src/lib/libcrypto/man/Makefile b/src/lib/libcrypto/man/Makefile index bd0434d9e7..1e3b90321a 100644 --- a/src/lib/libcrypto/man/Makefile +++ b/src/lib/libcrypto/man/Makefile | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: Makefile,v 1.8 2014/07/11 13:35:57 beck Exp $ | 1 | # $OpenBSD: Makefile,v 1.9 2014/07/11 16:18:13 miod Exp $ |
2 | 2 | ||
3 | .include <bsd.own.mk> # for NOMAN | 3 | .include <bsd.own.mk> # for NOMAN |
4 | 4 | ||
@@ -73,6 +73,12 @@ MAN= \ | |||
73 | DSA_set_method.3 \ | 73 | DSA_set_method.3 \ |
74 | DSA_sign.3 \ | 74 | DSA_sign.3 \ |
75 | DSA_size.3 \ | 75 | DSA_size.3 \ |
76 | EC_GFp_simple_method.3 \ | ||
77 | EC_GROUP_copy.3 \ | ||
78 | EC_GROUP_new.3 \ | ||
79 | EC_KEY_new.3 \ | ||
80 | EC_POINT_add.3 \ | ||
81 | EC_POINT_new.3 \ | ||
76 | ERR.3 \ | 82 | ERR.3 \ |
77 | ERR_GET_LIB.3 \ | 83 | ERR_GET_LIB.3 \ |
78 | ERR_clear_error.3 \ | 84 | ERR_clear_error.3 \ |
@@ -114,6 +120,7 @@ MAN= \ | |||
114 | OPENSSL_config.3 \ | 120 | OPENSSL_config.3 \ |
115 | OPENSSL_load_builtin_modules.3 \ | 121 | OPENSSL_load_builtin_modules.3 \ |
116 | OpenSSL_add_all_algorithms.3 \ | 122 | OpenSSL_add_all_algorithms.3 \ |
123 | PKCS5_PBKDF2_HMAC.3 \ | ||
117 | PEM_read_bio_PrivateKey.3 \ | 124 | PEM_read_bio_PrivateKey.3 \ |
118 | PEM_write_bio_PKCS7_stream.3 \ | 125 | PEM_write_bio_PKCS7_stream.3 \ |
119 | PKCS12_create.3 \ | 126 | PKCS12_create.3 \ |
@@ -165,6 +172,7 @@ MAN= \ | |||
165 | d2i_ASN1_OBJECT.3 \ | 172 | d2i_ASN1_OBJECT.3 \ |
166 | d2i_DHparams.3 \ | 173 | d2i_DHparams.3 \ |
167 | d2i_DSAPublicKey.3 \ | 174 | d2i_DSAPublicKey.3 \ |
175 | d2i_ECPKParameters.3 \ | ||
168 | d2i_PKCS8PrivateKey.3 \ | 176 | d2i_PKCS8PrivateKey.3 \ |
169 | d2i_RSAPublicKey.3 \ | 177 | d2i_RSAPublicKey.3 \ |
170 | d2i_X509.3 \ | 178 | d2i_X509.3 \ |
@@ -175,6 +183,7 @@ MAN= \ | |||
175 | d2i_X509_SIG.3 \ | 183 | d2i_X509_SIG.3 \ |
176 | dh.3 \ | 184 | dh.3 \ |
177 | dsa.3 \ | 185 | dsa.3 \ |
186 | ec.3 \ | ||
178 | ecdsa.3 \ | 187 | ecdsa.3 \ |
179 | engine.3 \ | 188 | engine.3 \ |
180 | evp.3 \ | 189 | evp.3 \ |
@@ -267,6 +276,7 @@ MLINKS+=\ | |||
267 | BIO_s_accept.3 BIO_do_accept.3 \ | 276 | BIO_s_accept.3 BIO_do_accept.3 \ |
268 | BIO_s_accept.3 BIO_get_accept_port.3 \ | 277 | BIO_s_accept.3 BIO_get_accept_port.3 \ |
269 | BIO_s_accept.3 BIO_get_bind_mode.3 \ | 278 | BIO_s_accept.3 BIO_get_bind_mode.3 \ |
279 | BIO_s_accept.3 BIO_new_accept.3 \ | ||
270 | BIO_s_accept.3 BIO_set_accept_bios.3 \ | 280 | BIO_s_accept.3 BIO_set_accept_bios.3 \ |
271 | BIO_s_accept.3 BIO_set_accept_port.3 \ | 281 | BIO_s_accept.3 BIO_set_accept_port.3 \ |
272 | BIO_s_accept.3 BIO_set_bind_mode.3 \ | 282 | BIO_s_accept.3 BIO_set_bind_mode.3 \ |
@@ -287,6 +297,7 @@ MLINKS+=\ | |||
287 | BIO_s_connect.3 BIO_get_conn_int_port.3 \ | 297 | BIO_s_connect.3 BIO_get_conn_int_port.3 \ |
288 | BIO_s_connect.3 BIO_get_conn_ip.3 \ | 298 | BIO_s_connect.3 BIO_get_conn_ip.3 \ |
289 | BIO_s_connect.3 BIO_get_conn_port.3 \ | 299 | BIO_s_connect.3 BIO_get_conn_port.3 \ |
300 | BIO_s_connect.3 BIO_new_connect.3 \ | ||
290 | BIO_s_connect.3 BIO_set_conn_hostname.3 \ | 301 | BIO_s_connect.3 BIO_set_conn_hostname.3 \ |
291 | BIO_s_connect.3 BIO_set_conn_int_port.3 \ | 302 | BIO_s_connect.3 BIO_set_conn_int_port.3 \ |
292 | BIO_s_connect.3 BIO_set_conn_ip.3 \ | 303 | BIO_s_connect.3 BIO_set_conn_ip.3 \ |
@@ -329,6 +340,7 @@ MLINKS+=\ | |||
329 | BN_BLINDING_new.3 BN_BLINDING_get_flags.3 \ | 340 | BN_BLINDING_new.3 BN_BLINDING_get_flags.3 \ |
330 | BN_BLINDING_new.3 BN_BLINDING_set_flags.3 \ | 341 | BN_BLINDING_new.3 BN_BLINDING_set_flags.3 \ |
331 | BN_BLINDING_new.3 BN_BLINDING_set_thread_id.3 \ | 342 | BN_BLINDING_new.3 BN_BLINDING_set_thread_id.3 \ |
343 | BN_BLINDING_new.3 BN_BLINDING_thread_id.3 \ | ||
332 | BN_BLINDING_new.3 BN_BLINDING_update.3 \ | 344 | BN_BLINDING_new.3 BN_BLINDING_update.3 \ |
333 | BN_CTX_new.3 BN_CTX_free.3 \ | 345 | BN_CTX_new.3 BN_CTX_free.3 \ |
334 | BN_CTX_new.3 BN_CTX_init.3 \ | 346 | BN_CTX_new.3 BN_CTX_init.3 \ |
@@ -362,8 +374,13 @@ MLINKS+=\ | |||
362 | BN_cmp.3 BN_is_zero.3 \ | 374 | BN_cmp.3 BN_is_zero.3 \ |
363 | BN_cmp.3 BN_ucmp.3 \ | 375 | BN_cmp.3 BN_ucmp.3 \ |
364 | BN_copy.3 BN_dup.3 \ | 376 | BN_copy.3 BN_dup.3 \ |
377 | BN_generate_prime.3 BN_GENCB_call.3 \ | ||
378 | BN_generate_prime.3 BN_GENCB_set.3 \ | ||
379 | BN_generate_prime.3 BN_GENCB_set_old.3 \ | ||
365 | BN_generate_prime.3 BN_is_prime.3 \ | 380 | BN_generate_prime.3 BN_is_prime.3 \ |
381 | BN_generate_prime.3 BN_is_prime_ex.3 \ | ||
366 | BN_generate_prime.3 BN_is_prime_fasttest.3 \ | 382 | BN_generate_prime.3 BN_is_prime_fasttest.3 \ |
383 | BN_generate_prime.3 BN_is_prime_fasttest_ex.3 \ | ||
367 | BN_mod_mul_montgomery.3 BN_MONT_CTX_copy.3 \ | 384 | BN_mod_mul_montgomery.3 BN_MONT_CTX_copy.3 \ |
368 | BN_mod_mul_montgomery.3 BN_MONT_CTX_free.3 \ | 385 | BN_mod_mul_montgomery.3 BN_MONT_CTX_free.3 \ |
369 | BN_mod_mul_montgomery.3 BN_MONT_CTX_init.3 \ | 386 | BN_mod_mul_montgomery.3 BN_MONT_CTX_init.3 \ |
@@ -383,6 +400,7 @@ MLINKS+=\ | |||
383 | BN_num_bytes.3 BN_num_bits.3 \ | 400 | BN_num_bytes.3 BN_num_bits.3 \ |
384 | BN_num_bytes.3 BN_num_bits_word.3 \ | 401 | BN_num_bytes.3 BN_num_bits_word.3 \ |
385 | BN_rand.3 BN_pseudo_rand.3 \ | 402 | BN_rand.3 BN_pseudo_rand.3 \ |
403 | BN_rand.3 BN_pseudo_rand_range.3 \ | ||
386 | BN_rand.3 BN_rand_range.3 \ | 404 | BN_rand.3 BN_rand_range.3 \ |
387 | BN_set_bit.3 BN_clear_bit.3 \ | 405 | BN_set_bit.3 BN_clear_bit.3 \ |
388 | BN_set_bit.3 BN_is_bit_set.3 \ | 406 | BN_set_bit.3 BN_is_bit_set.3 \ |
@@ -418,6 +436,7 @@ MLINKS+=\ | |||
418 | CRYPTO_set_locking_callback.3 CRYPTO_w_unlock.3 \ | 436 | CRYPTO_set_locking_callback.3 CRYPTO_w_unlock.3 \ |
419 | DH_generate_key.3 DH_compute_key.3 \ | 437 | DH_generate_key.3 DH_compute_key.3 \ |
420 | DH_generate_parameters.3 DH_check.3 \ | 438 | DH_generate_parameters.3 DH_check.3 \ |
439 | DH_generate_parameters.3 DH_generate_parameters_ex.3 \ | ||
421 | DH_get_ex_new_index.3 DH_get_ex_data.3 \ | 440 | DH_get_ex_new_index.3 DH_get_ex_data.3 \ |
422 | DH_get_ex_new_index.3 DH_set_ex_data.3 \ | 441 | DH_get_ex_new_index.3 DH_set_ex_data.3 \ |
423 | DH_new.3 DH_free.3 \ | 442 | DH_new.3 DH_free.3 \ |
@@ -427,6 +446,7 @@ MLINKS+=\ | |||
427 | DH_set_method.3 DH_new_method.3 \ | 446 | DH_set_method.3 DH_new_method.3 \ |
428 | DH_set_method.3 DH_set_default_method.3 \ | 447 | DH_set_method.3 DH_set_default_method.3 \ |
429 | DH_set_method.3 DH_set_default_openssl_method.3 \ | 448 | DH_set_method.3 DH_set_default_openssl_method.3 \ |
449 | DSA_generate_parameters.3 DSA_generate_parameters_ex.3 \ | ||
430 | DSA_new.3 DSA_free.3 \ | 450 | DSA_new.3 DSA_free.3 \ |
431 | DSA_set_method.3 DSA_OpenSSL.3 \ | 451 | DSA_set_method.3 DSA_OpenSSL.3 \ |
432 | DSA_set_method.3 DSA_get_default_method.3 \ | 452 | DSA_set_method.3 DSA_get_default_method.3 \ |
@@ -436,6 +456,101 @@ MLINKS+=\ | |||
436 | DSA_set_method.3 DSA_set_default_openssl_method.3 \ | 456 | DSA_set_method.3 DSA_set_default_openssl_method.3 \ |
437 | DSA_sign.3 DSA_sign_setup.3 \ | 457 | DSA_sign.3 DSA_sign_setup.3 \ |
438 | DSA_sign.3 DSA_verify.3 \ | 458 | DSA_sign.3 DSA_verify.3 \ |
459 | EC_GFp_simple_method.3 EC_GF2m_simple_method.3 \ | ||
460 | EC_GFp_simple_method.3 EC_GFp_mont_method.3 \ | ||
461 | EC_GFp_simple_method.3 EC_GFp_nist_method.3 \ | ||
462 | EC_GFp_simple_method.3 EC_GFp_nistp224_method.3 \ | ||
463 | EC_GFp_simple_method.3 EC_GFp_nistp256_method.3 \ | ||
464 | EC_GFp_simple_method.3 EC_GFp_nistp521_method.3 \ | ||
465 | EC_GFp_simple_method.3 EC_METHOD_get_field_type.3 \ | ||
466 | EC_GROUP_copy.3 EC_GROUP_check.3 \ | ||
467 | EC_GROUP_copy.3 EC_GROUP_check_discriminant.3 \ | ||
468 | EC_GROUP_copy.3 EC_GROUP_cmp.3 \ | ||
469 | EC_GROUP_copy.3 EC_GROUP_dup.3 \ | ||
470 | EC_GROUP_copy.3 EC_GROUP_get0_generator.3 \ | ||
471 | EC_GROUP_copy.3 EC_GROUP_get0_seed.3 \ | ||
472 | EC_GROUP_copy.3 EC_GROUP_get_asn1_flag.3 \ | ||
473 | EC_GROUP_copy.3 EC_GROUP_get_basis_type.3 \ | ||
474 | EC_GROUP_copy.3 EC_GROUP_get_cofactor.3 \ | ||
475 | EC_GROUP_copy.3 EC_GROUP_get_curve_name.3 \ | ||
476 | EC_GROUP_copy.3 EC_GROUP_get_degree.3 \ | ||
477 | EC_GROUP_copy.3 EC_GROUP_get_order.3 \ | ||
478 | EC_GROUP_copy.3 EC_GROUP_get_pentanomial_basis.3 \ | ||
479 | EC_GROUP_copy.3 EC_GROUP_get_point_conversion_form.3 \ | ||
480 | EC_GROUP_copy.3 EC_GROUP_get_seed_len.3 \ | ||
481 | EC_GROUP_copy.3 EC_GROUP_get_trinomial_basis.3 \ | ||
482 | EC_GROUP_copy.3 EC_GROUP_method_of.3 \ | ||
483 | EC_GROUP_copy.3 EC_GROUP_set_asn1_flag.3 \ | ||
484 | EC_GROUP_copy.3 EC_GROUP_set_curve_name.3 \ | ||
485 | EC_GROUP_copy.3 EC_GROUP_set_point_conversion_form.3 \ | ||
486 | EC_GROUP_copy.3 EC_GROUP_set_seed.3 \ | ||
487 | EC_GROUP_copy.3 EC_GROUP_set_generator.3 \ | ||
488 | EC_GROUP_new.3 EC_GROUP_clear_free.3 \ | ||
489 | EC_GROUP_new.3 EC_GROUP_free.3 \ | ||
490 | EC_GROUP_new.3 EC_GROUP_get_curve_GF2m.3 \ | ||
491 | EC_GROUP_new.3 EC_GROUP_get_curve_GFp.3 \ | ||
492 | EC_GROUP_new.3 EC_GROUP_new_by_curve_name.3 \ | ||
493 | EC_GROUP_new.3 EC_GROUP_new_curve_GF2m.3 \ | ||
494 | EC_GROUP_new.3 EC_GROUP_new_curve_GFp.3 \ | ||
495 | EC_GROUP_new.3 EC_GROUP_set_curve_GF2m.3 \ | ||
496 | EC_GROUP_new.3 EC_GROUP_set_curve_GFp.3 \ | ||
497 | EC_GROUP_new.3 EC_get_builtin_curves.3 \ | ||
498 | EC_KEY_new.3 EC_KEY_check_key.3 \ | ||
499 | EC_KEY_new.3 EC_KEY_clear_flags.3 \ | ||
500 | EC_KEY_new.3 EC_KEY_copy.3 \ | ||
501 | EC_KEY_new.3 EC_KEY_dup.3 \ | ||
502 | EC_KEY_new.3 EC_KEY_free.3 \ | ||
503 | EC_KEY_new.3 EC_KEY_generate_key.3 \ | ||
504 | EC_KEY_new.3 EC_KEY_get0_group.3 \ | ||
505 | EC_KEY_new.3 EC_KEY_get0_private_key.3 \ | ||
506 | EC_KEY_new.3 EC_KEY_get0_public_key.3 \ | ||
507 | EC_KEY_new.3 EC_KEY_get_conv_form.3 \ | ||
508 | EC_KEY_new.3 EC_KEY_get_enc_flags.3 \ | ||
509 | EC_KEY_new.3 EC_KEY_get_flags.3 \ | ||
510 | EC_KEY_new.3 EC_KEY_get_key_method_data.3 \ | ||
511 | EC_KEY_new.3 EC_KEY_insert_key_method_data.3 \ | ||
512 | EC_KEY_new.3 EC_KEY_new_by_curve_name.3 \ | ||
513 | EC_KEY_new.3 EC_KEY_precompute_mult.3 \ | ||
514 | EC_KEY_new.3 EC_KEY_set_asn1_flag.3 \ | ||
515 | EC_KEY_new.3 EC_KEY_set_conv_form.3 \ | ||
516 | EC_KEY_new.3 EC_KEY_set_enc_flags.3 \ | ||
517 | EC_KEY_new.3 EC_KEY_set_flags.3 \ | ||
518 | EC_KEY_new.3 EC_KEY_set_group.3 \ | ||
519 | EC_KEY_new.3 EC_KEY_set_private_key.3 \ | ||
520 | EC_KEY_new.3 EC_KEY_set_public_key.3 \ | ||
521 | EC_KEY_new.3 EC_KEY_set_public_key_affine_coordinates.3 \ | ||
522 | EC_KEY_new.3 EC_KEY_up_ref.3 \ | ||
523 | EC_POINT_add.3 EC_GROUP_have_precompute_mult.3 \ | ||
524 | EC_POINT_add.3 EC_GROUP_precompute_mult.3 \ | ||
525 | EC_POINT_add.3 EC_POINT_cmp.3 \ | ||
526 | EC_POINT_add.3 EC_POINT_dbl.3 \ | ||
527 | EC_POINT_add.3 EC_POINT_invert.3 \ | ||
528 | EC_POINT_add.3 EC_POINT_is_at_infinity.3 \ | ||
529 | EC_POINT_add.3 EC_POINT_is_on_curve.3 \ | ||
530 | EC_POINT_add.3 EC_POINT_make_affine.3 \ | ||
531 | EC_POINT_add.3 EC_POINT_mul.3 \ | ||
532 | EC_POINT_add.3 EC_POINTs_make_affine.3 \ | ||
533 | EC_POINT_add.3 EC_POINTs_mul.3 \ | ||
534 | EC_POINT_new.3 EC_POINT_bn2point.3 \ | ||
535 | EC_POINT_new.3 EC_POINT_clear_free.3 \ | ||
536 | EC_POINT_new.3 EC_POINT_copy.3 \ | ||
537 | EC_POINT_new.3 EC_POINT_dup.3 \ | ||
538 | EC_POINT_new.3 EC_POINT_free.3 \ | ||
539 | EC_POINT_new.3 EC_POINT_get_Jprojective_coordinates_GFp.3 \ | ||
540 | EC_POINT_new.3 EC_POINT_get_affine_coordinates_GF2m.3 \ | ||
541 | EC_POINT_new.3 EC_POINT_get_affine_coordinates_GFp.3 \ | ||
542 | EC_POINT_new.3 EC_POINT_hex2point.3 \ | ||
543 | EC_POINT_new.3 EC_POINT_method_of.3 \ | ||
544 | EC_POINT_new.3 EC_POINT_oct2point.3 \ | ||
545 | EC_POINT_new.3 EC_POINT_point2bn.3 \ | ||
546 | EC_POINT_new.3 EC_POINT_point2hex.3 \ | ||
547 | EC_POINT_new.3 EC_POINT_point2oct.3 \ | ||
548 | EC_POINT_new.3 EC_POINT_set_Jprojective_coordinates.3 \ | ||
549 | EC_POINT_new.3 EC_POINT_set_affine_coordinates_GF2m.3 \ | ||
550 | EC_POINT_new.3 EC_POINT_set_affine_coordinates_GFp.3 \ | ||
551 | EC_POINT_new.3 EC_POINT_set_compressed_coordinates_GF2m.3 \ | ||
552 | EC_POINT_new.3 EC_POINT_set_compressed_coordinates_GFp.3 \ | ||
553 | EC_POINT_new.3 EC_POINT_set_to_infinity.3 \ | ||
439 | ERR_GET_LIB.3 ERR_GET_FUNC.3 \ | 554 | ERR_GET_LIB.3 ERR_GET_FUNC.3 \ |
440 | ERR_GET_LIB.3 ERR_GET_REASON.3 \ | 555 | ERR_GET_LIB.3 ERR_GET_REASON.3 \ |
441 | ERR_error_string.3 ERR_error_string_n.3 \ | 556 | ERR_error_string.3 ERR_error_string_n.3 \ |
@@ -452,6 +567,7 @@ MLINKS+=\ | |||
452 | ERR_load_strings.3 ERR_get_next_error_library.3 \ | 567 | ERR_load_strings.3 ERR_get_next_error_library.3 \ |
453 | ERR_print_errors.3 ERR_print_errors_fp.3 \ | 568 | ERR_print_errors.3 ERR_print_errors_fp.3 \ |
454 | ERR_put_error.3 ERR_add_error_data.3 \ | 569 | ERR_put_error.3 ERR_add_error_data.3 \ |
570 | ERR_remove_state.3 ERR_remove_thread_state.3 \ | ||
455 | ERR_set_mark.3 ERR_pop_to_mark.3 \ | 571 | ERR_set_mark.3 ERR_pop_to_mark.3 \ |
456 | EVP_DigestInit.3 EVP_DigestFinal.3 \ | 572 | EVP_DigestInit.3 EVP_DigestFinal.3 \ |
457 | EVP_DigestInit.3 EVP_DigestUpdate.3 \ | 573 | EVP_DigestInit.3 EVP_DigestUpdate.3 \ |
@@ -504,12 +620,67 @@ MLINKS+=\ | |||
504 | EVP_EncryptInit.3 EVP_DecryptUpdate.3 \ | 620 | EVP_EncryptInit.3 EVP_DecryptUpdate.3 \ |
505 | EVP_EncryptInit.3 EVP_EncryptFinal.3 \ | 621 | EVP_EncryptInit.3 EVP_EncryptFinal.3 \ |
506 | EVP_EncryptInit.3 EVP_EncryptUpdate.3 \ | 622 | EVP_EncryptInit.3 EVP_EncryptUpdate.3 \ |
623 | EVP_EncryptInit.3 EVP_aes_128_ccm.3 \ | ||
624 | EVP_EncryptInit.3 EVP_aes_128_gcm.3 \ | ||
625 | EVP_EncryptInit.3 EVP_aes_192_ccm.3 \ | ||
626 | EVP_EncryptInit.3 EVP_aes_192_gcm.3 \ | ||
627 | EVP_EncryptInit.3 EVP_aes_256_ccm.3 \ | ||
628 | EVP_EncryptInit.3 EVP_aes_256_gcm.3 \ | ||
629 | EVP_EncryptInit.3 EVP_bf_cbc.3 \ | ||
630 | EVP_EncryptInit.3 EVP_bf_cfb.3 \ | ||
631 | EVP_EncryptInit.3 EVP_bf_ecb.3 \ | ||
632 | EVP_EncryptInit.3 EVP_bf_ofb.3 \ | ||
633 | EVP_EncryptInit.3 EVP_cast5_cbc.3 \ | ||
634 | EVP_EncryptInit.3 EVP_cast5_cfb.3 \ | ||
635 | EVP_EncryptInit.3 EVP_cast5_ecb.3 \ | ||
636 | EVP_EncryptInit.3 EVP_cast5_ofb.3 \ | ||
637 | EVP_EncryptInit.3 EVP_des_cbc.3 \ | ||
638 | EVP_EncryptInit.3 EVP_des_cfb.3 \ | ||
639 | EVP_EncryptInit.3 EVP_des_ecb.3 \ | ||
640 | EVP_EncryptInit.3 EVP_des_ede.3 \ | ||
641 | EVP_EncryptInit.3 EVP_des_ede3.3 \ | ||
642 | EVP_EncryptInit.3 EVP_des_ede3_cbc.3 \ | ||
643 | EVP_EncryptInit.3 EVP_des_ede3_cfb.3 \ | ||
644 | EVP_EncryptInit.3 EVP_des_ede3_ofb.3 \ | ||
645 | EVP_EncryptInit.3 EVP_des_ede_cbc.3 \ | ||
646 | EVP_EncryptInit.3 EVP_des_ede_cfb.3 \ | ||
647 | EVP_EncryptInit.3 EVP_des_ede_ofb.3 \ | ||
648 | EVP_EncryptInit.3 EVP_des_ofb.3 \ | ||
649 | EVP_EncryptInit.3 EVP_desx_cbc.3 \ | ||
650 | EVP_EncryptInit.3 EVP_enc_null.3 \ | ||
507 | EVP_EncryptInit.3 EVP_get_cipherbyname.3 \ | 651 | EVP_EncryptInit.3 EVP_get_cipherbyname.3 \ |
508 | EVP_EncryptInit.3 EVP_get_cipherbynid.3 \ | 652 | EVP_EncryptInit.3 EVP_get_cipherbynid.3 \ |
509 | EVP_EncryptInit.3 EVP_get_cipherbyobj.3 \ | 653 | EVP_EncryptInit.3 EVP_get_cipherbyobj.3 \ |
654 | EVP_EncryptInit.3 EVP_idea_cbc.3 \ | ||
655 | EVP_EncryptInit.3 EVP_idea_cbc.3 \ | ||
656 | EVP_EncryptInit.3 EVP_idea_cfb.3 \ | ||
657 | EVP_EncryptInit.3 EVP_idea_ecb.3 \ | ||
658 | EVP_EncryptInit.3 EVP_idea_ofb.3 \ | ||
659 | EVP_EncryptInit.3 EVP_rc2_40_cbc.3 \ | ||
660 | EVP_EncryptInit.3 EVP_rc2_64_cbc.3 \ | ||
661 | EVP_EncryptInit.3 EVP_rc2_cbc.3 \ | ||
662 | EVP_EncryptInit.3 EVP_rc2_cfb.3 \ | ||
663 | EVP_EncryptInit.3 EVP_rc2_ecb.3 \ | ||
664 | EVP_EncryptInit.3 EVP_rc2_ofb.3 \ | ||
665 | EVP_EncryptInit.3 EVP_rc4.3 \ | ||
666 | EVP_EncryptInit.3 EVP_rc4_40.3 \ | ||
667 | EVP_EncryptInit.3 EVP_rc5_32_12_16_cbc.3 \ | ||
668 | EVP_EncryptInit.3 EVP_rc5_32_12_16_cfb.3 \ | ||
669 | EVP_EncryptInit.3 EVP_rc5_32_12_16_ecb.3 \ | ||
670 | EVP_EncryptInit.3 EVP_rc5_32_12_16_ofb.3 \ | ||
510 | EVP_OpenInit.3 EVP_OpenFinal.3 \ | 671 | EVP_OpenInit.3 EVP_OpenFinal.3 \ |
511 | EVP_OpenInit.3 EVP_OpenUpdate.3 \ | 672 | EVP_OpenInit.3 EVP_OpenUpdate.3 \ |
673 | EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_paramgen_generator.3 \ | ||
674 | EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dh_paramgen_prime_len.3 \ | ||
675 | EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_dsa_paramgen_bits.3 \ | ||
676 | EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_ec_paramgen_curve_nid.3 \ | ||
677 | EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_rsa_keygen_pubexp.3 \ | ||
678 | EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_rsa_padding.3 \ | ||
679 | EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_rsa_pss_saltlen.3 \ | ||
680 | EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_rsa_rsa_keygen_bits.3 \ | ||
681 | EVP_PKEY_CTX_ctrl.3 EVP_PKEY_CTX_set_signature_md.3 \ | ||
512 | EVP_PKEY_CTX_ctrl.3 EVP_PKEY_ctrl_str.3 \ | 682 | EVP_PKEY_CTX_ctrl.3 EVP_PKEY_ctrl_str.3 \ |
683 | EVP_PKEY_CTX_ctrl.3 EVP_PKEY_get_default_digest_nid.3 \ | ||
513 | EVP_PKEY_CTX_new.3 EVP_PKEY_CTX_new_id.3 \ | 684 | EVP_PKEY_CTX_new.3 EVP_PKEY_CTX_new_id.3 \ |
514 | EVP_PKEY_CTX_new.3 EVP_PKEY_CTX_dup.3 \ | 685 | EVP_PKEY_CTX_new.3 EVP_PKEY_CTX_dup.3 \ |
515 | EVP_PKEY_CTX_new.3 EVP_PKEY_CTX_free.3 \ | 686 | EVP_PKEY_CTX_new.3 EVP_PKEY_CTX_free.3 \ |
@@ -589,6 +760,7 @@ MLINKS+=\ | |||
589 | OpenSSL_add_all_algorithms.3 EVP_cleanup.3 \ | 760 | OpenSSL_add_all_algorithms.3 EVP_cleanup.3 \ |
590 | OpenSSL_add_all_algorithms.3 OpenSSL_add_all_ciphers.3 \ | 761 | OpenSSL_add_all_algorithms.3 OpenSSL_add_all_ciphers.3 \ |
591 | OpenSSL_add_all_algorithms.3 OpenSSL_add_all_digests.3 \ | 762 | OpenSSL_add_all_algorithms.3 OpenSSL_add_all_digests.3 \ |
763 | PKCS5_PBKDF2_HMAC.3 PKCS5_PBKDF2_HMAC_SHA1.3 \ | ||
592 | PEM_read_bio_PrivateKey.3 PEM_read_DHparams.3 \ | 764 | PEM_read_bio_PrivateKey.3 PEM_read_DHparams.3 \ |
593 | PEM_read_bio_PrivateKey.3 PEM_read_DSAPrivateKey.3 \ | 765 | PEM_read_bio_PrivateKey.3 PEM_read_DSAPrivateKey.3 \ |
594 | PEM_read_bio_PrivateKey.3 PEM_read_DSA_PUBKEY.3 \ | 766 | PEM_read_bio_PrivateKey.3 PEM_read_DSA_PUBKEY.3 \ |
@@ -654,6 +826,7 @@ MLINKS+=\ | |||
654 | PEM_read_bio_PrivateKey.3 PEM_write_bio_X509_CRL.3 \ | 826 | PEM_read_bio_PrivateKey.3 PEM_write_bio_X509_CRL.3 \ |
655 | PEM_read_bio_PrivateKey.3 PEM_write_bio_X509_REQ.3 \ | 827 | PEM_read_bio_PrivateKey.3 PEM_write_bio_X509_REQ.3 \ |
656 | PEM_read_bio_PrivateKey.3 PEM_write_bio_X509_REQ_NEW.3 \ | 828 | PEM_read_bio_PrivateKey.3 PEM_write_bio_X509_REQ_NEW.3 \ |
829 | PKCS7_verify.3 PKCS7_get0_signers.3 \ | ||
657 | RAND_add.3 RAND_seed.3 \ | 830 | RAND_add.3 RAND_seed.3 \ |
658 | RAND_add.3 RAND_status.3 \ | 831 | RAND_add.3 RAND_status.3 \ |
659 | RAND_bytes.3 RAND_pseudo_bytes.3 \ | 832 | RAND_bytes.3 RAND_pseudo_bytes.3 \ |
@@ -666,6 +839,7 @@ MLINKS+=\ | |||
666 | RIPEMD160.3 RIPEMD160_Init.3 \ | 839 | RIPEMD160.3 RIPEMD160_Init.3 \ |
667 | RIPEMD160.3 RIPEMD160_Update.3 \ | 840 | RIPEMD160.3 RIPEMD160_Update.3 \ |
668 | RSA_blinding_on.3 RSA_blinding_off.3 \ | 841 | RSA_blinding_on.3 RSA_blinding_off.3 \ |
842 | RSA_generate_key.3 RSA_generate_key_ex.3 \ | ||
669 | RSA_get_ex_new_index.3 RSA_get_ex_data.3 \ | 843 | RSA_get_ex_new_index.3 RSA_get_ex_data.3 \ |
670 | RSA_get_ex_new_index.3 RSA_set_ex_data.3 \ | 844 | RSA_get_ex_new_index.3 RSA_set_ex_data.3 \ |
671 | RSA_new.3 RSA_free.3 \ | 845 | RSA_new.3 RSA_free.3 \ |
@@ -783,6 +957,13 @@ MLINKS+=\ | |||
783 | d2i_DSAPublicKey.3 i2d_DSA_PUBKEY.3 \ | 957 | d2i_DSAPublicKey.3 i2d_DSA_PUBKEY.3 \ |
784 | d2i_DSAPublicKey.3 i2d_DSA_SIG.3 \ | 958 | d2i_DSAPublicKey.3 i2d_DSA_SIG.3 \ |
785 | d2i_DSAPublicKey.3 i2d_DSAparams.3 \ | 959 | d2i_DSAPublicKey.3 i2d_DSAparams.3 \ |
960 | d2i_ECPKParameters.3 ECPKParameters_print.3 \ | ||
961 | d2i_ECPKParameters.3 ECPKParameters_print_fp.3 \ | ||
962 | d2i_ECPKParameters.3 d2i_ECPKParameters_bio.3 \ | ||
963 | d2i_ECPKParameters.3 d2i_ECPKParameters_fp.3 \ | ||
964 | d2i_ECPKParameters.3 i2d_ECPKParameters.3 \ | ||
965 | d2i_ECPKParameters.3 i2d_ECPKParameters_bio.3 \ | ||
966 | d2i_ECPKParameters.3 i2d_ECPKParameters_fp.3 \ | ||
786 | d2i_PKCS8PrivateKey.3 d2i_PKCS8PrivateKey_bio.3 \ | 967 | d2i_PKCS8PrivateKey.3 d2i_PKCS8PrivateKey_bio.3 \ |
787 | d2i_PKCS8PrivateKey.3 d2i_PKCS8PrivateKey_fp.3 \ | 968 | d2i_PKCS8PrivateKey.3 d2i_PKCS8PrivateKey_fp.3 \ |
788 | d2i_PKCS8PrivateKey.3 i2d_PKCS8PrivateKey_bio.3 \ | 969 | d2i_PKCS8PrivateKey.3 i2d_PKCS8PrivateKey_bio.3 \ |
diff --git a/src/lib/libssl/man/Makefile b/src/lib/libssl/man/Makefile index 00414ad322..8af3072702 100644 --- a/src/lib/libssl/man/Makefile +++ b/src/lib/libssl/man/Makefile | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: Makefile,v 1.25 2014/04/16 09:50:10 mpi Exp $ | 1 | # $OpenBSD: Makefile,v 1.26 2014/07/11 16:18:13 miod Exp $ |
2 | 2 | ||
3 | .include <bsd.own.mk> # for NOMAN | 3 | .include <bsd.own.mk> # for NOMAN |
4 | 4 | ||
@@ -122,6 +122,18 @@ MLINKS+=\ | |||
122 | SSL_CTX_get_verify_mode.3 SSL_get_verify_callback.3 \ | 122 | SSL_CTX_get_verify_mode.3 SSL_get_verify_callback.3 \ |
123 | SSL_CTX_get_verify_mode.3 SSL_get_verify_depth.3 \ | 123 | SSL_CTX_get_verify_mode.3 SSL_get_verify_depth.3 \ |
124 | SSL_CTX_get_verify_mode.3 SSL_get_verify_mode.3 \ | 124 | SSL_CTX_get_verify_mode.3 SSL_get_verify_mode.3 \ |
125 | SSL_CTX_new.3 SSLv23_client_method.3 \ | ||
126 | SSL_CTX_new.3 SSLv23_method.3 \ | ||
127 | SSL_CTX_new.3 SSLv23_server_method.3 \ | ||
128 | SSL_CTX_new.3 SSLv3_client_method.3 \ | ||
129 | SSL_CTX_new.3 SSLv3_method.3 \ | ||
130 | SSL_CTX_new.3 SSLv3_server_method.3 \ | ||
131 | SSL_CTX_new.3 TLSv1_1_client_method.3 \ | ||
132 | SSL_CTX_new.3 TLSv1_1_method.3 \ | ||
133 | SSL_CTX_new.3 TLSv1_1_server_method.3 \ | ||
134 | SSL_CTX_new.3 TLSv1_client_method.3 \ | ||
135 | SSL_CTX_new.3 TLSv1_method.3 \ | ||
136 | SSL_CTX_new.3 TLSv1_server_method.3 \ | ||
125 | SSL_CTX_sess_number.3 SSL_CTX_sess_accept.3 \ | 137 | SSL_CTX_sess_number.3 SSL_CTX_sess_accept.3 \ |
126 | SSL_CTX_sess_number.3 SSL_CTX_sess_accept_good.3 \ | 138 | SSL_CTX_sess_number.3 SSL_CTX_sess_accept_good.3 \ |
127 | SSL_CTX_sess_number.3 SSL_CTX_sess_accept_renegotiate.3 \ | 139 | SSL_CTX_sess_number.3 SSL_CTX_sess_accept_renegotiate.3 \ |
diff --git a/src/lib/libssl/src/doc/apps/verify.pod b/src/lib/libssl/src/doc/apps/verify.pod index df448ce40d..427d463dae 100644 --- a/src/lib/libssl/src/doc/apps/verify.pod +++ b/src/lib/libssl/src/doc/apps/verify.pod | |||
@@ -385,7 +385,7 @@ an application specific error. Unused. | |||
385 | 385 | ||
386 | =head1 BUGS | 386 | =head1 BUGS |
387 | 387 | ||
388 | Although the issuer checks are a considerably improvement over the old technique they still | 388 | Although the issuer checks are a considerable improvement over the old technique they still |
389 | suffer from limitations in the underlying X509_LOOKUP API. One consequence of this is that | 389 | suffer from limitations in the underlying X509_LOOKUP API. One consequence of this is that |
390 | trusted certificates with matching subject name must either appear in a file (as specified by the | 390 | trusted certificates with matching subject name must either appear in a file (as specified by the |
391 | B<-CAfile> option) or a directory (as specified by B<-CApath>. If they occur in both then only | 391 | B<-CAfile> option) or a directory (as specified by B<-CApath>. If they occur in both then only |
diff --git a/src/lib/libssl/src/doc/crypto/ASN1_STRING_length.pod b/src/lib/libssl/src/doc/crypto/ASN1_STRING_length.pod index a08e9a0fa4..f651e4f2ae 100644 --- a/src/lib/libssl/src/doc/crypto/ASN1_STRING_length.pod +++ b/src/lib/libssl/src/doc/crypto/ASN1_STRING_length.pod | |||
@@ -3,7 +3,7 @@ | |||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | ASN1_STRING_dup, ASN1_STRING_cmp, ASN1_STRING_set, ASN1_STRING_length, | 5 | ASN1_STRING_dup, ASN1_STRING_cmp, ASN1_STRING_set, ASN1_STRING_length, |
6 | ASN1_STRING_length_set, ASN1_STRING_type, ASN1_STRING_data - | 6 | ASN1_STRING_length_set, ASN1_STRING_type, ASN1_STRING_data, ASN1_STRING_to_UTF8 - |
7 | ASN1_STRING utility functions | 7 | ASN1_STRING utility functions |
8 | 8 | ||
9 | =head1 SYNOPSIS | 9 | =head1 SYNOPSIS |
diff --git a/src/lib/libssl/src/doc/crypto/ASN1_STRING_print_ex.pod b/src/lib/libssl/src/doc/crypto/ASN1_STRING_print_ex.pod index 666ac551cd..a93047a040 100644 --- a/src/lib/libssl/src/doc/crypto/ASN1_STRING_print_ex.pod +++ b/src/lib/libssl/src/doc/crypto/ASN1_STRING_print_ex.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | ASN1_STRING_print_ex, ASN1_STRING_print_ex_fp - ASN1_STRING output routines. | 5 | ASN1_STRING_print_ex, ASN1_STRING_print_ex_fp, ASN1_STRING_print - ASN1_STRING output routines. |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
diff --git a/src/lib/libssl/src/doc/crypto/ASN1_generate_nconf.pod b/src/lib/libssl/src/doc/crypto/ASN1_generate_nconf.pod index fee7398bd4..4b8a937a66 100644 --- a/src/lib/libssl/src/doc/crypto/ASN1_generate_nconf.pod +++ b/src/lib/libssl/src/doc/crypto/ASN1_generate_nconf.pod | |||
@@ -61,7 +61,7 @@ Encode the B<NULL> type, the B<value> string must not be present. | |||
61 | =item B<INTEGER>, B<INT> | 61 | =item B<INTEGER>, B<INT> |
62 | 62 | ||
63 | Encodes an ASN1 B<INTEGER> type. The B<value> string represents | 63 | Encodes an ASN1 B<INTEGER> type. The B<value> string represents |
64 | the value of the integer, it can be preceeded by a minus sign and | 64 | the value of the integer, it can be prefaced by a minus sign and |
65 | is normally interpreted as a decimal value unless the prefix B<0x> | 65 | is normally interpreted as a decimal value unless the prefix B<0x> |
66 | is included. | 66 | is included. |
67 | 67 | ||
diff --git a/src/lib/libssl/src/doc/crypto/BIO_f_base64.pod b/src/lib/libssl/src/doc/crypto/BIO_f_base64.pod index d9ec3b518b..c1c3137d5e 100644 --- a/src/lib/libssl/src/doc/crypto/BIO_f_base64.pod +++ b/src/lib/libssl/src/doc/crypto/BIO_f_base64.pod | |||
@@ -46,11 +46,11 @@ to standard output: | |||
46 | 46 | ||
47 | b64 = BIO_new(BIO_f_base64()); | 47 | b64 = BIO_new(BIO_f_base64()); |
48 | bio = BIO_new_fp(stdout, BIO_NOCLOSE); | 48 | bio = BIO_new_fp(stdout, BIO_NOCLOSE); |
49 | bio = BIO_push(b64, bio); | 49 | BIO_push(b64, bio); |
50 | BIO_write(bio, message, strlen(message)); | 50 | BIO_write(b64, message, strlen(message)); |
51 | BIO_flush(bio); | 51 | BIO_flush(b64); |
52 | 52 | ||
53 | BIO_free_all(bio); | 53 | BIO_free_all(b64); |
54 | 54 | ||
55 | Read Base64 encoded data from standard input and write the decoded | 55 | Read Base64 encoded data from standard input and write the decoded |
56 | data to standard output: | 56 | data to standard output: |
@@ -62,11 +62,12 @@ data to standard output: | |||
62 | b64 = BIO_new(BIO_f_base64()); | 62 | b64 = BIO_new(BIO_f_base64()); |
63 | bio = BIO_new_fp(stdin, BIO_NOCLOSE); | 63 | bio = BIO_new_fp(stdin, BIO_NOCLOSE); |
64 | bio_out = BIO_new_fp(stdout, BIO_NOCLOSE); | 64 | bio_out = BIO_new_fp(stdout, BIO_NOCLOSE); |
65 | bio = BIO_push(b64, bio); | 65 | BIO_push(b64, bio); |
66 | while((inlen = BIO_read(bio, inbuf, 512)) > 0) | 66 | while((inlen = BIO_read(b64, inbuf, 512)) > 0) |
67 | BIO_write(bio_out, inbuf, inlen); | 67 | BIO_write(bio_out, inbuf, inlen); |
68 | 68 | ||
69 | BIO_free_all(bio); | 69 | BIO_flush(bio_out); |
70 | BIO_free_all(b64); | ||
70 | 71 | ||
71 | =head1 BUGS | 72 | =head1 BUGS |
72 | 73 | ||
diff --git a/src/lib/libssl/src/doc/crypto/BIO_find_type.pod b/src/lib/libssl/src/doc/crypto/BIO_find_type.pod index 03200a1b6b..a57d42f526 100644 --- a/src/lib/libssl/src/doc/crypto/BIO_find_type.pod +++ b/src/lib/libssl/src/doc/crypto/BIO_find_type.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | BIO_find_type, BIO_next - BIO chain traversal | 5 | BIO_find_type, BIO_next, BIO_method_type - BIO chain traversal |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
diff --git a/src/lib/libssl/src/doc/crypto/BIO_s_accept.pod b/src/lib/libssl/src/doc/crypto/BIO_s_accept.pod index 935d464748..5729d38193 100644 --- a/src/lib/libssl/src/doc/crypto/BIO_s_accept.pod +++ b/src/lib/libssl/src/doc/crypto/BIO_s_accept.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | BIO_s_accept, BIO_set_accept_port, BIO_get_accept_port, | 5 | BIO_s_accept, BIO_set_accept_port, BIO_get_accept_port, BIO_new_accept, |
6 | BIO_set_nbio_accept, BIO_set_accept_bios, BIO_set_bind_mode, | 6 | BIO_set_nbio_accept, BIO_set_accept_bios, BIO_set_bind_mode, |
7 | BIO_get_bind_mode, BIO_do_accept - accept BIO | 7 | BIO_get_bind_mode, BIO_do_accept - accept BIO |
8 | 8 | ||
diff --git a/src/lib/libssl/src/doc/crypto/BIO_s_connect.pod b/src/lib/libssl/src/doc/crypto/BIO_s_connect.pod index 7cad0e3f0f..45832e52f3 100644 --- a/src/lib/libssl/src/doc/crypto/BIO_s_connect.pod +++ b/src/lib/libssl/src/doc/crypto/BIO_s_connect.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | BIO_s_connect, BIO_set_conn_hostname, BIO_set_conn_port, | 5 | BIO_s_connect, BIO_new_connect, BIO_set_conn_hostname, BIO_set_conn_port, |
6 | BIO_set_conn_ip, BIO_set_conn_int_port, BIO_get_conn_hostname, | 6 | BIO_set_conn_ip, BIO_set_conn_int_port, BIO_get_conn_hostname, |
7 | BIO_get_conn_port, BIO_get_conn_ip, BIO_get_conn_int_port, | 7 | BIO_get_conn_port, BIO_get_conn_ip, BIO_get_conn_int_port, |
8 | BIO_set_nbio, BIO_do_connect - connect BIO | 8 | BIO_set_nbio, BIO_do_connect - connect BIO |
diff --git a/src/lib/libssl/src/doc/crypto/BN_BLINDING_new.pod b/src/lib/libssl/src/doc/crypto/BN_BLINDING_new.pod index 3e783ff8ac..1c586ac54e 100644 --- a/src/lib/libssl/src/doc/crypto/BN_BLINDING_new.pod +++ b/src/lib/libssl/src/doc/crypto/BN_BLINDING_new.pod | |||
@@ -4,9 +4,9 @@ | |||
4 | 4 | ||
5 | BN_BLINDING_new, BN_BLINDING_free, BN_BLINDING_update, BN_BLINDING_convert, | 5 | BN_BLINDING_new, BN_BLINDING_free, BN_BLINDING_update, BN_BLINDING_convert, |
6 | BN_BLINDING_invert, BN_BLINDING_convert_ex, BN_BLINDING_invert_ex, | 6 | BN_BLINDING_invert, BN_BLINDING_convert_ex, BN_BLINDING_invert_ex, |
7 | BN_BLINDING_get_thread_id, BN_BLINDING_set_thread_id, BN_BLINDING_get_flags, | 7 | BN_BLINDING_get_thread_id, BN_BLINDING_set_thread_id, BN_BLINDING_thread_id, |
8 | BN_BLINDING_set_flags, BN_BLINDING_create_param - blinding related BIGNUM | 8 | BN_BLINDING_get_flags, BN_BLINDING_set_flags, |
9 | functions. | 9 | BN_BLINDING_create_param - blinding related BIGNUM functions. |
10 | 10 | ||
11 | =head1 SYNOPSIS | 11 | =head1 SYNOPSIS |
12 | 12 | ||
diff --git a/src/lib/libssl/src/doc/crypto/BN_CTX_new.pod b/src/lib/libssl/src/doc/crypto/BN_CTX_new.pod index ad8d07db89..bbedbb1778 100644 --- a/src/lib/libssl/src/doc/crypto/BN_CTX_new.pod +++ b/src/lib/libssl/src/doc/crypto/BN_CTX_new.pod | |||
@@ -10,9 +10,12 @@ BN_CTX_new, BN_CTX_init, BN_CTX_free - allocate and free BN_CTX structures | |||
10 | 10 | ||
11 | BN_CTX *BN_CTX_new(void); | 11 | BN_CTX *BN_CTX_new(void); |
12 | 12 | ||
13 | void BN_CTX_free(BN_CTX *c); | ||
14 | |||
15 | Deprecated: | ||
16 | |||
13 | void BN_CTX_init(BN_CTX *c); | 17 | void BN_CTX_init(BN_CTX *c); |
14 | 18 | ||
15 | void BN_CTX_free(BN_CTX *c); | ||
16 | 19 | ||
17 | =head1 DESCRIPTION | 20 | =head1 DESCRIPTION |
18 | 21 | ||
@@ -22,8 +25,7 @@ is rather expensive when used in conjunction with repeated subroutine | |||
22 | calls, the B<BN_CTX> structure is used. | 25 | calls, the B<BN_CTX> structure is used. |
23 | 26 | ||
24 | BN_CTX_new() allocates and initializes a B<BN_CTX> | 27 | BN_CTX_new() allocates and initializes a B<BN_CTX> |
25 | structure. BN_CTX_init() initializes an existing uninitialized | 28 | structure. |
26 | B<BN_CTX>. | ||
27 | 29 | ||
28 | BN_CTX_free() frees the components of the B<BN_CTX>, and if it was | 30 | BN_CTX_free() frees the components of the B<BN_CTX>, and if it was |
29 | created by BN_CTX_new(), also the structure itself. | 31 | created by BN_CTX_new(), also the structure itself. |
@@ -31,6 +33,8 @@ If L<BN_CTX_start(3)|BN_CTX_start(3)> has been used on the B<BN_CTX>, | |||
31 | L<BN_CTX_end(3)|BN_CTX_end(3)> must be called before the B<BN_CTX> | 33 | L<BN_CTX_end(3)|BN_CTX_end(3)> must be called before the B<BN_CTX> |
32 | may be freed by BN_CTX_free(). | 34 | may be freed by BN_CTX_free(). |
33 | 35 | ||
36 | BN_CTX_init() (deprecated) initializes an existing uninitialized B<BN_CTX>. | ||
37 | This should not be used for new programs. Use BN_CTX_new() instead. | ||
34 | 38 | ||
35 | =head1 RETURN VALUES | 39 | =head1 RETURN VALUES |
36 | 40 | ||
diff --git a/src/lib/libssl/src/doc/crypto/BN_generate_prime.pod b/src/lib/libssl/src/doc/crypto/BN_generate_prime.pod index 2c5e6fae0f..0a95633d54 100644 --- a/src/lib/libssl/src/doc/crypto/BN_generate_prime.pod +++ b/src/lib/libssl/src/doc/crypto/BN_generate_prime.pod | |||
@@ -2,14 +2,32 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | BN_generate_prime, BN_is_prime, BN_is_prime_fasttest - generate primes and test | 5 | BN_generate_prime, BN_is_prime_ex, BN_is_prime_fasttest_ex, BN_GENCB_call, |
6 | for primality | 6 | BN_GENCB_set_old, BN_GENCB_set, BN_generate_prime, BN_is_prime, |
7 | BN_is_prime_fasttest - generate primes and test for primality | ||
7 | 8 | ||
8 | =head1 SYNOPSIS | 9 | =head1 SYNOPSIS |
9 | 10 | ||
10 | #include <openssl/bn.h> | 11 | #include <openssl/bn.h> |
11 | 12 | ||
12 | BIGNUM *BN_generate_prime(BIGNUM *ret, int num, int safe, BIGNUM *add, | 13 | int BN_generate_prime_ex(BIGNUM *ret,int bits,int safe, const BIGNUM *add, |
14 | const BIGNUM *rem, BN_GENCB *cb); | ||
15 | |||
16 | int BN_is_prime_ex(const BIGNUM *p,int nchecks, BN_CTX *ctx, BN_GENCB *cb); | ||
17 | |||
18 | int BN_is_prime_fasttest_ex(const BIGNUM *p,int nchecks, BN_CTX *ctx, | ||
19 | int do_trial_division, BN_GENCB *cb); | ||
20 | |||
21 | int BN_GENCB_call(BN_GENCB *cb, int a, int b); | ||
22 | |||
23 | #define BN_GENCB_set_old(gencb, callback, cb_arg) ... | ||
24 | |||
25 | #define BN_GENCB_set(gencb, callback, cb_arg) ... | ||
26 | |||
27 | |||
28 | Deprecated: | ||
29 | |||
30 | BIGNUM *BN_generate_prime(BIGNUM *ret, int num, int safe, BIGNUM *add, | ||
13 | BIGNUM *rem, void (*callback)(int, int, void *), void *cb_arg); | 31 | BIGNUM *rem, void (*callback)(int, int, void *), void *cb_arg); |
14 | 32 | ||
15 | int BN_is_prime(const BIGNUM *a, int checks, void (*callback)(int, int, | 33 | int BN_is_prime(const BIGNUM *a, int checks, void (*callback)(int, int, |
@@ -21,27 +39,27 @@ for primality | |||
21 | 39 | ||
22 | =head1 DESCRIPTION | 40 | =head1 DESCRIPTION |
23 | 41 | ||
24 | BN_generate_prime() generates a pseudo-random prime number of B<num> | 42 | BN_generate_prime_ex() generates a pseudo-random prime number of |
25 | bits. | 43 | bit length B<bits>. |
26 | If B<ret> is not B<NULL>, it will be used to store the number. | 44 | If B<ret> is not B<NULL>, it will be used to store the number. |
27 | 45 | ||
28 | If B<callback> is not B<NULL>, it is called as follows: | 46 | If B<cb> is not B<NULL>, it is used as follows: |
29 | 47 | ||
30 | =over 4 | 48 | =over 4 |
31 | 49 | ||
32 | =item * | 50 | =item * |
33 | 51 | ||
34 | B<callback(0, i, cb_arg)> is called after generating the i-th | 52 | B<BN_GENCB_call(cb, 0, i)> is called after generating the i-th |
35 | potential prime number. | 53 | potential prime number. |
36 | 54 | ||
37 | =item * | 55 | =item * |
38 | 56 | ||
39 | While the number is being tested for primality, B<callback(1, j, | 57 | While the number is being tested for primality, |
40 | cb_arg)> is called as described below. | 58 | B<BN_GENCB_call(cb, 1, j)> is called as described below. |
41 | 59 | ||
42 | =item * | 60 | =item * |
43 | 61 | ||
44 | When a prime has been found, B<callback(2, i, cb_arg)> is called. | 62 | When a prime has been found, B<BN_GENCB_call(cb, 2, i)> is called. |
45 | 63 | ||
46 | =back | 64 | =back |
47 | 65 | ||
@@ -57,35 +75,64 @@ that (p-1)/2 is also prime). | |||
57 | 75 | ||
58 | The prime number generation has a negligible error probability. | 76 | The prime number generation has a negligible error probability. |
59 | 77 | ||
60 | BN_is_prime() and BN_is_prime_fasttest() test if the number B<a> is | 78 | BN_is_prime_ex() and BN_is_prime_fasttest_ex() test if the number B<p> is |
61 | prime. The following tests are performed until one of them shows that | 79 | prime. The following tests are performed until one of them shows that |
62 | B<a> is composite; if B<a> passes all these tests, it is considered | 80 | B<p> is composite; if B<p> passes all these tests, it is considered |
63 | prime. | 81 | prime. |
64 | 82 | ||
65 | BN_is_prime_fasttest(), when called with B<do_trial_division == 1>, | 83 | BN_is_prime_fasttest_ex(), when called with B<do_trial_division == 1>, |
66 | first attempts trial division by a number of small primes; | 84 | first attempts trial division by a number of small primes; |
67 | if no divisors are found by this test and B<callback> is not B<NULL>, | 85 | if no divisors are found by this test and B<cb> is not B<NULL>, |
68 | B<callback(1, -1, cb_arg)> is called. | 86 | B<BN_GENCB_call(cb, 1, -1)> is called. |
69 | If B<do_trial_division == 0>, this test is skipped. | 87 | If B<do_trial_division == 0>, this test is skipped. |
70 | 88 | ||
71 | Both BN_is_prime() and BN_is_prime_fasttest() perform a Miller-Rabin | 89 | Both BN_is_prime_ex() and BN_is_prime_fasttest_ex() perform a Miller-Rabin |
72 | probabilistic primality test with B<checks> iterations. If | 90 | probabilistic primality test with B<nchecks> iterations. If |
73 | B<checks == BN_prime_checks>, a number of iterations is used that | 91 | B<nchecks == BN_prime_checks>, a number of iterations is used that |
74 | yields a false positive rate of at most 2^-80 for random input. | 92 | yields a false positive rate of at most 2^-80 for random input. |
75 | 93 | ||
76 | If B<callback> is not B<NULL>, B<callback(1, j, cb_arg)> is called | 94 | If B<cb> is not B<NULL>, B<BN_GENCB_call(cb, 1, j)> is called |
77 | after the j-th iteration (j = 0, 1, ...). B<ctx> is a | 95 | after the j-th iteration (j = 0, 1, ...). B<ctx> is a |
78 | pre-allocated B<BN_CTX> (to save the overhead of allocating and | 96 | pre-allocated B<BN_CTX> (to save the overhead of allocating and |
79 | freeing the structure in a loop), or B<NULL>. | 97 | freeing the structure in a loop), or B<NULL>. |
80 | 98 | ||
99 | BN_GENCB_call calls the callback function held in the B<BN_GENCB> structure | ||
100 | and passes the ints B<a> and B<b> as arguments. There are two types of | ||
101 | B<BN_GENCB> structure that are supported: "new" style and "old" style. New | ||
102 | programs should prefer the "new" style, whilst the "old" style is provided | ||
103 | for backwards compatibility purposes. | ||
104 | |||
105 | For "new" style callbacks a BN_GENCB structure should be initialised with a | ||
106 | call to BN_GENCB_set, where B<gencb> is a B<BN_GENCB *>, B<callback> is of | ||
107 | type B<int (*callback)(int, int, BN_GENCB *)> and B<cb_arg> is a B<void *>. | ||
108 | "Old" style callbacks are the same except they are initialised with a call | ||
109 | to BN_GENCB_set_old and B<callback> is of type | ||
110 | B<void (*callback)(int, int, void *)>. | ||
111 | |||
112 | A callback is invoked through a call to B<BN_GENCB_call>. This will check | ||
113 | the type of the callback and will invoke B<callback(a, b, gencb)> for new | ||
114 | style callbacks or B<callback(a, b, cb_arg)> for old style. | ||
115 | |||
116 | BN_generate_prime (deprecated) works in the same way as | ||
117 | BN_generate_prime_ex but expects an old style callback function | ||
118 | directly in the B<callback> parameter, and an argument to pass to it in | ||
119 | the B<cb_arg>. Similarly BN_is_prime and BN_is_prime_fasttest are | ||
120 | deprecated and can be compared to BN_is_prime_ex and | ||
121 | BN_is_prime_fasttest_ex respectively. | ||
122 | |||
81 | =head1 RETURN VALUES | 123 | =head1 RETURN VALUES |
82 | 124 | ||
83 | BN_generate_prime() returns the prime number on success, B<NULL> otherwise. | 125 | BN_generate_prime_ex() returns 1 on success or 0 on error. |
84 | 126 | ||
85 | BN_is_prime() returns 0 if the number is composite, 1 if it is | 127 | BN_is_prime_ex(), BN_is_prime_fasttest_ex(), BN_is_prime() and |
86 | prime with an error probability of less than 0.25^B<checks>, and | 128 | BN_is_prime_fasttest() return 0 if the number is composite, 1 if it is |
129 | prime with an error probability of less than 0.25^B<nchecks>, and | ||
87 | -1 on error. | 130 | -1 on error. |
88 | 131 | ||
132 | BN_generate_prime() returns the prime number on success, B<NULL> otherwise. | ||
133 | |||
134 | Callback functions should return 1 on success or 0 on error. | ||
135 | |||
89 | The error codes can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. | 136 | The error codes can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. |
90 | 137 | ||
91 | =head1 SEE ALSO | 138 | =head1 SEE ALSO |
diff --git a/src/lib/libssl/src/doc/crypto/BN_rand.pod b/src/lib/libssl/src/doc/crypto/BN_rand.pod index 70f435b203..471010cbb0 100644 --- a/src/lib/libssl/src/doc/crypto/BN_rand.pod +++ b/src/lib/libssl/src/doc/crypto/BN_rand.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | BN_rand, BN_pseudo_rand - generate pseudo-random number | 5 | BN_rand, BN_pseudo_rand, BN_rand_range, BN_pseudo_rand_range - generate pseudo-random number |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
diff --git a/src/lib/libssl/src/doc/crypto/CMS_add0_cert.pod b/src/lib/libssl/src/doc/crypto/CMS_add0_cert.pod index 3f042dc302..b289237ec2 100644 --- a/src/lib/libssl/src/doc/crypto/CMS_add0_cert.pod +++ b/src/lib/libssl/src/doc/crypto/CMS_add0_cert.pod | |||
@@ -2,8 +2,8 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | CMS_add0_cert, CMS_add1_cert, CMS_get1_certs, CMS_add0_crl, CMS_get1_crls, - | 5 | CMS_add0_cert, CMS_add1_cert, CMS_get1_certs, CMS_add0_crl, CMS_add1_crl, |
6 | CMS certificate and CRL utility functions | 6 | CMS_get1_crls - CMS certificate and CRL utility functions |
7 | 7 | ||
8 | =head1 SYNOPSIS | 8 | =head1 SYNOPSIS |
9 | 9 | ||
diff --git a/src/lib/libssl/src/doc/crypto/CMS_decrypt.pod b/src/lib/libssl/src/doc/crypto/CMS_decrypt.pod index 403aa98d04..3b44cec603 100644 --- a/src/lib/libssl/src/doc/crypto/CMS_decrypt.pod +++ b/src/lib/libssl/src/doc/crypto/CMS_decrypt.pod | |||
@@ -27,7 +27,21 @@ function or errors about unknown algorithms will occur. | |||
27 | 27 | ||
28 | Although the recipients certificate is not needed to decrypt the data it is | 28 | Although the recipients certificate is not needed to decrypt the data it is |
29 | needed to locate the appropriate (of possible several) recipients in the CMS | 29 | needed to locate the appropriate (of possible several) recipients in the CMS |
30 | structure. If B<cert> is set to NULL all possible recipients are tried. | 30 | structure. |
31 | |||
32 | If B<cert> is set to NULL all possible recipients are tried. This case however | ||
33 | is problematic. To thwart the MMA attack (Bleichenbacher's attack on | ||
34 | PKCS #1 v1.5 RSA padding) all recipients are tried whether they succeed or | ||
35 | not. If no recipient succeeds then a random symmetric key is used to decrypt | ||
36 | the content: this will typically output garbage and may (but is not guaranteed | ||
37 | to) ultimately return a padding error only. If CMS_decrypt() just returned an | ||
38 | error when all recipient encrypted keys failed to decrypt an attacker could | ||
39 | use this in a timing attack. If the special flag B<CMS_DEBUG_DECRYPT> is set | ||
40 | then the above behaviour is modified and an error B<is> returned if no | ||
41 | recipient encrypted key can be decrypted B<without> generating a random | ||
42 | content encryption key. Applications should use this flag with | ||
43 | B<extreme caution> especially in automated gateways as it can leave them | ||
44 | open to attack. | ||
31 | 45 | ||
32 | It is possible to determine the correct recipient key by other means (for | 46 | It is possible to determine the correct recipient key by other means (for |
33 | example looking them up in a database) and setting them in the CMS structure | 47 | example looking them up in a database) and setting them in the CMS structure |
diff --git a/src/lib/libssl/src/doc/crypto/CMS_get0_RecipientInfos.pod b/src/lib/libssl/src/doc/crypto/CMS_get0_RecipientInfos.pod index d9c4cb774b..da3914c0c0 100644 --- a/src/lib/libssl/src/doc/crypto/CMS_get0_RecipientInfos.pod +++ b/src/lib/libssl/src/doc/crypto/CMS_get0_RecipientInfos.pod | |||
@@ -6,7 +6,8 @@ CMS_get0_RecipientInfos, CMS_RecipientInfo_type, | |||
6 | CMS_RecipientInfo_ktri_get0_signer_id,CMS_RecipientInfo_ktri_cert_cmp, | 6 | CMS_RecipientInfo_ktri_get0_signer_id,CMS_RecipientInfo_ktri_cert_cmp, |
7 | CMS_RecipientInfo_set0_pkey, CMS_RecipientInfo_kekri_get0_id, | 7 | CMS_RecipientInfo_set0_pkey, CMS_RecipientInfo_kekri_get0_id, |
8 | CMS_RecipientInfo_kekri_id_cmp, CMS_RecipientInfo_set0_key, | 8 | CMS_RecipientInfo_kekri_id_cmp, CMS_RecipientInfo_set0_key, |
9 | CMS_RecipientInfo_decrypt - CMS envelopedData RecipientInfo routines | 9 | CMS_RecipientInfo_decrypt, |
10 | CMS_RecipientInfo_encrypt - CMS envelopedData RecipientInfo routines | ||
10 | 11 | ||
11 | =head1 SYNOPSIS | 12 | =head1 SYNOPSIS |
12 | 13 | ||
diff --git a/src/lib/libssl/src/doc/crypto/CMS_verify.pod b/src/lib/libssl/src/doc/crypto/CMS_verify.pod index 22b4c07513..69425008aa 100644 --- a/src/lib/libssl/src/doc/crypto/CMS_verify.pod +++ b/src/lib/libssl/src/doc/crypto/CMS_verify.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | CMS_verify - verify a CMS SignedData structure | 5 | CMS_verify, CMS_get0_signers - verify a CMS SignedData structure |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
diff --git a/src/lib/libssl/src/doc/crypto/CONF_modules_free.pod b/src/lib/libssl/src/doc/crypto/CONF_modules_free.pod index 7c61b72c13..803b2faab1 100644 --- a/src/lib/libssl/src/doc/crypto/CONF_modules_free.pod +++ b/src/lib/libssl/src/doc/crypto/CONF_modules_free.pod | |||
@@ -37,7 +37,7 @@ None of the functions return a value. | |||
37 | =head1 SEE ALSO | 37 | =head1 SEE ALSO |
38 | 38 | ||
39 | L<conf(5)|conf(5)>, L<OPENSSL_config(3)|OPENSSL_config(3)>, | 39 | L<conf(5)|conf(5)>, L<OPENSSL_config(3)|OPENSSL_config(3)>, |
40 | L<CONF_modules_load_file(3), CONF_modules_load_file(3)> | 40 | L<CONF_modules_load_file(3)|CONF_modules_load_file(3)> |
41 | 41 | ||
42 | =head1 HISTORY | 42 | =head1 HISTORY |
43 | 43 | ||
diff --git a/src/lib/libssl/src/doc/crypto/CONF_modules_load_file.pod b/src/lib/libssl/src/doc/crypto/CONF_modules_load_file.pod index 8cde6edb2d..c7994560c0 100644 --- a/src/lib/libssl/src/doc/crypto/CONF_modules_load_file.pod +++ b/src/lib/libssl/src/doc/crypto/CONF_modules_load_file.pod | |||
@@ -51,7 +51,7 @@ return value of the failing module (this will always be zero or negative). | |||
51 | =head1 SEE ALSO | 51 | =head1 SEE ALSO |
52 | 52 | ||
53 | L<conf(5)|conf(5)>, L<OPENSSL_config(3)|OPENSSL_config(3)>, | 53 | L<conf(5)|conf(5)>, L<OPENSSL_config(3)|OPENSSL_config(3)>, |
54 | L<CONF_free(3), CONF_free(3)>, L<err(3),err(3)> | 54 | L<CONF_free(3)|CONF_free(3)>, L<err(3)|err(3)> |
55 | 55 | ||
56 | =head1 HISTORY | 56 | =head1 HISTORY |
57 | 57 | ||
diff --git a/src/lib/libssl/src/doc/crypto/DH_generate_parameters.pod b/src/lib/libssl/src/doc/crypto/DH_generate_parameters.pod index 3832c25315..bd0782cb0c 100644 --- a/src/lib/libssl/src/doc/crypto/DH_generate_parameters.pod +++ b/src/lib/libssl/src/doc/crypto/DH_generate_parameters.pod | |||
@@ -2,31 +2,37 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | DH_generate_parameters, DH_check - generate and check Diffie-Hellman parameters | 5 | DH_generate_parameters_ex, DH_generate_parameters, |
6 | DH_check - generate and check Diffie-Hellman parameters | ||
6 | 7 | ||
7 | =head1 SYNOPSIS | 8 | =head1 SYNOPSIS |
8 | 9 | ||
9 | #include <openssl/dh.h> | 10 | #include <openssl/dh.h> |
10 | 11 | ||
11 | DH *DH_generate_parameters(int prime_len, int generator, | 12 | int DH_generate_parameters_ex(DH *dh, int prime_len,int generator, BN_GENCB *cb); |
12 | void (*callback)(int, int, void *), void *cb_arg); | ||
13 | 13 | ||
14 | int DH_check(DH *dh, int *codes); | 14 | int DH_check(DH *dh, int *codes); |
15 | 15 | ||
16 | Deprecated: | ||
17 | |||
18 | DH *DH_generate_parameters(int prime_len, int generator, | ||
19 | void (*callback)(int, int, void *), void *cb_arg); | ||
20 | |||
16 | =head1 DESCRIPTION | 21 | =head1 DESCRIPTION |
17 | 22 | ||
18 | DH_generate_parameters() generates Diffie-Hellman parameters that can | 23 | DH_generate_parameters_ex() generates Diffie-Hellman parameters that can |
19 | be shared among a group of users, and returns them in a newly | 24 | be shared among a group of users, and stores them in the provided B<DH> |
20 | allocated B<DH> structure. | 25 | structure. |
21 | 26 | ||
22 | B<prime_len> is the length in bits of the safe prime to be generated. | 27 | B<prime_len> is the length in bits of the safe prime to be generated. |
23 | B<generator> is a small number E<gt> 1, typically 2 or 5. | 28 | B<generator> is a small number E<gt> 1, typically 2 or 5. |
24 | 29 | ||
25 | A callback function may be used to provide feedback about the progress of the | 30 | A callback function may be used to provide feedback about the progress |
26 | key generation. If B<callback> is not B<NULL>, it will be called as described | 31 | of the key generation. If B<cb> is not B<NULL>, it will be |
27 | in L<BN_generate_prime(3)|BN_generate_prime(3)> while a random prime number is | 32 | called as described in L<BN_generate_prime(3)|BN_generate_prime(3)> while a random prime number is |
28 | generated, and when a prime has been found, B<callback(3, 0, cb_arg)> is | 33 | generated, and when a prime has been found, B<BN_GENCB_call(cb, 3, 0)> is |
29 | called. | 34 | called. See L<BN_generate_prime(3)|BN_generate_prime(3)> for information on |
35 | the BN_GENCB_call() function. | ||
30 | 36 | ||
31 | DH_check() validates Diffie-Hellman parameters. It checks that B<p> is | 37 | DH_check() validates Diffie-Hellman parameters. It checks that B<p> is |
32 | a safe prime, and that B<g> is a suitable generator. In the case of an | 38 | a safe prime, and that B<g> is a suitable generator. In the case of an |
@@ -37,19 +43,21 @@ checked, i.e. it does not equal 2 or 5. | |||
37 | 43 | ||
38 | =head1 RETURN VALUES | 44 | =head1 RETURN VALUES |
39 | 45 | ||
40 | DH_generate_parameters() returns a pointer to the DH structure, or | 46 | DH_generate_parameters_ex() and DH_check() return 1 if the check could be |
41 | NULL if the parameter generation fails. The error codes can be | 47 | performed, 0 otherwise. |
42 | obtained by L<ERR_get_error(3)|ERR_get_error(3)>. | 48 | |
49 | DH_generate_parameters() (deprecated) returns a pointer to the DH structure, or | ||
50 | NULL if the parameter generation fails. | ||
43 | 51 | ||
44 | DH_check() returns 1 if the check could be performed, 0 otherwise. | 52 | The error codes can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. |
45 | 53 | ||
46 | =head1 NOTES | 54 | =head1 NOTES |
47 | 55 | ||
48 | DH_generate_parameters() may run for several hours before finding a | 56 | DH_generate_parameters_ex() and DH_generate_parameters() may run for several |
49 | suitable prime. | 57 | hours before finding a suitable prime. |
50 | 58 | ||
51 | The parameters generated by DH_generate_parameters() are not to be | 59 | The parameters generated by DH_generate_parameters_ex() and DH_generate_parameters() |
52 | used in signature schemes. | 60 | are not to be used in signature schemes. |
53 | 61 | ||
54 | =head1 BUGS | 62 | =head1 BUGS |
55 | 63 | ||
diff --git a/src/lib/libssl/src/doc/crypto/DSA_generate_parameters.pod b/src/lib/libssl/src/doc/crypto/DSA_generate_parameters.pod index b64f0ca546..698b555a0e 100644 --- a/src/lib/libssl/src/doc/crypto/DSA_generate_parameters.pod +++ b/src/lib/libssl/src/doc/crypto/DSA_generate_parameters.pod | |||
@@ -2,20 +2,26 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | DSA_generate_parameters - generate DSA parameters | 5 | DSA_generate_parameters_ex, DSA_generate_parameters - generate DSA parameters |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
9 | #include <openssl/dsa.h> | 9 | #include <openssl/dsa.h> |
10 | 10 | ||
11 | int DSA_generate_parameters_ex(DSA *dsa, int bits, | ||
12 | const unsigned char *seed,int seed_len, | ||
13 | int *counter_ret, unsigned long *h_ret, BN_GENCB *cb); | ||
14 | |||
15 | Deprecated: | ||
16 | |||
11 | DSA *DSA_generate_parameters(int bits, unsigned char *seed, | 17 | DSA *DSA_generate_parameters(int bits, unsigned char *seed, |
12 | int seed_len, int *counter_ret, unsigned long *h_ret, | 18 | int seed_len, int *counter_ret, unsigned long *h_ret, |
13 | void (*callback)(int, int, void *), void *cb_arg); | 19 | void (*callback)(int, int, void *), void *cb_arg); |
14 | 20 | ||
15 | =head1 DESCRIPTION | 21 | =head1 DESCRIPTION |
16 | 22 | ||
17 | DSA_generate_parameters() generates primes p and q and a generator g | 23 | DSA_generate_parameters_ex() generates primes p and q and a generator g |
18 | for use in the DSA. | 24 | for use in the DSA and stores the result in B<dsa>. |
19 | 25 | ||
20 | B<bits> is the length of the prime to be generated; the DSS allows a | 26 | B<bits> is the length of the prime to be generated; the DSS allows a |
21 | maximum of 1024 bits. | 27 | maximum of 1024 bits. |
@@ -25,64 +31,74 @@ generated at random. Otherwise, the seed is used to generate | |||
25 | them. If the given seed does not yield a prime q, a new random | 31 | them. If the given seed does not yield a prime q, a new random |
26 | seed is chosen and placed at B<seed>. | 32 | seed is chosen and placed at B<seed>. |
27 | 33 | ||
28 | DSA_generate_parameters() places the iteration count in | 34 | DSA_generate_parameters_ex() places the iteration count in |
29 | *B<counter_ret> and a counter used for finding a generator in | 35 | *B<counter_ret> and a counter used for finding a generator in |
30 | *B<h_ret>, unless these are B<NULL>. | 36 | *B<h_ret>, unless these are B<NULL>. |
31 | 37 | ||
32 | A callback function may be used to provide feedback about the progress | 38 | A callback function may be used to provide feedback about the progress |
33 | of the key generation. If B<callback> is not B<NULL>, it will be | 39 | of the key generation. If B<cb> is not B<NULL>, it will be |
34 | called as follows: | 40 | called as shown below. For information on the BN_GENCB structure and the |
41 | BN_GENCB_call function discussed below, refer to | ||
42 | L<BN_generate_prime(3)|BN_generate_prime(3)>. | ||
35 | 43 | ||
36 | =over 4 | 44 | =over 4 |
37 | 45 | ||
38 | =item * | 46 | =item * |
39 | 47 | ||
40 | When a candidate for q is generated, B<callback(0, m++, cb_arg)> is called | 48 | When a candidate for q is generated, B<BN_GENCB_call(cb, 0, m++)> is called |
41 | (m is 0 for the first candidate). | 49 | (m is 0 for the first candidate). |
42 | 50 | ||
43 | =item * | 51 | =item * |
44 | 52 | ||
45 | When a candidate for q has passed a test by trial division, | 53 | When a candidate for q has passed a test by trial division, |
46 | B<callback(1, -1, cb_arg)> is called. | 54 | B<BN_GENCB_call(cb, 1, -1)> is called. |
47 | While a candidate for q is tested by Miller-Rabin primality tests, | 55 | While a candidate for q is tested by Miller-Rabin primality tests, |
48 | B<callback(1, i, cb_arg)> is called in the outer loop | 56 | B<BN_GENCB_call(cb, 1, i)> is called in the outer loop |
49 | (once for each witness that confirms that the candidate may be prime); | 57 | (once for each witness that confirms that the candidate may be prime); |
50 | i is the loop counter (starting at 0). | 58 | i is the loop counter (starting at 0). |
51 | 59 | ||
52 | =item * | 60 | =item * |
53 | 61 | ||
54 | When a prime q has been found, B<callback(2, 0, cb_arg)> and | 62 | When a prime q has been found, B<BN_GENCB_call(cb, 2, 0)> and |
55 | B<callback(3, 0, cb_arg)> are called. | 63 | B<BN_GENCB_call(cb, 3, 0)> are called. |
56 | 64 | ||
57 | =item * | 65 | =item * |
58 | 66 | ||
59 | Before a candidate for p (other than the first) is generated and tested, | 67 | Before a candidate for p (other than the first) is generated and tested, |
60 | B<callback(0, counter, cb_arg)> is called. | 68 | B<BN_GENCB_call(cb, 0, counter)> is called. |
61 | 69 | ||
62 | =item * | 70 | =item * |
63 | 71 | ||
64 | When a candidate for p has passed the test by trial division, | 72 | When a candidate for p has passed the test by trial division, |
65 | B<callback(1, -1, cb_arg)> is called. | 73 | B<BN_GENCB_call(cb, 1, -1)> is called. |
66 | While it is tested by the Miller-Rabin primality test, | 74 | While it is tested by the Miller-Rabin primality test, |
67 | B<callback(1, i, cb_arg)> is called in the outer loop | 75 | B<BN_GENCB_call(cb, 1, i)> is called in the outer loop |
68 | (once for each witness that confirms that the candidate may be prime). | 76 | (once for each witness that confirms that the candidate may be prime). |
69 | i is the loop counter (starting at 0). | 77 | i is the loop counter (starting at 0). |
70 | 78 | ||
71 | =item * | 79 | =item * |
72 | 80 | ||
73 | When p has been found, B<callback(2, 1, cb_arg)> is called. | 81 | When p has been found, B<BN_GENCB_call(cb, 2, 1)> is called. |
74 | 82 | ||
75 | =item * | 83 | =item * |
76 | 84 | ||
77 | When the generator has been found, B<callback(3, 1, cb_arg)> is called. | 85 | When the generator has been found, B<BN_GENCB_call(cb, 3, 1)> is called. |
78 | 86 | ||
79 | =back | 87 | =back |
80 | 88 | ||
89 | DSA_generate_parameters() (deprecated) works in much the same way as for DSA_generate_parameters_ex, except that no B<dsa> parameter is passed and | ||
90 | instead a newly allocated B<DSA> structure is returned. Additionally "old | ||
91 | style" callbacks are used instead of the newer BN_GENCB based approach. | ||
92 | Refer to L<BN_generate_prime(3)|BN_generate_prime(3)> for further information. | ||
93 | |||
81 | =head1 RETURN VALUE | 94 | =head1 RETURN VALUE |
82 | 95 | ||
96 | DSA_generate_parameters_ex() returns a 1 on success, or 0 otherwise. | ||
97 | |||
83 | DSA_generate_parameters() returns a pointer to the DSA structure, or | 98 | DSA_generate_parameters() returns a pointer to the DSA structure, or |
84 | B<NULL> if the parameter generation fails. The error codes can be | 99 | B<NULL> if the parameter generation fails. |
85 | obtained by L<ERR_get_error(3)|ERR_get_error(3)>. | 100 | |
101 | The error codes can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. | ||
86 | 102 | ||
87 | =head1 BUGS | 103 | =head1 BUGS |
88 | 104 | ||
@@ -91,7 +107,7 @@ Seed lengths E<gt> 20 are not supported. | |||
91 | =head1 SEE ALSO | 107 | =head1 SEE ALSO |
92 | 108 | ||
93 | L<dsa(3)|dsa(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>, | 109 | L<dsa(3)|dsa(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>, |
94 | L<DSA_free(3)|DSA_free(3)> | 110 | L<DSA_free(3)|DSA_free(3)>, L<BN_generate_prime(3)|BN_generate_prime(3)> |
95 | 111 | ||
96 | =head1 HISTORY | 112 | =head1 HISTORY |
97 | 113 | ||
diff --git a/src/lib/libssl/src/doc/crypto/EC_GFp_simple_method.pod b/src/lib/libssl/src/doc/crypto/EC_GFp_simple_method.pod new file mode 100644 index 0000000000..aff20ac175 --- /dev/null +++ b/src/lib/libssl/src/doc/crypto/EC_GFp_simple_method.pod | |||
@@ -0,0 +1,60 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | EC_GFp_simple_method, EC_GFp_mont_method, EC_GFp_nist_method, EC_GFp_nistp224_method, EC_GFp_nistp256_method, EC_GFp_nistp521_method, EC_GF2m_simple_method, EC_METHOD_get_field_type - Functions for obtaining B<EC_METHOD> objects. | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/ec.h> | ||
10 | |||
11 | const EC_METHOD *EC_GFp_simple_method(void); | ||
12 | const EC_METHOD *EC_GFp_mont_method(void); | ||
13 | const EC_METHOD *EC_GFp_nist_method(void); | ||
14 | const EC_METHOD *EC_GFp_nistp224_method(void); | ||
15 | const EC_METHOD *EC_GFp_nistp256_method(void); | ||
16 | const EC_METHOD *EC_GFp_nistp521_method(void); | ||
17 | |||
18 | const EC_METHOD *EC_GF2m_simple_method(void); | ||
19 | |||
20 | int EC_METHOD_get_field_type(const EC_METHOD *meth); | ||
21 | |||
22 | =head1 DESCRIPTION | ||
23 | |||
24 | The Elliptic Curve library provides a number of different implementations through a single common interface. | ||
25 | When constructing a curve using EC_GROUP_new (see L<EC_GROUP_new(3)|EC_GROUP_new(3)>) an | ||
26 | implementation method must be provided. The functions described here all return a const pointer to an | ||
27 | B<EC_METHOD> structure that can be passed to EC_GROUP_NEW. It is important that the correct implementation | ||
28 | type for the form of curve selected is used. | ||
29 | |||
30 | For F2^m curves there is only one implementation choice, i.e. EC_GF2_simple_method. | ||
31 | |||
32 | For Fp curves the lowest common denominator implementation is the EC_GFp_simple_method implementation. All | ||
33 | other implementations are based on this one. EC_GFp_mont_method builds on EC_GFp_simple_method but adds the | ||
34 | use of montgomery multiplication (see L<BN_mod_mul_montgomery(3)|BN_mod_mul_montgomery(3)>). EC_GFp_nist_method | ||
35 | offers an implementation optimised for use with NIST recommended curves (NIST curves are available through | ||
36 | EC_GROUP_new_by_curve_name as described in L<EC_GROUP_new(3)|EC_GROUP_new(3)>). | ||
37 | |||
38 | The functions EC_GFp_nistp224_method, EC_GFp_nistp256_method and EC_GFp_nistp521_method offer 64 bit | ||
39 | optimised implementations for the NIST P224, P256 and P521 curves respectively. Note, however, that these | ||
40 | implementations are not available on all platforms. | ||
41 | |||
42 | EC_METHOD_get_field_type identifies what type of field the EC_METHOD structure supports, which will be either | ||
43 | F2^m or Fp. If the field type is Fp then the value B<NID_X9_62_prime_field> is returned. If the field type is | ||
44 | F2^m then the value B<NID_X9_62_characteristic_two_field> is returned. These values are defined in the | ||
45 | obj_mac.h header file. | ||
46 | |||
47 | =head1 RETURN VALUES | ||
48 | |||
49 | All EC_GFp* functions and EC_GF2m_simple_method always return a const pointer to an EC_METHOD structure. | ||
50 | |||
51 | EC_METHOD_get_field_type returns an integer that identifies the type of field the EC_METHOD structure supports. | ||
52 | |||
53 | =head1 SEE ALSO | ||
54 | |||
55 | L<crypto(3)|crypto(3)>, L<ec(3)|ec(3)>, L<EC_GROUP_new(3)|EC_GROUP_new(3)>, L<EC_GROUP_copy(3)|EC_GROUP_copy(3)>, | ||
56 | L<EC_POINT_new(3)|EC_POINT_new(3)>, L<EC_POINT_add(3)|EC_POINT_add(3)>, L<EC_KEY_new(3)|EC_KEY_new(3)>, | ||
57 | L<d2i_ECPKParameters(3)|d2i_ECPKParameters(3)>, | ||
58 | L<BN_mod_mul_montgomery(3)|BN_mod_mul_montgomery(3)> | ||
59 | |||
60 | =cut | ||
diff --git a/src/lib/libssl/src/doc/crypto/EC_GROUP_copy.pod b/src/lib/libssl/src/doc/crypto/EC_GROUP_copy.pod new file mode 100644 index 0000000000..954af469d5 --- /dev/null +++ b/src/lib/libssl/src/doc/crypto/EC_GROUP_copy.pod | |||
@@ -0,0 +1,174 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | EC_GROUP_copy, EC_GROUP_dup, EC_GROUP_method_of, EC_GROUP_set_generator, EC_GROUP_get0_generator, EC_GROUP_get_order, EC_GROUP_get_cofactor, EC_GROUP_set_curve_name, EC_GROUP_get_curve_name, EC_GROUP_set_asn1_flag, EC_GROUP_get_asn1_flag, EC_GROUP_set_point_conversion_form, EC_GROUP_get_point_conversion_form, EC_GROUP_get0_seed, EC_GROUP_get_seed_len, EC_GROUP_set_seed, EC_GROUP_get_degree, EC_GROUP_check, EC_GROUP_check_discriminant, EC_GROUP_cmp, EC_GROUP_get_basis_type, EC_GROUP_get_trinomial_basis, EC_GROUP_get_pentanomial_basis - Functions for manipulating B<EC_GROUP> objects. | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/ec.h> | ||
10 | #include <openssl/bn.h> | ||
11 | |||
12 | int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); | ||
13 | EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); | ||
14 | |||
15 | const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); | ||
16 | |||
17 | int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, const BIGNUM *order, const BIGNUM *cofactor); | ||
18 | const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); | ||
19 | |||
20 | int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); | ||
21 | int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, BN_CTX *ctx); | ||
22 | |||
23 | void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); | ||
24 | int EC_GROUP_get_curve_name(const EC_GROUP *group); | ||
25 | |||
26 | void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); | ||
27 | int EC_GROUP_get_asn1_flag(const EC_GROUP *group); | ||
28 | |||
29 | void EC_GROUP_set_point_conversion_form(EC_GROUP *group, point_conversion_form_t form); | ||
30 | point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); | ||
31 | |||
32 | unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); | ||
33 | size_t EC_GROUP_get_seed_len(const EC_GROUP *); | ||
34 | size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); | ||
35 | |||
36 | int EC_GROUP_get_degree(const EC_GROUP *group); | ||
37 | |||
38 | int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); | ||
39 | |||
40 | int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); | ||
41 | |||
42 | int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); | ||
43 | |||
44 | int EC_GROUP_get_basis_type(const EC_GROUP *); | ||
45 | int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k); | ||
46 | int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, | ||
47 | unsigned int *k2, unsigned int *k3); | ||
48 | |||
49 | =head1 DESCRIPTION | ||
50 | |||
51 | EC_GROUP_copy copies the curve B<src> into B<dst>. Both B<src> and B<dst> must use the same EC_METHOD. | ||
52 | |||
53 | EC_GROUP_dup creates a new EC_GROUP object and copies the content from B<src> to the newly created | ||
54 | EC_GROUP object. | ||
55 | |||
56 | EC_GROUP_method_of obtains the EC_METHOD of B<group>. | ||
57 | |||
58 | EC_GROUP_set_generator sets curve paramaters that must be agreed by all participants using the curve. These | ||
59 | paramaters include the B<generator>, the B<order> and the B<cofactor>. The B<generator> is a well defined point on the | ||
60 | curve chosen for cryptographic operations. Integers used for point multiplications will be between 0 and | ||
61 | n-1 where n is the B<order>. The B<order> multipied by the B<cofactor> gives the number of points on the curve. | ||
62 | |||
63 | EC_GROUP_get0_generator returns the generator for the identified B<group>. | ||
64 | |||
65 | The functions EC_GROUP_get_order and EC_GROUP_get_cofactor populate the provided B<order> and B<cofactor> parameters | ||
66 | with the respective order and cofactors for the B<group>. | ||
67 | |||
68 | The functions EC_GROUP_set_curve_name and EC_GROUP_get_curve_name, set and get the NID for the curve respectively | ||
69 | (see L<EC_GROUP_new(3)|EC_GROUP_new(3)>). If a curve does not have a NID associated with it, then EC_GROUP_get_curve_name | ||
70 | will return 0. | ||
71 | |||
72 | The asn1_flag value on a curve is used to determine whether there is a specific ASN1 OID to describe the curve or not. | ||
73 | If the asn1_flag is 1 then this is a named curve with an associated ASN1 OID. If not then asn1_flag is 0. The functions | ||
74 | EC_GROUP_get_asn1_flag and EC_GROUP_set_asn1_flag get and set the status of the asn1_flag for the curve. If set then | ||
75 | the curve_name must also be set. | ||
76 | |||
77 | The point_coversion_form for a curve controls how EC_POINT data is encoded as ASN1 as defined in X9.62 (ECDSA). | ||
78 | point_conversion_form_t is an enum defined as follows: | ||
79 | |||
80 | typedef enum { | ||
81 | /** the point is encoded as z||x, where the octet z specifies | ||
82 | * which solution of the quadratic equation y is */ | ||
83 | POINT_CONVERSION_COMPRESSED = 2, | ||
84 | /** the point is encoded as z||x||y, where z is the octet 0x02 */ | ||
85 | POINT_CONVERSION_UNCOMPRESSED = 4, | ||
86 | /** the point is encoded as z||x||y, where the octet z specifies | ||
87 | * which solution of the quadratic equation y is */ | ||
88 | POINT_CONVERSION_HYBRID = 6 | ||
89 | } point_conversion_form_t; | ||
90 | |||
91 | |||
92 | For POINT_CONVERSION_UNCOMPRESSED the point is encoded as an octet signifying the UNCOMPRESSED form has been used followed by | ||
93 | the octets for x, followed by the octets for y. | ||
94 | |||
95 | For any given x co-ordinate for a point on a curve it is possible to derive two possible y values. For | ||
96 | POINT_CONVERSION_COMPRESSED the point is encoded as an octet signifying that the COMPRESSED form has been used AND which of | ||
97 | the two possible solutions for y has been used, followed by the octets for x. | ||
98 | |||
99 | For POINT_CONVERSION_HYBRID the point is encoded as an octet signifying the HYBRID form has been used AND which of the two | ||
100 | possible solutions for y has been used, followed by the octets for x, followed by the octets for y. | ||
101 | |||
102 | The functions EC_GROUP_set_point_conversion_form and EC_GROUP_get_point_conversion_form set and get the point_conversion_form | ||
103 | for the curve respectively. | ||
104 | |||
105 | ANSI X9.62 (ECDSA standard) defines a method of generating the curve parameter b from a random number. This provides advantages | ||
106 | in that a parameter obtained in this way is highly unlikely to be susceptible to special purpose attacks, or have any trapdoors in it. | ||
107 | If the seed is present for a curve then the b parameter was generated in a verifiable fashion using that seed. The OpenSSL EC library | ||
108 | does not use this seed value but does enable you to inspect it using EC_GROUP_get0_seed. This returns a pointer to a memory block | ||
109 | containing the seed that was used. The length of the memory block can be obtained using EC_GROUP_get_seed_len. A number of the | ||
110 | builtin curves within the library provide seed values that can be obtained. It is also possible to set a custom seed using | ||
111 | EC_GROUP_set_seed and passing a pointer to a memory block, along with the length of the seed. Again, the EC library will not use | ||
112 | this seed value, although it will be preserved in any ASN1 based communications. | ||
113 | |||
114 | EC_GROUP_get_degree gets the degree of the field. For Fp fields this will be the number of bits in p. For F2^m fields this will be | ||
115 | the value m. | ||
116 | |||
117 | The function EC_GROUP_check_discriminant calculates the discriminant for the curve and verifies that it is valid. | ||
118 | For a curve defined over Fp the discriminant is given by the formula 4*a^3 + 27*b^2 whilst for F2^m curves the discriminant is | ||
119 | simply b. In either case for the curve to be valid the discriminant must be non zero. | ||
120 | |||
121 | The function EC_GROUP_check performs a number of checks on a curve to verify that it is valid. Checks performed include | ||
122 | verifying that the discriminant is non zero; that a generator has been defined; that the generator is on the curve and has | ||
123 | the correct order. | ||
124 | |||
125 | EC_GROUP_cmp compares B<a> and B<b> to determine whether they represent the same curve or not. | ||
126 | |||
127 | The functions EC_GROUP_get_basis_type, EC_GROUP_get_trinomial_basis and EC_GROUP_get_pentanomial_basis should only be called for curves | ||
128 | defined over an F2^m field. Addition and multiplication operations within an F2^m field are performed using an irreducible polynomial | ||
129 | function f(x). This function is either a trinomial of the form: | ||
130 | |||
131 | f(x) = x^m + x^k + 1 with m > k >= 1 | ||
132 | |||
133 | or a pentanomial of the form: | ||
134 | |||
135 | f(x) = x^m + x^k3 + x^k2 + x^k1 + 1 with m > k3 > k2 > k1 >= 1 | ||
136 | |||
137 | The function EC_GROUP_get_basis_type returns a NID identifying whether a trinomial or pentanomial is in use for the field. The | ||
138 | function EC_GROUP_get_trinomial_basis must only be called where f(x) is of the trinomial form, and returns the value of B<k>. Similary | ||
139 | the function EC_GROUP_get_pentanomial_basis must only be called where f(x) is of the pentanomial form, and returns the values of B<k1>, | ||
140 | B<k2> and B<k3> respectively. | ||
141 | |||
142 | =head1 RETURN VALUES | ||
143 | |||
144 | The following functions return 1 on success or 0 on error: EC_GROUP_copy, EC_GROUP_set_generator, EC_GROUP_check, | ||
145 | EC_GROUP_check_discriminant, EC_GROUP_get_trinomial_basis and EC_GROUP_get_pentanomial_basis. | ||
146 | |||
147 | EC_GROUP_dup returns a pointer to the duplicated curve, or NULL on error. | ||
148 | |||
149 | EC_GROUP_method_of returns the EC_METHOD implementation in use for the given curve or NULL on error. | ||
150 | |||
151 | EC_GROUP_get0_generator returns the generator for the given curve or NULL on error. | ||
152 | |||
153 | EC_GROUP_get_order, EC_GROUP_get_cofactor, EC_GROUP_get_curve_name, EC_GROUP_get_asn1_flag, EC_GROUP_get_point_conversion_form | ||
154 | and EC_GROUP_get_degree return the order, cofactor, curve name (NID), ASN1 flag, point_conversion_form and degree for the | ||
155 | specified curve respectively. If there is no curve name associated with a curve then EC_GROUP_get_curve_name will return 0. | ||
156 | |||
157 | EC_GROUP_get0_seed returns a pointer to the seed that was used to generate the parameter b, or NULL if the seed is not | ||
158 | specified. EC_GROUP_get_seed_len returns the length of the seed or 0 if the seed is not specified. | ||
159 | |||
160 | EC_GROUP_set_seed returns the length of the seed that has been set. If the supplied seed is NULL, or the supplied seed length is | ||
161 | 0, the the return value will be 1. On error 0 is returned. | ||
162 | |||
163 | EC_GROUP_cmp returns 0 if the curves are equal, 1 if they are not equal, or -1 on error. | ||
164 | |||
165 | EC_GROUP_get_basis_type returns the values NID_X9_62_tpBasis or NID_X9_62_ppBasis (as defined in <openssl/obj_mac.h>) for a | ||
166 | trinomial or pentanomial respectively. Alternatively in the event of an error a 0 is returned. | ||
167 | |||
168 | =head1 SEE ALSO | ||
169 | |||
170 | L<crypto(3)|crypto(3)>, L<ec(3)|ec(3)>, L<EC_GROUP_new(3)|EC_GROUP_new(3)>, | ||
171 | L<EC_POINT_new(3)|EC_POINT_new(3)>, L<EC_POINT_add(3)|EC_POINT_add(3)>, L<EC_KEY_new(3)|EC_KEY_new(3)>, | ||
172 | L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)|d2i_ECPKParameters(3)> | ||
173 | |||
174 | =cut | ||
diff --git a/src/lib/libssl/src/doc/crypto/EC_GROUP_new.pod b/src/lib/libssl/src/doc/crypto/EC_GROUP_new.pod new file mode 100644 index 0000000000..ff55bf33a3 --- /dev/null +++ b/src/lib/libssl/src/doc/crypto/EC_GROUP_new.pod | |||
@@ -0,0 +1,95 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | EC_GROUP_new, EC_GROUP_free, EC_GROUP_clear_free, EC_GROUP_new_curve_GFp, EC_GROUP_new_curve_GF2m, EC_GROUP_new_by_curve_name, EC_GROUP_set_curve_GFp, EC_GROUP_get_curve_GFp, EC_GROUP_set_curve_GF2m, EC_GROUP_get_curve_GF2m, EC_get_builtin_curves - Functions for creating and destroying B<EC_GROUP> objects. | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/ec.h> | ||
10 | #include <openssl/bn.h> | ||
11 | |||
12 | EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); | ||
13 | void EC_GROUP_free(EC_GROUP *group); | ||
14 | void EC_GROUP_clear_free(EC_GROUP *group); | ||
15 | |||
16 | EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); | ||
17 | EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); | ||
18 | EC_GROUP *EC_GROUP_new_by_curve_name(int nid); | ||
19 | |||
20 | int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); | ||
21 | int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx); | ||
22 | int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); | ||
23 | int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx); | ||
24 | |||
25 | size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); | ||
26 | |||
27 | =head1 DESCRIPTION | ||
28 | |||
29 | Within the library there are two forms of elliptic curve that are of interest. The first form is those defined over the | ||
30 | prime field Fp. The elements of Fp are the integers 0 to p-1, where p is a prime number. This gives us a revised | ||
31 | elliptic curve equation as follows: | ||
32 | |||
33 | y^2 mod p = x^3 +ax + b mod p | ||
34 | |||
35 | The second form is those defined over a binary field F2^m where the elements of the field are integers of length at | ||
36 | most m bits. For this form the elliptic curve equation is modified to: | ||
37 | |||
38 | y^2 + xy = x^3 + ax^2 + b (where b != 0) | ||
39 | |||
40 | Operations in a binary field are performed relative to an B<irreducible polynomial>. All such curves with OpenSSL | ||
41 | use a trinomial or a pentanomial for this parameter. | ||
42 | |||
43 | A new curve can be constructed by calling EC_GROUP_new, using the implementation provided by B<meth> (see | ||
44 | L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>). It is then necessary to call either EC_GROUP_set_curve_GFp or | ||
45 | EC_GROUP_set_curve_GF2m as appropriate to create a curve defined over Fp or over F2^m respectively. | ||
46 | |||
47 | EC_GROUP_set_curve_GFp sets the curve parameters B<p>, B<a> and B<b> for a curve over Fp stored in B<group>. | ||
48 | EC_group_get_curve_GFp obtains the previously set curve parameters. | ||
49 | |||
50 | EC_GROUP_set_curve_GF2m sets the equivalent curve parameters for a curve over F2^m. In this case B<p> represents | ||
51 | the irreducible polybnomial - each bit represents a term in the polynomial. Therefore there will either be three | ||
52 | or five bits set dependant on whether the polynomial is a trinomial or a pentanomial. | ||
53 | EC_group_get_curve_GF2m obtains the previously set curve parameters. | ||
54 | |||
55 | The functions EC_GROUP_new_curve_GFp and EC_GROUP_new_curve_GF2m are shortcuts for calling EC_GROUP_new and the | ||
56 | appropriate EC_group_set_curve function. An appropriate default implementation method will be used. | ||
57 | |||
58 | Whilst the library can be used to create any curve using the functions described above, there are also a number of | ||
59 | predefined curves that are available. In order to obtain a list of all of the predefined curves, call the function | ||
60 | EC_get_builtin_curves. The parameter B<r> should be an array of EC_builtin_curve structures of size B<nitems>. The function | ||
61 | will populate the B<r> array with information about the builtin curves. If B<nitems> is less than the total number of | ||
62 | curves available, then the first B<nitems> curves will be returned. Otherwise the total number of curves will be | ||
63 | provided. The return value is the total number of curves available (whether that number has been populated in B<r> or | ||
64 | not). Passing a NULL B<r>, or setting B<nitems> to 0 will do nothing other than return the total number of curves available. | ||
65 | The EC_builtin_curve structure is defined as follows: | ||
66 | |||
67 | typedef struct { | ||
68 | int nid; | ||
69 | const char *comment; | ||
70 | } EC_builtin_curve; | ||
71 | |||
72 | Each EC_builtin_curve item has a unique integer id (B<nid>), and a human readable comment string describing the curve. | ||
73 | |||
74 | In order to construct a builtin curve use the function EC_GROUP_new_by_curve_name and provide the B<nid> of the curve to | ||
75 | be constructed. | ||
76 | |||
77 | EC_GROUP_free frees the memory associated with the EC_GROUP. | ||
78 | |||
79 | EC_GROUP_clear_free destroys any sensitive data held within the EC_GROUP and then frees its memory. | ||
80 | |||
81 | =head1 RETURN VALUES | ||
82 | |||
83 | All EC_GROUP_new* functions return a pointer to the newly constructed group, or NULL on error. | ||
84 | |||
85 | EC_get_builtin_curves returns the number of builtin curves that are available. | ||
86 | |||
87 | EC_GROUP_set_curve_GFp, EC_GROUP_get_curve_GFp, EC_GROUP_set_curve_GF2m, EC_GROUP_get_curve_GF2m return 1 on success or 0 on error. | ||
88 | |||
89 | =head1 SEE ALSO | ||
90 | |||
91 | L<crypto(3)|crypto(3)>, L<ec(3)|ec(3)>, L<EC_GROUP_copy(3)|EC_GROUP_copy(3)>, | ||
92 | L<EC_POINT_new(3)|EC_POINT_new(3)>, L<EC_POINT_add(3)|EC_POINT_add(3)>, L<EC_KEY_new(3)|EC_KEY_new(3)>, | ||
93 | L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)|d2i_ECPKParameters(3)> | ||
94 | |||
95 | =cut | ||
diff --git a/src/lib/libssl/src/doc/crypto/EC_KEY_new.pod b/src/lib/libssl/src/doc/crypto/EC_KEY_new.pod new file mode 100644 index 0000000000..b762cbcb73 --- /dev/null +++ b/src/lib/libssl/src/doc/crypto/EC_KEY_new.pod | |||
@@ -0,0 +1,115 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | EC_KEY_new, EC_KEY_get_flags, EC_KEY_set_flags, EC_KEY_clear_flags, EC_KEY_new_by_curve_name, EC_KEY_free, EC_KEY_copy, EC_KEY_dup, EC_KEY_up_ref, EC_KEY_get0_group, EC_KEY_set_group, EC_KEY_get0_private_key, EC_KEY_set_private_key, EC_KEY_get0_public_key, EC_KEY_set_public_key, EC_KEY_get_enc_flags, EC_KEY_set_enc_flags, EC_KEY_get_conv_form, EC_KEY_set_conv_form, EC_KEY_get_key_method_data, EC_KEY_insert_key_method_data, EC_KEY_set_asn1_flag, EC_KEY_precompute_mult, EC_KEY_generate_key, EC_KEY_check_key, EC_KEY_set_public_key_affine_coordinates - Functions for creating, destroying and manipulating B<EC_KEY> objects. | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/ec.h> | ||
10 | #include <openssl/bn.h> | ||
11 | |||
12 | EC_KEY *EC_KEY_new(void); | ||
13 | int EC_KEY_get_flags(const EC_KEY *key); | ||
14 | void EC_KEY_set_flags(EC_KEY *key, int flags); | ||
15 | void EC_KEY_clear_flags(EC_KEY *key, int flags); | ||
16 | EC_KEY *EC_KEY_new_by_curve_name(int nid); | ||
17 | void EC_KEY_free(EC_KEY *key); | ||
18 | EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); | ||
19 | EC_KEY *EC_KEY_dup(const EC_KEY *src); | ||
20 | int EC_KEY_up_ref(EC_KEY *key); | ||
21 | const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); | ||
22 | int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); | ||
23 | const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); | ||
24 | int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); | ||
25 | const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); | ||
26 | int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); | ||
27 | unsigned int EC_KEY_get_enc_flags(const EC_KEY *key); | ||
28 | void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); | ||
29 | point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); | ||
30 | void EC_KEY_set_conv_form(EC_KEY *eckey, point_conversion_form_t cform); | ||
31 | void *EC_KEY_get_key_method_data(EC_KEY *key, | ||
32 | void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *)); | ||
33 | void EC_KEY_insert_key_method_data(EC_KEY *key, void *data, | ||
34 | void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *)); | ||
35 | void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); | ||
36 | int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); | ||
37 | int EC_KEY_generate_key(EC_KEY *key); | ||
38 | int EC_KEY_check_key(const EC_KEY *key); | ||
39 | int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x, BIGNUM *y); | ||
40 | |||
41 | =head1 DESCRIPTION | ||
42 | |||
43 | An EC_KEY represents a public key and (optionaly) an associated private key. A new EC_KEY (with no associated curve) can be constructed by calling EC_KEY_new. | ||
44 | The reference count for the newly created EC_KEY is initially set to 1. A curve can be associated with the EC_KEY by calling | ||
45 | EC_KEY_set_group. | ||
46 | |||
47 | Alternatively a new EC_KEY can be constructed by calling EC_KEY_new_by_curve_name and supplying the nid of the associated curve. Refer to L<EC_GROUP_new(3)|EC_GROUP_new(3)> for a description of curve names. This function simply wraps calls to EC_KEY_new and | ||
48 | EC_GROUP_new_by_curve_name. | ||
49 | |||
50 | Calling EC_KEY_free decrements the reference count for the EC_KEY object, and if it has dropped to zero then frees the memory associated | ||
51 | with it. | ||
52 | |||
53 | EC_KEY_copy copies the contents of the EC_KEY in B<src> into B<dest>. | ||
54 | |||
55 | EC_KEY_dup creates a new EC_KEY object and copies B<ec_key> into it. | ||
56 | |||
57 | EC_KEY_up_ref increments the reference count associated with the EC_KEY object. | ||
58 | |||
59 | EC_KEY_generate_key generates a new public and private key for the supplied B<eckey> object. B<eckey> must have an EC_GROUP object | ||
60 | associated with it before calling this function. The private key is a random integer (0 < priv_key < order, where order is the order | ||
61 | of the EC_GROUP object). The public key is an EC_POINT on the curve calculated by multiplying the generator for the curve by the | ||
62 | private key. | ||
63 | |||
64 | EC_KEY_check_key performs various sanity checks on the EC_KEY object to confirm that it is valid. | ||
65 | |||
66 | EC_KEY_set_public_key_affine_coordinates sets the public key for B<key> based on its affine co-ordinates, i.e. it constructs an EC_POINT | ||
67 | object based on the supplied B<x> and B<y> values and sets the public key to be this EC_POINT. It will also performs certain sanity checks | ||
68 | on the key to confirm that it is valid. | ||
69 | |||
70 | The functions EC_KEY_get0_group, EC_KEY_set_group, EC_KEY_get0_private_key, EC_KEY_set_private_key, EC_KEY_get0_public_key, and EC_KEY_set_public_key get and set the EC_GROUP object, the private key and the EC_POINT public key for the B<key> respectively. | ||
71 | |||
72 | The functions EC_KEY_get_enc_flags and EC_KEY_set_enc_flags get and set the value of the encoding flags for the B<key>. There are two encoding | ||
73 | flags currently defined - EC_PKEY_NO_PARAMETERS and EC_PKEY_NO_PUBKEY. These flags define the behaviour of how the B<key> is | ||
74 | converted into ASN1 in a call to i2d_ECPrivateKey. If EC_PKEY_NO_PARAMETERS is set then the public parameters for the curve are not encoded | ||
75 | along with the private key. If EC_PKEY_NO_PUBKEY is set then the public key is not encoded along with the private key. | ||
76 | |||
77 | The functions EC_KEY_get_conv_form and EC_KEY_set_conv_form get and set the point_conversion_form for the B<key>. For a description | ||
78 | of point_conversion_forms please refer to L<EC_POINT_new(3)|EC_POINT_new(3)>. | ||
79 | |||
80 | EC_KEY_insert_key_method_data and EC_KEY_get_key_method_data enable the caller to associate arbitary additional data specific to the | ||
81 | elliptic curve scheme being used with the EC_KEY object. This data is treated as a "black box" by the ec library. The data to be stored by EC_KEY_insert_key_method_data is provided in the B<data> parameter, which must have have associated functions for duplicating, freeing and "clear_freeing" the data item. If a subsequent EC_KEY_get_key_method_data call is issued, the functions for duplicating, freeing and "clear_freeing" the data item must be provided again, and they must be the same as they were when the data item was inserted. | ||
82 | |||
83 | EC_KEY_set_flags sets the flags in the B<flags> parameter on the EC_KEY object. Any flags that are already set are left set. The currently defined standard flags are EC_FLAG_NON_FIPS_ALLOW and EC_FLAG_FIPS_CHECKED. In addition there is the flag EC_FLAG_COFACTOR_ECDH which is specific to ECDH and is defined in ecdh.h. EC_KEY_get_flags returns the current flags that are set for this EC_KEY. EC_KEY_clear_flags clears the flags indicated by the B<flags> parameter. All other flags are left in their existing state. | ||
84 | |||
85 | EC_KEY_set_asn1_flag sets the asn1_flag on the underlying EC_GROUP object (if set). Refer to L<EC_GROUP_copy(3)|EC_GROUP_copy(3)> for further information on the asn1_flag. | ||
86 | |||
87 | EC_KEY_precompute_mult stores multiples of the underlying EC_GROUP generator for faster point multiplication. See also L<EC_POINT_add(3)|EC_POINT_add(3)>. | ||
88 | |||
89 | |||
90 | =head1 RETURN VALUES | ||
91 | |||
92 | EC_KEY_new, EC_KEY_new_by_curve_name and EC_KEY_dup return a pointer to the newly created EC_KEY object, or NULL on error. | ||
93 | |||
94 | EC_KEY_get_flags returns the flags associated with the EC_KEY object as an integer. | ||
95 | |||
96 | EC_KEY_copy returns a pointer to the destination key, or NULL on error. | ||
97 | |||
98 | EC_KEY_up_ref, EC_KEY_set_group, EC_KEY_set_private_key, EC_KEY_set_public_key, EC_KEY_precompute_mult, EC_KEY_generate_key, EC_KEY_check_key and EC_KEY_set_public_key_affine_coordinates return 1 on success or 0 on error. | ||
99 | |||
100 | EC_KEY_get0_group returns the EC_GROUP associated with the EC_KEY. | ||
101 | |||
102 | EC_KEY_get0_private_key returns the private key associated with the EC_KEY. | ||
103 | |||
104 | EC_KEY_get_enc_flags returns the value of the current encoding flags for the EC_KEY. | ||
105 | |||
106 | EC_KEY_get_conv_form return the point_conversion_form for the EC_KEY. | ||
107 | |||
108 | |||
109 | =head1 SEE ALSO | ||
110 | |||
111 | L<crypto(3)|crypto(3)>, L<ec(3)|ec(3)>, L<EC_GROUP_new(3)|EC_GROUP_new(3)>, L<EC_GROUP_copy(3)|EC_GROUP_copy(3)>, | ||
112 | L<EC_POINT_new(3)|EC_POINT_new(3)>, L<EC_POINT_add(3)|EC_POINT_add(3)>, | ||
113 | L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)|d2i_ECPKParameters(3)> | ||
114 | |||
115 | =cut | ||
diff --git a/src/lib/libssl/src/doc/crypto/EC_POINT_add.pod b/src/lib/libssl/src/doc/crypto/EC_POINT_add.pod new file mode 100644 index 0000000000..ae92640843 --- /dev/null +++ b/src/lib/libssl/src/doc/crypto/EC_POINT_add.pod | |||
@@ -0,0 +1,72 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | EC_POINT_add, EC_POINT_dbl, EC_POINT_invert, EC_POINT_is_at_infinity, EC_POINT_is_on_curve, EC_POINT_cmp, EC_POINT_make_affine, EC_POINTs_make_affine, EC_POINTs_mul, EC_POINT_mul, EC_GROUP_precompute_mult, EC_GROUP_have_precompute_mult - Functions for performing mathematical operations and tests on B<EC_POINT> objects. | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/ec.h> | ||
10 | #include <openssl/bn.h> | ||
11 | |||
12 | int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, const EC_POINT *b, BN_CTX *ctx); | ||
13 | int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, BN_CTX *ctx); | ||
14 | int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); | ||
15 | int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p); | ||
16 | int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, BN_CTX *ctx); | ||
17 | int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, BN_CTX *ctx); | ||
18 | int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx); | ||
19 | int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, EC_POINT *points[], BN_CTX *ctx); | ||
20 | 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); | ||
21 | int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); | ||
22 | int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); | ||
23 | int EC_GROUP_have_precompute_mult(const EC_GROUP *group); | ||
24 | |||
25 | |||
26 | =head1 DESCRIPTION | ||
27 | |||
28 | EC_POINT_add adds the two points B<a> and B<b> and places the result in B<r>. Similarly EC_POINT_dbl doubles the point B<a> and places the | ||
29 | result in B<r>. In both cases it is valid for B<r> to be one of B<a> or B<b>. | ||
30 | |||
31 | EC_POINT_invert calculates the inverse of the supplied point B<a>. The result is placed back in B<a>. | ||
32 | |||
33 | The function EC_POINT_is_at_infinity tests whether the supplied point is at infinity or not. | ||
34 | |||
35 | EC_POINT_is_on_curve tests whether the supplied point is on the curve or not. | ||
36 | |||
37 | EC_POINT_cmp compares the two supplied points and tests whether or not they are equal. | ||
38 | |||
39 | The functions EC_POINT_make_affine and EC_POINTs_make_affine force the internal representation of the EC_POINT(s) into the affine | ||
40 | 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 | ||
41 | forced. | ||
42 | |||
43 | 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>. | ||
44 | |||
45 | 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 | ||
46 | B<n> may be NULL. | ||
47 | |||
48 | The function EC_GROUP_precompute_mult stores multiples of the generator for faster point multiplication, whilst | ||
49 | EC_GROUP_have_precompute_mult tests whether precomputation has already been done. See L<EC_GROUP_copy(3)|EC_GROUP_copy(3)> for information | ||
50 | about the generator. | ||
51 | |||
52 | |||
53 | =head1 RETURN VALUES | ||
54 | |||
55 | The following functions return 1 on success or 0 on error: EC_POINT_add, EC_POINT_dbl, EC_POINT_invert, EC_POINT_make_affine, | ||
56 | EC_POINTs_make_affine, EC_POINTs_make_affine, EC_POINT_mul, EC_POINTs_mul and EC_GROUP_precompute_mult. | ||
57 | |||
58 | EC_POINT_is_at_infinity returns 1 if the point is at infinity, or 0 otherwise. | ||
59 | |||
60 | EC_POINT_is_on_curve returns 1 if the point is on the curve, 0 if not, or -1 on error. | ||
61 | |||
62 | EC_POINT_cmp returns 1 if the points are not equal, 0 if they are, or -1 on error. | ||
63 | |||
64 | EC_GROUP_have_precompute_mult return 1 if a precomputation has been done, or 0 if not. | ||
65 | |||
66 | =head1 SEE ALSO | ||
67 | |||
68 | L<crypto(3)|crypto(3)>, L<ec(3)|ec(3)>, L<EC_GROUP_new(3)|EC_GROUP_new(3)>, L<EC_GROUP_copy(3)|EC_GROUP_copy(3)>, | ||
69 | L<EC_POINT_new(3)|EC_POINT_new(3)>, L<EC_KEY_new(3)|EC_KEY_new(3)>, | ||
70 | L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)|d2i_ECPKParameters(3)> | ||
71 | |||
72 | =cut | ||
diff --git a/src/lib/libssl/src/doc/crypto/EC_POINT_new.pod b/src/lib/libssl/src/doc/crypto/EC_POINT_new.pod new file mode 100644 index 0000000000..69eb0d1a09 --- /dev/null +++ b/src/lib/libssl/src/doc/crypto/EC_POINT_new.pod | |||
@@ -0,0 +1,123 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | EC_POINT_new, EC_POINT_free, EC_POINT_clear_free, EC_POINT_copy, EC_POINT_dup, EC_POINT_method_of, EC_POINT_set_to_infinity, EC_POINT_set_Jprojective_coordinates, EC_POINT_get_Jprojective_coordinates_GFp, EC_POINT_set_affine_coordinates_GFp, EC_POINT_get_affine_coordinates_GFp, EC_POINT_set_compressed_coordinates_GFp, EC_POINT_set_affine_coordinates_GF2m, EC_POINT_get_affine_coordinates_GF2m, EC_POINT_set_compressed_coordinates_GF2m, EC_POINT_point2oct, EC_POINT_oct2point, EC_POINT_point2bn, EC_POINT_bn2point, EC_POINT_point2hex, EC_POINT_hex2point - Functions for creating, destroying and manipulating B<EC_POINT> objects. | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/ec.h> | ||
10 | #include <openssl/bn.h> | ||
11 | |||
12 | EC_POINT *EC_POINT_new(const EC_GROUP *group); | ||
13 | void EC_POINT_free(EC_POINT *point); | ||
14 | void EC_POINT_clear_free(EC_POINT *point); | ||
15 | int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); | ||
16 | EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); | ||
17 | const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); | ||
18 | int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); | ||
19 | int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, | ||
20 | const BIGNUM *x, const BIGNUM *y, const BIGNUM *z, BN_CTX *ctx); | ||
21 | int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, | ||
22 | const EC_POINT *p, BIGNUM *x, BIGNUM *y, BIGNUM *z, BN_CTX *ctx); | ||
23 | int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, | ||
24 | const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); | ||
25 | int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, | ||
26 | const EC_POINT *p, BIGNUM *x, BIGNUM *y, BN_CTX *ctx); | ||
27 | int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, | ||
28 | const BIGNUM *x, int y_bit, BN_CTX *ctx); | ||
29 | int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, | ||
30 | const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); | ||
31 | int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, | ||
32 | const EC_POINT *p, BIGNUM *x, BIGNUM *y, BN_CTX *ctx); | ||
33 | int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, | ||
34 | const BIGNUM *x, int y_bit, BN_CTX *ctx); | ||
35 | size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, | ||
36 | point_conversion_form_t form, | ||
37 | unsigned char *buf, size_t len, BN_CTX *ctx); | ||
38 | int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, | ||
39 | const unsigned char *buf, size_t len, BN_CTX *ctx); | ||
40 | BIGNUM *EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *, | ||
41 | point_conversion_form_t form, BIGNUM *, BN_CTX *); | ||
42 | EC_POINT *EC_POINT_bn2point(const EC_GROUP *, const BIGNUM *, | ||
43 | EC_POINT *, BN_CTX *); | ||
44 | char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, | ||
45 | point_conversion_form_t form, BN_CTX *); | ||
46 | EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, | ||
47 | EC_POINT *, BN_CTX *); | ||
48 | |||
49 | |||
50 | =head1 DESCRIPTION | ||
51 | |||
52 | An EC_POINT represents a point on a curve. A new point is constructed by calling the function EC_POINT_new and providing the B<group> | ||
53 | object that the point relates to. | ||
54 | |||
55 | EC_POINT_free frees the memory associated with the EC_POINT. | ||
56 | |||
57 | EC_POINT_clear_free destroys any sensitive data held within the EC_POINT and then frees its memory. | ||
58 | |||
59 | EC_POINT_copy copies the point B<src> into B<dst>. Both B<src> and B<dst> must use the same EC_METHOD. | ||
60 | |||
61 | EC_POINT_dup creates a new EC_POINT object and copies the content from B<src> to the newly created | ||
62 | EC_POINT object. | ||
63 | |||
64 | EC_POINT_method_of obtains the EC_METHOD associated with B<point>. | ||
65 | |||
66 | A valid point on a curve is the special point at infinity. A point is set to be at infinity by calling EC_POINT_set_to_infinity. | ||
67 | |||
68 | The affine co-ordinates for a point describe a point in terms of its x and y position. The functions | ||
69 | EC_POINT_set_affine_coordinates_GFp and EC_POINT_set_affine_coordinates_GF2m set the B<x> and B<y> co-ordinates for the point | ||
70 | B<p> defined over the curve given in B<group>. | ||
71 | |||
72 | As well as the affine co-ordinates, a point can alternatively be described in terms of its Jacobian | ||
73 | projective co-ordinates (for Fp curves only). Jacobian projective co-ordinates are expressed as three values x, y and z. Working in | ||
74 | this co-ordinate system provides more efficient point multiplication operations. | ||
75 | A mapping exists between Jacobian projective co-ordinates and affine co-ordinates. A Jacobian projective co-ordinate (x, y, z) can be written as an affine co-ordinate as (x/(z^2), y/(z^3)). Conversion to Jacobian projective to affine co-ordinates is simple. The co-ordinate (x, y) is | ||
76 | mapped to (x, y, 1). To set or get the projective co-ordinates use EC_POINT_set_Jprojective_coordinates_GFp and | ||
77 | EC_POINT_get_Jprojective_coordinates_GFp respectively. | ||
78 | |||
79 | Points can also be described in terms of their compressed co-ordinates. For a point (x, y), for any given value for x such that the point is | ||
80 | on the curve there will only ever be two possible values for y. Therefore a point can be set using the EC_POINT_set_compressed_coordinates_GFp | ||
81 | and EC_POINT_set_compressed_coordinates_GF2m functions where B<x> is the x co-ordinate and B<y_bit> is a value 0 or 1 to identify which of | ||
82 | the two possible values for y should be used. | ||
83 | |||
84 | In addition EC_POINTs can be converted to and from various external representations. Supported representations are octet strings, BIGNUMs and hexadecimal. The format of the external representation is described by the point_conversion_form. See L<EC_GROUP_copy(3)|EC_GROUP_copy(3)> for | ||
85 | a description of point_conversion_form. Octet strings are stored in a buffer along with an associated buffer length. A point held in a BIGNUM is calculated by converting the point to an octet string and then converting that octet string into a BIGNUM integer. Points in hexadecimal format are stored in a NULL terminated character string where each character is one of the printable values 0-9 or A-F (or a-f). | ||
86 | |||
87 | The functions EC_POINT_point2oct, EC_POINT_oct2point, EC_POINT_point2bn, EC_POINT_bn2point, EC_POINT_point2hex and EC_POINT_hex2point convert | ||
88 | from and to EC_POINTs for the formats: octet string, BIGNUM and hexadecimal respectively. | ||
89 | |||
90 | The function EC_POINT_point2oct must be supplied with a buffer long enough to store the octet string. The return value provides the number of | ||
91 | octets stored. Calling the function with a NULL buffer will not perform the conversion but will still return the required buffer length. | ||
92 | |||
93 | The function EC_POINT_point2hex will allocate sufficient memory to store the hexadecimal string. It is the caller's responsibility to free | ||
94 | this memory with a subsequent call to OPENSSL_free(). | ||
95 | |||
96 | =head1 RETURN VALUES | ||
97 | |||
98 | EC_POINT_new and EC_POINT_dup return the newly allocated EC_POINT or NULL on error. | ||
99 | |||
100 | The following functions return 1 on success or 0 on error: EC_POINT_copy, EC_POINT_set_to_infinity, EC_POINT_set_Jprojective_coordinates_GFp, | ||
101 | EC_POINT_get_Jprojective_coordinates_GFp, EC_POINT_set_affine_coordinates_GFp, EC_POINT_get_affine_coordinates_GFp, | ||
102 | EC_POINT_set_compressed_coordinates_GFp, EC_POINT_set_affine_coordinates_GF2m, EC_POINT_get_affine_coordinates_GF2m, | ||
103 | EC_POINT_set_compressed_coordinates_GF2m and EC_POINT_oct2point. | ||
104 | |||
105 | EC_POINT_method_of returns the EC_METHOD associated with the supplied EC_POINT. | ||
106 | |||
107 | EC_POINT_point2oct returns the length of the required buffer, or 0 on error. | ||
108 | |||
109 | EC_POINT_point2bn returns the pointer to the BIGNUM supplied, or NULL on error. | ||
110 | |||
111 | EC_POINT_bn2point returns the pointer to the EC_POINT supplied, or NULL on error. | ||
112 | |||
113 | EC_POINT_point2hex returns a pointer to the hex string, or NULL on error. | ||
114 | |||
115 | EC_POINT_hex2point returns the pointer to the EC_POINT supplied, or NULL on error. | ||
116 | |||
117 | =head1 SEE ALSO | ||
118 | |||
119 | L<crypto(3)|crypto(3)>, L<ec(3)|ec(3)>, L<EC_GROUP_new(3)|EC_GROUP_new(3)>, L<EC_GROUP_copy(3)|EC_GROUP_copy(3)>, | ||
120 | L<EC_POINT_add(3)|EC_POINT_add(3)>, L<EC_KEY_new(3)|EC_KEY_new(3)>, | ||
121 | L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)|d2i_ECPKParameters(3)> | ||
122 | |||
123 | =cut | ||
diff --git a/src/lib/libssl/src/doc/crypto/ERR_get_error.pod b/src/lib/libssl/src/doc/crypto/ERR_get_error.pod index 1a765f7aff..01e196c95f 100644 --- a/src/lib/libssl/src/doc/crypto/ERR_get_error.pod +++ b/src/lib/libssl/src/doc/crypto/ERR_get_error.pod | |||
@@ -49,7 +49,7 @@ additionally store the file name and line number where | |||
49 | the error occurred in *B<file> and *B<line>, unless these are B<NULL>. | 49 | the error occurred in *B<file> and *B<line>, unless these are B<NULL>. |
50 | 50 | ||
51 | ERR_get_error_line_data(), ERR_peek_error_line_data() and | 51 | ERR_get_error_line_data(), ERR_peek_error_line_data() and |
52 | ERR_get_last_error_line_data() store additional data and flags | 52 | ERR_peek_last_error_line_data() store additional data and flags |
53 | associated with the error code in *B<data> | 53 | associated with the error code in *B<data> |
54 | and *B<flags>, unless these are B<NULL>. *B<data> contains a string | 54 | and *B<flags>, unless these are B<NULL>. *B<data> contains a string |
55 | if *B<flags>&B<ERR_TXT_STRING> is true. | 55 | if *B<flags>&B<ERR_TXT_STRING> is true. |
diff --git a/src/lib/libssl/src/doc/crypto/ERR_remove_state.pod b/src/lib/libssl/src/doc/crypto/ERR_remove_state.pod index 72925fb9f4..a4d38c17fd 100644 --- a/src/lib/libssl/src/doc/crypto/ERR_remove_state.pod +++ b/src/lib/libssl/src/doc/crypto/ERR_remove_state.pod | |||
@@ -2,26 +2,35 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | ERR_remove_state - free a thread's error queue | 5 | ERR_remove_thread_state, ERR_remove_state - free a thread's error queue |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
9 | #include <openssl/err.h> | 9 | #include <openssl/err.h> |
10 | 10 | ||
11 | void ERR_remove_thread_state(const CRYPTO_THREADID *tid); | ||
12 | |||
13 | Deprecated: | ||
14 | |||
11 | void ERR_remove_state(unsigned long pid); | 15 | void ERR_remove_state(unsigned long pid); |
12 | 16 | ||
13 | =head1 DESCRIPTION | 17 | =head1 DESCRIPTION |
14 | 18 | ||
15 | ERR_remove_state() frees the error queue associated with thread B<pid>. | 19 | ERR_remove_thread_state() frees the error queue associated with thread B<tid>. |
16 | If B<pid> == 0, the current thread will have its error queue removed. | 20 | If B<tid> == B<NULL>, the current thread will have its error queue removed. |
17 | 21 | ||
18 | Since error queue data structures are allocated automatically for new | 22 | Since error queue data structures are allocated automatically for new |
19 | threads, they must be freed when threads are terminated in order to | 23 | threads, they must be freed when threads are terminated in order to |
20 | avoid memory leaks. | 24 | avoid memory leaks. |
21 | 25 | ||
26 | ERR_remove_state is deprecated and has been replaced by | ||
27 | ERR_remove_thread_state. Since threads in OpenSSL are no longer identified | ||
28 | by unsigned long values any argument to this function is ignored. Calling | ||
29 | ERR_remove_state is equivalent to B<ERR_remove_thread_state(NULL)>. | ||
30 | |||
22 | =head1 RETURN VALUE | 31 | =head1 RETURN VALUE |
23 | 32 | ||
24 | ERR_remove_state() returns no value. | 33 | ERR_remove_thread_state and ERR_remove_state() return no value. |
25 | 34 | ||
26 | =head1 SEE ALSO | 35 | =head1 SEE ALSO |
27 | 36 | ||
@@ -29,6 +38,8 @@ L<err(3)|err(3)> | |||
29 | 38 | ||
30 | =head1 HISTORY | 39 | =head1 HISTORY |
31 | 40 | ||
32 | ERR_remove_state() is available in all versions of SSLeay and OpenSSL. | 41 | ERR_remove_state() is available in all versions of SSLeay and OpenSSL. It |
42 | was deprecated in OpenSSL 1.0.0 when ERR_remove_thread_state was introduced | ||
43 | and thread IDs were introduced to identify threads instead of 'unsigned long'. | ||
33 | 44 | ||
34 | =cut | 45 | =cut |
diff --git a/src/lib/libssl/src/doc/crypto/EVP_BytesToKey.pod b/src/lib/libssl/src/doc/crypto/EVP_BytesToKey.pod index 0ea7d55c0f..fe4c0a9194 100644 --- a/src/lib/libssl/src/doc/crypto/EVP_BytesToKey.pod +++ b/src/lib/libssl/src/doc/crypto/EVP_BytesToKey.pod | |||
@@ -36,8 +36,8 @@ If the total key and IV length is less than the digest length and | |||
36 | B<MD5> is used then the derivation algorithm is compatible with PKCS#5 v1.5 | 36 | B<MD5> is used then the derivation algorithm is compatible with PKCS#5 v1.5 |
37 | otherwise a non standard extension is used to derive the extra data. | 37 | otherwise a non standard extension is used to derive the extra data. |
38 | 38 | ||
39 | Newer applications should use more standard algorithms such as PKCS#5 | 39 | Newer applications should use more standard algorithms such as PBKDF2 as |
40 | v2.0 for key derivation. | 40 | defined in PKCS#5v2.1 for key derivation. |
41 | 41 | ||
42 | =head1 KEY DERIVATION ALGORITHM | 42 | =head1 KEY DERIVATION ALGORITHM |
43 | 43 | ||
@@ -60,6 +60,7 @@ EVP_BytesToKey() returns the size of the derived key in bytes. | |||
60 | =head1 SEE ALSO | 60 | =head1 SEE ALSO |
61 | 61 | ||
62 | L<evp(3)|evp(3)>, L<rand(3)|rand(3)>, | 62 | L<evp(3)|evp(3)>, L<rand(3)|rand(3)>, |
63 | L<PKCS5_PBKDF2_HMAC(3)|PKCS5_PBKDF2_HMAC(3)>, | ||
63 | L<EVP_EncryptInit(3)|EVP_EncryptInit(3)> | 64 | L<EVP_EncryptInit(3)|EVP_EncryptInit(3)> |
64 | 65 | ||
65 | =head1 HISTORY | 66 | =head1 HISTORY |
diff --git a/src/lib/libssl/src/doc/crypto/EVP_DigestInit.pod b/src/lib/libssl/src/doc/crypto/EVP_DigestInit.pod index f2c1cfdbf0..3a71efd23d 100644 --- a/src/lib/libssl/src/doc/crypto/EVP_DigestInit.pod +++ b/src/lib/libssl/src/doc/crypto/EVP_DigestInit.pod | |||
@@ -161,9 +161,8 @@ EVP_MD_CTX_copy_ex() returns 1 if successful or 0 for failure. | |||
161 | EVP_MD_type(), EVP_MD_pkey_type() and EVP_MD_type() return the NID of the | 161 | EVP_MD_type(), EVP_MD_pkey_type() and EVP_MD_type() return the NID of the |
162 | corresponding OBJECT IDENTIFIER or NID_undef if none exists. | 162 | corresponding OBJECT IDENTIFIER or NID_undef if none exists. |
163 | 163 | ||
164 | EVP_MD_size(), EVP_MD_block_size(), EVP_MD_CTX_size(e), EVP_MD_size(), | 164 | EVP_MD_size(), EVP_MD_block_size(), EVP_MD_CTX_size() and |
165 | EVP_MD_CTX_block_size() and EVP_MD_block_size() return the digest or block | 165 | EVP_MD_CTX_block_size() return the digest or block size in bytes. |
166 | size in bytes. | ||
167 | 166 | ||
168 | EVP_md_null(), EVP_md2(), EVP_md5(), EVP_sha(), EVP_sha1(), EVP_dss(), | 167 | EVP_md_null(), EVP_md2(), EVP_md5(), EVP_sha(), EVP_sha1(), EVP_dss(), |
169 | EVP_dss1(), EVP_mdc2() and EVP_ripemd160() return pointers to the | 168 | EVP_dss1(), EVP_mdc2() and EVP_ripemd160() return pointers to the |
diff --git a/src/lib/libssl/src/doc/crypto/EVP_EncryptInit.pod b/src/lib/libssl/src/doc/crypto/EVP_EncryptInit.pod index b2211ea6d3..a0a782e772 100644 --- a/src/lib/libssl/src/doc/crypto/EVP_EncryptInit.pod +++ b/src/lib/libssl/src/doc/crypto/EVP_EncryptInit.pod | |||
@@ -16,7 +16,16 @@ EVP_CIPHER_CTX_nid, EVP_CIPHER_CTX_block_size, EVP_CIPHER_CTX_key_length, | |||
16 | EVP_CIPHER_CTX_iv_length, EVP_CIPHER_CTX_get_app_data, | 16 | EVP_CIPHER_CTX_iv_length, EVP_CIPHER_CTX_get_app_data, |
17 | EVP_CIPHER_CTX_set_app_data, EVP_CIPHER_CTX_type, EVP_CIPHER_CTX_flags, | 17 | EVP_CIPHER_CTX_set_app_data, EVP_CIPHER_CTX_type, EVP_CIPHER_CTX_flags, |
18 | EVP_CIPHER_CTX_mode, EVP_CIPHER_param_to_asn1, EVP_CIPHER_asn1_to_param, | 18 | EVP_CIPHER_CTX_mode, EVP_CIPHER_param_to_asn1, EVP_CIPHER_asn1_to_param, |
19 | EVP_CIPHER_CTX_set_padding - EVP cipher routines | 19 | EVP_CIPHER_CTX_set_padding, EVP_enc_null, EVP_des_cbc, EVP_des_ecb, |
20 | EVP_des_cfb, EVP_des_ofb, EVP_des_ede_cbc, EVP_des_ede, EVP_des_ede_ofb, | ||
21 | EVP_des_ede_cfb, EVP_des_ede3_cbc, EVP_des_ede3, EVP_des_ede3_ofb, | ||
22 | EVP_des_ede3_cfb, EVP_desx_cbc, EVP_rc4, EVP_rc4_40, EVP_idea_cbc, | ||
23 | EVP_idea_ecb, EVP_idea_cfb, EVP_idea_ofb, EVP_idea_cbc, EVP_rc2_cbc, | ||
24 | EVP_rc2_ecb, EVP_rc2_cfb, EVP_rc2_ofb, EVP_rc2_40_cbc, EVP_rc2_64_cbc, | ||
25 | EVP_bf_cbc, EVP_bf_ecb, EVP_bf_cfb, EVP_bf_ofb, EVP_cast5_cbc, | ||
26 | EVP_cast5_ecb, EVP_cast5_cfb, EVP_cast5_ofb, | ||
27 | EVP_aes_128_gcm, EVP_aes_192_gcm, EVP_aes_256_gcm, EVP_aes_128_ccm, | ||
28 | EVP_aes_192_ccm, EVP_aes_256_ccm - EVP cipher routines | ||
20 | 29 | ||
21 | =head1 SYNOPSIS | 30 | =head1 SYNOPSIS |
22 | 31 | ||
@@ -155,10 +164,11 @@ similar way to EVP_EncryptInit_ex(), EVP_DecryptInit_ex and | |||
155 | EVP_CipherInit_ex() except the B<ctx> parameter does not need to be | 164 | EVP_CipherInit_ex() except the B<ctx> parameter does not need to be |
156 | initialized and they always use the default cipher implementation. | 165 | initialized and they always use the default cipher implementation. |
157 | 166 | ||
158 | EVP_EncryptFinal(), EVP_DecryptFinal() and EVP_CipherFinal() behave in a | 167 | EVP_EncryptFinal(), EVP_DecryptFinal() and EVP_CipherFinal() are |
159 | similar way to EVP_EncryptFinal_ex(), EVP_DecryptFinal_ex() and | 168 | identical to EVP_EncryptFinal_ex(), EVP_DecryptFinal_ex() and |
160 | EVP_CipherFinal_ex() except B<ctx> is automatically cleaned up | 169 | EVP_CipherFinal_ex(). In previous releases they also used to clean up |
161 | after the call. | 170 | the B<ctx>, but this is no longer done and EVP_CIPHER_CTX_clean() |
171 | must be called to free any context resources. | ||
162 | 172 | ||
163 | EVP_get_cipherbyname(), EVP_get_cipherbynid() and EVP_get_cipherbyobj() | 173 | EVP_get_cipherbyname(), EVP_get_cipherbynid() and EVP_get_cipherbyobj() |
164 | return an EVP_CIPHER structure when passed a cipher name, a NID or an | 174 | return an EVP_CIPHER structure when passed a cipher name, a NID or an |
diff --git a/src/lib/libssl/src/doc/crypto/EVP_PKEY_CTX_ctrl.pod b/src/lib/libssl/src/doc/crypto/EVP_PKEY_CTX_ctrl.pod index ba6e51100b..91125da62e 100644 --- a/src/lib/libssl/src/doc/crypto/EVP_PKEY_CTX_ctrl.pod +++ b/src/lib/libssl/src/doc/crypto/EVP_PKEY_CTX_ctrl.pod | |||
@@ -2,7 +2,13 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | EVP_PKEY_ctrl, EVP_PKEY_ctrl_str - algorithm specific control operations | 5 | EVP_PKEY_CTX_ctrl, EVP_PKEY_CTX_ctrl_str, EVP_PKEY_get_default_digest_nid, |
6 | EVP_PKEY_CTX_set_signature_md, EVP_PKEY_CTX_set_rsa_padding, | ||
7 | EVP_PKEY_CTX_set_rsa_pss_saltlen, EVP_PKEY_CTX_set_rsa_rsa_keygen_bits, | ||
8 | EVP_PKEY_CTX_set_rsa_keygen_pubexp, EVP_PKEY_CTX_set_dsa_paramgen_bits, | ||
9 | EVP_PKEY_CTX_set_dh_paramgen_prime_len, | ||
10 | EVP_PKEY_CTX_set_dh_paramgen_generator, | ||
11 | EVP_PKEY_CTX_set_ec_paramgen_curve_nid - algorithm specific control operations | ||
6 | 12 | ||
7 | =head1 SYNOPSIS | 13 | =head1 SYNOPSIS |
8 | 14 | ||
@@ -45,7 +51,7 @@ B<p1> and B<p2>. | |||
45 | Applications will not normally call EVP_PKEY_CTX_ctrl() directly but will | 51 | Applications will not normally call EVP_PKEY_CTX_ctrl() directly but will |
46 | instead call one of the algorithm specific macros below. | 52 | instead call one of the algorithm specific macros below. |
47 | 53 | ||
48 | The function EVP_PKEY_ctrl_str() allows an application to send an algorithm | 54 | The function EVP_PKEY_CTX_ctrl_str() allows an application to send an algorithm |
49 | specific control operation to a context B<ctx> in string form. This is | 55 | specific control operation to a context B<ctx> in string form. This is |
50 | intended to be used for options specified on the command line or in text | 56 | intended to be used for options specified on the command line or in text |
51 | files. The commands supported are documented in the openssl utility | 57 | files. The commands supported are documented in the openssl utility |
diff --git a/src/lib/libssl/src/doc/crypto/EVP_SignInit.pod b/src/lib/libssl/src/doc/crypto/EVP_SignInit.pod index 6ea6df655e..5a1b67e006 100644 --- a/src/lib/libssl/src/doc/crypto/EVP_SignInit.pod +++ b/src/lib/libssl/src/doc/crypto/EVP_SignInit.pod | |||
@@ -30,9 +30,11 @@ signature context B<ctx>. This function can be called several times on the | |||
30 | same B<ctx> to include additional data. | 30 | same B<ctx> to include additional data. |
31 | 31 | ||
32 | EVP_SignFinal() signs the data in B<ctx> using the private key B<pkey> and | 32 | EVP_SignFinal() signs the data in B<ctx> using the private key B<pkey> and |
33 | places the signature in B<sig>. The number of bytes of data written (i.e. the | 33 | places the signature in B<sig>. B<sig> must be at least EVP_PKEY_size(pkey) |
34 | length of the signature) will be written to the integer at B<s>, at most | 34 | bytes in size. B<s> is an OUT parameter, and not used as an IN parameter. |
35 | EVP_PKEY_size(pkey) bytes will be written. | 35 | The number of bytes of data written (i.e. the length of the signature) |
36 | will be written to the integer at B<s>, at most EVP_PKEY_size(pkey) bytes | ||
37 | will be written. | ||
36 | 38 | ||
37 | EVP_SignInit() initializes a signing context B<ctx> to use the default | 39 | EVP_SignInit() initializes a signing context B<ctx> to use the default |
38 | implementation of digest B<type>. | 40 | implementation of digest B<type>. |
diff --git a/src/lib/libssl/src/doc/crypto/OPENSSL_config.pod b/src/lib/libssl/src/doc/crypto/OPENSSL_config.pod index 552ed956ab..897d2cce59 100644 --- a/src/lib/libssl/src/doc/crypto/OPENSSL_config.pod +++ b/src/lib/libssl/src/doc/crypto/OPENSSL_config.pod | |||
@@ -73,7 +73,7 @@ Neither OPENSSL_config() nor OPENSSL_no_config() return a value. | |||
73 | =head1 SEE ALSO | 73 | =head1 SEE ALSO |
74 | 74 | ||
75 | L<conf(5)|conf(5)>, L<CONF_load_modules_file(3)|CONF_load_modules_file(3)>, | 75 | L<conf(5)|conf(5)>, L<CONF_load_modules_file(3)|CONF_load_modules_file(3)>, |
76 | L<CONF_modules_free(3),CONF_modules_free(3)> | 76 | L<CONF_modules_free(3)|CONF_modules_free(3)> |
77 | 77 | ||
78 | =head1 HISTORY | 78 | =head1 HISTORY |
79 | 79 | ||
diff --git a/src/lib/libssl/src/doc/crypto/OPENSSL_load_builtin_modules.pod b/src/lib/libssl/src/doc/crypto/OPENSSL_load_builtin_modules.pod index 6c99170197..828fec651d 100644 --- a/src/lib/libssl/src/doc/crypto/OPENSSL_load_builtin_modules.pod +++ b/src/lib/libssl/src/doc/crypto/OPENSSL_load_builtin_modules.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | OPENSSL_load_builtin_modules - add standard configuration modules | 5 | OPENSSL_load_builtin_modules, ASN1_add_oid_module, ENGINE_add_conf_module - add standard configuration modules |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
diff --git a/src/lib/libssl/src/doc/crypto/OpenSSL_add_all_algorithms.pod b/src/lib/libssl/src/doc/crypto/OpenSSL_add_all_algorithms.pod index cc6c07fa24..1bba4d0212 100644 --- a/src/lib/libssl/src/doc/crypto/OpenSSL_add_all_algorithms.pod +++ b/src/lib/libssl/src/doc/crypto/OpenSSL_add_all_algorithms.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | OpenSSL_add_all_algorithms, OpenSSL_add_all_ciphers, OpenSSL_add_all_digests - | 5 | OpenSSL_add_all_algorithms, OpenSSL_add_all_ciphers, OpenSSL_add_all_digests, EVP_cleanup - |
6 | add algorithms to internal table | 6 | add algorithms to internal table |
7 | 7 | ||
8 | =head1 SYNOPSIS | 8 | =head1 SYNOPSIS |
diff --git a/src/lib/libssl/src/doc/crypto/PKCS5_PBKDF2_HMAC.pod b/src/lib/libssl/src/doc/crypto/PKCS5_PBKDF2_HMAC.pod new file mode 100644 index 0000000000..7a2b8e6187 --- /dev/null +++ b/src/lib/libssl/src/doc/crypto/PKCS5_PBKDF2_HMAC.pod | |||
@@ -0,0 +1,64 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | PKCS5_PBKDF2_HMAC, PKCS5_PBKDF2_HMAC_SHA1 - password based derivation routines with salt and iteration count | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/evp.h> | ||
10 | |||
11 | int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, | ||
12 | const unsigned char *salt, int saltlen, int iter, | ||
13 | const EVP_MD *digest, | ||
14 | int keylen, unsigned char *out); | ||
15 | |||
16 | int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, | ||
17 | const unsigned char *salt, int saltlen, int iter, | ||
18 | int keylen, unsigned char *out); | ||
19 | |||
20 | =head1 DESCRIPTION | ||
21 | |||
22 | PKCS5_PBKDF2_HMAC() derives a key from a password using a salt and iteration count | ||
23 | as specified in RFC 2898. | ||
24 | |||
25 | B<pass> is the password used in the derivation of length B<passlen>. B<pass> | ||
26 | is an optional parameter and can be NULL. If B<passlen> is -1, then the | ||
27 | function will calculate the length of B<pass> using strlen(). | ||
28 | |||
29 | B<salt> is the salt used in the derivation of length B<saltlen>. If the | ||
30 | B<salt> is NULL, then B<saltlen> must be 0. The function will not | ||
31 | attempt to calculate the length of the B<salt> because it is not assumed to | ||
32 | be NULL terminated. | ||
33 | |||
34 | B<iter> is the iteration count and its value should be greater than or | ||
35 | equal to 1. RFC 2898 suggests an iteration count of at least 1000. Any | ||
36 | B<iter> less than 1 is treated as a single iteration. | ||
37 | |||
38 | B<digest> is the message digest function used in the derivation. Values include | ||
39 | any of the EVP_* message digests. PKCS5_PBKDF2_HMAC_SHA1() calls | ||
40 | PKCS5_PBKDF2_HMAC() with EVP_sha1(). | ||
41 | |||
42 | The derived key will be written to B<out>. The size of the B<out> buffer | ||
43 | is specified via B<keylen>. | ||
44 | |||
45 | =head1 NOTES | ||
46 | |||
47 | A typical application of this function is to derive keying material for an | ||
48 | encryption algorithm from a password in the B<pass>, a salt in B<salt>, | ||
49 | and an iteration count. | ||
50 | |||
51 | Increasing the B<iter> parameter slows down the algorithm which makes it | ||
52 | harder for an attacker to peform a brute force attack using a large number | ||
53 | of candidate passwords. | ||
54 | |||
55 | =head1 RETURN VALUES | ||
56 | |||
57 | PKCS5_PBKDF2_HMAC() and PBKCS5_PBKDF2_HMAC_SHA1() return 1 on success or 0 on error. | ||
58 | |||
59 | =head1 SEE ALSO | ||
60 | |||
61 | L<evp(3)|evp(3)>, L<rand(3)|rand(3)>, | ||
62 | L<EVP_BytesToKey(3)|EVP_BytesToKey(3)> | ||
63 | |||
64 | =cut | ||
diff --git a/src/lib/libssl/src/doc/crypto/PKCS7_verify.pod b/src/lib/libssl/src/doc/crypto/PKCS7_verify.pod index f88e66632b..781c6108a9 100644 --- a/src/lib/libssl/src/doc/crypto/PKCS7_verify.pod +++ b/src/lib/libssl/src/doc/crypto/PKCS7_verify.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | PKCS7_verify - verify a PKCS#7 signedData structure | 5 | PKCS7_verify, PKCS7_get0_signers - verify a PKCS#7 signedData structure |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
diff --git a/src/lib/libssl/src/doc/crypto/RSA_generate_key.pod b/src/lib/libssl/src/doc/crypto/RSA_generate_key.pod index 867390884b..00026f04df 100644 --- a/src/lib/libssl/src/doc/crypto/RSA_generate_key.pod +++ b/src/lib/libssl/src/doc/crypto/RSA_generate_key.pod | |||
@@ -2,27 +2,32 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | RSA_generate_key - generate RSA key pair | 5 | RSA_generate_key_ex, RSA_generate_key - generate RSA key pair |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
9 | #include <openssl/rsa.h> | 9 | #include <openssl/rsa.h> |
10 | 10 | ||
11 | int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); | ||
12 | |||
13 | Deprecated: | ||
14 | |||
11 | RSA *RSA_generate_key(int num, unsigned long e, | 15 | RSA *RSA_generate_key(int num, unsigned long e, |
12 | void (*callback)(int,int,void *), void *cb_arg); | 16 | void (*callback)(int,int,void *), void *cb_arg); |
13 | 17 | ||
14 | =head1 DESCRIPTION | 18 | =head1 DESCRIPTION |
15 | 19 | ||
16 | RSA_generate_key() generates a key pair and returns it in a newly | 20 | RSA_generate_key_ex() generates a key pair and stores it in the B<RSA> |
17 | allocated B<RSA> structure. | 21 | structure provided in B<rsa>. |
18 | 22 | ||
19 | The modulus size will be B<num> bits, and the public exponent will be | 23 | The modulus size will be of length B<bits>, and the public exponent will be |
20 | B<e>. Key sizes with B<num> E<lt> 1024 should be considered insecure. | 24 | B<e>. Key sizes with B<num> E<lt> 1024 should be considered insecure. |
21 | The exponent is an odd number, typically 3, 17 or 65537. | 25 | The exponent is an odd number, typically 3, 17 or 65537. |
22 | 26 | ||
23 | A callback function may be used to provide feedback about the | 27 | A callback function may be used to provide feedback about the |
24 | progress of the key generation. If B<callback> is not B<NULL>, it | 28 | progress of the key generation. If B<cb> is not B<NULL>, it |
25 | will be called as follows: | 29 | will be called as follows using the BN_GENCB_call() function |
30 | described on the L<BN_generate_prime(3)|BN_generate_prime(3)> page: | ||
26 | 31 | ||
27 | =over 4 | 32 | =over 4 |
28 | 33 | ||
@@ -34,32 +39,38 @@ described in L<BN_generate_prime(3)|BN_generate_prime(3)>. | |||
34 | =item * | 39 | =item * |
35 | 40 | ||
36 | When the n-th randomly generated prime is rejected as not | 41 | When the n-th randomly generated prime is rejected as not |
37 | suitable for the key, B<callback(2, n, cb_arg)> is called. | 42 | suitable for the key, B<BN_GENCB_call(cb, 2, n)> is called. |
38 | 43 | ||
39 | =item * | 44 | =item * |
40 | 45 | ||
41 | When a random p has been found with p-1 relatively prime to B<e>, | 46 | When a random p has been found with p-1 relatively prime to B<e>, |
42 | it is called as B<callback(3, 0, cb_arg)>. | 47 | it is called as B<BN_GENCB_call(cb, 3, 0)>. |
43 | 48 | ||
44 | =back | 49 | =back |
45 | 50 | ||
46 | The process is then repeated for prime q with B<callback(3, 1, cb_arg)>. | 51 | The process is then repeated for prime q with B<BN_GENCB_call(cb, 3, 1)>. |
52 | |||
53 | RSA_generate_key is deprecated (new applications should use | ||
54 | RSA_generate_key_ex instead). RSA_generate_key works in the same was as | ||
55 | RSA_generate_key_ex except it uses "old style" call backs. See | ||
56 | L<BN_generate_prime(3)|BN_generate_prime(3)> for further details. | ||
47 | 57 | ||
48 | =head1 RETURN VALUE | 58 | =head1 RETURN VALUE |
49 | 59 | ||
50 | If key generation fails, RSA_generate_key() returns B<NULL>; the | 60 | If key generation fails, RSA_generate_key() returns B<NULL>. |
51 | error codes can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. | 61 | |
62 | The error codes can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. | ||
52 | 63 | ||
53 | =head1 BUGS | 64 | =head1 BUGS |
54 | 65 | ||
55 | B<callback(2, x, cb_arg)> is used with two different meanings. | 66 | B<BN_GENCB_call(cb, 2, x)> is used with two different meanings. |
56 | 67 | ||
57 | RSA_generate_key() goes into an infinite loop for illegal input values. | 68 | RSA_generate_key() goes into an infinite loop for illegal input values. |
58 | 69 | ||
59 | =head1 SEE ALSO | 70 | =head1 SEE ALSO |
60 | 71 | ||
61 | L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>, L<rsa(3)|rsa(3)>, | 72 | L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>, L<rsa(3)|rsa(3)>, |
62 | L<RSA_free(3)|RSA_free(3)> | 73 | L<RSA_free(3)|RSA_free(3)>, L<BN_generate_prime(3)|BN_generate_prime(3)> |
63 | 74 | ||
64 | =head1 HISTORY | 75 | =head1 HISTORY |
65 | 76 | ||
diff --git a/src/lib/libssl/src/doc/crypto/RSA_sign.pod b/src/lib/libssl/src/doc/crypto/RSA_sign.pod index a82f221909..51587bdc41 100644 --- a/src/lib/libssl/src/doc/crypto/RSA_sign.pod +++ b/src/lib/libssl/src/doc/crypto/RSA_sign.pod | |||
@@ -20,6 +20,10 @@ RSA_sign() signs the message digest B<m> of size B<m_len> using the | |||
20 | private key B<rsa> as specified in PKCS #1 v2.0. It stores the | 20 | private key B<rsa> as specified in PKCS #1 v2.0. It stores the |
21 | signature in B<sigret> and the signature size in B<siglen>. B<sigret> | 21 | signature in B<sigret> and the signature size in B<siglen>. B<sigret> |
22 | must point to RSA_size(B<rsa>) bytes of memory. | 22 | must point to RSA_size(B<rsa>) bytes of memory. |
23 | Note that PKCS #1 adds meta-data, placing limits on the size of the | ||
24 | key that can be used. | ||
25 | See L<RSA_private_encrypt(3)|RSA_private_encrypt(3)> for lower-level | ||
26 | operations. | ||
23 | 27 | ||
24 | B<type> denotes the message digest algorithm that was used to generate | 28 | B<type> denotes the message digest algorithm that was used to generate |
25 | B<m>. It usually is one of B<NID_sha1>, B<NID_ripemd160> and B<NID_md5>; | 29 | B<m>. It usually is one of B<NID_sha1>, B<NID_ripemd160> and B<NID_md5>; |
diff --git a/src/lib/libssl/src/doc/crypto/X509_NAME_ENTRY_get_object.pod b/src/lib/libssl/src/doc/crypto/X509_NAME_ENTRY_get_object.pod index 86242f8242..4603202db8 100644 --- a/src/lib/libssl/src/doc/crypto/X509_NAME_ENTRY_get_object.pod +++ b/src/lib/libssl/src/doc/crypto/X509_NAME_ENTRY_get_object.pod | |||
@@ -65,6 +65,6 @@ set first so the relevant field information can be looked up internally. | |||
65 | =head1 SEE ALSO | 65 | =head1 SEE ALSO |
66 | 66 | ||
67 | L<ERR_get_error(3)|ERR_get_error(3)>, L<d2i_X509_NAME(3)|d2i_X509_NAME(3)>, | 67 | L<ERR_get_error(3)|ERR_get_error(3)>, L<d2i_X509_NAME(3)|d2i_X509_NAME(3)>, |
68 | L<OBJ_nid2obj(3),OBJ_nid2obj(3)> | 68 | L<OBJ_nid2obj(3)|OBJ_nid2obj(3)> |
69 | 69 | ||
70 | =cut | 70 | =cut |
diff --git a/src/lib/libssl/src/doc/crypto/X509_STORE_CTX_get_ex_new_index.pod b/src/lib/libssl/src/doc/crypto/X509_STORE_CTX_get_ex_new_index.pod index 392b36c3ae..25224cef1b 100644 --- a/src/lib/libssl/src/doc/crypto/X509_STORE_CTX_get_ex_new_index.pod +++ b/src/lib/libssl/src/doc/crypto/X509_STORE_CTX_get_ex_new_index.pod | |||
@@ -17,7 +17,7 @@ structures | |||
17 | 17 | ||
18 | int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *d, int idx, void *arg); | 18 | int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *d, int idx, void *arg); |
19 | 19 | ||
20 | char *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *d, int idx); | 20 | void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *d, int idx); |
21 | 21 | ||
22 | =head1 DESCRIPTION | 22 | =head1 DESCRIPTION |
23 | 23 | ||
diff --git a/src/lib/libssl/src/doc/crypto/crypto.pod b/src/lib/libssl/src/doc/crypto/crypto.pod index 3c4a07d906..2349014fce 100644 --- a/src/lib/libssl/src/doc/crypto/crypto.pod +++ b/src/lib/libssl/src/doc/crypto/crypto.pod | |||
@@ -56,7 +56,7 @@ L<pkcs7(3)|pkcs7(3)>, L<pkcs12(3)|pkcs12(3)> | |||
56 | 56 | ||
57 | =item INTERNAL FUNCTIONS | 57 | =item INTERNAL FUNCTIONS |
58 | 58 | ||
59 | L<bn(3)|bn(3)>, L<buffer(3)|buffer(3)>, L<lhash(3)|lhash(3)>, | 59 | L<bn(3)|bn(3)>, L<buffer(3)|buffer(3)>, L<ec(3)|ec(3)>, L<lhash(3)|lhash(3)>, |
60 | L<objects(3)|objects(3)>, L<stack(3)|stack(3)>, | 60 | L<objects(3)|objects(3)>, L<stack(3)|stack(3)>, |
61 | L<txt_db(3)|txt_db(3)> | 61 | L<txt_db(3)|txt_db(3)> |
62 | 62 | ||
diff --git a/src/lib/libssl/src/doc/crypto/d2i_DSAPublicKey.pod b/src/lib/libssl/src/doc/crypto/d2i_DSAPublicKey.pod index e890841311..eeb96c485f 100644 --- a/src/lib/libssl/src/doc/crypto/d2i_DSAPublicKey.pod +++ b/src/lib/libssl/src/doc/crypto/d2i_DSAPublicKey.pod | |||
@@ -3,7 +3,7 @@ | |||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | d2i_DSAPublicKey, i2d_DSAPublicKey, d2i_DSAPrivateKey, i2d_DSAPrivateKey, | 5 | d2i_DSAPublicKey, i2d_DSAPublicKey, d2i_DSAPrivateKey, i2d_DSAPrivateKey, |
6 | d2i_DSA_PUBKEY, i2d_DSA_PUBKEY, d2i_DSA_SIG, i2d_DSA_SIG - DSA key encoding | 6 | d2i_DSA_PUBKEY, i2d_DSA_PUBKEY, d2i_DSAparams, i2d_DSAparams, d2i_DSA_SIG, i2d_DSA_SIG - DSA key encoding |
7 | and parsing functions. | 7 | and parsing functions. |
8 | 8 | ||
9 | =head1 SYNOPSIS | 9 | =head1 SYNOPSIS |
diff --git a/src/lib/libssl/src/doc/crypto/d2i_ECPKParameters.pod b/src/lib/libssl/src/doc/crypto/d2i_ECPKParameters.pod new file mode 100644 index 0000000000..704b4ab352 --- /dev/null +++ b/src/lib/libssl/src/doc/crypto/d2i_ECPKParameters.pod | |||
@@ -0,0 +1,84 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | d2i_ECPKParameters, i2d_ECPKParameters, d2i_ECPKParameters_bio, i2d_ECPKParameters_bio, d2i_ECPKParameters_fp, i2d_ECPKParameters_fp, ECPKParameters_print, ECPKParameters_print_fp - Functions for decoding and encoding ASN1 representations of elliptic curve entities | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/ec.h> | ||
10 | |||
11 | EC_GROUP *d2i_ECPKParameters(EC_GROUP **px, const unsigned char **in, long len); | ||
12 | int i2d_ECPKParameters(const EC_GROUP *x, unsigned char **out); | ||
13 | #define d2i_ECPKParameters_bio(bp,x) ASN1_d2i_bio_of(EC_GROUP,NULL,d2i_ECPKParameters,bp,x) | ||
14 | #define i2d_ECPKParameters_bio(bp,x) ASN1_i2d_bio_of_const(EC_GROUP,i2d_ECPKParameters,bp,x) | ||
15 | #define d2i_ECPKParameters_fp(fp,x) (EC_GROUP *)ASN1_d2i_fp(NULL, \ | ||
16 | (char *(*)())d2i_ECPKParameters,(fp),(unsigned char **)(x)) | ||
17 | #define i2d_ECPKParameters_fp(fp,x) ASN1_i2d_fp(i2d_ECPKParameters,(fp), \ | ||
18 | (unsigned char *)(x)) | ||
19 | int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off); | ||
20 | int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off); | ||
21 | |||
22 | |||
23 | =head1 DESCRIPTION | ||
24 | |||
25 | The ECPKParameters encode and decode routines encode and parse the public parameters for an | ||
26 | B<EC_GROUP> structure, which represents a curve. | ||
27 | |||
28 | d2i_ECPKParameters() attempts to decode B<len> bytes at B<*in>. If | ||
29 | successful a pointer to the B<EC_GROUP> structure is returned. If an error | ||
30 | occurred then B<NULL> is returned. If B<px> is not B<NULL> then the | ||
31 | returned structure is written to B<*px>. If B<*px> is not B<NULL> | ||
32 | then it is assumed that B<*px> contains a valid B<EC_GROUP> | ||
33 | structure and an attempt is made to reuse it. If the call is | ||
34 | successful B<*in> is incremented to the byte following the | ||
35 | parsed data. | ||
36 | |||
37 | i2d_ECPKParameters() encodes the structure pointed to by B<x> into DER format. | ||
38 | If B<out> is not B<NULL> is writes the DER encoded data to the buffer | ||
39 | at B<*out>, and increments it to point after the data just written. | ||
40 | If the return value is negative an error occurred, otherwise it | ||
41 | returns the length of the encoded data. | ||
42 | |||
43 | If B<*out> is B<NULL> memory will be allocated for a buffer and the encoded | ||
44 | data written to it. In this case B<*out> is not incremented and it points to | ||
45 | the start of the data just written. | ||
46 | |||
47 | d2i_ECPKParameters_bio() is similar to d2i_ECPKParameters() except it attempts | ||
48 | to parse data from BIO B<bp>. | ||
49 | |||
50 | d2i_ECPKParameters_fp() is similar to d2i_ECPKParameters() except it attempts | ||
51 | to parse data from FILE pointer B<fp>. | ||
52 | |||
53 | i2d_ECPKParameters_bio() is similar to i2d_ECPKParameters() except it writes | ||
54 | the encoding of the structure B<x> to BIO B<bp> and it | ||
55 | returns 1 for success and 0 for failure. | ||
56 | |||
57 | i2d_ECPKParameters_fp() is similar to i2d_ECPKParameters() except it writes | ||
58 | the encoding of the structure B<x> to BIO B<bp> and it | ||
59 | returns 1 for success and 0 for failure. | ||
60 | |||
61 | These functions are very similar to the X509 functions described in L<d2i_X509(3)|d2i_X509(3)>, | ||
62 | where further notes and examples are available. | ||
63 | |||
64 | The ECPKParameters_print and ECPKParameters_print_fp functions print a human-readable output | ||
65 | of the public parameters of the EC_GROUP to B<bp> or B<fp>. The output lines are indented by B<off> spaces. | ||
66 | |||
67 | =head1 RETURN VALUES | ||
68 | |||
69 | d2i_ECPKParameters(), d2i_ECPKParameters_bio() and d2i_ECPKParameters_fp() return a valid B<EC_GROUP> structure | ||
70 | or B<NULL> if an error occurs. | ||
71 | |||
72 | i2d_ECPKParameters() returns the number of bytes successfully encoded or a negative | ||
73 | value if an error occurs. | ||
74 | |||
75 | i2d_ECPKParameters_bio(), i2d_ECPKParameters_fp(), ECPKParameters_print and ECPKParameters_print_fp | ||
76 | return 1 for success and 0 if an error occurs. | ||
77 | |||
78 | =head1 SEE ALSO | ||
79 | |||
80 | L<crypto(3)|crypto(3)>, L<ec(3)|ec(3)>, L<EC_GROUP_new(3)|EC_GROUP_new(3)>, L<EC_GROUP_copy(3)|EC_GROUP_copy(3)>, | ||
81 | L<EC_POINT_new(3)|EC_POINT_new(3)>, L<EC_POINT_add(3)|EC_POINT_add(3)>, L<EC_KEY_new(3)|EC_KEY_new(3)>, | ||
82 | L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>, L<d2i_X509(3)|d2i_X509(3)> | ||
83 | |||
84 | =cut | ||
diff --git a/src/lib/libssl/src/doc/crypto/d2i_X509_CRL.pod b/src/lib/libssl/src/doc/crypto/d2i_X509_CRL.pod index dcdc86994d..563e4de8e0 100644 --- a/src/lib/libssl/src/doc/crypto/d2i_X509_CRL.pod +++ b/src/lib/libssl/src/doc/crypto/d2i_X509_CRL.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | d2i_X509_CRL, i2d_X509_CRL, d2i_X509_CRL_bio, d2i_509_CRL_fp, | 5 | d2i_X509_CRL, i2d_X509_CRL, d2i_X509_CRL_bio, d2i_X509_CRL_fp, |
6 | i2d_X509_CRL_bio, i2d_X509_CRL_fp - PKCS#10 certificate request functions. | 6 | i2d_X509_CRL_bio, i2d_X509_CRL_fp - PKCS#10 certificate request functions. |
7 | 7 | ||
8 | =head1 SYNOPSIS | 8 | =head1 SYNOPSIS |
diff --git a/src/lib/libssl/src/doc/crypto/ec.pod b/src/lib/libssl/src/doc/crypto/ec.pod new file mode 100644 index 0000000000..7d57ba8ea0 --- /dev/null +++ b/src/lib/libssl/src/doc/crypto/ec.pod | |||
@@ -0,0 +1,201 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | ec - Elliptic Curve functions | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/ec.h> | ||
10 | #include <openssl/bn.h> | ||
11 | |||
12 | const EC_METHOD *EC_GFp_simple_method(void); | ||
13 | const EC_METHOD *EC_GFp_mont_method(void); | ||
14 | const EC_METHOD *EC_GFp_nist_method(void); | ||
15 | const EC_METHOD *EC_GFp_nistp224_method(void); | ||
16 | const EC_METHOD *EC_GFp_nistp256_method(void); | ||
17 | const EC_METHOD *EC_GFp_nistp521_method(void); | ||
18 | |||
19 | const EC_METHOD *EC_GF2m_simple_method(void); | ||
20 | |||
21 | EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); | ||
22 | void EC_GROUP_free(EC_GROUP *group); | ||
23 | void EC_GROUP_clear_free(EC_GROUP *group); | ||
24 | int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); | ||
25 | EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); | ||
26 | const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); | ||
27 | int EC_METHOD_get_field_type(const EC_METHOD *meth); | ||
28 | int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, const BIGNUM *order, const BIGNUM *cofactor); | ||
29 | const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); | ||
30 | int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); | ||
31 | int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, BN_CTX *ctx); | ||
32 | void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); | ||
33 | int EC_GROUP_get_curve_name(const EC_GROUP *group); | ||
34 | void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); | ||
35 | int EC_GROUP_get_asn1_flag(const EC_GROUP *group); | ||
36 | void EC_GROUP_set_point_conversion_form(EC_GROUP *group, point_conversion_form_t form); | ||
37 | point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); | ||
38 | unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); | ||
39 | size_t EC_GROUP_get_seed_len(const EC_GROUP *); | ||
40 | size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); | ||
41 | int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); | ||
42 | int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx); | ||
43 | int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); | ||
44 | int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx); | ||
45 | int EC_GROUP_get_degree(const EC_GROUP *group); | ||
46 | int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); | ||
47 | int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); | ||
48 | int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); | ||
49 | EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); | ||
50 | EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); | ||
51 | EC_GROUP *EC_GROUP_new_by_curve_name(int nid); | ||
52 | |||
53 | size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); | ||
54 | |||
55 | EC_POINT *EC_POINT_new(const EC_GROUP *group); | ||
56 | void EC_POINT_free(EC_POINT *point); | ||
57 | void EC_POINT_clear_free(EC_POINT *point); | ||
58 | int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); | ||
59 | EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); | ||
60 | const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); | ||
61 | int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); | ||
62 | int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, | ||
63 | const BIGNUM *x, const BIGNUM *y, const BIGNUM *z, BN_CTX *ctx); | ||
64 | int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, | ||
65 | const EC_POINT *p, BIGNUM *x, BIGNUM *y, BIGNUM *z, BN_CTX *ctx); | ||
66 | int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, | ||
67 | const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); | ||
68 | int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, | ||
69 | const EC_POINT *p, BIGNUM *x, BIGNUM *y, BN_CTX *ctx); | ||
70 | int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, | ||
71 | const BIGNUM *x, int y_bit, BN_CTX *ctx); | ||
72 | int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, | ||
73 | const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); | ||
74 | int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, | ||
75 | const EC_POINT *p, BIGNUM *x, BIGNUM *y, BN_CTX *ctx); | ||
76 | int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, | ||
77 | const BIGNUM *x, int y_bit, BN_CTX *ctx); | ||
78 | size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, | ||
79 | point_conversion_form_t form, | ||
80 | unsigned char *buf, size_t len, BN_CTX *ctx); | ||
81 | int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, | ||
82 | const unsigned char *buf, size_t len, BN_CTX *ctx); | ||
83 | BIGNUM *EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *, | ||
84 | point_conversion_form_t form, BIGNUM *, BN_CTX *); | ||
85 | EC_POINT *EC_POINT_bn2point(const EC_GROUP *, const BIGNUM *, | ||
86 | EC_POINT *, BN_CTX *); | ||
87 | char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, | ||
88 | point_conversion_form_t form, BN_CTX *); | ||
89 | EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, | ||
90 | EC_POINT *, BN_CTX *); | ||
91 | |||
92 | int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, const EC_POINT *b, BN_CTX *ctx); | ||
93 | int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, BN_CTX *ctx); | ||
94 | int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); | ||
95 | int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p); | ||
96 | int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, BN_CTX *ctx); | ||
97 | int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, BN_CTX *ctx); | ||
98 | int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx); | ||
99 | int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, EC_POINT *points[], BN_CTX *ctx); | ||
100 | 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); | ||
101 | int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); | ||
102 | int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); | ||
103 | int EC_GROUP_have_precompute_mult(const EC_GROUP *group); | ||
104 | |||
105 | int EC_GROUP_get_basis_type(const EC_GROUP *); | ||
106 | int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k); | ||
107 | int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, | ||
108 | unsigned int *k2, unsigned int *k3); | ||
109 | EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len); | ||
110 | int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out); | ||
111 | #define d2i_ECPKParameters_bio(bp,x) ASN1_d2i_bio_of(EC_GROUP,NULL,d2i_ECPKParameters,bp,x) | ||
112 | #define i2d_ECPKParameters_bio(bp,x) ASN1_i2d_bio_of_const(EC_GROUP,i2d_ECPKParameters,bp,x) | ||
113 | #define d2i_ECPKParameters_fp(fp,x) (EC_GROUP *)ASN1_d2i_fp(NULL, \ | ||
114 | (char *(*)())d2i_ECPKParameters,(fp),(unsigned char **)(x)) | ||
115 | #define i2d_ECPKParameters_fp(fp,x) ASN1_i2d_fp(i2d_ECPKParameters,(fp), \ | ||
116 | (unsigned char *)(x)) | ||
117 | int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off); | ||
118 | int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off); | ||
119 | |||
120 | EC_KEY *EC_KEY_new(void); | ||
121 | int EC_KEY_get_flags(const EC_KEY *key); | ||
122 | void EC_KEY_set_flags(EC_KEY *key, int flags); | ||
123 | void EC_KEY_clear_flags(EC_KEY *key, int flags); | ||
124 | EC_KEY *EC_KEY_new_by_curve_name(int nid); | ||
125 | void EC_KEY_free(EC_KEY *key); | ||
126 | EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); | ||
127 | EC_KEY *EC_KEY_dup(const EC_KEY *src); | ||
128 | int EC_KEY_up_ref(EC_KEY *key); | ||
129 | const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); | ||
130 | int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); | ||
131 | const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); | ||
132 | int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); | ||
133 | const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); | ||
134 | int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); | ||
135 | unsigned EC_KEY_get_enc_flags(const EC_KEY *key); | ||
136 | void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); | ||
137 | point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); | ||
138 | void EC_KEY_set_conv_form(EC_KEY *eckey, point_conversion_form_t cform); | ||
139 | void *EC_KEY_get_key_method_data(EC_KEY *key, | ||
140 | void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *)); | ||
141 | void EC_KEY_insert_key_method_data(EC_KEY *key, void *data, | ||
142 | void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *)); | ||
143 | void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); | ||
144 | int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); | ||
145 | int EC_KEY_generate_key(EC_KEY *key); | ||
146 | int EC_KEY_check_key(const EC_KEY *key); | ||
147 | int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x, BIGNUM *y); | ||
148 | |||
149 | EC_KEY *d2i_ECPrivateKey(EC_KEY **key, const unsigned char **in, long len); | ||
150 | int i2d_ECPrivateKey(EC_KEY *key, unsigned char **out); | ||
151 | |||
152 | EC_KEY *d2i_ECParameters(EC_KEY **key, const unsigned char **in, long len); | ||
153 | int i2d_ECParameters(EC_KEY *key, unsigned char **out); | ||
154 | |||
155 | EC_KEY *o2i_ECPublicKey(EC_KEY **key, const unsigned char **in, long len); | ||
156 | int i2o_ECPublicKey(EC_KEY *key, unsigned char **out); | ||
157 | int ECParameters_print(BIO *bp, const EC_KEY *key); | ||
158 | int EC_KEY_print(BIO *bp, const EC_KEY *key, int off); | ||
159 | int ECParameters_print_fp(FILE *fp, const EC_KEY *key); | ||
160 | int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off); | ||
161 | #define ECParameters_dup(x) ASN1_dup_of(EC_KEY,i2d_ECParameters,d2i_ECParameters,x) | ||
162 | #define EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid) \ | ||
163 | EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, EVP_PKEY_OP_PARAMGEN, \ | ||
164 | EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID, nid, NULL) | ||
165 | |||
166 | |||
167 | =head1 DESCRIPTION | ||
168 | |||
169 | This library provides an extensive set of functions for performing operations on elliptic curves over finite fields. | ||
170 | In general an elliptic curve is one with an equation of the form: | ||
171 | |||
172 | y^2 = x^3 + ax + b | ||
173 | |||
174 | An B<EC_GROUP> structure is used to represent the definition of an elliptic curve. Points on a curve are stored using an | ||
175 | B<EC_POINT> structure. An B<EC_KEY> is used to hold a private/public key pair, where a private key is simply a BIGNUM and a | ||
176 | public key is a point on a curve (represented by an B<EC_POINT>). | ||
177 | |||
178 | The library contains a number of alternative implementations of the different functions. Each implementation is optimised | ||
179 | for different scenarios. No matter which implementation is being used, the interface remains the same. The library | ||
180 | handles calling the correct implementation when an interface function is invoked. An implementation is represented by | ||
181 | an B<EC_METHOD> structure. | ||
182 | |||
183 | The creation and destruction of B<EC_GROUP> objects is described in L<EC_GROUP_new(3)|EC_GROUP_new(3)>. Functions for | ||
184 | manipulating B<EC_GROUP> objects are described in L<EC_GROUP_copy(3)|EC_GROUP_copy(3)>. | ||
185 | |||
186 | Functions for creating, destroying and manipulating B<EC_POINT> objects are explained in L<EC_POINT_new(3)|EC_POINT_new(3)>, | ||
187 | whilst functions for performing mathematical operations and tests on B<EC_POINTs> are coverd in L<EC_POINT_add(3)|EC_POINT_add(3)>. | ||
188 | |||
189 | For working with private and public keys refer to L<EC_KEY_new(3)|EC_KEY_new(3)>. Implementations are covered in | ||
190 | L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>. | ||
191 | |||
192 | For information on encoding and decoding curve parameters to and from ASN1 see L<d2i_ECPKParameters(3)|d2i_ECPKParameters(3)>. | ||
193 | |||
194 | =head1 SEE ALSO | ||
195 | |||
196 | L<crypto(3)|crypto(3)>, L<EC_GROUP_new(3)|EC_GROUP_new(3)>, L<EC_GROUP_copy(3)|EC_GROUP_copy(3)>, | ||
197 | L<EC_POINT_new(3)|EC_POINT_new(3)>, L<EC_POINT_add(3)|EC_POINT_add(3)>, L<EC_KEY_new(3)|EC_KEY_new(3)>, | ||
198 | L<EC_GFp_simple_method(3)|EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)|d2i_ECPKParameters(3)> | ||
199 | |||
200 | |||
201 | =cut | ||
diff --git a/src/lib/libssl/src/doc/crypto/ecdsa.pod b/src/lib/libssl/src/doc/crypto/ecdsa.pod index f54966df33..b981d865e4 100644 --- a/src/lib/libssl/src/doc/crypto/ecdsa.pod +++ b/src/lib/libssl/src/doc/crypto/ecdsa.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | ecdsa - Elliptic Curve Digital Signature Algorithm | 5 | ECDSA_SIG_new, ECDSA_SIG_free, i2d_ECDSA_SIG, d2i_ECDSA_SIG, ECDSA_size, ECDSA_sign_setup, ECDSA_sign, ECDSA_sign_ex, ECDSA_verify, ECDSA_do_sign, ECDSA_do_sign_ex, ECDSA_do_verify - Elliptic Curve Digital Signature Algorithm |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
diff --git a/src/lib/libssl/src/doc/crypto/evp.pod b/src/lib/libssl/src/doc/crypto/evp.pod index 33ce7cb6d6..57c761d01f 100644 --- a/src/lib/libssl/src/doc/crypto/evp.pod +++ b/src/lib/libssl/src/doc/crypto/evp.pod | |||
@@ -13,22 +13,58 @@ evp - high-level cryptographic functions | |||
13 | The EVP library provides a high-level interface to cryptographic | 13 | The EVP library provides a high-level interface to cryptographic |
14 | functions. | 14 | functions. |
15 | 15 | ||
16 | B<EVP_Seal>I<...> and B<EVP_Open>I<...> provide public key encryption | 16 | L<B<EVP_Seal>I<...>|EVP_SealInit(3)> and L<B<EVP_Open>I<...>|EVP_OpenInit(3)> |
17 | and decryption to implement digital "envelopes". | 17 | provide public key encryption and decryption to implement digital "envelopes". |
18 | 18 | ||
19 | The B<EVP_Sign>I<...> and B<EVP_Verify>I<...> functions implement | 19 | The L<B<EVP_DigestSign>I<...>|EVP_DigestSignInit(3)> and |
20 | digital signatures. | 20 | L<B<EVP_DigestVerify>I<...>|EVP_DigestVerifyInit(3)> functions implement |
21 | digital signatures and Message Authentication Codes (MACs). Also see the older | ||
22 | L<B<EVP_Sign>I<...>|EVP_SignInit(3)> and L<B<EVP_Verify>I<...>|EVP_VerifyInit(3)> | ||
23 | functions. | ||
21 | 24 | ||
22 | Symmetric encryption is available with the B<EVP_Encrypt>I<...> | 25 | Symmetric encryption is available with the L<B<EVP_Encrypt>I<...>|EVP_EncryptInit(3)> |
23 | functions. The B<EVP_Digest>I<...> functions provide message digests. | 26 | functions. The L<B<EVP_Digest>I<...>|EVP_DigestInit(3)> functions provide message digests. |
24 | 27 | ||
25 | The B<EVP_PKEY>I<...> functions provide a high level interface to | 28 | The B<EVP_PKEY>I<...> functions provide a high level interface to |
26 | asymmetric algorithms. | 29 | asymmetric algorithms. To create a new EVP_PKEY see |
30 | L<EVP_PKEY_new(3)|EVP_PKEY_new(3)>. EVP_PKEYs can be associated | ||
31 | with a private key of a particular algorithm by using the functions | ||
32 | described on the L<EVP_PKEY_set1_RSA(3)|EVP_PKEY_set1_RSA(3)> page, or | ||
33 | new keys can be generated using L<EVP_PKEY_keygen(3)|EVP_PKEY_keygen(3)>. | ||
34 | EVP_PKEYs can be compared using L<EVP_PKEY_cmp(3)|EVP_PKEY_cmp(3)>, or printed using | ||
35 | L<EVP_PKEY_print_private(3)|EVP_PKEY_print_private(3)>. | ||
36 | |||
37 | The EVP_PKEY functions support the full range of asymmetric algorithm operations: | ||
38 | |||
39 | =over | ||
40 | |||
41 | =item For key agreement see L<EVP_PKEY_derive(3)|EVP_PKEY_derive(3)> | ||
42 | |||
43 | =item For signing and verifying see L<EVP_PKEY_sign(3)|EVP_PKEY_sign(3)>, | ||
44 | L<EVP_PKEY_verify(3)|EVP_PKEY_verify(3)> and L<EVP_PKEY_verify_recover(3)|EVP_PKEY_verify_recover(3)>. | ||
45 | However, note that | ||
46 | these functions do not perform a digest of the data to be signed. Therefore | ||
47 | normally you would use the L<B<EVP_DigestSign>I<...>|EVP_DigestSignInit(3)> | ||
48 | functions for this purpose. | ||
49 | |||
50 | =item For encryption and decryption see L<EVP_PKEY_encrypt(3)|EVP_PKEY_encrypt(3)> | ||
51 | and L<EVP_PKEY_decrypt(3)|EVP_PKEY_decrypt(3)> respectively. However, note that | ||
52 | these functions perform encryption and decryption only. As public key | ||
53 | encryption is an expensive operation, normally you would wrap | ||
54 | an encrypted message in a "digital envelope" using the L<B<EVP_Seal>I<...>|EVP_SealInit(3)> and | ||
55 | L<B<EVP_Open>I<...>|EVP_OpenInit(3)> functions. | ||
56 | |||
57 | =back | ||
58 | |||
59 | The L<EVP_BytesToKey(3)|EVP_BytesToKey(3)> function provides some limited support for password | ||
60 | based encryption. Careful selection of the parameters will provide a PKCS#5 PBKDF1 compatible | ||
61 | implementation. However, new applications should not typically use this (preferring, for example, | ||
62 | PBKDF2 from PCKS#5). | ||
27 | 63 | ||
28 | Algorithms are loaded with OpenSSL_add_all_algorithms(3). | 64 | Algorithms are loaded with L<OpenSSL_add_all_algorithms(3)|OpenSSL_add_all_algorithms(3)>. |
29 | 65 | ||
30 | All the symmetric algorithms (ciphers), digests and asymmetric algorithms | 66 | All the symmetric algorithms (ciphers), digests and asymmetric algorithms |
31 | (public key algorithms) can be replaced by ENGINE modules providing alternative | 67 | (public key algorithms) can be replaced by L<ENGINE|engine(3)> modules providing alternative |
32 | implementations. If ENGINE implementations of ciphers or digests are registered | 68 | implementations. If ENGINE implementations of ciphers or digests are registered |
33 | as defaults, then the various EVP functions will automatically use those | 69 | as defaults, then the various EVP functions will automatically use those |
34 | implementations automatically in preference to built in software | 70 | implementations automatically in preference to built in software |
@@ -47,8 +83,20 @@ L<EVP_DigestInit(3)|EVP_DigestInit(3)>, | |||
47 | L<EVP_EncryptInit(3)|EVP_EncryptInit(3)>, | 83 | L<EVP_EncryptInit(3)|EVP_EncryptInit(3)>, |
48 | L<EVP_OpenInit(3)|EVP_OpenInit(3)>, | 84 | L<EVP_OpenInit(3)|EVP_OpenInit(3)>, |
49 | L<EVP_SealInit(3)|EVP_SealInit(3)>, | 85 | L<EVP_SealInit(3)|EVP_SealInit(3)>, |
86 | L<EVP_DigestSignInit(3)|EVP_DigestSignInit(3)>, | ||
50 | L<EVP_SignInit(3)|EVP_SignInit(3)>, | 87 | L<EVP_SignInit(3)|EVP_SignInit(3)>, |
51 | L<EVP_VerifyInit(3)|EVP_VerifyInit(3)>, | 88 | L<EVP_VerifyInit(3)|EVP_VerifyInit(3)>, |
89 | L<EVP_PKEY_new(3)|EVP_PKEY_new(3)>, | ||
90 | L<EVP_PKEY_set1_RSA(3)|EVP_PKEY_set1_RSA(3)>, | ||
91 | L<EVP_PKEY_keygen(3)|EVP_PKEY_keygen(3)>, | ||
92 | L<EVP_PKEY_print_private(3)|EVP_PKEY_print_private(3)>, | ||
93 | L<EVP_PKEY_decrypt(3)|EVP_PKEY_decrypt(3)>, | ||
94 | L<EVP_PKEY_encrypt(3)|EVP_PKEY_encrypt(3)>, | ||
95 | L<EVP_PKEY_sign(3)|EVP_PKEY_sign(3)>, | ||
96 | L<EVP_PKEY_verify(3)|EVP_PKEY_verify(3)>, | ||
97 | L<EVP_PKEY_verify_recover(3)|EVP_PKEY_verify_recover(3)>, | ||
98 | L<EVP_PKEY_derive(3)|EVP_PKEY_derive(3)>, | ||
99 | L<EVP_BytesToKey(3)|EVP_BytesToKey(3)>, | ||
52 | L<OpenSSL_add_all_algorithms(3)|OpenSSL_add_all_algorithms(3)>, | 100 | L<OpenSSL_add_all_algorithms(3)|OpenSSL_add_all_algorithms(3)>, |
53 | L<engine(3)|engine(3)> | 101 | L<engine(3)|engine(3)> |
54 | 102 | ||
diff --git a/src/lib/libssl/src/doc/crypto/i2d_PKCS7_bio_stream.pod b/src/lib/libssl/src/doc/crypto/i2d_PKCS7_bio_stream.pod index dc4d884c59..a37231e267 100644 --- a/src/lib/libssl/src/doc/crypto/i2d_PKCS7_bio_stream.pod +++ b/src/lib/libssl/src/doc/crypto/i2d_PKCS7_bio_stream.pod | |||
@@ -23,7 +23,7 @@ streaming. | |||
23 | 23 | ||
24 | =head1 BUGS | 24 | =head1 BUGS |
25 | 25 | ||
26 | The prefix "d2i" is arguably wrong because the function outputs BER format. | 26 | The prefix "i2d" is arguably wrong because the function outputs BER format. |
27 | 27 | ||
28 | =head1 RETURN VALUES | 28 | =head1 RETURN VALUES |
29 | 29 | ||
diff --git a/src/lib/libssl/src/doc/ssl/SSL_CIPHER_get_name.pod b/src/lib/libssl/src/doc/ssl/SSL_CIPHER_get_name.pod index fbade905f3..3ed016ee2c 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_CIPHER_get_name.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_CIPHER_get_name.pod | |||
@@ -24,8 +24,12 @@ SSL_CIPHER_get_bits() returns the number of secret bits used for B<cipher>. If | |||
24 | B<alg_bits> is not NULL, it contains the number of bits processed by the | 24 | B<alg_bits> is not NULL, it contains the number of bits processed by the |
25 | chosen algorithm. If B<cipher> is NULL, 0 is returned. | 25 | chosen algorithm. If B<cipher> is NULL, 0 is returned. |
26 | 26 | ||
27 | SSL_CIPHER_get_version() returns the protocol version for B<cipher>, currently | 27 | SSL_CIPHER_get_version() returns string which indicates the SSL/TLS protocol |
28 | "SSLv2", "SSLv3", or "TLSv1". If B<cipher> is NULL, "(NONE)" is returned. | 28 | version that first defined the cipher. |
29 | This is currently B<SSLv2> or B<TLSv1/SSLv3>. | ||
30 | In some cases it should possibly return "TLSv1.2" but the function does not; | ||
31 | use SSL_CIPHER_description() instead. | ||
32 | If B<cipher> is NULL, "(NONE)" is returned. | ||
29 | 33 | ||
30 | SSL_CIPHER_description() returns a textual description of the cipher used | 34 | SSL_CIPHER_description() returns a textual description of the cipher used |
31 | into the buffer B<buf> of length B<len> provided. | 35 | into the buffer B<buf> of length B<len> provided. |
@@ -53,7 +57,8 @@ Textual representation of the cipher name. | |||
53 | 57 | ||
54 | =item <protocol version> | 58 | =item <protocol version> |
55 | 59 | ||
56 | Protocol version: B<SSLv2>, B<SSLv3>. The TLSv1 ciphers are flagged with SSLv3. | 60 | Protocol version: B<SSLv2>, B<SSLv3>, B<TLSv1.2>. The TLSv1.0 ciphers are |
61 | flagged with SSLv3. No new ciphers were added by TLSv1.1. | ||
57 | 62 | ||
58 | =item Kx=<key exchange> | 63 | =item Kx=<key exchange> |
59 | 64 | ||
@@ -92,6 +97,10 @@ Some examples for the output of SSL_CIPHER_description(): | |||
92 | RC4-MD5 SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=MD5 | 97 | RC4-MD5 SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=MD5 |
93 | EXP-RC4-MD5 SSLv3 Kx=RSA(512) Au=RSA Enc=RC4(40) Mac=MD5 export | 98 | EXP-RC4-MD5 SSLv3 Kx=RSA(512) Au=RSA Enc=RC4(40) Mac=MD5 export |
94 | 99 | ||
100 | A complete list can be retrieved by invoking the following command: | ||
101 | |||
102 | openssl ciphers -v ALL | ||
103 | |||
95 | =head1 BUGS | 104 | =head1 BUGS |
96 | 105 | ||
97 | If SSL_CIPHER_description() is called with B<cipher> being NULL, the | 106 | If SSL_CIPHER_description() is called with B<cipher> being NULL, the |
diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_add_extra_chain_cert.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_add_extra_chain_cert.pod index ee28f5ccc3..df5441caec 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_CTX_add_extra_chain_cert.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_add_extra_chain_cert.pod | |||
@@ -24,6 +24,10 @@ the library will try to complete the chain from the available CA | |||
24 | certificates in the trusted CA storage, see | 24 | certificates in the trusted CA storage, see |
25 | L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)>. | 25 | L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)>. |
26 | 26 | ||
27 | The B<x509> certificate provided to SSL_CTX_add_extra_chain_cert() will be | ||
28 | freed by the library when the B<SSL_CTX> is destroyed. An application B<should | ||
29 | not> free the B<x509> object. | ||
30 | |||
27 | =head1 RETURN VALUES | 31 | =head1 RETURN VALUES |
28 | 32 | ||
29 | SSL_CTX_add_extra_chain_cert() returns 1 on success. Check out the | 33 | SSL_CTX_add_extra_chain_cert() returns 1 on success. Check out the |
diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_add_session.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_add_session.pod index c9e0fabb98..7f1a1d5ee6 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_CTX_add_session.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_add_session.pod | |||
@@ -42,7 +42,7 @@ If a server SSL_CTX is configured with the SSL_SESS_CACHE_NO_INTERNAL_STORE | |||
42 | flag then the internal cache will not be populated automatically by new | 42 | flag then the internal cache will not be populated automatically by new |
43 | sessions negotiated by the SSL/TLS implementation, even though the internal | 43 | sessions negotiated by the SSL/TLS implementation, even though the internal |
44 | cache will be searched automatically for session-resume requests (the | 44 | cache will be searched automatically for session-resume requests (the |
45 | latter can be surpressed by SSL_SESS_CACHE_NO_INTERNAL_LOOKUP). So the | 45 | latter can be suppressed by SSL_SESS_CACHE_NO_INTERNAL_LOOKUP). So the |
46 | application can use SSL_CTX_add_session() directly to have full control | 46 | application can use SSL_CTX_add_session() directly to have full control |
47 | over the sessions that can be resumed if desired. | 47 | over the sessions that can be resumed if desired. |
48 | 48 | ||
diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_new.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_new.pod index d35306812e..023be38c0a 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_CTX_new.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_new.pod | |||
@@ -2,8 +2,10 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | SSL_CTX_new - create a new SSL_CTX object as framework for TLS/SSL enabled | 5 | SSL_CTX_new, SSLv3_method, SSLv3_server_method, SSLv3_client_method, |
6 | functions | 6 | TLSv1_method, TLSv1_server_method, TLSv1_client_method, |
7 | TLSv1_1_method, TLSv1_1_server_method, TLSv1_1_client_method, SSLv23_method, | ||
8 | SSLv23_server_method, SSLv23_client_method - create a new SSL_CTX object as framework for TLS/SSL enabled functions | ||
7 | 9 | ||
8 | =head1 SYNOPSIS | 10 | =head1 SYNOPSIS |
9 | 11 | ||
@@ -24,13 +26,6 @@ client only type. B<method> can be of the following types: | |||
24 | 26 | ||
25 | =over 4 | 27 | =over 4 |
26 | 28 | ||
27 | =item SSLv2_method(void), SSLv2_server_method(void), SSLv2_client_method(void) | ||
28 | |||
29 | A TLS/SSL connection established with these methods will only understand | ||
30 | the SSLv2 protocol. A client will send out SSLv2 client hello messages | ||
31 | and will also indicate that it only understand SSLv2. A server will only | ||
32 | understand SSLv2 client hello messages. | ||
33 | |||
34 | =item SSLv3_method(void), SSLv3_server_method(void), SSLv3_client_method(void) | 29 | =item SSLv3_method(void), SSLv3_server_method(void), SSLv3_client_method(void) |
35 | 30 | ||
36 | A TLS/SSL connection established with these methods will only understand the | 31 | A TLS/SSL connection established with these methods will only understand the |
@@ -52,22 +47,25 @@ SSLv3 client hello messages. | |||
52 | 47 | ||
53 | =item SSLv23_method(void), SSLv23_server_method(void), SSLv23_client_method(void) | 48 | =item SSLv23_method(void), SSLv23_server_method(void), SSLv23_client_method(void) |
54 | 49 | ||
55 | A TLS/SSL connection established with these methods will understand the SSLv2, | 50 | A TLS/SSL connection established with these methods may understand the |
56 | SSLv3, and TLSv1 protocol. A client will send out SSLv2 client hello messages | 51 | SSLv3, TLSv1, TLSv1.1 and TLSv1.2 protocols. |
57 | and will indicate that it also understands SSLv3 and TLSv1. A server will | 52 | |
58 | understand SSLv2, SSLv3, and TLSv1 client hello messages. This is the best | 53 | A client will send out TLSv1 client hello messages including extensions and |
59 | choice when compatibility is a concern. | 54 | will indicate that it also understands TLSv1.1, TLSv1.2 and permits a |
55 | fallback to SSLv3. A server will support SSLv3, TLSv1, TLSv1.1 and TLSv1.2 | ||
56 | protocols. This is the best choice when compatibility is a concern. | ||
60 | 57 | ||
61 | =back | 58 | =back |
62 | 59 | ||
63 | The list of protocols available can later be limited using the SSL_OP_NO_SSLv2, | 60 | The list of protocols available can later be limited using the |
64 | SSL_OP_NO_SSLv3, SSL_OP_NO_TLSv1 options of the B<SSL_CTX_set_options()> or | 61 | SSL_OP_NO_SSLv3, SSL_OP_NO_TLSv1, SSL_OP_NO_TLSv1_1 and SSL_OP_NO_TLSv1_2 |
65 | B<SSL_set_options()> functions. Using these options it is possible to choose | 62 | options of the SSL_CTX_set_options() or SSL_set_options() functions. |
66 | e.g. SSLv23_server_method() and be able to negotiate with all possible | 63 | Using these options it is possible to choose e.g. SSLv23_server_method() and |
67 | clients, but to only allow newer protocols like SSLv3 or TLSv1. | 64 | be able to negotiate with all possible clients, but to only allow newer |
65 | protocols like TLSv1, TLSv1.1 or TLS v1.2. | ||
68 | 66 | ||
69 | SSL_CTX_new() initializes the list of ciphers, the session cache setting, | 67 | SSL_CTX_new() initializes the list of ciphers, the session cache setting, |
70 | the callbacks, the keys and certificates, and the options to its default | 68 | the callbacks, the keys and certificates and the options to its default |
71 | values. | 69 | values. |
72 | 70 | ||
73 | =head1 RETURN VALUES | 71 | =head1 RETURN VALUES |
diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_client_CA_list.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_client_CA_list.pod index a68fbd09ee..d1758a7d20 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_client_CA_list.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_client_CA_list.pod | |||
@@ -35,7 +35,7 @@ the chosen B<ssl>, overriding the setting valid for B<ssl>'s SSL_CTX object. | |||
35 | =head1 NOTES | 35 | =head1 NOTES |
36 | 36 | ||
37 | When a TLS/SSL server requests a client certificate (see | 37 | When a TLS/SSL server requests a client certificate (see |
38 | B<SSL_CTX_set_verify_options()>), it sends a list of CAs, for which | 38 | B<SSL_CTX_set_verify(3)>), it sends a list of CAs, for which |
39 | it will accept certificates, to the client. | 39 | it will accept certificates, to the client. |
40 | 40 | ||
41 | This list must explicitly be set using SSL_CTX_set_client_CA_list() for | 41 | This list must explicitly be set using SSL_CTX_set_client_CA_list() for |
diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_client_cert_cb.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_client_cert_cb.pod index da2bf7bbcc..0462bbebac 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_client_cert_cb.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_client_cert_cb.pod | |||
@@ -1,4 +1,4 @@ | |||
1 | =pod | 1 | 3=pod |
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
@@ -30,7 +30,7 @@ using the B<x509> and B<pkey> arguments and "1" must be returned. The | |||
30 | certificate will be installed into B<ssl>, see the NOTES and BUGS sections. | 30 | certificate will be installed into B<ssl>, see the NOTES and BUGS sections. |
31 | If no certificate should be set, "0" has to be returned and no certificate | 31 | If no certificate should be set, "0" has to be returned and no certificate |
32 | will be sent. A negative return value will suspend the handshake and the | 32 | will be sent. A negative return value will suspend the handshake and the |
33 | handshake function will return immediatly. L<SSL_get_error(3)|SSL_get_error(3)> | 33 | handshake function will return immediately. L<SSL_get_error(3)|SSL_get_error(3)> |
34 | will return SSL_ERROR_WANT_X509_LOOKUP to indicate, that the handshake was | 34 | will return SSL_ERROR_WANT_X509_LOOKUP to indicate, that the handshake was |
35 | suspended. The next call to the handshake function will again lead to the call | 35 | suspended. The next call to the handshake function will again lead to the call |
36 | of client_cert_cb(). It is the job of the client_cert_cb() to store information | 36 | of client_cert_cb(). It is the job of the client_cert_cb() to store information |
diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_info_callback.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_info_callback.pod index 108a1748c1..f7923dedc1 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_info_callback.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_info_callback.pod | |||
@@ -21,7 +21,7 @@ SSL_CTX_set_info_callback() sets the B<callback> function, that can be used to | |||
21 | obtain state information for SSL objects created from B<ctx> during connection | 21 | obtain state information for SSL objects created from B<ctx> during connection |
22 | setup and use. The setting for B<ctx> is overridden from the setting for | 22 | setup and use. The setting for B<ctx> is overridden from the setting for |
23 | a specific SSL object, if specified. | 23 | a specific SSL object, if specified. |
24 | When B<callback> is NULL, not callback function is used. | 24 | When B<callback> is NULL, no callback function is used. |
25 | 25 | ||
26 | SSL_set_info_callback() sets the B<callback> function, that can be used to | 26 | SSL_set_info_callback() sets the B<callback> function, that can be used to |
27 | obtain state information for B<ssl> during connection setup and use. | 27 | obtain state information for B<ssl> during connection setup and use. |
diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_msg_callback.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_msg_callback.pod index b8d72fffaf..89a33e8750 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_msg_callback.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_msg_callback.pod | |||
@@ -12,8 +12,8 @@ SSL_get_msg_callback_arg - install callback for observing protocol messages | |||
12 | void SSL_CTX_set_msg_callback(SSL_CTX *ctx, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg)); | 12 | void SSL_CTX_set_msg_callback(SSL_CTX *ctx, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg)); |
13 | void SSL_CTX_set_msg_callback_arg(SSL_CTX *ctx, void *arg); | 13 | void SSL_CTX_set_msg_callback_arg(SSL_CTX *ctx, void *arg); |
14 | 14 | ||
15 | void SSL_set_msg_callback(SSL_CTX *ctx, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg)); | 15 | void SSL_set_msg_callback(SSL *ssl, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg)); |
16 | void SSL_set_msg_callback_arg(SSL_CTX *ctx, void *arg); | 16 | void SSL_set_msg_callback_arg(SSL *ssl, void *arg); |
17 | 17 | ||
18 | =head1 DESCRIPTION | 18 | =head1 DESCRIPTION |
19 | 19 | ||
diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_options.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_options.pod index 77e0e6074c..74f8b5d932 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_options.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_options.pod | |||
@@ -46,7 +46,7 @@ secure renegotiation. | |||
46 | =head1 NOTES | 46 | =head1 NOTES |
47 | 47 | ||
48 | The behaviour of the SSL library can be changed by setting several options. | 48 | The behaviour of the SSL library can be changed by setting several options. |
49 | The options are coded as bitmasks and can be combined by a logical B<or> | 49 | The options are coded as bitmasks and can be combined by a bitwise B<or> |
50 | operation (|). | 50 | operation (|). |
51 | 51 | ||
52 | SSL_CTX_set_options() and SSL_set_options() affect the (external) | 52 | SSL_CTX_set_options() and SSL_set_options() affect the (external) |
@@ -255,7 +255,7 @@ Connections and renegotiation are always permitted by OpenSSL implementations. | |||
255 | 255 | ||
256 | =head2 Unpatched client and patched OpenSSL server | 256 | =head2 Unpatched client and patched OpenSSL server |
257 | 257 | ||
258 | The initial connection suceeds but client renegotiation is denied by the | 258 | The initial connection succeeds but client renegotiation is denied by the |
259 | server with a B<no_renegotiation> warning alert if TLS v1.0 is used or a fatal | 259 | server with a B<no_renegotiation> warning alert if TLS v1.0 is used or a fatal |
260 | B<handshake_failure> alert in SSL v3.0. | 260 | B<handshake_failure> alert in SSL v3.0. |
261 | 261 | ||
diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_tmp_dh_callback.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_tmp_dh_callback.pod index e31c628fa8..0fda967814 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_tmp_dh_callback.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_tmp_dh_callback.pod | |||
@@ -13,12 +13,10 @@ SSL_set_tmp_dh - handle DH keys for ephemeral key exchange | |||
13 | DH *(*tmp_dh_callback)(SSL *ssl, int is_export, int keylength)); | 13 | DH *(*tmp_dh_callback)(SSL *ssl, int is_export, int keylength)); |
14 | long SSL_CTX_set_tmp_dh(SSL_CTX *ctx, DH *dh); | 14 | long SSL_CTX_set_tmp_dh(SSL_CTX *ctx, DH *dh); |
15 | 15 | ||
16 | void SSL_set_tmp_dh_callback(SSL_CTX *ctx, | 16 | void SSL_set_tmp_dh_callback(SSL *ssl, |
17 | DH *(*tmp_dh_callback)(SSL *ssl, int is_export, int keylength)); | 17 | DH *(*tmp_dh_callback)(SSL *ssl, int is_export, int keylength)); |
18 | long SSL_set_tmp_dh(SSL *ssl, DH *dh) | 18 | long SSL_set_tmp_dh(SSL *ssl, DH *dh) |
19 | 19 | ||
20 | DH *(*tmp_dh_callback)(SSL *ssl, int is_export, int keylength)); | ||
21 | |||
22 | =head1 DESCRIPTION | 20 | =head1 DESCRIPTION |
23 | 21 | ||
24 | SSL_CTX_set_tmp_dh_callback() sets the callback function for B<ctx> to be | 22 | SSL_CTX_set_tmp_dh_callback() sets the callback function for B<ctx> to be |
@@ -82,7 +80,7 @@ instead (see L<dhparam(1)|dhparam(1)>), but in this case SSL_OP_SINGLE_DH_USE | |||
82 | is mandatory. | 80 | is mandatory. |
83 | 81 | ||
84 | Application authors may compile in DH parameters. Files dh512.pem, | 82 | Application authors may compile in DH parameters. Files dh512.pem, |
85 | dh1024.pem, dh2048.pem, and dh4096 in the 'apps' directory of current | 83 | dh1024.pem, dh2048.pem, and dh4096.pem in the 'apps' directory of current |
86 | version of the OpenSSL distribution contain the 'SKIP' DH parameters, | 84 | version of the OpenSSL distribution contain the 'SKIP' DH parameters, |
87 | which use safe primes and were generated verifiably pseudo-randomly. | 85 | which use safe primes and were generated verifiably pseudo-randomly. |
88 | These files can be converted into C code using the B<-C> option of the | 86 | These files can be converted into C code using the B<-C> option of the |
diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_verify.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_verify.pod index 05df3d974f..0af8e69441 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_verify.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_verify.pod | |||
@@ -110,8 +110,8 @@ certificates would not be present, most likely a | |||
110 | X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY will be issued. | 110 | X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY will be issued. |
111 | The depth count is "level 0:peer certificate", "level 1: CA certificate", | 111 | The depth count is "level 0:peer certificate", "level 1: CA certificate", |
112 | "level 2: higher level CA certificate", and so on. Setting the maximum | 112 | "level 2: higher level CA certificate", and so on. Setting the maximum |
113 | depth to 2 allows the levels 0, 1, and 2. The default depth limit is 9, | 113 | depth to 2 allows the levels 0, 1, and 2. The default depth limit is 100, |
114 | allowing for the peer certificate and additional 9 CA certificates. | 114 | allowing for the peer certificate and additional 100 CA certificates. |
115 | 115 | ||
116 | The B<verify_callback> function is used to control the behaviour when the | 116 | The B<verify_callback> function is used to control the behaviour when the |
117 | SSL_VERIFY_PEER flag is set. It must be supplied by the application and | 117 | SSL_VERIFY_PEER flag is set. It must be supplied by the application and |
diff --git a/src/lib/libssl/src/doc/ssl/SSL_get_fd.pod b/src/lib/libssl/src/doc/ssl/SSL_get_fd.pod index 89260b522c..19e52d68d0 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_get_fd.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_get_fd.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | SSL_get_fd - get file descriptor linked to an SSL object | 5 | SSL_get_fd, SSL_get_rfd, SSL_get_wfd - get file descriptor linked to an SSL object |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
diff --git a/src/lib/libssl/src/doc/ssl/SSL_get_peer_cert_chain.pod b/src/lib/libssl/src/doc/ssl/SSL_get_peer_cert_chain.pod index 49fb88f86f..059376c76b 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_get_peer_cert_chain.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_get_peer_cert_chain.pod | |||
@@ -8,11 +8,11 @@ SSL_get_peer_cert_chain - get the X509 certificate chain of the peer | |||
8 | 8 | ||
9 | #include <openssl/ssl.h> | 9 | #include <openssl/ssl.h> |
10 | 10 | ||
11 | STACKOF(X509) *SSL_get_peer_cert_chain(const SSL *ssl); | 11 | STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *ssl); |
12 | 12 | ||
13 | =head1 DESCRIPTION | 13 | =head1 DESCRIPTION |
14 | 14 | ||
15 | SSL_get_peer_cert_chain() returns a pointer to STACKOF(X509) certificates | 15 | SSL_get_peer_cert_chain() returns a pointer to STACK_OF(X509) certificates |
16 | forming the certificate chain of the peer. If called on the client side, | 16 | forming the certificate chain of the peer. If called on the client side, |
17 | the stack also contains the peer's certificate; if called on the server | 17 | the stack also contains the peer's certificate; if called on the server |
18 | side, the peer's certificate must be obtained separately using | 18 | side, the peer's certificate must be obtained separately using |
@@ -24,7 +24,7 @@ If the peer did not present a certificate, NULL is returned. | |||
24 | The peer certificate chain is not necessarily available after reusing | 24 | The peer certificate chain is not necessarily available after reusing |
25 | a session, in which case a NULL pointer is returned. | 25 | a session, in which case a NULL pointer is returned. |
26 | 26 | ||
27 | The reference count of the STACKOF(X509) object is not incremented. | 27 | The reference count of the STACK_OF(X509) object is not incremented. |
28 | If the corresponding session is freed, the pointer must not be used | 28 | If the corresponding session is freed, the pointer must not be used |
29 | any longer. | 29 | any longer. |
30 | 30 | ||
@@ -39,7 +39,7 @@ The following return values can occur: | |||
39 | No certificate was presented by the peer or no connection was established | 39 | No certificate was presented by the peer or no connection was established |
40 | or the certificate chain is no longer available when a session is reused. | 40 | or the certificate chain is no longer available when a session is reused. |
41 | 41 | ||
42 | =item Pointer to a STACKOF(X509) | 42 | =item Pointer to a STACK_OF(X509) |
43 | 43 | ||
44 | The return value points to the certificate chain presented by the peer. | 44 | The return value points to the certificate chain presented by the peer. |
45 | 45 | ||
diff --git a/src/lib/libssl/src/doc/ssl/SSL_get_rbio.pod b/src/lib/libssl/src/doc/ssl/SSL_get_rbio.pod index 3d98233cac..08dea6a6cd 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_get_rbio.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_get_rbio.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | SSL_get_rbio - get BIO linked to an SSL object | 5 | SSL_get_rbio, SSL_get_wbio - get BIO linked to an SSL object |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
diff --git a/src/lib/libssl/src/doc/ssl/SSL_get_session.pod b/src/lib/libssl/src/doc/ssl/SSL_get_session.pod index 0c41caa922..1a30f7bb5f 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_get_session.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_get_session.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | SSL_get_session - retrieve TLS/SSL session data | 5 | SSL_get_session, SSL_get0_session, SSL_get1_session - retrieve TLS/SSL session data |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
diff --git a/src/lib/libssl/src/doc/ssl/SSL_get_version.pod b/src/lib/libssl/src/doc/ssl/SSL_get_version.pod index cc271db2c5..9ae6f25508 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_get_version.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_get_version.pod | |||
@@ -12,12 +12,12 @@ SSL_get_version - get the protocol version of a connection. | |||
12 | 12 | ||
13 | =head1 DESCRIPTION | 13 | =head1 DESCRIPTION |
14 | 14 | ||
15 | SSL_get_cipher_version() returns the name of the protocol used for the | 15 | SSL_get_version() returns the name of the protocol used for the |
16 | connection B<ssl>. | 16 | connection B<ssl>. |
17 | 17 | ||
18 | =head1 RETURN VALUES | 18 | =head1 RETURN VALUES |
19 | 19 | ||
20 | The following strings can occur: | 20 | The following strings can be returned: |
21 | 21 | ||
22 | =over 4 | 22 | =over 4 |
23 | 23 | ||
@@ -31,7 +31,15 @@ The connection uses the SSLv3 protocol. | |||
31 | 31 | ||
32 | =item TLSv1 | 32 | =item TLSv1 |
33 | 33 | ||
34 | The connection uses the TLSv1 protocol. | 34 | The connection uses the TLSv1.0 protocol. |
35 | |||
36 | =item TLSv1.1 | ||
37 | |||
38 | The connection uses the TLSv1.1 protocol. | ||
39 | |||
40 | =item TLSv1.2 | ||
41 | |||
42 | The connection uses the TLSv1.2 protocol. | ||
35 | 43 | ||
36 | =item unknown | 44 | =item unknown |
37 | 45 | ||
diff --git a/src/lib/libssl/src/doc/ssl/SSL_set_fd.pod b/src/lib/libssl/src/doc/ssl/SSL_set_fd.pod index 59e1b2bb20..7f270c9fbc 100644 --- a/src/lib/libssl/src/doc/ssl/SSL_set_fd.pod +++ b/src/lib/libssl/src/doc/ssl/SSL_set_fd.pod | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | SSL_set_fd - connect the SSL object with a file descriptor | 5 | SSL_set_fd, SSL_set_rfd, SSL_set_wfd - connect the SSL object with a file descriptor |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
diff --git a/src/lib/libssl/src/doc/ssl/d2i_SSL_SESSION.pod b/src/lib/libssl/src/doc/ssl/d2i_SSL_SESSION.pod index 4a6fb12821..d817f72b54 100644 --- a/src/lib/libssl/src/doc/ssl/d2i_SSL_SESSION.pod +++ b/src/lib/libssl/src/doc/ssl/d2i_SSL_SESSION.pod | |||
@@ -49,6 +49,19 @@ known limit on the size of the created ASN1 representation, so the necessary | |||
49 | amount of space should be obtained by first calling i2d_SSL_SESSION() with | 49 | amount of space should be obtained by first calling i2d_SSL_SESSION() with |
50 | B<pp=NULL>, and obtain the size needed, then allocate the memory and | 50 | B<pp=NULL>, and obtain the size needed, then allocate the memory and |
51 | call i2d_SSL_SESSION() again. | 51 | call i2d_SSL_SESSION() again. |
52 | Note that this will advance the value contained in B<*pp> so it is necessary | ||
53 | to save a copy of the original allocation. | ||
54 | For example: | ||
55 | int i, j; | ||
56 | char *p, *temp; | ||
57 | |||
58 | i = i2d_SSL_SESSION(sess, NULL); | ||
59 | p = temp = malloc(i); | ||
60 | if (temp != NULL) { | ||
61 | j = i2d_SSL_SESSION(sess, &temp); | ||
62 | assert(i == j); | ||
63 | assert(p + i == temp); | ||
64 | } | ||
52 | 65 | ||
53 | =head1 RETURN VALUES | 66 | =head1 RETURN VALUES |
54 | 67 | ||