Update pre9
This commit is contained in:
@@ -72,6 +72,11 @@ B<BN_GENCB_call(cb, 1, j)> is called as described below.
|
||||
|
||||
When a prime has been found, B<BN_GENCB_call(cb, 2, i)> is called.
|
||||
|
||||
=item *
|
||||
|
||||
The callers of BN_generate_prime_ex() may call B<BN_GENCB_call(cb, i, j)> with
|
||||
other values as described in their respective man pages; see L</SEE ALSO>.
|
||||
|
||||
=back
|
||||
|
||||
The prime may have to fulfill additional requirements for use in
|
||||
@@ -101,7 +106,17 @@ If B<do_trial_division == 0>, this test is skipped.
|
||||
Both BN_is_prime_ex() and BN_is_prime_fasttest_ex() perform a Miller-Rabin
|
||||
probabilistic primality test with B<nchecks> iterations. If
|
||||
B<nchecks == BN_prime_checks>, a number of iterations is used that
|
||||
yields a false positive rate of at most 2^-80 for random input.
|
||||
yields a false positive rate of at most 2^-64 for random input.
|
||||
The error rate depends on the size of the prime and goes down for bigger primes.
|
||||
The rate is 2^-80 starting at 308 bits, 2^-112 at 852 bits, 2^-128 at 1080 bits,
|
||||
2^-192 at 3747 bits and 2^-256 at 6394 bits.
|
||||
|
||||
When the source of the prime is not random or not trusted, the number
|
||||
of checks needs to be much higher to reach the same level of assurance:
|
||||
It should equal half of the targeted security level in bits (rounded up to the
|
||||
next integer if necessary).
|
||||
For instance, to reach the 128 bit security level, B<nchecks> should be set to
|
||||
64.
|
||||
|
||||
If B<cb> is not B<NULL>, B<BN_GENCB_call(cb, 1, j)> is called
|
||||
after the j-th iteration (j = 0, 1, ...). B<ctx> is a
|
||||
@@ -177,7 +192,8 @@ Instead applications should create a BN_GENCB structure using BN_GENCB_new:
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<ERR_get_error(3)>, L<RAND_bytes(3)>
|
||||
L<DH_generate_parameters(3)>, L<DSA_generate_parameters(3)>,
|
||||
L<RSA_generate_key(3)>, L<ERR_get_error(3)>, L<RAND_bytes(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
|
||||
+33
-15
@@ -2,12 +2,22 @@
|
||||
|
||||
=head1 NAME
|
||||
|
||||
EC_GROUP_get_ecparameters, EC_GROUP_get_ecpkparameters,
|
||||
EC_GROUP_new, EC_GROUP_new_from_ecparameters,
|
||||
EC_GROUP_get_ecparameters,
|
||||
EC_GROUP_get_ecpkparameters,
|
||||
EC_GROUP_new,
|
||||
EC_GROUP_new_from_ecparameters,
|
||||
EC_GROUP_new_from_ecpkparameters,
|
||||
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_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,
|
||||
EC_GROUP_get_curve,
|
||||
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 EC_GROUP
|
||||
objects
|
||||
|
||||
@@ -27,6 +37,10 @@ objects
|
||||
const BIGNUM *b, BN_CTX *ctx);
|
||||
EC_GROUP *EC_GROUP_new_by_curve_name(int nid);
|
||||
|
||||
int EC_GROUP_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *ctx);
|
||||
int EC_GROUP_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b,
|
||||
BN_CTX *ctx);
|
||||
int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
|
||||
int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p,
|
||||
@@ -58,22 +72,26 @@ Operations in a binary field are performed relative to an B<irreducible polynomi
|
||||
use a trinomial or a pentanomial for this parameter.
|
||||
|
||||
A new curve can be constructed by calling EC_GROUP_new, using the implementation provided by B<meth> (see
|
||||
L<EC_GFp_simple_method(3)>). It is then necessary to call either EC_GROUP_set_curve_GFp or
|
||||
EC_GROUP_set_curve_GF2m as appropriate to create a curve defined over Fp or over F2^m respectively.
|
||||
L<EC_GFp_simple_method(3)>). It is then necessary to call EC_GROUP_set_curve() to set the curve parameters.
|
||||
EC_GROUP_new_from_ecparameters() will create a group from the
|
||||
specified B<params> and
|
||||
EC_GROUP_new_from_ecpkparameters() will create a group from the specific PK B<params>.
|
||||
|
||||
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>.
|
||||
EC_group_get_curve_GFp obtains the previously set curve parameters.
|
||||
EC_GROUP_set_curve() sets the curve parameters B<p>, B<a> and B<b>. For a curve over Fp B<b>
|
||||
is the prime for the field. For a curve over F2^m B<p> represents the irreducible polynomial - each bit
|
||||
represents a term in the polynomial. Therefore there will either be three or five bits set dependent on whether
|
||||
the polynomial is a trinomial or a pentanomial.
|
||||
|
||||
EC_GROUP_set_curve_GF2m sets the equivalent curve parameters for a curve over F2^m. In this case B<p> represents
|
||||
the irreducible polynomial - each bit represents a term in the polynomial. Therefore there will either be three
|
||||
or five bits set dependent on whether the polynomial is a trinomial or a pentanomial.
|
||||
EC_group_get_curve_GF2m obtains the previously set curve parameters.
|
||||
EC_group_get_curve() obtains the previously set curve parameters.
|
||||
|
||||
The functions EC_GROUP_new_curve_GFp and EC_GROUP_new_curve_GF2m are shortcuts for calling EC_GROUP_new and the
|
||||
appropriate EC_group_set_curve function. An appropriate default implementation method will be used.
|
||||
EC_GROUP_set_curve_GFp() and EC_GROUP_set_curve_GF2m() are synonyms for EC_GROUP_set_curve(). They are defined for
|
||||
backwards compatibility only and should not be used.
|
||||
|
||||
EC_GROUP_get_curve_GFp() and EC_GROUP_get_curve_GF2m() are synonyms for EC_GROUP_get_curve(). They are defined for
|
||||
backwards compatibility only and should not be used.
|
||||
|
||||
The functions EC_GROUP_new_curve_GFp and EC_GROUP_new_curve_GF2m are shortcuts for calling EC_GROUP_new and then the
|
||||
EC_GROUP_set_curve function. An appropriate default implementation method will be used.
|
||||
|
||||
Whilst the library can be used to create any curve using the functions described above, there are also a number of
|
||||
predefined curves that are available. In order to obtain a list of all of the predefined curves, call the function
|
||||
|
||||
+49
-15
@@ -2,16 +2,30 @@
|
||||
|
||||
=head1 NAME
|
||||
|
||||
EC_POINT_set_Jprojective_coordinates_GFp, EC_POINT_point2buf,
|
||||
EC_POINT_new, EC_POINT_free, EC_POINT_clear_free,
|
||||
EC_POINT_copy, EC_POINT_dup, EC_POINT_method_of,
|
||||
EC_POINT_set_Jprojective_coordinates_GFp,
|
||||
EC_POINT_point2buf,
|
||||
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_get_Jprojective_coordinates_GFp,
|
||||
EC_POINT_set_affine_coordinates,
|
||||
EC_POINT_get_affine_coordinates,
|
||||
EC_POINT_set_compressed_coordinates,
|
||||
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_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 EC_POINT objects
|
||||
|
||||
@@ -34,6 +48,14 @@ EC_POINT_hex2point
|
||||
const EC_POINT *p,
|
||||
BIGNUM *x, BIGNUM *y, BIGNUM *z,
|
||||
BN_CTX *ctx);
|
||||
int EC_POINT_set_affine_coordinates(const EC_GROUP *group, EC_POINT *p,
|
||||
const BIGNUM *x, const BIGNUM *y,
|
||||
BN_CTX *ctx);
|
||||
int EC_POINT_get_affine_coordinates(const EC_GROUP *group, const EC_POINT *p,
|
||||
BIGNUM *x, BIGNUM *y, BN_CTX *ctx);
|
||||
int EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *p,
|
||||
const BIGNUM *x, int y_bit,
|
||||
BN_CTX *ctx);
|
||||
int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p,
|
||||
const BIGNUM *x, const BIGNUM *y,
|
||||
BN_CTX *ctx);
|
||||
@@ -97,12 +119,20 @@ 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().
|
||||
|
||||
The affine co-ordinates for a point describe a point in terms of its x and y
|
||||
position. The functions 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 B<p> defined over the curve given in B<group>. The functions
|
||||
EC_POINT_get_affine_coordinates_GFp() and
|
||||
EC_POINT_get_affine_coordinates_GF2m() set B<x> and B<y>, either of which may
|
||||
be NULL, to the corresponding coordinates of B<p>.
|
||||
position. The function EC_POINT_set_affine_coordinates() sets the B<x> and B<y>
|
||||
co-ordinates for the point B<p> defined over the curve given in B<group>. The
|
||||
function EC_POINT_get_affine_coordinates() sets B<x> and B<y>, either of which
|
||||
may be NULL, to the corresponding coordinates of B<p>.
|
||||
|
||||
The functions EC_POINT_set_affine_coordinates_GFp() and
|
||||
EC_POINT_set_affine_coordinates_GF2m() are synonyms for
|
||||
EC_POINT_set_affine_coordinates(). They are defined for backwards compatibility
|
||||
only and should not be used.
|
||||
|
||||
The functions EC_POINT_get_affine_coordinates_GFp() and
|
||||
EC_POINT_get_affine_coordinates_GF2m() are synonyms for
|
||||
EC_POINT_get_affine_coordinates(). They are defined for backwards compatibility
|
||||
only and should not be used.
|
||||
|
||||
As well as the affine co-ordinates, a point can alternatively be described in
|
||||
terms of its Jacobian projective co-ordinates (for Fp curves only). Jacobian
|
||||
@@ -119,11 +149,15 @@ EC_POINT_get_Jprojective_coordinates_GFp() respectively.
|
||||
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 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() and
|
||||
EC_POINT_set_compressed_coordinates_GF2m() functions where B<x> is the x
|
||||
using the EC_POINT_set_compressed_coordinates() function where B<x> is the x
|
||||
co-ordinate and B<y_bit> is a value 0 or 1 to identify which of the two
|
||||
possible values for y should be used.
|
||||
|
||||
The functions EC_POINT_set_compressed_coordinates_GFp() and
|
||||
EC_POINT_set_compressed_coordinates_GF2m() are synonyms for
|
||||
EC_POINT_set_compressed_coordinates(). They are defined for backwards
|
||||
compatibility only and should not be used.
|
||||
|
||||
In addition B<EC_POINT> can be converted to and from various external
|
||||
representations. The octet form is the binary encoding of the B<ECPoint>
|
||||
structure (as defined in RFC5480 and used in certificates and TLS records):
|
||||
|
||||
@@ -14,9 +14,9 @@ SSL_get_state
|
||||
|
||||
#include <openssl/ssl.h>
|
||||
|
||||
int SSL_in_init(SSL *s);
|
||||
int SSL_in_before(SSL *s);
|
||||
int SSL_is_init_finished(SSL *s);
|
||||
int SSL_in_init(const SSL *s);
|
||||
int SSL_in_before(const SSL *s);
|
||||
int SSL_is_init_finished(const SSL *s);
|
||||
|
||||
int SSL_in_connect_init(SSL *s);
|
||||
int SSL_in_accept_init(SSL *s);
|
||||
|
||||
@@ -267,6 +267,19 @@ Nagle's algorithm. If an application opts to disable Nagle's algorithm
|
||||
consideration should be given to turning it back on again after the handshake is
|
||||
complete if appropriate.
|
||||
|
||||
In rare circumstances, it may be possible for a client to have a session that
|
||||
reports a max early data value greater than 0, but where the server does not
|
||||
support this. For example, this can occur if a server has had its configuration
|
||||
changed to accept a lower max early data value such as by calling
|
||||
SSL_CTX_set_recv_max_early_data(). Another example is if a server used to
|
||||
support TLSv1.3 but was later downgraded to TLSv1.2. Sending early data to such
|
||||
a server will cause the connection to abort. Clients that encounter an aborted
|
||||
connection while sending early data may want to retry the connection without
|
||||
sending early data as this does not happen automatically. A client will have to
|
||||
establish a new transport layer connection to the server and attempt the SSL/TLS
|
||||
connection again but without sending early data. Note that it is inadvisable to
|
||||
retry with a lower maximum protocol version.
|
||||
|
||||
=head1 REPLAY PROTECTION
|
||||
|
||||
When early data is in use the TLS protocol provides no security guarantees that
|
||||
|
||||
Reference in New Issue
Block a user