mirror of
https://github.com/QuasarApp/openssl.git
synced 2025-04-27 02:04:37 +00:00
Fix external symbols related to ec & sm2 keys
Partial fix for #12964 This adds ossl_ names for the following symbols: ec_*, ecx_*, ecdh_*, ecdsa_*, sm2_* Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/14231)
This commit is contained in:
parent
5af02212a5
commit
32ab57cbb4
@ -36,10 +36,10 @@
|
||||
* the same method, but claim no priority date earlier than July 29, 1994
|
||||
* (and additionally fail to cite the EUROCRYPT '92 publication as prior art).
|
||||
*/
|
||||
int ec_GF2m_simple_set_compressed_coordinates(const EC_GROUP *group,
|
||||
EC_POINT *point,
|
||||
const BIGNUM *x_, int y_bit,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GF2m_simple_set_compressed_coordinates(const EC_GROUP *group,
|
||||
EC_POINT *point,
|
||||
const BIGNUM *x_, int y_bit,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
BIGNUM *tmp, *x, *y, *z;
|
||||
int ret = 0, z0;
|
||||
@ -122,9 +122,10 @@ int ec_GF2m_simple_set_compressed_coordinates(const EC_GROUP *group,
|
||||
* length will be returned. If the length len of buf is smaller than required
|
||||
* an error will be returned.
|
||||
*/
|
||||
size_t ec_GF2m_simple_point2oct(const EC_GROUP *group, const EC_POINT *point,
|
||||
point_conversion_form_t form,
|
||||
unsigned char *buf, size_t len, BN_CTX *ctx)
|
||||
size_t ossl_ec_GF2m_simple_point2oct(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
point_conversion_form_t form,
|
||||
unsigned char *buf, size_t len, BN_CTX *ctx)
|
||||
{
|
||||
size_t ret;
|
||||
int used_ctx = 0;
|
||||
@ -252,9 +253,9 @@ size_t ec_GF2m_simple_point2oct(const EC_GROUP *group, const EC_POINT *point,
|
||||
* Converts an octet string representation to an EC_POINT. Note that the
|
||||
* simple implementation only uses affine coordinates.
|
||||
*/
|
||||
int ec_GF2m_simple_oct2point(const EC_GROUP *group, EC_POINT *point,
|
||||
const unsigned char *buf, size_t len,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GF2m_simple_oct2point(const EC_GROUP *group, EC_POINT *point,
|
||||
const unsigned char *buf, size_t len,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
point_conversion_form_t form;
|
||||
int y_bit, m;
|
||||
|
@ -25,7 +25,7 @@
|
||||
* Initialize a GF(2^m)-based EC_GROUP structure. Note that all other members
|
||||
* are handled by EC_GROUP_new.
|
||||
*/
|
||||
int ec_GF2m_simple_group_init(EC_GROUP *group)
|
||||
int ossl_ec_GF2m_simple_group_init(EC_GROUP *group)
|
||||
{
|
||||
group->field = BN_new();
|
||||
group->a = BN_new();
|
||||
@ -44,7 +44,7 @@ int ec_GF2m_simple_group_init(EC_GROUP *group)
|
||||
* Free a GF(2^m)-based EC_GROUP structure. Note that all other members are
|
||||
* handled by EC_GROUP_free.
|
||||
*/
|
||||
void ec_GF2m_simple_group_finish(EC_GROUP *group)
|
||||
void ossl_ec_GF2m_simple_group_finish(EC_GROUP *group)
|
||||
{
|
||||
BN_free(group->field);
|
||||
BN_free(group->a);
|
||||
@ -55,7 +55,7 @@ void ec_GF2m_simple_group_finish(EC_GROUP *group)
|
||||
* Clear and free a GF(2^m)-based EC_GROUP structure. Note that all other
|
||||
* members are handled by EC_GROUP_clear_free.
|
||||
*/
|
||||
void ec_GF2m_simple_group_clear_finish(EC_GROUP *group)
|
||||
void ossl_ec_GF2m_simple_group_clear_finish(EC_GROUP *group)
|
||||
{
|
||||
BN_clear_free(group->field);
|
||||
BN_clear_free(group->a);
|
||||
@ -72,7 +72,7 @@ void ec_GF2m_simple_group_clear_finish(EC_GROUP *group)
|
||||
* Copy a GF(2^m)-based EC_GROUP structure. Note that all other members are
|
||||
* handled by EC_GROUP_copy.
|
||||
*/
|
||||
int ec_GF2m_simple_group_copy(EC_GROUP *dest, const EC_GROUP *src)
|
||||
int ossl_ec_GF2m_simple_group_copy(EC_GROUP *dest, const EC_GROUP *src)
|
||||
{
|
||||
if (!BN_copy(dest->field, src->field))
|
||||
return 0;
|
||||
@ -98,9 +98,9 @@ int ec_GF2m_simple_group_copy(EC_GROUP *dest, const EC_GROUP *src)
|
||||
}
|
||||
|
||||
/* Set the curve parameters of an EC_GROUP structure. */
|
||||
int ec_GF2m_simple_group_set_curve(EC_GROUP *group,
|
||||
const BIGNUM *p, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *ctx)
|
||||
int ossl_ec_GF2m_simple_group_set_curve(EC_GROUP *group,
|
||||
const BIGNUM *p, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0, i;
|
||||
|
||||
@ -138,8 +138,8 @@ int ec_GF2m_simple_group_set_curve(EC_GROUP *group,
|
||||
* Get the curve parameters of an EC_GROUP structure. If p, a, or b are NULL
|
||||
* then there values will not be set but the method will return with success.
|
||||
*/
|
||||
int ec_GF2m_simple_group_get_curve(const EC_GROUP *group, BIGNUM *p,
|
||||
BIGNUM *a, BIGNUM *b, BN_CTX *ctx)
|
||||
int ossl_ec_GF2m_simple_group_get_curve(const EC_GROUP *group, BIGNUM *p,
|
||||
BIGNUM *a, BIGNUM *b, BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
@ -168,7 +168,7 @@ int ec_GF2m_simple_group_get_curve(const EC_GROUP *group, BIGNUM *p,
|
||||
* Gets the degree of the field. For a curve over GF(2^m) this is the value
|
||||
* m.
|
||||
*/
|
||||
int ec_GF2m_simple_group_get_degree(const EC_GROUP *group)
|
||||
int ossl_ec_GF2m_simple_group_get_degree(const EC_GROUP *group)
|
||||
{
|
||||
return BN_num_bits(group->field) - 1;
|
||||
}
|
||||
@ -177,8 +177,8 @@ int ec_GF2m_simple_group_get_degree(const EC_GROUP *group)
|
||||
* Checks the discriminant of the curve. y^2 + x*y = x^3 + a*x^2 + b is an
|
||||
* elliptic curve <=> b != 0 (mod p)
|
||||
*/
|
||||
int ec_GF2m_simple_group_check_discriminant(const EC_GROUP *group,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GF2m_simple_group_check_discriminant(const EC_GROUP *group,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
BIGNUM *b;
|
||||
@ -219,7 +219,7 @@ int ec_GF2m_simple_group_check_discriminant(const EC_GROUP *group,
|
||||
}
|
||||
|
||||
/* Initializes an EC_POINT. */
|
||||
int ec_GF2m_simple_point_init(EC_POINT *point)
|
||||
int ossl_ec_GF2m_simple_point_init(EC_POINT *point)
|
||||
{
|
||||
point->X = BN_new();
|
||||
point->Y = BN_new();
|
||||
@ -235,7 +235,7 @@ int ec_GF2m_simple_point_init(EC_POINT *point)
|
||||
}
|
||||
|
||||
/* Frees an EC_POINT. */
|
||||
void ec_GF2m_simple_point_finish(EC_POINT *point)
|
||||
void ossl_ec_GF2m_simple_point_finish(EC_POINT *point)
|
||||
{
|
||||
BN_free(point->X);
|
||||
BN_free(point->Y);
|
||||
@ -243,7 +243,7 @@ void ec_GF2m_simple_point_finish(EC_POINT *point)
|
||||
}
|
||||
|
||||
/* Clears and frees an EC_POINT. */
|
||||
void ec_GF2m_simple_point_clear_finish(EC_POINT *point)
|
||||
void ossl_ec_GF2m_simple_point_clear_finish(EC_POINT *point)
|
||||
{
|
||||
BN_clear_free(point->X);
|
||||
BN_clear_free(point->Y);
|
||||
@ -255,7 +255,7 @@ void ec_GF2m_simple_point_clear_finish(EC_POINT *point)
|
||||
* Copy the contents of one EC_POINT into another. Assumes dest is
|
||||
* initialized.
|
||||
*/
|
||||
int ec_GF2m_simple_point_copy(EC_POINT *dest, const EC_POINT *src)
|
||||
int ossl_ec_GF2m_simple_point_copy(EC_POINT *dest, const EC_POINT *src)
|
||||
{
|
||||
if (!BN_copy(dest->X, src->X))
|
||||
return 0;
|
||||
@ -273,8 +273,8 @@ int ec_GF2m_simple_point_copy(EC_POINT *dest, const EC_POINT *src)
|
||||
* Set an EC_POINT to the point at infinity. A point at infinity is
|
||||
* represented by having Z=0.
|
||||
*/
|
||||
int ec_GF2m_simple_point_set_to_infinity(const EC_GROUP *group,
|
||||
EC_POINT *point)
|
||||
int ossl_ec_GF2m_simple_point_set_to_infinity(const EC_GROUP *group,
|
||||
EC_POINT *point)
|
||||
{
|
||||
point->Z_is_one = 0;
|
||||
BN_zero(point->Z);
|
||||
@ -285,10 +285,11 @@ int ec_GF2m_simple_point_set_to_infinity(const EC_GROUP *group,
|
||||
* Set the coordinates of an EC_POINT using affine coordinates. Note that
|
||||
* the simple implementation only uses affine coordinates.
|
||||
*/
|
||||
int ec_GF2m_simple_point_set_affine_coordinates(const EC_GROUP *group,
|
||||
EC_POINT *point,
|
||||
const BIGNUM *x,
|
||||
const BIGNUM *y, BN_CTX *ctx)
|
||||
int ossl_ec_GF2m_simple_point_set_affine_coordinates(const EC_GROUP *group,
|
||||
EC_POINT *point,
|
||||
const BIGNUM *x,
|
||||
const BIGNUM *y,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
if (x == NULL || y == NULL) {
|
||||
@ -316,10 +317,10 @@ int ec_GF2m_simple_point_set_affine_coordinates(const EC_GROUP *group,
|
||||
* Gets the affine coordinates of an EC_POINT. Note that the simple
|
||||
* implementation only uses affine coordinates.
|
||||
*/
|
||||
int ec_GF2m_simple_point_get_affine_coordinates(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
BIGNUM *x, BIGNUM *y,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GF2m_simple_point_get_affine_coordinates(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
BIGNUM *x, BIGNUM *y,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
@ -352,8 +353,8 @@ int ec_GF2m_simple_point_get_affine_coordinates(const EC_GROUP *group,
|
||||
* Computes a + b and stores the result in r. r could be a or b, a could be
|
||||
* b. Uses algorithm A.10.2 of IEEE P1363.
|
||||
*/
|
||||
int ec_GF2m_simple_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a,
|
||||
const EC_POINT *b, BN_CTX *ctx)
|
||||
int ossl_ec_GF2m_simple_add(const EC_GROUP *group, EC_POINT *r,
|
||||
const EC_POINT *a, const EC_POINT *b, BN_CTX *ctx)
|
||||
{
|
||||
BIGNUM *x0, *y0, *x1, *y1, *x2, *y2, *s, *t;
|
||||
int ret = 0;
|
||||
@ -473,13 +474,14 @@ int ec_GF2m_simple_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a,
|
||||
* Computes 2 * a and stores the result in r. r could be a. Uses algorithm
|
||||
* A.10.2 of IEEE P1363.
|
||||
*/
|
||||
int ec_GF2m_simple_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GF2m_simple_dbl(const EC_GROUP *group, EC_POINT *r,
|
||||
const EC_POINT *a, BN_CTX *ctx)
|
||||
{
|
||||
return ec_GF2m_simple_add(group, r, a, a, ctx);
|
||||
return ossl_ec_GF2m_simple_add(group, r, a, a, ctx);
|
||||
}
|
||||
|
||||
int ec_GF2m_simple_invert(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx)
|
||||
int ossl_ec_GF2m_simple_invert(const EC_GROUP *group, EC_POINT *point,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
if (EC_POINT_is_at_infinity(group, point) || BN_is_zero(point->Y))
|
||||
/* point is its own inverse */
|
||||
@ -492,8 +494,8 @@ int ec_GF2m_simple_invert(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx)
|
||||
}
|
||||
|
||||
/* Indicates whether the given point is the point at infinity. */
|
||||
int ec_GF2m_simple_is_at_infinity(const EC_GROUP *group,
|
||||
const EC_POINT *point)
|
||||
int ossl_ec_GF2m_simple_is_at_infinity(const EC_GROUP *group,
|
||||
const EC_POINT *point)
|
||||
{
|
||||
return BN_is_zero(point->Z);
|
||||
}
|
||||
@ -503,8 +505,8 @@ int ec_GF2m_simple_is_at_infinity(const EC_GROUP *group,
|
||||
* in the EC_GROUP. A point is valid if it satisfies the Weierstrass equation:
|
||||
* y^2 + x*y = x^3 + a*x^2 + b.
|
||||
*/
|
||||
int ec_GF2m_simple_is_on_curve(const EC_GROUP *group, const EC_POINT *point,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GF2m_simple_is_on_curve(const EC_GROUP *group, const EC_POINT *point,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
int ret = -1;
|
||||
BIGNUM *lh, *y2;
|
||||
@ -576,8 +578,8 @@ int ec_GF2m_simple_is_on_curve(const EC_GROUP *group, const EC_POINT *point,
|
||||
* 0 equal (in affine coordinates)
|
||||
* 1 not equal
|
||||
*/
|
||||
int ec_GF2m_simple_cmp(const EC_GROUP *group, const EC_POINT *a,
|
||||
const EC_POINT *b, BN_CTX *ctx)
|
||||
int ossl_ec_GF2m_simple_cmp(const EC_GROUP *group, const EC_POINT *a,
|
||||
const EC_POINT *b, BN_CTX *ctx)
|
||||
{
|
||||
BIGNUM *aX, *aY, *bX, *bY;
|
||||
int ret = -1;
|
||||
@ -627,8 +629,8 @@ int ec_GF2m_simple_cmp(const EC_GROUP *group, const EC_POINT *a,
|
||||
}
|
||||
|
||||
/* Forces the given EC_POINT to internally use affine coordinates. */
|
||||
int ec_GF2m_simple_make_affine(const EC_GROUP *group, EC_POINT *point,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GF2m_simple_make_affine(const EC_GROUP *group, EC_POINT *point,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
BIGNUM *x, *y;
|
||||
int ret = 0;
|
||||
@ -676,8 +678,8 @@ int ec_GF2m_simple_make_affine(const EC_GROUP *group, EC_POINT *point,
|
||||
/*
|
||||
* Forces each of the EC_POINTs in the given array to use affine coordinates.
|
||||
*/
|
||||
int ec_GF2m_simple_points_make_affine(const EC_GROUP *group, size_t num,
|
||||
EC_POINT *points[], BN_CTX *ctx)
|
||||
int ossl_ec_GF2m_simple_points_make_affine(const EC_GROUP *group, size_t num,
|
||||
EC_POINT *points[], BN_CTX *ctx)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
@ -690,22 +692,22 @@ int ec_GF2m_simple_points_make_affine(const EC_GROUP *group, size_t num,
|
||||
}
|
||||
|
||||
/* Wrapper to simple binary polynomial field multiplication implementation. */
|
||||
int ec_GF2m_simple_field_mul(const EC_GROUP *group, BIGNUM *r,
|
||||
const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
|
||||
int ossl_ec_GF2m_simple_field_mul(const EC_GROUP *group, BIGNUM *r,
|
||||
const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
|
||||
{
|
||||
return BN_GF2m_mod_mul_arr(r, a, b, group->poly, ctx);
|
||||
}
|
||||
|
||||
/* Wrapper to simple binary polynomial field squaring implementation. */
|
||||
int ec_GF2m_simple_field_sqr(const EC_GROUP *group, BIGNUM *r,
|
||||
const BIGNUM *a, BN_CTX *ctx)
|
||||
int ossl_ec_GF2m_simple_field_sqr(const EC_GROUP *group, BIGNUM *r,
|
||||
const BIGNUM *a, BN_CTX *ctx)
|
||||
{
|
||||
return BN_GF2m_mod_sqr_arr(r, a, group->poly, ctx);
|
||||
}
|
||||
|
||||
/* Wrapper to simple binary polynomial field division implementation. */
|
||||
int ec_GF2m_simple_field_div(const EC_GROUP *group, BIGNUM *r,
|
||||
const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
|
||||
int ossl_ec_GF2m_simple_field_div(const EC_GROUP *group, BIGNUM *r,
|
||||
const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
|
||||
{
|
||||
return BN_GF2m_mod_div(r, a, b, group->field, ctx);
|
||||
}
|
||||
@ -887,15 +889,15 @@ int ec_GF2m_simple_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
* order or cofactor set to 0.
|
||||
*/
|
||||
if (num > 1 || BN_is_zero(group->order) || BN_is_zero(group->cofactor))
|
||||
return ec_wNAF_mul(group, r, scalar, num, points, scalars, ctx);
|
||||
return ossl_ec_wNAF_mul(group, r, scalar, num, points, scalars, ctx);
|
||||
|
||||
if (scalar != NULL && num == 0)
|
||||
/* Fixed point multiplication */
|
||||
return ec_scalar_mul_ladder(group, r, scalar, NULL, ctx);
|
||||
return ossl_ec_scalar_mul_ladder(group, r, scalar, NULL, ctx);
|
||||
|
||||
if (scalar == NULL && num == 1)
|
||||
/* Variable point multiplication */
|
||||
return ec_scalar_mul_ladder(group, r, scalars[0], points[0], ctx);
|
||||
return ossl_ec_scalar_mul_ladder(group, r, scalars[0], points[0], ctx);
|
||||
|
||||
/*-
|
||||
* Double point multiplication:
|
||||
@ -907,8 +909,8 @@ int ec_GF2m_simple_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!ec_scalar_mul_ladder(group, t, scalar, NULL, ctx)
|
||||
|| !ec_scalar_mul_ladder(group, r, scalars[0], points[0], ctx)
|
||||
if (!ossl_ec_scalar_mul_ladder(group, t, scalar, NULL, ctx)
|
||||
|| !ossl_ec_scalar_mul_ladder(group, r, scalars[0], points[0], ctx)
|
||||
|| !EC_POINT_add(group, r, t, r, ctx))
|
||||
goto err;
|
||||
|
||||
@ -939,55 +941,55 @@ const EC_METHOD *EC_GF2m_simple_method(void)
|
||||
static const EC_METHOD ret = {
|
||||
EC_FLAGS_DEFAULT_OCT,
|
||||
NID_X9_62_characteristic_two_field,
|
||||
ec_GF2m_simple_group_init,
|
||||
ec_GF2m_simple_group_finish,
|
||||
ec_GF2m_simple_group_clear_finish,
|
||||
ec_GF2m_simple_group_copy,
|
||||
ec_GF2m_simple_group_set_curve,
|
||||
ec_GF2m_simple_group_get_curve,
|
||||
ec_GF2m_simple_group_get_degree,
|
||||
ec_group_simple_order_bits,
|
||||
ec_GF2m_simple_group_check_discriminant,
|
||||
ec_GF2m_simple_point_init,
|
||||
ec_GF2m_simple_point_finish,
|
||||
ec_GF2m_simple_point_clear_finish,
|
||||
ec_GF2m_simple_point_copy,
|
||||
ec_GF2m_simple_point_set_to_infinity,
|
||||
ec_GF2m_simple_point_set_affine_coordinates,
|
||||
ec_GF2m_simple_point_get_affine_coordinates,
|
||||
ossl_ec_GF2m_simple_group_init,
|
||||
ossl_ec_GF2m_simple_group_finish,
|
||||
ossl_ec_GF2m_simple_group_clear_finish,
|
||||
ossl_ec_GF2m_simple_group_copy,
|
||||
ossl_ec_GF2m_simple_group_set_curve,
|
||||
ossl_ec_GF2m_simple_group_get_curve,
|
||||
ossl_ec_GF2m_simple_group_get_degree,
|
||||
ossl_ec_group_simple_order_bits,
|
||||
ossl_ec_GF2m_simple_group_check_discriminant,
|
||||
ossl_ec_GF2m_simple_point_init,
|
||||
ossl_ec_GF2m_simple_point_finish,
|
||||
ossl_ec_GF2m_simple_point_clear_finish,
|
||||
ossl_ec_GF2m_simple_point_copy,
|
||||
ossl_ec_GF2m_simple_point_set_to_infinity,
|
||||
ossl_ec_GF2m_simple_point_set_affine_coordinates,
|
||||
ossl_ec_GF2m_simple_point_get_affine_coordinates,
|
||||
0, /* point_set_compressed_coordinates */
|
||||
0, /* point2oct */
|
||||
0, /* oct2point */
|
||||
ec_GF2m_simple_add,
|
||||
ec_GF2m_simple_dbl,
|
||||
ec_GF2m_simple_invert,
|
||||
ec_GF2m_simple_is_at_infinity,
|
||||
ec_GF2m_simple_is_on_curve,
|
||||
ec_GF2m_simple_cmp,
|
||||
ec_GF2m_simple_make_affine,
|
||||
ec_GF2m_simple_points_make_affine,
|
||||
ossl_ec_GF2m_simple_add,
|
||||
ossl_ec_GF2m_simple_dbl,
|
||||
ossl_ec_GF2m_simple_invert,
|
||||
ossl_ec_GF2m_simple_is_at_infinity,
|
||||
ossl_ec_GF2m_simple_is_on_curve,
|
||||
ossl_ec_GF2m_simple_cmp,
|
||||
ossl_ec_GF2m_simple_make_affine,
|
||||
ossl_ec_GF2m_simple_points_make_affine,
|
||||
ec_GF2m_simple_points_mul,
|
||||
0, /* precompute_mult */
|
||||
0, /* have_precompute_mult */
|
||||
ec_GF2m_simple_field_mul,
|
||||
ec_GF2m_simple_field_sqr,
|
||||
ec_GF2m_simple_field_div,
|
||||
ossl_ec_GF2m_simple_field_mul,
|
||||
ossl_ec_GF2m_simple_field_sqr,
|
||||
ossl_ec_GF2m_simple_field_div,
|
||||
ec_GF2m_simple_field_inv,
|
||||
0, /* field_encode */
|
||||
0, /* field_decode */
|
||||
0, /* field_set_to_one */
|
||||
ec_key_simple_priv2oct,
|
||||
ec_key_simple_oct2priv,
|
||||
ossl_ec_key_simple_priv2oct,
|
||||
ossl_ec_key_simple_oct2priv,
|
||||
0, /* set private */
|
||||
ec_key_simple_generate_key,
|
||||
ec_key_simple_check_key,
|
||||
ec_key_simple_generate_public_key,
|
||||
ossl_ec_key_simple_generate_key,
|
||||
ossl_ec_key_simple_check_key,
|
||||
ossl_ec_key_simple_generate_public_key,
|
||||
0, /* keycopy */
|
||||
0, /* keyfinish */
|
||||
ecdh_simple_compute_key,
|
||||
ecdsa_simple_sign_setup,
|
||||
ecdsa_simple_sign_sig,
|
||||
ecdsa_simple_verify_sig,
|
||||
ossl_ecdh_simple_compute_key,
|
||||
ossl_ecdsa_simple_sign_setup,
|
||||
ossl_ecdsa_simple_sign_sig,
|
||||
ossl_ecdsa_simple_verify_sig,
|
||||
0, /* field_inverse_mod_ord */
|
||||
0, /* blind_coordinates */
|
||||
ec_GF2m_simple_ladder_pre,
|
||||
|
@ -584,7 +584,7 @@ int ec_pkey_export_to(const EVP_PKEY *from, void *to_keydata,
|
||||
BN_CTX_start(bnctx);
|
||||
|
||||
/* export the domain parameters */
|
||||
if (!ec_group_todata(ecg, tmpl, NULL, libctx, propq, bnctx, &gen_buf))
|
||||
if (!ossl_ec_group_todata(ecg, tmpl, NULL, libctx, propq, bnctx, &gen_buf))
|
||||
goto err;
|
||||
selection |= OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS;
|
||||
|
||||
@ -695,9 +695,9 @@ static int ec_pkey_import_from(const OSSL_PARAM params[], void *vpctx)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!ec_group_fromdata(ec, params)
|
||||
|| !ec_key_otherparams_fromdata(ec, params)
|
||||
|| !ec_key_fromdata(ec, params, 1)
|
||||
if (!ossl_ec_group_fromdata(ec, params)
|
||||
|| !ossl_ec_key_otherparams_fromdata(ec, params)
|
||||
|| !ossl_ec_key_fromdata(ec, params, 1)
|
||||
|| !EVP_PKEY_assign_EC_KEY(pkey, ec)) {
|
||||
EC_KEY_free(ec);
|
||||
return 0;
|
||||
|
@ -768,7 +768,7 @@ EC_GROUP *EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params)
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_EC_LIB);
|
||||
goto err;
|
||||
}
|
||||
if ((curve_name = ec_curve_nid_from_params(dup, ctx)) != NID_undef) {
|
||||
if ((curve_name = ossl_ec_curve_nid_from_params(dup, ctx)) != NID_undef) {
|
||||
/*
|
||||
* The input explicit parameters successfully matched one of the
|
||||
* built-in curves: often for built-in curves we have specialized
|
||||
|
@ -41,7 +41,7 @@ static const OSSL_ITEM format_nameid_map[] = {
|
||||
{ (int)POINT_CONVERSION_HYBRID, OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID },
|
||||
};
|
||||
|
||||
int ec_encoding_name2id(const char *name)
|
||||
int ossl_ec_encoding_name2id(const char *name)
|
||||
{
|
||||
size_t i, sz;
|
||||
|
||||
@ -67,7 +67,7 @@ static char *ec_param_encoding_id2name(int id)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char *ec_check_group_type_id2name(int id)
|
||||
char *ossl_ec_check_group_type_id2name(int id)
|
||||
{
|
||||
size_t i, sz;
|
||||
|
||||
@ -93,7 +93,7 @@ static int ec_check_group_type_name2id(const char *name)
|
||||
return -1;
|
||||
}
|
||||
|
||||
int ec_set_check_group_type_from_name(EC_KEY *ec, const char *name)
|
||||
int ossl_ec_set_check_group_type_from_name(EC_KEY *ec, const char *name)
|
||||
{
|
||||
int flags = ec_check_group_type_name2id(name);
|
||||
|
||||
@ -119,11 +119,11 @@ static int ec_set_check_group_type_from_param(EC_KEY *ec, const OSSL_PARAM *p)
|
||||
break;
|
||||
}
|
||||
if (status)
|
||||
return ec_set_check_group_type_from_name(ec, name);
|
||||
return ossl_ec_set_check_group_type_from_name(ec, name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ec_pt_format_name2id(const char *name)
|
||||
int ossl_ec_pt_format_name2id(const char *name)
|
||||
{
|
||||
size_t i, sz;
|
||||
|
||||
@ -138,7 +138,7 @@ int ec_pt_format_name2id(const char *name)
|
||||
return -1;
|
||||
}
|
||||
|
||||
char *ec_pt_format_id2name(int id)
|
||||
char *ossl_ec_pt_format_id2name(int id)
|
||||
{
|
||||
size_t i, sz;
|
||||
|
||||
@ -149,10 +149,10 @@ char *ec_pt_format_id2name(int id)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int ec_group_todata(const EC_GROUP *group, OSSL_PARAM_BLD *tmpl,
|
||||
OSSL_PARAM params[], OSSL_LIB_CTX *libctx,
|
||||
const char *propq,
|
||||
BN_CTX *bnctx, unsigned char **genbuf)
|
||||
int ossl_ec_group_todata(const EC_GROUP *group, OSSL_PARAM_BLD *tmpl,
|
||||
OSSL_PARAM params[], OSSL_LIB_CTX *libctx,
|
||||
const char *propq,
|
||||
BN_CTX *bnctx, unsigned char **genbuf)
|
||||
{
|
||||
int ret = 0, curve_nid, encoding_flag;
|
||||
const char *field_type, *encoding_name, *pt_form_name;
|
||||
@ -169,7 +169,7 @@ int ec_group_todata(const EC_GROUP *group, OSSL_PARAM_BLD *tmpl,
|
||||
}
|
||||
|
||||
genform = EC_GROUP_get_point_conversion_form(group);
|
||||
pt_form_name = ec_pt_format_id2name(genform);
|
||||
pt_form_name = ossl_ec_pt_format_id2name(genform);
|
||||
if (pt_form_name == NULL
|
||||
|| !ossl_param_build_set_utf8_string(
|
||||
tmpl, params,
|
||||
@ -271,7 +271,7 @@ int ec_group_todata(const EC_GROUP *group, OSSL_PARAM_BLD *tmpl,
|
||||
#endif
|
||||
} else {
|
||||
/* named curve */
|
||||
const char *curve_name = ec_curve_nid2name(curve_nid);
|
||||
const char *curve_name = ossl_ec_curve_nid2name(curve_nid);
|
||||
|
||||
if (curve_name == NULL
|
||||
|| !ossl_param_build_set_utf8_string(tmpl, params,
|
||||
@ -291,7 +291,7 @@ err:
|
||||
* for legacy backends (EVP_PKEY_ASN1_METHOD and EVP_PKEY_METHOD) and provider
|
||||
* implementations alike.
|
||||
*/
|
||||
int ec_set_ecdh_cofactor_mode(EC_KEY *ec, int mode)
|
||||
int ossl_ec_set_ecdh_cofactor_mode(EC_KEY *ec, int mode)
|
||||
{
|
||||
const EC_GROUP *ecg = EC_KEY_get0_group(ec);
|
||||
const BIGNUM *cofactor;
|
||||
@ -321,14 +321,14 @@ int ec_set_ecdh_cofactor_mode(EC_KEY *ec, int mode)
|
||||
}
|
||||
|
||||
/*
|
||||
* Callers of ec_key_fromdata MUST make sure that ec_key_params_fromdata has
|
||||
* Callers of ossl_ec_key_fromdata MUST make sure that ec_key_params_fromdata has
|
||||
* been called before!
|
||||
*
|
||||
* This function only gets the bare keypair, domain parameters and other
|
||||
* parameters are treated separately, and domain parameters are required to
|
||||
* define a keypair.
|
||||
*/
|
||||
int ec_key_fromdata(EC_KEY *ec, const OSSL_PARAM params[], int include_private)
|
||||
int ossl_ec_key_fromdata(EC_KEY *ec, const OSSL_PARAM params[], int include_private)
|
||||
{
|
||||
const OSSL_PARAM *param_priv_key = NULL, *param_pub_key = NULL;
|
||||
BN_CTX *ctx = NULL;
|
||||
@ -349,7 +349,7 @@ int ec_key_fromdata(EC_KEY *ec, const OSSL_PARAM params[], int include_private)
|
||||
param_priv_key =
|
||||
OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_PRIV_KEY);
|
||||
|
||||
ctx = BN_CTX_new_ex(ec_key_get_libctx(ec));
|
||||
ctx = BN_CTX_new_ex(ossl_ec_key_get_libctx(ec));
|
||||
if (ctx == NULL)
|
||||
goto err;
|
||||
|
||||
@ -431,7 +431,7 @@ int ec_key_fromdata(EC_KEY *ec, const OSSL_PARAM params[], int include_private)
|
||||
return ok;
|
||||
}
|
||||
|
||||
int ec_group_fromdata(EC_KEY *ec, const OSSL_PARAM params[])
|
||||
int ossl_ec_group_fromdata(EC_KEY *ec, const OSSL_PARAM params[])
|
||||
{
|
||||
int ok = 0;
|
||||
EC_GROUP *group = NULL;
|
||||
@ -439,8 +439,8 @@ int ec_group_fromdata(EC_KEY *ec, const OSSL_PARAM params[])
|
||||
if (ec == NULL)
|
||||
return 0;
|
||||
|
||||
group = EC_GROUP_new_from_params(params, ec_key_get_libctx(ec),
|
||||
ec_key_get0_propq(ec));
|
||||
group = EC_GROUP_new_from_params(params, ossl_ec_key_get_libctx(ec),
|
||||
ossl_ec_key_get0_propq(ec));
|
||||
|
||||
if (!EC_KEY_set_group(ec, group))
|
||||
goto err;
|
||||
@ -457,7 +457,7 @@ static int ec_key_point_format_fromdata(EC_KEY *ec, const OSSL_PARAM params[])
|
||||
|
||||
p = OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT);
|
||||
if (p != NULL) {
|
||||
if (!ec_pt_format_param2id(p, &format)) {
|
||||
if (!ossl_ec_pt_format_param2id(p, &format)) {
|
||||
ECerr(0, EC_R_INVALID_FORM);
|
||||
return 0;
|
||||
}
|
||||
@ -488,7 +488,7 @@ static int ec_set_include_public(EC_KEY *ec, int include)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ec_key_otherparams_fromdata(EC_KEY *ec, const OSSL_PARAM params[])
|
||||
int ossl_ec_key_otherparams_fromdata(EC_KEY *ec, const OSSL_PARAM params[])
|
||||
{
|
||||
const OSSL_PARAM *p;
|
||||
|
||||
@ -500,7 +500,7 @@ int ec_key_otherparams_fromdata(EC_KEY *ec, const OSSL_PARAM params[])
|
||||
int mode;
|
||||
|
||||
if (!OSSL_PARAM_get_int(p, &mode)
|
||||
|| !ec_set_ecdh_cofactor_mode(ec, mode))
|
||||
|| !ossl_ec_set_ecdh_cofactor_mode(ec, mode))
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -519,7 +519,7 @@ int ec_key_otherparams_fromdata(EC_KEY *ec, const OSSL_PARAM params[])
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ec_encoding_param2id(const OSSL_PARAM *p, int *id)
|
||||
int ossl_ec_encoding_param2id(const OSSL_PARAM *p, int *id)
|
||||
{
|
||||
const char *name = NULL;
|
||||
int status = 0;
|
||||
@ -535,7 +535,7 @@ int ec_encoding_param2id(const OSSL_PARAM *p, int *id)
|
||||
break;
|
||||
}
|
||||
if (status) {
|
||||
int i = ec_encoding_name2id(name);
|
||||
int i = ossl_ec_encoding_name2id(name);
|
||||
|
||||
if (i >= 0) {
|
||||
*id = i;
|
||||
@ -545,7 +545,7 @@ int ec_encoding_param2id(const OSSL_PARAM *p, int *id)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ec_pt_format_param2id(const OSSL_PARAM *p, int *id)
|
||||
int ossl_ec_pt_format_param2id(const OSSL_PARAM *p, int *id)
|
||||
{
|
||||
const char *name = NULL;
|
||||
int status = 0;
|
||||
@ -561,7 +561,7 @@ int ec_pt_format_param2id(const OSSL_PARAM *p, int *id)
|
||||
break;
|
||||
}
|
||||
if (status) {
|
||||
int i = ec_pt_format_name2id(name);
|
||||
int i = ossl_ec_pt_format_name2id(name);
|
||||
|
||||
if (i >= 0) {
|
||||
*id = i;
|
||||
|
@ -35,7 +35,7 @@ int EC_GROUP_check_named_curve(const EC_GROUP *group, int nist_only,
|
||||
}
|
||||
}
|
||||
|
||||
nid = ec_curve_nid_from_params(group, ctx);
|
||||
nid = ossl_ec_curve_nid_from_params(group, ctx);
|
||||
if (nid > 0 && nist_only && EC_curve_nid2nist(nid) == NULL)
|
||||
nid = NID_undef;
|
||||
|
||||
|
@ -3147,8 +3147,8 @@ static EC_GROUP *ec_group_new_from_data(OSSL_LIB_CTX *libctx,
|
||||
|
||||
/* If no curve data curve method must handle everything */
|
||||
if (curve.data == NULL)
|
||||
return ec_group_new_ex(libctx, propq,
|
||||
curve.meth != NULL ? curve.meth() : NULL);
|
||||
return ossl_ec_group_new_ex(libctx, propq,
|
||||
curve.meth != NULL ? curve.meth() : NULL);
|
||||
|
||||
if ((ctx = BN_CTX_new_ex(libctx)) == NULL) {
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_MALLOC_FAILURE);
|
||||
@ -3170,7 +3170,7 @@ static EC_GROUP *ec_group_new_from_data(OSSL_LIB_CTX *libctx,
|
||||
|
||||
if (curve.meth != 0) {
|
||||
meth = curve.meth();
|
||||
if (((group = ec_group_new_ex(libctx, propq, meth)) == NULL) ||
|
||||
if (((group = ossl_ec_group_new_ex(libctx, propq, meth)) == NULL) ||
|
||||
(!(group->meth->group_set_curve(group, p, a, b, ctx)))) {
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_EC_LIB);
|
||||
goto err;
|
||||
@ -3286,12 +3286,12 @@ size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems)
|
||||
|
||||
const char *EC_curve_nid2nist(int nid)
|
||||
{
|
||||
return ec_curve_nid2nist_int(nid);
|
||||
return ossl_ec_curve_nid2nist_int(nid);
|
||||
}
|
||||
|
||||
int EC_curve_nist2nid(const char *name)
|
||||
{
|
||||
return ec_curve_nist2nid_int(name);
|
||||
return ossl_ec_curve_nist2nid_int(name);
|
||||
}
|
||||
|
||||
#define NUM_BN_FIELDS 6
|
||||
@ -3303,7 +3303,7 @@ int EC_curve_nist2nid(const char *name)
|
||||
* Returns: The nid associated with the found named curve, or NID_undef
|
||||
* if not found. If there was an error it returns -1.
|
||||
*/
|
||||
int ec_curve_nid_from_params(const EC_GROUP *group, BN_CTX *ctx)
|
||||
int ossl_ec_curve_nid_from_params(const EC_GROUP *group, BN_CTX *ctx)
|
||||
{
|
||||
int ret = -1, nid, len, field_type, param_len;
|
||||
size_t i, seed_len;
|
||||
|
@ -54,7 +54,7 @@ EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a,
|
||||
meth = EC_GFp_mont_method();
|
||||
#endif
|
||||
|
||||
ret = ec_group_new_ex(ossl_bn_get_libctx(ctx), NULL, meth);
|
||||
ret = ossl_ec_group_new_ex(ossl_bn_get_libctx(ctx), NULL, meth);
|
||||
if (ret == NULL)
|
||||
return NULL;
|
||||
|
||||
@ -75,7 +75,7 @@ EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a,
|
||||
|
||||
meth = EC_GF2m_simple_method();
|
||||
|
||||
ret = ec_group_new_ex(ossl_bn_get_libctx(ctx), NULL, meth);
|
||||
ret = ossl_ec_group_new_ex(ossl_bn_get_libctx(ctx), NULL, meth);
|
||||
if (ret == NULL)
|
||||
return NULL;
|
||||
|
||||
|
@ -30,13 +30,13 @@ static int ecdsa_keygen_pairwise_test(EC_KEY *eckey, OSSL_CALLBACK *cb,
|
||||
#ifndef FIPS_MODULE
|
||||
EC_KEY *EC_KEY_new(void)
|
||||
{
|
||||
return ec_key_new_method_int(NULL, NULL, NULL);
|
||||
return ossl_ec_key_new_method_int(NULL, NULL, NULL);
|
||||
}
|
||||
#endif
|
||||
|
||||
EC_KEY *EC_KEY_new_ex(OSSL_LIB_CTX *ctx, const char *propq)
|
||||
{
|
||||
return ec_key_new_method_int(ctx, propq, NULL);
|
||||
return ossl_ec_key_new_method_int(ctx, propq, NULL);
|
||||
}
|
||||
|
||||
EC_KEY *EC_KEY_new_by_curve_name_ex(OSSL_LIB_CTX *ctx, const char *propq,
|
||||
@ -122,7 +122,8 @@ EC_KEY *EC_KEY_copy(EC_KEY *dest, const EC_KEY *src)
|
||||
if (src->group != NULL) {
|
||||
/* clear the old group */
|
||||
EC_GROUP_free(dest->group);
|
||||
dest->group = ec_group_new_ex(src->libctx, src->propq, src->group->meth);
|
||||
dest->group = ossl_ec_group_new_ex(src->libctx, src->propq,
|
||||
src->group->meth);
|
||||
if (dest->group == NULL)
|
||||
return NULL;
|
||||
if (!EC_GROUP_copy(dest->group, src->group))
|
||||
@ -183,8 +184,8 @@ EC_KEY *EC_KEY_copy(EC_KEY *dest, const EC_KEY *src)
|
||||
|
||||
EC_KEY *EC_KEY_dup(const EC_KEY *ec_key)
|
||||
{
|
||||
EC_KEY *ret = ec_key_new_method_int(ec_key->libctx, ec_key->propq,
|
||||
ec_key->engine);
|
||||
EC_KEY *ret = ossl_ec_key_new_method_int(ec_key->libctx, ec_key->propq,
|
||||
ec_key->engine);
|
||||
|
||||
if (ret == NULL)
|
||||
return NULL;
|
||||
@ -357,12 +358,12 @@ err:
|
||||
return ok;
|
||||
}
|
||||
|
||||
int ec_key_simple_generate_key(EC_KEY *eckey)
|
||||
int ossl_ec_key_simple_generate_key(EC_KEY *eckey)
|
||||
{
|
||||
return ec_generate_key(eckey, 0);
|
||||
}
|
||||
|
||||
int ec_key_simple_generate_public_key(EC_KEY *eckey)
|
||||
int ossl_ec_key_simple_generate_public_key(EC_KEY *eckey)
|
||||
{
|
||||
int ret;
|
||||
BN_CTX *ctx = BN_CTX_new_ex(eckey->libctx);
|
||||
@ -445,7 +446,7 @@ err:
|
||||
* ECC Partial Public-Key Validation as specified in SP800-56A R3
|
||||
* Section 5.6.2.3.4 ECC Partial Public-Key Validation Routine.
|
||||
*/
|
||||
int ec_key_public_check_quick(const EC_KEY *eckey, BN_CTX *ctx)
|
||||
int ossl_ec_key_public_check_quick(const EC_KEY *eckey, BN_CTX *ctx)
|
||||
{
|
||||
if (eckey == NULL || eckey->group == NULL || eckey->pub_key == NULL) {
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_PASSED_NULL_PARAMETER);
|
||||
@ -476,13 +477,13 @@ int ec_key_public_check_quick(const EC_KEY *eckey, BN_CTX *ctx)
|
||||
* ECC Key validation as specified in SP800-56A R3.
|
||||
* Section 5.6.2.3.3 ECC Full Public-Key Validation Routine.
|
||||
*/
|
||||
int ec_key_public_check(const EC_KEY *eckey, BN_CTX *ctx)
|
||||
int ossl_ec_key_public_check(const EC_KEY *eckey, BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
EC_POINT *point = NULL;
|
||||
const BIGNUM *order = NULL;
|
||||
|
||||
if (!ec_key_public_check_quick(eckey, ctx))
|
||||
if (!ossl_ec_key_public_check_quick(eckey, ctx))
|
||||
return 0;
|
||||
|
||||
point = EC_POINT_new(eckey->group);
|
||||
@ -514,7 +515,7 @@ err:
|
||||
* Section 5.6.2.1.2 Owner Assurance of Private-Key Validity
|
||||
* The private key is in the range [1, order-1]
|
||||
*/
|
||||
int ec_key_private_check(const EC_KEY *eckey)
|
||||
int ossl_ec_key_private_check(const EC_KEY *eckey)
|
||||
{
|
||||
if (eckey == NULL || eckey->group == NULL || eckey->priv_key == NULL) {
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_PASSED_NULL_PARAMETER);
|
||||
@ -533,7 +534,7 @@ int ec_key_private_check(const EC_KEY *eckey)
|
||||
* Section 5.6.2.1.4 Owner Assurance of Pair-wise Consistency (b)
|
||||
* Check if generator * priv_key = pub_key
|
||||
*/
|
||||
int ec_key_pairwise_check(const EC_KEY *eckey, BN_CTX *ctx)
|
||||
int ossl_ec_key_pairwise_check(const EC_KEY *eckey, BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
EC_POINT *point = NULL;
|
||||
@ -576,7 +577,7 @@ err:
|
||||
* an approved elliptic-curve group is used.
|
||||
* Returns 1 if the key is valid, otherwise it returns 0.
|
||||
*/
|
||||
int ec_key_simple_check_key(const EC_KEY *eckey)
|
||||
int ossl_ec_key_simple_check_key(const EC_KEY *eckey)
|
||||
{
|
||||
int ok = 0;
|
||||
BN_CTX *ctx = NULL;
|
||||
@ -588,12 +589,12 @@ int ec_key_simple_check_key(const EC_KEY *eckey)
|
||||
if ((ctx = BN_CTX_new_ex(eckey->libctx)) == NULL)
|
||||
return 0;
|
||||
|
||||
if (!ec_key_public_check(eckey, ctx))
|
||||
if (!ossl_ec_key_public_check(eckey, ctx))
|
||||
goto err;
|
||||
|
||||
if (eckey->priv_key != NULL) {
|
||||
if (!ec_key_private_check(eckey)
|
||||
|| !ec_key_pairwise_check(eckey, ctx))
|
||||
if (!ossl_ec_key_private_check(eckey)
|
||||
|| !ossl_ec_key_pairwise_check(eckey, ctx))
|
||||
goto err;
|
||||
}
|
||||
ok = 1;
|
||||
@ -660,17 +661,17 @@ int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x,
|
||||
|
||||
}
|
||||
|
||||
OSSL_LIB_CTX *ec_key_get_libctx(const EC_KEY *key)
|
||||
OSSL_LIB_CTX *ossl_ec_key_get_libctx(const EC_KEY *key)
|
||||
{
|
||||
return key->libctx;
|
||||
}
|
||||
|
||||
const char *ec_key_get0_propq(const EC_KEY *key)
|
||||
const char *ossl_ec_key_get0_propq(const EC_KEY *key)
|
||||
{
|
||||
return key->propq;
|
||||
}
|
||||
|
||||
void ec_key_set0_libctx(EC_KEY *key, OSSL_LIB_CTX *libctx)
|
||||
void ossl_ec_key_set0_libctx(EC_KEY *key, OSSL_LIB_CTX *libctx)
|
||||
{
|
||||
key->libctx = libctx;
|
||||
/* Do we need to propagate this to the group? */
|
||||
@ -903,8 +904,8 @@ size_t EC_KEY_priv2oct(const EC_KEY *eckey,
|
||||
return eckey->group->meth->priv2oct(eckey, buf, len);
|
||||
}
|
||||
|
||||
size_t ec_key_simple_priv2oct(const EC_KEY *eckey,
|
||||
unsigned char *buf, size_t len)
|
||||
size_t ossl_ec_key_simple_priv2oct(const EC_KEY *eckey,
|
||||
unsigned char *buf, size_t len)
|
||||
{
|
||||
size_t buf_len;
|
||||
|
||||
@ -942,7 +943,8 @@ int EC_KEY_oct2priv(EC_KEY *eckey, const unsigned char *buf, size_t len)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_key_simple_oct2priv(EC_KEY *eckey, const unsigned char *buf, size_t len)
|
||||
int ossl_ec_key_simple_oct2priv(EC_KEY *eckey, const unsigned char *buf,
|
||||
size_t len)
|
||||
{
|
||||
if (eckey->priv_key == NULL)
|
||||
eckey->priv_key = BN_secure_new();
|
||||
|
@ -76,8 +76,8 @@ int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth)
|
||||
return 1;
|
||||
}
|
||||
|
||||
EC_KEY *ec_key_new_method_int(OSSL_LIB_CTX *libctx, const char *propq,
|
||||
ENGINE *engine)
|
||||
EC_KEY *ossl_ec_key_new_method_int(OSSL_LIB_CTX *libctx, const char *propq,
|
||||
ENGINE *engine)
|
||||
{
|
||||
EC_KEY *ret = OPENSSL_zalloc(sizeof(*ret));
|
||||
|
||||
@ -145,7 +145,7 @@ EC_KEY *ec_key_new_method_int(OSSL_LIB_CTX *libctx, const char *propq,
|
||||
#ifndef FIPS_MODULE
|
||||
EC_KEY *EC_KEY_new_method(ENGINE *engine)
|
||||
{
|
||||
return ec_key_new_method_int(NULL, NULL, engine);
|
||||
return ossl_ec_key_new_method_int(NULL, NULL, engine);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -26,8 +26,8 @@
|
||||
|
||||
/* functions for EC_GROUP objects */
|
||||
|
||||
EC_GROUP *ec_group_new_ex(OSSL_LIB_CTX *libctx, const char *propq,
|
||||
const EC_METHOD *meth)
|
||||
EC_GROUP *ossl_ec_group_new_ex(OSSL_LIB_CTX *libctx, const char *propq,
|
||||
const EC_METHOD *meth)
|
||||
{
|
||||
EC_GROUP *ret;
|
||||
|
||||
@ -81,7 +81,7 @@ EC_GROUP *ec_group_new_ex(OSSL_LIB_CTX *libctx, const char *propq,
|
||||
# ifndef FIPS_MODULE
|
||||
EC_GROUP *EC_GROUP_new(const EC_METHOD *meth)
|
||||
{
|
||||
return ec_group_new_ex(NULL, NULL, meth);
|
||||
return ossl_ec_group_new_ex(NULL, NULL, meth);
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
@ -271,7 +271,7 @@ EC_GROUP *EC_GROUP_dup(const EC_GROUP *a)
|
||||
if (a == NULL)
|
||||
return NULL;
|
||||
|
||||
if ((t = ec_group_new_ex(a->libctx, a->propq, a->meth)) == NULL)
|
||||
if ((t = ossl_ec_group_new_ex(a->libctx, a->propq, a->meth)) == NULL)
|
||||
return NULL;
|
||||
if (!EC_GROUP_copy(t, a))
|
||||
goto err;
|
||||
@ -836,7 +836,8 @@ int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group,
|
||||
ERR_raise(ERR_LIB_EC, EC_R_INCOMPATIBLE_OBJECTS);
|
||||
return 0;
|
||||
}
|
||||
return ec_GFp_simple_set_Jprojective_coordinates_GFp(group, point, x, y, z, ctx);
|
||||
return ossl_ec_GFp_simple_set_Jprojective_coordinates_GFp(group, point,
|
||||
x, y, z, ctx);
|
||||
}
|
||||
|
||||
int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group,
|
||||
@ -852,7 +853,8 @@ int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group,
|
||||
ERR_raise(ERR_LIB_EC, EC_R_INCOMPATIBLE_OBJECTS);
|
||||
return 0;
|
||||
}
|
||||
return ec_GFp_simple_get_Jprojective_coordinates_GFp(group, point, x, y, z, ctx);
|
||||
return ossl_ec_GFp_simple_get_Jprojective_coordinates_GFp(group, point,
|
||||
x, y, z, ctx);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1101,7 +1103,7 @@ int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
|
||||
ret = group->meth->mul(group, r, scalar, num, points, scalars, ctx);
|
||||
else
|
||||
/* use default */
|
||||
ret = ec_wNAF_mul(group, r, scalar, num, points, scalars, ctx);
|
||||
ret = ossl_ec_wNAF_mul(group, r, scalar, num, points, scalars, ctx);
|
||||
|
||||
#ifndef FIPS_MODULE
|
||||
BN_CTX_free(new_ctx);
|
||||
@ -1142,7 +1144,7 @@ int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *g_scalar,
|
||||
ret = group->meth->mul(group, r, g_scalar, num, &point, &p_scalar, ctx);
|
||||
else
|
||||
/* use default */
|
||||
ret = ec_wNAF_mul(group, r, g_scalar, num, &point, &p_scalar, ctx);
|
||||
ret = ossl_ec_wNAF_mul(group, r, g_scalar, num, &point, &p_scalar, ctx);
|
||||
|
||||
#ifndef FIPS_MODULE
|
||||
BN_CTX_free(new_ctx);
|
||||
@ -1155,7 +1157,7 @@ int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx)
|
||||
{
|
||||
if (group->meth->mul == 0)
|
||||
/* use default */
|
||||
return ec_wNAF_precompute_mult(group, ctx);
|
||||
return ossl_ec_wNAF_precompute_mult(group, ctx);
|
||||
|
||||
if (group->meth->precompute_mult != 0)
|
||||
return group->meth->precompute_mult(group, ctx);
|
||||
@ -1167,7 +1169,7 @@ int EC_GROUP_have_precompute_mult(const EC_GROUP *group)
|
||||
{
|
||||
if (group->meth->mul == 0)
|
||||
/* use default */
|
||||
return ec_wNAF_have_precompute_mult(group);
|
||||
return ossl_ec_wNAF_have_precompute_mult(group);
|
||||
|
||||
if (group->meth->have_precompute_mult != 0)
|
||||
return group->meth->have_precompute_mult(group);
|
||||
@ -1222,7 +1224,7 @@ void *EC_KEY_get_ex_data(const EC_KEY *key, int idx)
|
||||
}
|
||||
#endif
|
||||
|
||||
int ec_group_simple_order_bits(const EC_GROUP *group)
|
||||
int ossl_ec_group_simple_order_bits(const EC_GROUP *group)
|
||||
{
|
||||
if (group->order == NULL)
|
||||
return 0;
|
||||
@ -1290,8 +1292,8 @@ static int ec_field_inverse_mod_ord(const EC_GROUP *group, BIGNUM *r,
|
||||
* EC_METHODs must implement their own field_inverse_mod_ord for
|
||||
* other functionality.
|
||||
*/
|
||||
int ec_group_do_inverse_ord(const EC_GROUP *group, BIGNUM *res,
|
||||
const BIGNUM *x, BN_CTX *ctx)
|
||||
int ossl_ec_group_do_inverse_ord(const EC_GROUP *group, BIGNUM *res,
|
||||
const BIGNUM *x, BN_CTX *ctx)
|
||||
{
|
||||
if (group->meth->field_inverse_mod_ord != NULL)
|
||||
return group->meth->field_inverse_mod_ord(group, res, x, ctx);
|
||||
@ -1309,7 +1311,8 @@ int ec_group_do_inverse_ord(const EC_GROUP *group, BIGNUM *res,
|
||||
* This wrapper returns 1 in case the underlying EC_METHOD does not
|
||||
* support coordinate blinding.
|
||||
*/
|
||||
int ec_point_blind_coordinates(const EC_GROUP *group, EC_POINT *p, BN_CTX *ctx)
|
||||
int ossl_ec_point_blind_coordinates(const EC_GROUP *group, EC_POINT *p,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
if (group->meth->blind_coordinates == NULL)
|
||||
return 1; /* ignore if not implemented */
|
||||
@ -1411,7 +1414,7 @@ static EC_GROUP *ec_group_explicit_to_named(const EC_GROUP *group,
|
||||
|| EC_GROUP_set_seed(dup, NULL, 0) != 1
|
||||
|| !EC_GROUP_set_generator(dup, point, order, NULL))
|
||||
goto err;
|
||||
if ((curve_name_nid = ec_curve_nid_from_params(dup, ctx)) != NID_undef) {
|
||||
if ((curve_name_nid = ossl_ec_curve_nid_from_params(dup, ctx)) != NID_undef) {
|
||||
/*
|
||||
* The input explicit parameters successfully matched one of the
|
||||
* built-in curves: often for built-in curves we have specialized
|
||||
@ -1483,7 +1486,7 @@ static EC_GROUP *group_new_from_name(const OSSL_PARAM *p,
|
||||
}
|
||||
|
||||
if (ok) {
|
||||
nid = ec_curve_name2nid(curve_name);
|
||||
nid = ossl_ec_curve_name2nid(curve_name);
|
||||
if (nid == NID_undef) {
|
||||
ERR_raise(ERR_LIB_EC, EC_R_INVALID_CURVE);
|
||||
return NULL;
|
||||
@ -1495,14 +1498,14 @@ static EC_GROUP *group_new_from_name(const OSSL_PARAM *p,
|
||||
}
|
||||
|
||||
/* These parameters can be set directly into an EC_GROUP */
|
||||
int ec_group_set_params(EC_GROUP *group, const OSSL_PARAM params[])
|
||||
int ossl_ec_group_set_params(EC_GROUP *group, const OSSL_PARAM params[])
|
||||
{
|
||||
int encoding_flag = -1, format = -1;
|
||||
const OSSL_PARAM *p;
|
||||
|
||||
p = OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT);
|
||||
if (p != NULL) {
|
||||
if (!ec_pt_format_param2id(p, &format)) {
|
||||
if (!ossl_ec_pt_format_param2id(p, &format)) {
|
||||
ECerr(0, EC_R_INVALID_FORM);
|
||||
return 0;
|
||||
}
|
||||
@ -1511,7 +1514,7 @@ int ec_group_set_params(EC_GROUP *group, const OSSL_PARAM params[])
|
||||
|
||||
p = OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_EC_ENCODING);
|
||||
if (p != NULL) {
|
||||
if (!ec_encoding_param2id(p, &encoding_flag)) {
|
||||
if (!ossl_ec_encoding_param2id(p, &encoding_flag)) {
|
||||
ECerr(0, EC_R_INVALID_FORM);
|
||||
return 0;
|
||||
}
|
||||
@ -1549,7 +1552,7 @@ EC_GROUP *EC_GROUP_new_from_params(const OSSL_PARAM params[],
|
||||
if (ptmp != NULL) {
|
||||
group = group_new_from_name(ptmp, libctx, propq);
|
||||
if (group != NULL) {
|
||||
if (!ec_group_set_params(group, params)) {
|
||||
if (!ossl_ec_group_set_params(group, params)) {
|
||||
EC_GROUP_free(group);
|
||||
group = NULL;
|
||||
}
|
||||
@ -1706,7 +1709,7 @@ EC_GROUP *EC_GROUP_new_from_params(const OSSL_PARAM params[],
|
||||
*/
|
||||
ptmp = OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_EC_ENCODING);
|
||||
if (ptmp != NULL
|
||||
&& !ec_encoding_param2id(ptmp, &encoding_flag)) {
|
||||
&& !ossl_ec_encoding_param2id(ptmp, &encoding_flag)) {
|
||||
ECerr(0, EC_R_INVALID_ENCODING);
|
||||
return 0;
|
||||
}
|
||||
|
@ -349,249 +349,249 @@ void EC_ec_pre_comp_free(EC_PRE_COMP *);
|
||||
* method functions in ec_mult.c (ec_lib.c uses these as defaults if
|
||||
* group->method->mul is 0)
|
||||
*/
|
||||
int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
|
||||
size_t num, const EC_POINT *points[], const BIGNUM *scalars[],
|
||||
BN_CTX *);
|
||||
int ec_wNAF_precompute_mult(EC_GROUP *group, BN_CTX *);
|
||||
int ec_wNAF_have_precompute_mult(const EC_GROUP *group);
|
||||
int ossl_ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
|
||||
size_t num, const EC_POINT *points[],
|
||||
const BIGNUM *scalars[], BN_CTX *);
|
||||
int ossl_ec_wNAF_precompute_mult(EC_GROUP *group, BN_CTX *);
|
||||
int ossl_ec_wNAF_have_precompute_mult(const EC_GROUP *group);
|
||||
|
||||
/* method functions in ecp_smpl.c */
|
||||
int ec_GFp_simple_group_init(EC_GROUP *);
|
||||
void ec_GFp_simple_group_finish(EC_GROUP *);
|
||||
void ec_GFp_simple_group_clear_finish(EC_GROUP *);
|
||||
int ec_GFp_simple_group_copy(EC_GROUP *, const EC_GROUP *);
|
||||
int ec_GFp_simple_group_set_curve(EC_GROUP *, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *b, BN_CTX *);
|
||||
int ec_GFp_simple_group_get_curve(const EC_GROUP *, BIGNUM *p, BIGNUM *a,
|
||||
BIGNUM *b, BN_CTX *);
|
||||
int ec_GFp_simple_group_get_degree(const EC_GROUP *);
|
||||
int ec_GFp_simple_group_check_discriminant(const EC_GROUP *, BN_CTX *);
|
||||
int ec_GFp_simple_point_init(EC_POINT *);
|
||||
void ec_GFp_simple_point_finish(EC_POINT *);
|
||||
void ec_GFp_simple_point_clear_finish(EC_POINT *);
|
||||
int ec_GFp_simple_point_copy(EC_POINT *, const EC_POINT *);
|
||||
int ec_GFp_simple_point_set_to_infinity(const EC_GROUP *, EC_POINT *);
|
||||
int ec_GFp_simple_set_Jprojective_coordinates_GFp(const EC_GROUP *,
|
||||
EC_POINT *, const BIGNUM *x,
|
||||
const BIGNUM *y,
|
||||
const BIGNUM *z, BN_CTX *);
|
||||
int ec_GFp_simple_get_Jprojective_coordinates_GFp(const EC_GROUP *,
|
||||
const EC_POINT *, BIGNUM *x,
|
||||
BIGNUM *y, BIGNUM *z,
|
||||
int ossl_ec_GFp_simple_group_init(EC_GROUP *);
|
||||
void ossl_ec_GFp_simple_group_finish(EC_GROUP *);
|
||||
void ossl_ec_GFp_simple_group_clear_finish(EC_GROUP *);
|
||||
int ossl_ec_GFp_simple_group_copy(EC_GROUP *, const EC_GROUP *);
|
||||
int ossl_ec_GFp_simple_group_set_curve(EC_GROUP *, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *b,
|
||||
BN_CTX *);
|
||||
int ossl_ec_GFp_simple_group_get_curve(const EC_GROUP *, BIGNUM *p, BIGNUM *a,
|
||||
BIGNUM *b, BN_CTX *);
|
||||
int ossl_ec_GFp_simple_group_get_degree(const EC_GROUP *);
|
||||
int ossl_ec_GFp_simple_group_check_discriminant(const EC_GROUP *, BN_CTX *);
|
||||
int ossl_ec_GFp_simple_point_init(EC_POINT *);
|
||||
void ossl_ec_GFp_simple_point_finish(EC_POINT *);
|
||||
void ossl_ec_GFp_simple_point_clear_finish(EC_POINT *);
|
||||
int ossl_ec_GFp_simple_point_copy(EC_POINT *, const EC_POINT *);
|
||||
int ossl_ec_GFp_simple_point_set_to_infinity(const EC_GROUP *, EC_POINT *);
|
||||
int ossl_ec_GFp_simple_set_Jprojective_coordinates_GFp(const EC_GROUP *,
|
||||
EC_POINT *,
|
||||
const BIGNUM *x,
|
||||
const BIGNUM *y,
|
||||
const BIGNUM *z,
|
||||
BN_CTX *);
|
||||
int ossl_ec_GFp_simple_get_Jprojective_coordinates_GFp(const EC_GROUP *,
|
||||
const EC_POINT *,
|
||||
BIGNUM *x,
|
||||
BIGNUM *y, BIGNUM *z,
|
||||
BN_CTX *);
|
||||
int ossl_ec_GFp_simple_point_set_affine_coordinates(const EC_GROUP *, EC_POINT *,
|
||||
const BIGNUM *x,
|
||||
const BIGNUM *y, BN_CTX *);
|
||||
int ossl_ec_GFp_simple_point_get_affine_coordinates(const EC_GROUP *,
|
||||
const EC_POINT *, BIGNUM *x,
|
||||
BIGNUM *y, BN_CTX *);
|
||||
int ossl_ec_GFp_simple_set_compressed_coordinates(const EC_GROUP *, EC_POINT *,
|
||||
const BIGNUM *x, int y_bit,
|
||||
BN_CTX *);
|
||||
int ec_GFp_simple_point_set_affine_coordinates(const EC_GROUP *, EC_POINT *,
|
||||
const BIGNUM *x,
|
||||
const BIGNUM *y, BN_CTX *);
|
||||
int ec_GFp_simple_point_get_affine_coordinates(const EC_GROUP *,
|
||||
const EC_POINT *, BIGNUM *x,
|
||||
BIGNUM *y, BN_CTX *);
|
||||
int ec_GFp_simple_set_compressed_coordinates(const EC_GROUP *, EC_POINT *,
|
||||
const BIGNUM *x, int y_bit,
|
||||
BN_CTX *);
|
||||
size_t ec_GFp_simple_point2oct(const EC_GROUP *, const EC_POINT *,
|
||||
point_conversion_form_t form,
|
||||
unsigned char *buf, size_t len, BN_CTX *);
|
||||
int ec_GFp_simple_oct2point(const EC_GROUP *, EC_POINT *,
|
||||
const unsigned char *buf, size_t len, BN_CTX *);
|
||||
int ec_GFp_simple_add(const EC_GROUP *, EC_POINT *r, const EC_POINT *a,
|
||||
const EC_POINT *b, BN_CTX *);
|
||||
int ec_GFp_simple_dbl(const EC_GROUP *, EC_POINT *r, const EC_POINT *a,
|
||||
BN_CTX *);
|
||||
int ec_GFp_simple_invert(const EC_GROUP *, EC_POINT *, BN_CTX *);
|
||||
int ec_GFp_simple_is_at_infinity(const EC_GROUP *, const EC_POINT *);
|
||||
int ec_GFp_simple_is_on_curve(const EC_GROUP *, const EC_POINT *, BN_CTX *);
|
||||
int ec_GFp_simple_cmp(const EC_GROUP *, const EC_POINT *a, const EC_POINT *b,
|
||||
BN_CTX *);
|
||||
int ec_GFp_simple_make_affine(const EC_GROUP *, EC_POINT *, BN_CTX *);
|
||||
int ec_GFp_simple_points_make_affine(const EC_GROUP *, size_t num,
|
||||
EC_POINT *[], BN_CTX *);
|
||||
int ec_GFp_simple_field_mul(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *);
|
||||
int ec_GFp_simple_field_sqr(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *);
|
||||
int ec_GFp_simple_field_inv(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *);
|
||||
int ec_GFp_simple_blind_coordinates(const EC_GROUP *group, EC_POINT *p,
|
||||
BN_CTX *ctx);
|
||||
int ec_GFp_simple_ladder_pre(const EC_GROUP *group,
|
||||
EC_POINT *r, EC_POINT *s,
|
||||
EC_POINT *p, BN_CTX *ctx);
|
||||
int ec_GFp_simple_ladder_step(const EC_GROUP *group,
|
||||
EC_POINT *r, EC_POINT *s,
|
||||
EC_POINT *p, BN_CTX *ctx);
|
||||
int ec_GFp_simple_ladder_post(const EC_GROUP *group,
|
||||
EC_POINT *r, EC_POINT *s,
|
||||
EC_POINT *p, BN_CTX *ctx);
|
||||
size_t ossl_ec_GFp_simple_point2oct(const EC_GROUP *, const EC_POINT *,
|
||||
point_conversion_form_t form,
|
||||
unsigned char *buf, size_t len, BN_CTX *);
|
||||
int ossl_ec_GFp_simple_oct2point(const EC_GROUP *, EC_POINT *,
|
||||
const unsigned char *buf, size_t len, BN_CTX *);
|
||||
int ossl_ec_GFp_simple_add(const EC_GROUP *, EC_POINT *r, const EC_POINT *a,
|
||||
const EC_POINT *b, BN_CTX *);
|
||||
int ossl_ec_GFp_simple_dbl(const EC_GROUP *, EC_POINT *r, const EC_POINT *a,
|
||||
BN_CTX *);
|
||||
int ossl_ec_GFp_simple_invert(const EC_GROUP *, EC_POINT *, BN_CTX *);
|
||||
int ossl_ec_GFp_simple_is_at_infinity(const EC_GROUP *, const EC_POINT *);
|
||||
int ossl_ec_GFp_simple_is_on_curve(const EC_GROUP *, const EC_POINT *, BN_CTX *);
|
||||
int ossl_ec_GFp_simple_cmp(const EC_GROUP *, const EC_POINT *a,
|
||||
const EC_POINT *b, BN_CTX *);
|
||||
int ossl_ec_GFp_simple_make_affine(const EC_GROUP *, EC_POINT *, BN_CTX *);
|
||||
int ossl_ec_GFp_simple_points_make_affine(const EC_GROUP *, size_t num,
|
||||
EC_POINT *[], BN_CTX *);
|
||||
int ossl_ec_GFp_simple_field_mul(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *);
|
||||
int ossl_ec_GFp_simple_field_sqr(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *);
|
||||
int ossl_ec_GFp_simple_field_inv(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *);
|
||||
int ossl_ec_GFp_simple_blind_coordinates(const EC_GROUP *group, EC_POINT *p,
|
||||
BN_CTX *ctx);
|
||||
int ossl_ec_GFp_simple_ladder_pre(const EC_GROUP *group,
|
||||
EC_POINT *r, EC_POINT *s,
|
||||
EC_POINT *p, BN_CTX *ctx);
|
||||
int ossl_ec_GFp_simple_ladder_step(const EC_GROUP *group,
|
||||
EC_POINT *r, EC_POINT *s,
|
||||
EC_POINT *p, BN_CTX *ctx);
|
||||
int ossl_ec_GFp_simple_ladder_post(const EC_GROUP *group,
|
||||
EC_POINT *r, EC_POINT *s,
|
||||
EC_POINT *p, BN_CTX *ctx);
|
||||
|
||||
/* method functions in ecp_mont.c */
|
||||
int ec_GFp_mont_group_init(EC_GROUP *);
|
||||
int ec_GFp_mont_group_set_curve(EC_GROUP *, const BIGNUM *p, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *);
|
||||
void ec_GFp_mont_group_finish(EC_GROUP *);
|
||||
void ec_GFp_mont_group_clear_finish(EC_GROUP *);
|
||||
int ec_GFp_mont_group_copy(EC_GROUP *, const EC_GROUP *);
|
||||
int ec_GFp_mont_field_mul(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *);
|
||||
int ec_GFp_mont_field_sqr(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *);
|
||||
int ec_GFp_mont_field_inv(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *);
|
||||
int ec_GFp_mont_field_encode(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *);
|
||||
int ec_GFp_mont_field_decode(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *);
|
||||
int ec_GFp_mont_field_set_to_one(const EC_GROUP *, BIGNUM *r, BN_CTX *);
|
||||
int ossl_ec_GFp_mont_group_init(EC_GROUP *);
|
||||
int ossl_ec_GFp_mont_group_set_curve(EC_GROUP *, const BIGNUM *p,
|
||||
const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *);
|
||||
void ossl_ec_GFp_mont_group_finish(EC_GROUP *);
|
||||
void ossl_ec_GFp_mont_group_clear_finish(EC_GROUP *);
|
||||
int ossl_ec_GFp_mont_group_copy(EC_GROUP *, const EC_GROUP *);
|
||||
int ossl_ec_GFp_mont_field_mul(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *);
|
||||
int ossl_ec_GFp_mont_field_sqr(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *);
|
||||
int ossl_ec_GFp_mont_field_inv(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *);
|
||||
int ossl_ec_GFp_mont_field_encode(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *);
|
||||
int ossl_ec_GFp_mont_field_decode(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *);
|
||||
int ossl_ec_GFp_mont_field_set_to_one(const EC_GROUP *, BIGNUM *r, BN_CTX *);
|
||||
|
||||
/* method functions in ecp_nist.c */
|
||||
int ec_GFp_nist_group_copy(EC_GROUP *dest, const EC_GROUP *src);
|
||||
int ec_GFp_nist_group_set_curve(EC_GROUP *, const BIGNUM *p, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *);
|
||||
int ec_GFp_nist_field_mul(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *);
|
||||
int ec_GFp_nist_field_sqr(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *);
|
||||
int ossl_ec_GFp_nist_group_copy(EC_GROUP *dest, const EC_GROUP *src);
|
||||
int ossl_ec_GFp_nist_group_set_curve(EC_GROUP *, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *b, BN_CTX *);
|
||||
int ossl_ec_GFp_nist_field_mul(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *);
|
||||
int ossl_ec_GFp_nist_field_sqr(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *);
|
||||
|
||||
/* method functions in ec2_smpl.c */
|
||||
int ec_GF2m_simple_group_init(EC_GROUP *);
|
||||
void ec_GF2m_simple_group_finish(EC_GROUP *);
|
||||
void ec_GF2m_simple_group_clear_finish(EC_GROUP *);
|
||||
int ec_GF2m_simple_group_copy(EC_GROUP *, const EC_GROUP *);
|
||||
int ec_GF2m_simple_group_set_curve(EC_GROUP *, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *b,
|
||||
BN_CTX *);
|
||||
int ec_GF2m_simple_group_get_curve(const EC_GROUP *, BIGNUM *p, BIGNUM *a,
|
||||
BIGNUM *b, BN_CTX *);
|
||||
int ec_GF2m_simple_group_get_degree(const EC_GROUP *);
|
||||
int ec_GF2m_simple_group_check_discriminant(const EC_GROUP *, BN_CTX *);
|
||||
int ec_GF2m_simple_point_init(EC_POINT *);
|
||||
void ec_GF2m_simple_point_finish(EC_POINT *);
|
||||
void ec_GF2m_simple_point_clear_finish(EC_POINT *);
|
||||
int ec_GF2m_simple_point_copy(EC_POINT *, const EC_POINT *);
|
||||
int ec_GF2m_simple_point_set_to_infinity(const EC_GROUP *, EC_POINT *);
|
||||
int ec_GF2m_simple_point_set_affine_coordinates(const EC_GROUP *, EC_POINT *,
|
||||
const BIGNUM *x,
|
||||
const BIGNUM *y, BN_CTX *);
|
||||
int ec_GF2m_simple_point_get_affine_coordinates(const EC_GROUP *,
|
||||
const EC_POINT *, BIGNUM *x,
|
||||
BIGNUM *y, BN_CTX *);
|
||||
int ec_GF2m_simple_set_compressed_coordinates(const EC_GROUP *, EC_POINT *,
|
||||
const BIGNUM *x, int y_bit,
|
||||
BN_CTX *);
|
||||
size_t ec_GF2m_simple_point2oct(const EC_GROUP *, const EC_POINT *,
|
||||
point_conversion_form_t form,
|
||||
unsigned char *buf, size_t len, BN_CTX *);
|
||||
int ec_GF2m_simple_oct2point(const EC_GROUP *, EC_POINT *,
|
||||
const unsigned char *buf, size_t len, BN_CTX *);
|
||||
int ec_GF2m_simple_add(const EC_GROUP *, EC_POINT *r, const EC_POINT *a,
|
||||
const EC_POINT *b, BN_CTX *);
|
||||
int ec_GF2m_simple_dbl(const EC_GROUP *, EC_POINT *r, const EC_POINT *a,
|
||||
BN_CTX *);
|
||||
int ec_GF2m_simple_invert(const EC_GROUP *, EC_POINT *, BN_CTX *);
|
||||
int ec_GF2m_simple_is_at_infinity(const EC_GROUP *, const EC_POINT *);
|
||||
int ec_GF2m_simple_is_on_curve(const EC_GROUP *, const EC_POINT *, BN_CTX *);
|
||||
int ec_GF2m_simple_cmp(const EC_GROUP *, const EC_POINT *a, const EC_POINT *b,
|
||||
BN_CTX *);
|
||||
int ec_GF2m_simple_make_affine(const EC_GROUP *, EC_POINT *, BN_CTX *);
|
||||
int ec_GF2m_simple_points_make_affine(const EC_GROUP *, size_t num,
|
||||
EC_POINT *[], BN_CTX *);
|
||||
int ec_GF2m_simple_field_mul(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *);
|
||||
int ec_GF2m_simple_field_sqr(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *);
|
||||
int ec_GF2m_simple_field_div(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *);
|
||||
int ossl_ec_GF2m_simple_group_init(EC_GROUP *);
|
||||
void ossl_ec_GF2m_simple_group_finish(EC_GROUP *);
|
||||
void ossl_ec_GF2m_simple_group_clear_finish(EC_GROUP *);
|
||||
int ossl_ec_GF2m_simple_group_copy(EC_GROUP *, const EC_GROUP *);
|
||||
int ossl_ec_GF2m_simple_group_set_curve(EC_GROUP *, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *b,
|
||||
BN_CTX *);
|
||||
int ossl_ec_GF2m_simple_group_get_curve(const EC_GROUP *, BIGNUM *p, BIGNUM *a,
|
||||
BIGNUM *b, BN_CTX *);
|
||||
int ossl_ec_GF2m_simple_group_get_degree(const EC_GROUP *);
|
||||
int ossl_ec_GF2m_simple_group_check_discriminant(const EC_GROUP *, BN_CTX *);
|
||||
int ossl_ec_GF2m_simple_point_init(EC_POINT *);
|
||||
void ossl_ec_GF2m_simple_point_finish(EC_POINT *);
|
||||
void ossl_ec_GF2m_simple_point_clear_finish(EC_POINT *);
|
||||
int ossl_ec_GF2m_simple_point_copy(EC_POINT *, const EC_POINT *);
|
||||
int ossl_ec_GF2m_simple_point_set_to_infinity(const EC_GROUP *, EC_POINT *);
|
||||
int ossl_ec_GF2m_simple_point_set_affine_coordinates(const EC_GROUP *,
|
||||
EC_POINT *,
|
||||
const BIGNUM *x,
|
||||
const BIGNUM *y, BN_CTX *);
|
||||
int ossl_ec_GF2m_simple_point_get_affine_coordinates(const EC_GROUP *,
|
||||
const EC_POINT *, BIGNUM *x,
|
||||
BIGNUM *y, BN_CTX *);
|
||||
int ossl_ec_GF2m_simple_set_compressed_coordinates(const EC_GROUP *, EC_POINT *,
|
||||
const BIGNUM *x, int y_bit,
|
||||
BN_CTX *);
|
||||
size_t ossl_ec_GF2m_simple_point2oct(const EC_GROUP *, const EC_POINT *,
|
||||
point_conversion_form_t form,
|
||||
unsigned char *buf, size_t len, BN_CTX *);
|
||||
int ossl_ec_GF2m_simple_oct2point(const EC_GROUP *, EC_POINT *,
|
||||
const unsigned char *buf, size_t len, BN_CTX *);
|
||||
int ossl_ec_GF2m_simple_add(const EC_GROUP *, EC_POINT *r, const EC_POINT *a,
|
||||
const EC_POINT *b, BN_CTX *);
|
||||
int ossl_ec_GF2m_simple_dbl(const EC_GROUP *, EC_POINT *r, const EC_POINT *a,
|
||||
BN_CTX *);
|
||||
int ossl_ec_GF2m_simple_invert(const EC_GROUP *, EC_POINT *, BN_CTX *);
|
||||
int ossl_ec_GF2m_simple_is_at_infinity(const EC_GROUP *, const EC_POINT *);
|
||||
int ossl_ec_GF2m_simple_is_on_curve(const EC_GROUP *, const EC_POINT *, BN_CTX *);
|
||||
int ossl_ec_GF2m_simple_cmp(const EC_GROUP *, const EC_POINT *a,
|
||||
const EC_POINT *b, BN_CTX *);
|
||||
int ossl_ec_GF2m_simple_make_affine(const EC_GROUP *, EC_POINT *, BN_CTX *);
|
||||
int ossl_ec_GF2m_simple_points_make_affine(const EC_GROUP *, size_t num,
|
||||
EC_POINT *[], BN_CTX *);
|
||||
int ossl_ec_GF2m_simple_field_mul(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *);
|
||||
int ossl_ec_GF2m_simple_field_sqr(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *);
|
||||
int ossl_ec_GF2m_simple_field_div(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *);
|
||||
|
||||
#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
|
||||
/* method functions in ecp_nistp224.c */
|
||||
int ec_GFp_nistp224_group_init(EC_GROUP *group);
|
||||
int ec_GFp_nistp224_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *n,
|
||||
BN_CTX *);
|
||||
int ec_GFp_nistp224_point_get_affine_coordinates(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
BIGNUM *x, BIGNUM *y,
|
||||
BN_CTX *ctx);
|
||||
int ec_GFp_nistp224_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, size_t num,
|
||||
const EC_POINT *points[], const BIGNUM *scalars[],
|
||||
BN_CTX *);
|
||||
int ec_GFp_nistp224_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, size_t num,
|
||||
const EC_POINT *points[],
|
||||
const BIGNUM *scalars[], BN_CTX *ctx);
|
||||
int ec_GFp_nistp224_precompute_mult(EC_GROUP *group, BN_CTX *ctx);
|
||||
int ec_GFp_nistp224_have_precompute_mult(const EC_GROUP *group);
|
||||
int ossl_ec_GFp_nistp224_group_init(EC_GROUP *group);
|
||||
int ossl_ec_GFp_nistp224_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *n,
|
||||
BN_CTX *);
|
||||
int ossl_ec_GFp_nistp224_point_get_affine_coordinates(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
BIGNUM *x, BIGNUM *y,
|
||||
BN_CTX *ctx);
|
||||
int ossl_ec_GFp_nistp224_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, size_t num,
|
||||
const EC_POINT *points[], const BIGNUM *scalars[],
|
||||
BN_CTX *);
|
||||
int ossl_ec_GFp_nistp224_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, size_t num,
|
||||
const EC_POINT *points[],
|
||||
const BIGNUM *scalars[], BN_CTX *ctx);
|
||||
int ossl_ec_GFp_nistp224_precompute_mult(EC_GROUP *group, BN_CTX *ctx);
|
||||
int ossl_ec_GFp_nistp224_have_precompute_mult(const EC_GROUP *group);
|
||||
|
||||
/* method functions in ecp_nistp256.c */
|
||||
int ec_GFp_nistp256_group_init(EC_GROUP *group);
|
||||
int ec_GFp_nistp256_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *n,
|
||||
BN_CTX *);
|
||||
int ec_GFp_nistp256_point_get_affine_coordinates(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
BIGNUM *x, BIGNUM *y,
|
||||
BN_CTX *ctx);
|
||||
int ec_GFp_nistp256_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, size_t num,
|
||||
const EC_POINT *points[], const BIGNUM *scalars[],
|
||||
BN_CTX *);
|
||||
int ec_GFp_nistp256_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, size_t num,
|
||||
const EC_POINT *points[],
|
||||
const BIGNUM *scalars[], BN_CTX *ctx);
|
||||
int ec_GFp_nistp256_precompute_mult(EC_GROUP *group, BN_CTX *ctx);
|
||||
int ec_GFp_nistp256_have_precompute_mult(const EC_GROUP *group);
|
||||
int ossl_ec_GFp_nistp256_group_init(EC_GROUP *group);
|
||||
int ossl_ec_GFp_nistp256_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *n,
|
||||
BN_CTX *);
|
||||
int ossl_ec_GFp_nistp256_point_get_affine_coordinates(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
BIGNUM *x, BIGNUM *y,
|
||||
BN_CTX *ctx);
|
||||
int ossl_ec_GFp_nistp256_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, size_t num,
|
||||
const EC_POINT *points[], const BIGNUM *scalars[],
|
||||
BN_CTX *);
|
||||
int ossl_ec_GFp_nistp256_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, size_t num,
|
||||
const EC_POINT *points[],
|
||||
const BIGNUM *scalars[], BN_CTX *ctx);
|
||||
int ossl_ec_GFp_nistp256_precompute_mult(EC_GROUP *group, BN_CTX *ctx);
|
||||
int ossl_ec_GFp_nistp256_have_precompute_mult(const EC_GROUP *group);
|
||||
|
||||
/* method functions in ecp_nistp521.c */
|
||||
int ec_GFp_nistp521_group_init(EC_GROUP *group);
|
||||
int ec_GFp_nistp521_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *n,
|
||||
BN_CTX *);
|
||||
int ec_GFp_nistp521_point_get_affine_coordinates(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
BIGNUM *x, BIGNUM *y,
|
||||
BN_CTX *ctx);
|
||||
int ec_GFp_nistp521_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, size_t num,
|
||||
const EC_POINT *points[], const BIGNUM *scalars[],
|
||||
BN_CTX *);
|
||||
int ec_GFp_nistp521_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, size_t num,
|
||||
const EC_POINT *points[],
|
||||
const BIGNUM *scalars[], BN_CTX *ctx);
|
||||
int ec_GFp_nistp521_precompute_mult(EC_GROUP *group, BN_CTX *ctx);
|
||||
int ec_GFp_nistp521_have_precompute_mult(const EC_GROUP *group);
|
||||
int ossl_ec_GFp_nistp521_group_init(EC_GROUP *group);
|
||||
int ossl_ec_GFp_nistp521_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *n,
|
||||
BN_CTX *);
|
||||
int ossl_ec_GFp_nistp521_point_get_affine_coordinates(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
BIGNUM *x, BIGNUM *y,
|
||||
BN_CTX *ctx);
|
||||
int ossl_ec_GFp_nistp521_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, size_t num,
|
||||
const EC_POINT *points[], const BIGNUM *scalars[],
|
||||
BN_CTX *);
|
||||
int ossl_ec_GFp_nistp521_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, size_t num,
|
||||
const EC_POINT *points[],
|
||||
const BIGNUM *scalars[], BN_CTX *ctx);
|
||||
int ossl_ec_GFp_nistp521_precompute_mult(EC_GROUP *group, BN_CTX *ctx);
|
||||
int ossl_ec_GFp_nistp521_have_precompute_mult(const EC_GROUP *group);
|
||||
|
||||
/* utility functions in ecp_nistputil.c */
|
||||
void ec_GFp_nistp_points_make_affine_internal(size_t num, void *point_array,
|
||||
size_t felem_size,
|
||||
void *tmp_felems,
|
||||
void (*felem_one) (void *out),
|
||||
int (*felem_is_zero) (const void
|
||||
*in),
|
||||
void (*felem_assign) (void *out,
|
||||
const void
|
||||
*in),
|
||||
void (*felem_square) (void *out,
|
||||
const void
|
||||
*in),
|
||||
void (*felem_mul) (void *out,
|
||||
const void
|
||||
*in1,
|
||||
const void
|
||||
*in2),
|
||||
void (*felem_inv) (void *out,
|
||||
const void
|
||||
*in),
|
||||
void (*felem_contract) (void
|
||||
*out,
|
||||
const
|
||||
void
|
||||
*in));
|
||||
void ec_GFp_nistp_recode_scalar_bits(unsigned char *sign,
|
||||
unsigned char *digit, unsigned char in);
|
||||
void ossl_ec_GFp_nistp_points_make_affine_internal(size_t num, void *point_array,
|
||||
size_t felem_size,
|
||||
void *tmp_felems,
|
||||
void (*felem_one) (void *out),
|
||||
int (*felem_is_zero)
|
||||
(const void *in),
|
||||
void (*felem_assign)
|
||||
(void *out, const void *in),
|
||||
void (*felem_square)
|
||||
(void *out, const void *in),
|
||||
void (*felem_mul)
|
||||
(void *out,
|
||||
const void *in1,
|
||||
const void *in2),
|
||||
void (*felem_inv)
|
||||
(void *out, const void *in),
|
||||
void (*felem_contract)
|
||||
(void *out, const void *in));
|
||||
void ossl_ec_GFp_nistp_recode_scalar_bits(unsigned char *sign,
|
||||
unsigned char *digit,
|
||||
unsigned char in);
|
||||
#endif
|
||||
int ec_group_simple_order_bits(const EC_GROUP *group);
|
||||
int ossl_ec_group_simple_order_bits(const EC_GROUP *group);
|
||||
|
||||
/**
|
||||
* Creates a new EC_GROUP object
|
||||
@ -601,8 +601,8 @@ int ec_group_simple_order_bits(const EC_GROUP *group);
|
||||
* \param meth EC_METHOD to use
|
||||
* \return newly created EC_GROUP object or NULL in case of an error.
|
||||
*/
|
||||
EC_GROUP *ec_group_new_ex(OSSL_LIB_CTX *libctx, const char *propq,
|
||||
const EC_METHOD *meth);
|
||||
EC_GROUP *ossl_ec_group_new_ex(OSSL_LIB_CTX *libctx, const char *propq,
|
||||
const EC_METHOD *meth);
|
||||
|
||||
#ifdef ECP_NISTZ256_ASM
|
||||
/** Returns GFp methods using montgomery multiplication, with x86-64 optimized
|
||||
@ -617,14 +617,15 @@ const EC_METHOD *EC_GFp_s390x_nistp384_method(void);
|
||||
const EC_METHOD *EC_GFp_s390x_nistp521_method(void);
|
||||
#endif
|
||||
|
||||
size_t ec_key_simple_priv2oct(const EC_KEY *eckey,
|
||||
unsigned char *buf, size_t len);
|
||||
int ec_key_simple_oct2priv(EC_KEY *eckey, const unsigned char *buf, size_t len);
|
||||
int ec_key_simple_generate_key(EC_KEY *eckey);
|
||||
int ec_key_simple_generate_public_key(EC_KEY *eckey);
|
||||
int ec_key_simple_check_key(const EC_KEY *eckey);
|
||||
size_t ossl_ec_key_simple_priv2oct(const EC_KEY *eckey,
|
||||
unsigned char *buf, size_t len);
|
||||
int ossl_ec_key_simple_oct2priv(EC_KEY *eckey, const unsigned char *buf,
|
||||
size_t len);
|
||||
int ossl_ec_key_simple_generate_key(EC_KEY *eckey);
|
||||
int ossl_ec_key_simple_generate_public_key(EC_KEY *eckey);
|
||||
int ossl_ec_key_simple_check_key(const EC_KEY *eckey);
|
||||
|
||||
int ec_curve_nid_from_params(const EC_GROUP *group, BN_CTX *ctx);
|
||||
int ossl_ec_curve_nid_from_params(const EC_GROUP *group, BN_CTX *ctx);
|
||||
|
||||
/* EC_METHOD definitions */
|
||||
|
||||
@ -657,14 +658,14 @@ struct ec_key_method_st {
|
||||
|
||||
#define EC_KEY_METHOD_DYNAMIC 1
|
||||
|
||||
EC_KEY *ec_key_new_method_int(OSSL_LIB_CTX *libctx, const char *propq,
|
||||
ENGINE *engine);
|
||||
EC_KEY *ossl_ec_key_new_method_int(OSSL_LIB_CTX *libctx, const char *propq,
|
||||
ENGINE *engine);
|
||||
|
||||
int ossl_ec_key_gen(EC_KEY *eckey);
|
||||
int ossl_ecdh_compute_key(unsigned char **pout, size_t *poutlen,
|
||||
const EC_POINT *pub_key, const EC_KEY *ecdh);
|
||||
int ecdh_simple_compute_key(unsigned char **pout, size_t *poutlen,
|
||||
const EC_POINT *pub_key, const EC_KEY *ecdh);
|
||||
int ossl_ecdh_simple_compute_key(unsigned char **pout, size_t *poutlen,
|
||||
const EC_POINT *pub_key, const EC_KEY *ecdh);
|
||||
|
||||
struct ECDSA_SIG_st {
|
||||
BIGNUM *r;
|
||||
@ -683,13 +684,13 @@ int ossl_ecdsa_verify(int type, const unsigned char *dgst, int dgst_len,
|
||||
const unsigned char *sigbuf, int sig_len, EC_KEY *eckey);
|
||||
int ossl_ecdsa_verify_sig(const unsigned char *dgst, int dgst_len,
|
||||
const ECDSA_SIG *sig, EC_KEY *eckey);
|
||||
int ecdsa_simple_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp,
|
||||
BIGNUM **rp);
|
||||
ECDSA_SIG *ecdsa_simple_sign_sig(const unsigned char *dgst, int dgst_len,
|
||||
const BIGNUM *in_kinv, const BIGNUM *in_r,
|
||||
EC_KEY *eckey);
|
||||
int ecdsa_simple_verify_sig(const unsigned char *dgst, int dgst_len,
|
||||
const ECDSA_SIG *sig, EC_KEY *eckey);
|
||||
int ossl_ecdsa_simple_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp,
|
||||
BIGNUM **rp);
|
||||
ECDSA_SIG *ossl_ecdsa_simple_sign_sig(const unsigned char *dgst, int dgst_len,
|
||||
const BIGNUM *in_kinv, const BIGNUM *in_r,
|
||||
EC_KEY *eckey);
|
||||
int ossl_ecdsa_simple_verify_sig(const unsigned char *dgst, int dgst_len,
|
||||
const ECDSA_SIG *sig, EC_KEY *eckey);
|
||||
|
||||
|
||||
/*-
|
||||
@ -721,11 +722,12 @@ int ecdsa_simple_verify_sig(const unsigned char *dgst, int dgst_len,
|
||||
*
|
||||
* Returns 1 on success, 0 otherwise.
|
||||
*/
|
||||
int ec_scalar_mul_ladder(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, const EC_POINT *point,
|
||||
BN_CTX *ctx);
|
||||
int ossl_ec_scalar_mul_ladder(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, const EC_POINT *point,
|
||||
BN_CTX *ctx);
|
||||
|
||||
int ec_point_blind_coordinates(const EC_GROUP *group, EC_POINT *p, BN_CTX *ctx);
|
||||
int ossl_ec_point_blind_coordinates(const EC_GROUP *group, EC_POINT *p,
|
||||
BN_CTX *ctx);
|
||||
|
||||
static ossl_inline int ec_point_ladder_pre(const EC_GROUP *group,
|
||||
EC_POINT *r, EC_POINT *s,
|
||||
|
@ -142,9 +142,9 @@ void EC_ec_pre_comp_free(EC_PRE_COMP *pre)
|
||||
*
|
||||
* Returns 1 on success, 0 otherwise.
|
||||
*/
|
||||
int ec_scalar_mul_ladder(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, const EC_POINT *point,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_scalar_mul_ladder(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, const EC_POINT *point,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
int i, cardinality_bits, group_top, kbit, pbit, Z_is_one;
|
||||
EC_POINT *p = NULL;
|
||||
@ -407,9 +407,9 @@ int ec_scalar_mul_ladder(const EC_GROUP *group, EC_POINT *r,
|
||||
* scalar*generator
|
||||
* in the addition if scalar != NULL
|
||||
*/
|
||||
int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
|
||||
size_t num, const EC_POINT *points[], const BIGNUM *scalars[],
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
|
||||
size_t num, const EC_POINT *points[],
|
||||
const BIGNUM *scalars[], BN_CTX *ctx)
|
||||
{
|
||||
const EC_POINT *generator = NULL;
|
||||
EC_POINT *tmp = NULL;
|
||||
@ -450,7 +450,7 @@ int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
|
||||
* is why we ignore if BN_FLG_CONSTTIME is actually set and we
|
||||
* always call the ladder version.
|
||||
*/
|
||||
return ec_scalar_mul_ladder(group, r, scalar, NULL, ctx);
|
||||
return ossl_ec_scalar_mul_ladder(group, r, scalar, NULL, ctx);
|
||||
}
|
||||
if ((scalar == NULL) && (num == 1) && (scalars[0] != group->order)) {
|
||||
/*-
|
||||
@ -460,7 +460,8 @@ int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
|
||||
* To protect the secret scalar, we ignore if BN_FLG_CONSTTIME is
|
||||
* actually set and we always call the ladder version.
|
||||
*/
|
||||
return ec_scalar_mul_ladder(group, r, scalars[0], points[0], ctx);
|
||||
return ossl_ec_scalar_mul_ladder(group, r, scalars[0], points[0],
|
||||
ctx);
|
||||
}
|
||||
}
|
||||
|
||||
@ -753,11 +754,11 @@ int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
|
||||
* Apply coordinate blinding for EC_POINT.
|
||||
*
|
||||
* The underlying EC_METHOD can optionally implement this function:
|
||||
* ec_point_blind_coordinates() returns 0 in case of errors or 1 on
|
||||
* ossl_ec_point_blind_coordinates() returns 0 in case of errors or 1 on
|
||||
* success or if coordinate blinding is not implemented for this
|
||||
* group.
|
||||
*/
|
||||
if (!ec_point_blind_coordinates(group, r, ctx)) {
|
||||
if (!ossl_ec_point_blind_coordinates(group, r, ctx)) {
|
||||
ERR_raise(ERR_LIB_EC, EC_R_POINT_COORDINATES_BLIND_FAILURE);
|
||||
goto err;
|
||||
}
|
||||
@ -807,9 +808,9 @@ int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
|
||||
}
|
||||
|
||||
/*-
|
||||
* ec_wNAF_precompute_mult()
|
||||
* ossl_ec_wNAF_precompute_mult()
|
||||
* creates an EC_PRE_COMP object with preprecomputed multiples of the generator
|
||||
* for use with wNAF splitting as implemented in ec_wNAF_mul().
|
||||
* for use with wNAF splitting as implemented in ossl_ec_wNAF_mul().
|
||||
*
|
||||
* 'pre_comp->points' is an array of multiples of the generator
|
||||
* of the following form:
|
||||
@ -826,7 +827,7 @@ int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
|
||||
* points[2^(w-1)*numblocks-1] = (2^(w-1)) * 2^(blocksize*(numblocks-1)) * generator
|
||||
* points[2^(w-1)*numblocks] = NULL
|
||||
*/
|
||||
int ec_wNAF_precompute_mult(EC_GROUP *group, BN_CTX *ctx)
|
||||
int ossl_ec_wNAF_precompute_mult(EC_GROUP *group, BN_CTX *ctx)
|
||||
{
|
||||
const EC_POINT *generator;
|
||||
EC_POINT *tmp_point = NULL, *base = NULL, **var;
|
||||
@ -987,7 +988,7 @@ int ec_wNAF_precompute_mult(EC_GROUP *group, BN_CTX *ctx)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_wNAF_have_precompute_mult(const EC_GROUP *group)
|
||||
int ossl_ec_wNAF_have_precompute_mult(const EC_GROUP *group)
|
||||
{
|
||||
return HAVEPRECOMP(group, ec);
|
||||
}
|
||||
|
@ -35,8 +35,8 @@ int EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *point,
|
||||
}
|
||||
if (group->meth->flags & EC_FLAGS_DEFAULT_OCT) {
|
||||
if (group->meth->field_type == NID_X9_62_prime_field)
|
||||
return ec_GFp_simple_set_compressed_coordinates(group, point, x,
|
||||
y_bit, ctx);
|
||||
return ossl_ec_GFp_simple_set_compressed_coordinates(group, point, x,
|
||||
y_bit, ctx);
|
||||
else
|
||||
#ifdef OPENSSL_NO_EC2M
|
||||
{
|
||||
@ -44,8 +44,8 @@ int EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *point,
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
return ec_GF2m_simple_set_compressed_coordinates(group, point, x,
|
||||
y_bit, ctx);
|
||||
return ossl_ec_GF2m_simple_set_compressed_coordinates(group, point,
|
||||
x, y_bit, ctx);
|
||||
#endif
|
||||
}
|
||||
return group->meth->point_set_compressed_coordinates(group, point, x,
|
||||
@ -85,7 +85,8 @@ size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *point,
|
||||
}
|
||||
if (group->meth->flags & EC_FLAGS_DEFAULT_OCT) {
|
||||
if (group->meth->field_type == NID_X9_62_prime_field)
|
||||
return ec_GFp_simple_point2oct(group, point, form, buf, len, ctx);
|
||||
return ossl_ec_GFp_simple_point2oct(group, point, form, buf, len,
|
||||
ctx);
|
||||
else
|
||||
#ifdef OPENSSL_NO_EC2M
|
||||
{
|
||||
@ -93,8 +94,8 @@ size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *point,
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
return ec_GF2m_simple_point2oct(group, point,
|
||||
form, buf, len, ctx);
|
||||
return ossl_ec_GF2m_simple_point2oct(group, point,
|
||||
form, buf, len, ctx);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -115,7 +116,7 @@ int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *point,
|
||||
}
|
||||
if (group->meth->flags & EC_FLAGS_DEFAULT_OCT) {
|
||||
if (group->meth->field_type == NID_X9_62_prime_field)
|
||||
return ec_GFp_simple_oct2point(group, point, buf, len, ctx);
|
||||
return ossl_ec_GFp_simple_oct2point(group, point, buf, len, ctx);
|
||||
else
|
||||
#ifdef OPENSSL_NO_EC2M
|
||||
{
|
||||
@ -123,7 +124,7 @@ int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *point,
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
return ec_GF2m_simple_oct2point(group, point, buf, len, ctx);
|
||||
return ossl_ec_GF2m_simple_oct2point(group, point, buf, len, ctx);
|
||||
#endif
|
||||
}
|
||||
return group->meth->oct2point(group, point, buf, len, ctx);
|
||||
|
@ -218,9 +218,9 @@ static int pkey_ec_kdf_derive(EVP_PKEY_CTX *ctx,
|
||||
if (!pkey_ec_derive(ctx, ktmp, &ktmplen))
|
||||
goto err;
|
||||
/* Do KDF stuff */
|
||||
if (!ecdh_KDF_X9_63(key, *keylen, ktmp, ktmplen,
|
||||
dctx->kdf_ukm, dctx->kdf_ukmlen, dctx->kdf_md,
|
||||
ctx->libctx, ctx->propquery))
|
||||
if (!ossl_ecdh_kdf_X9_63(key, *keylen, ktmp, ktmplen,
|
||||
dctx->kdf_ukm, dctx->kdf_ukmlen, dctx->kdf_md,
|
||||
ctx->libctx, ctx->propquery))
|
||||
goto err;
|
||||
rv = 1;
|
||||
|
||||
@ -486,7 +486,7 @@ static const EVP_PKEY_METHOD ec_pkey_meth = {
|
||||
pkey_ec_ctrl_str
|
||||
};
|
||||
|
||||
const EVP_PKEY_METHOD *ec_pkey_method(void)
|
||||
const EVP_PKEY_METHOD *ossl_ec_pkey_method(void)
|
||||
{
|
||||
return &ec_pkey_meth;
|
||||
}
|
||||
|
@ -21,11 +21,11 @@
|
||||
#include "ec_local.h"
|
||||
|
||||
/* Key derivation function from X9.63/SECG */
|
||||
int ecdh_KDF_X9_63(unsigned char *out, size_t outlen,
|
||||
const unsigned char *Z, size_t Zlen,
|
||||
const unsigned char *sinfo, size_t sinfolen,
|
||||
const EVP_MD *md,
|
||||
OSSL_LIB_CTX *libctx, const char *propq)
|
||||
int ossl_ecdh_kdf_X9_63(unsigned char *out, size_t outlen,
|
||||
const unsigned char *Z, size_t Zlen,
|
||||
const unsigned char *sinfo, size_t sinfolen,
|
||||
const EVP_MD *md,
|
||||
OSSL_LIB_CTX *libctx, const char *propq)
|
||||
{
|
||||
int ret = 0;
|
||||
EVP_KDF_CTX *kctx = NULL;
|
||||
@ -60,6 +60,7 @@ int ECDH_KDF_X9_62(unsigned char *out, size_t outlen,
|
||||
const unsigned char *sinfo, size_t sinfolen,
|
||||
const EVP_MD *md)
|
||||
{
|
||||
return ecdh_KDF_X9_63(out, outlen, Z, Zlen, sinfo, sinfolen, md, NULL, NULL);
|
||||
return ossl_ecdh_kdf_X9_63(out, outlen, Z, Zlen, sinfo, sinfolen, md, NULL,
|
||||
NULL);
|
||||
}
|
||||
#endif
|
||||
|
@ -46,8 +46,8 @@ int ossl_ecdh_compute_key(unsigned char **psec, size_t *pseclen,
|
||||
* See Section 5.7.1.2 "Elliptic Curve Cryptography Cofactor Diffie-Hellman
|
||||
* (ECC CDH) Primitive:". The steps listed below refer to SP800-56A.
|
||||
*/
|
||||
int ecdh_simple_compute_key(unsigned char **pout, size_t *poutlen,
|
||||
const EC_POINT *pub_key, const EC_KEY *ecdh)
|
||||
int ossl_ecdh_simple_compute_key(unsigned char **pout, size_t *poutlen,
|
||||
const EC_POINT *pub_key, const EC_KEY *ecdh)
|
||||
{
|
||||
BN_CTX *ctx;
|
||||
EC_POINT *tmp = NULL;
|
||||
|
@ -160,7 +160,7 @@ static int ecdsa_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in,
|
||||
} while (BN_is_zero(r));
|
||||
|
||||
/* compute the inverse of k */
|
||||
if (!ec_group_do_inverse_ord(group, k, k, ctx)) {
|
||||
if (!ossl_ec_group_do_inverse_ord(group, k, k, ctx)) {
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_BN_LIB);
|
||||
goto err;
|
||||
}
|
||||
@ -184,15 +184,15 @@ static int ecdsa_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ecdsa_simple_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp,
|
||||
BIGNUM **rp)
|
||||
int ossl_ecdsa_simple_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp,
|
||||
BIGNUM **rp)
|
||||
{
|
||||
return ecdsa_sign_setup(eckey, ctx_in, kinvp, rp, NULL, 0);
|
||||
}
|
||||
|
||||
ECDSA_SIG *ecdsa_simple_sign_sig(const unsigned char *dgst, int dgst_len,
|
||||
const BIGNUM *in_kinv, const BIGNUM *in_r,
|
||||
EC_KEY *eckey)
|
||||
ECDSA_SIG *ossl_ecdsa_simple_sign_sig(const unsigned char *dgst, int dgst_len,
|
||||
const BIGNUM *in_kinv, const BIGNUM *in_r,
|
||||
EC_KEY *eckey)
|
||||
{
|
||||
int ok = 0, i;
|
||||
BIGNUM *kinv = NULL, *s, *m = NULL;
|
||||
@ -353,8 +353,8 @@ int ossl_ecdsa_verify(int type, const unsigned char *dgst, int dgst_len,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ecdsa_simple_verify_sig(const unsigned char *dgst, int dgst_len,
|
||||
const ECDSA_SIG *sig, EC_KEY *eckey)
|
||||
int ossl_ecdsa_simple_verify_sig(const unsigned char *dgst, int dgst_len,
|
||||
const ECDSA_SIG *sig, EC_KEY *eckey)
|
||||
{
|
||||
int ret = -1, i;
|
||||
BN_CTX *ctx;
|
||||
@ -405,7 +405,7 @@ int ecdsa_simple_verify_sig(const unsigned char *dgst, int dgst_len,
|
||||
goto err;
|
||||
}
|
||||
/* calculate tmp1 = inv(S) mod order */
|
||||
if (!ec_group_do_inverse_ord(group, u2, sig->s, ctx)) {
|
||||
if (!ossl_ec_group_do_inverse_ord(group, u2, sig->s, ctx)) {
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_BN_LIB);
|
||||
goto err;
|
||||
}
|
||||
|
@ -23,99 +23,99 @@ const EC_METHOD *EC_GFp_mont_method(void)
|
||||
static const EC_METHOD ret = {
|
||||
EC_FLAGS_DEFAULT_OCT,
|
||||
NID_X9_62_prime_field,
|
||||
ec_GFp_mont_group_init,
|
||||
ec_GFp_mont_group_finish,
|
||||
ec_GFp_mont_group_clear_finish,
|
||||
ec_GFp_mont_group_copy,
|
||||
ec_GFp_mont_group_set_curve,
|
||||
ec_GFp_simple_group_get_curve,
|
||||
ec_GFp_simple_group_get_degree,
|
||||
ec_group_simple_order_bits,
|
||||
ec_GFp_simple_group_check_discriminant,
|
||||
ec_GFp_simple_point_init,
|
||||
ec_GFp_simple_point_finish,
|
||||
ec_GFp_simple_point_clear_finish,
|
||||
ec_GFp_simple_point_copy,
|
||||
ec_GFp_simple_point_set_to_infinity,
|
||||
ec_GFp_simple_point_set_affine_coordinates,
|
||||
ec_GFp_simple_point_get_affine_coordinates,
|
||||
ossl_ec_GFp_mont_group_init,
|
||||
ossl_ec_GFp_mont_group_finish,
|
||||
ossl_ec_GFp_mont_group_clear_finish,
|
||||
ossl_ec_GFp_mont_group_copy,
|
||||
ossl_ec_GFp_mont_group_set_curve,
|
||||
ossl_ec_GFp_simple_group_get_curve,
|
||||
ossl_ec_GFp_simple_group_get_degree,
|
||||
ossl_ec_group_simple_order_bits,
|
||||
ossl_ec_GFp_simple_group_check_discriminant,
|
||||
ossl_ec_GFp_simple_point_init,
|
||||
ossl_ec_GFp_simple_point_finish,
|
||||
ossl_ec_GFp_simple_point_clear_finish,
|
||||
ossl_ec_GFp_simple_point_copy,
|
||||
ossl_ec_GFp_simple_point_set_to_infinity,
|
||||
ossl_ec_GFp_simple_point_set_affine_coordinates,
|
||||
ossl_ec_GFp_simple_point_get_affine_coordinates,
|
||||
0, 0, 0,
|
||||
ec_GFp_simple_add,
|
||||
ec_GFp_simple_dbl,
|
||||
ec_GFp_simple_invert,
|
||||
ec_GFp_simple_is_at_infinity,
|
||||
ec_GFp_simple_is_on_curve,
|
||||
ec_GFp_simple_cmp,
|
||||
ec_GFp_simple_make_affine,
|
||||
ec_GFp_simple_points_make_affine,
|
||||
ossl_ec_GFp_simple_add,
|
||||
ossl_ec_GFp_simple_dbl,
|
||||
ossl_ec_GFp_simple_invert,
|
||||
ossl_ec_GFp_simple_is_at_infinity,
|
||||
ossl_ec_GFp_simple_is_on_curve,
|
||||
ossl_ec_GFp_simple_cmp,
|
||||
ossl_ec_GFp_simple_make_affine,
|
||||
ossl_ec_GFp_simple_points_make_affine,
|
||||
0 /* mul */ ,
|
||||
0 /* precompute_mult */ ,
|
||||
0 /* have_precompute_mult */ ,
|
||||
ec_GFp_mont_field_mul,
|
||||
ec_GFp_mont_field_sqr,
|
||||
ossl_ec_GFp_mont_field_mul,
|
||||
ossl_ec_GFp_mont_field_sqr,
|
||||
0 /* field_div */ ,
|
||||
ec_GFp_mont_field_inv,
|
||||
ec_GFp_mont_field_encode,
|
||||
ec_GFp_mont_field_decode,
|
||||
ec_GFp_mont_field_set_to_one,
|
||||
ec_key_simple_priv2oct,
|
||||
ec_key_simple_oct2priv,
|
||||
ossl_ec_GFp_mont_field_inv,
|
||||
ossl_ec_GFp_mont_field_encode,
|
||||
ossl_ec_GFp_mont_field_decode,
|
||||
ossl_ec_GFp_mont_field_set_to_one,
|
||||
ossl_ec_key_simple_priv2oct,
|
||||
ossl_ec_key_simple_oct2priv,
|
||||
0, /* set private */
|
||||
ec_key_simple_generate_key,
|
||||
ec_key_simple_check_key,
|
||||
ec_key_simple_generate_public_key,
|
||||
ossl_ec_key_simple_generate_key,
|
||||
ossl_ec_key_simple_check_key,
|
||||
ossl_ec_key_simple_generate_public_key,
|
||||
0, /* keycopy */
|
||||
0, /* keyfinish */
|
||||
ecdh_simple_compute_key,
|
||||
ecdsa_simple_sign_setup,
|
||||
ecdsa_simple_sign_sig,
|
||||
ecdsa_simple_verify_sig,
|
||||
ossl_ecdh_simple_compute_key,
|
||||
ossl_ecdsa_simple_sign_setup,
|
||||
ossl_ecdsa_simple_sign_sig,
|
||||
ossl_ecdsa_simple_verify_sig,
|
||||
0, /* field_inverse_mod_ord */
|
||||
ec_GFp_simple_blind_coordinates,
|
||||
ec_GFp_simple_ladder_pre,
|
||||
ec_GFp_simple_ladder_step,
|
||||
ec_GFp_simple_ladder_post
|
||||
ossl_ec_GFp_simple_blind_coordinates,
|
||||
ossl_ec_GFp_simple_ladder_pre,
|
||||
ossl_ec_GFp_simple_ladder_step,
|
||||
ossl_ec_GFp_simple_ladder_post
|
||||
};
|
||||
|
||||
return &ret;
|
||||
}
|
||||
|
||||
int ec_GFp_mont_group_init(EC_GROUP *group)
|
||||
int ossl_ec_GFp_mont_group_init(EC_GROUP *group)
|
||||
{
|
||||
int ok;
|
||||
|
||||
ok = ec_GFp_simple_group_init(group);
|
||||
ok = ossl_ec_GFp_simple_group_init(group);
|
||||
group->field_data1 = NULL;
|
||||
group->field_data2 = NULL;
|
||||
return ok;
|
||||
}
|
||||
|
||||
void ec_GFp_mont_group_finish(EC_GROUP *group)
|
||||
void ossl_ec_GFp_mont_group_finish(EC_GROUP *group)
|
||||
{
|
||||
BN_MONT_CTX_free(group->field_data1);
|
||||
group->field_data1 = NULL;
|
||||
BN_free(group->field_data2);
|
||||
group->field_data2 = NULL;
|
||||
ec_GFp_simple_group_finish(group);
|
||||
ossl_ec_GFp_simple_group_finish(group);
|
||||
}
|
||||
|
||||
void ec_GFp_mont_group_clear_finish(EC_GROUP *group)
|
||||
void ossl_ec_GFp_mont_group_clear_finish(EC_GROUP *group)
|
||||
{
|
||||
BN_MONT_CTX_free(group->field_data1);
|
||||
group->field_data1 = NULL;
|
||||
BN_clear_free(group->field_data2);
|
||||
group->field_data2 = NULL;
|
||||
ec_GFp_simple_group_clear_finish(group);
|
||||
ossl_ec_GFp_simple_group_clear_finish(group);
|
||||
}
|
||||
|
||||
int ec_GFp_mont_group_copy(EC_GROUP *dest, const EC_GROUP *src)
|
||||
int ossl_ec_GFp_mont_group_copy(EC_GROUP *dest, const EC_GROUP *src)
|
||||
{
|
||||
BN_MONT_CTX_free(dest->field_data1);
|
||||
dest->field_data1 = NULL;
|
||||
BN_clear_free(dest->field_data2);
|
||||
dest->field_data2 = NULL;
|
||||
|
||||
if (!ec_GFp_simple_group_copy(dest, src))
|
||||
if (!ossl_ec_GFp_simple_group_copy(dest, src))
|
||||
return 0;
|
||||
|
||||
if (src->field_data1 != NULL) {
|
||||
@ -139,8 +139,9 @@ int ec_GFp_mont_group_copy(EC_GROUP *dest, const EC_GROUP *src)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ec_GFp_mont_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_mont_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *b,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
BN_CTX *new_ctx = NULL;
|
||||
BN_MONT_CTX *mont = NULL;
|
||||
@ -176,7 +177,7 @@ int ec_GFp_mont_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
group->field_data2 = one;
|
||||
one = NULL;
|
||||
|
||||
ret = ec_GFp_simple_group_set_curve(group, p, a, b, ctx);
|
||||
ret = ossl_ec_GFp_simple_group_set_curve(group, p, a, b, ctx);
|
||||
|
||||
if (!ret) {
|
||||
BN_MONT_CTX_free(group->field_data1);
|
||||
@ -192,8 +193,8 @@ int ec_GFp_mont_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_mont_field_mul(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_mont_field_mul(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *ctx)
|
||||
{
|
||||
if (group->field_data1 == NULL) {
|
||||
ERR_raise(ERR_LIB_EC, EC_R_NOT_INITIALIZED);
|
||||
@ -203,8 +204,8 @@ int ec_GFp_mont_field_mul(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
return BN_mod_mul_montgomery(r, a, b, group->field_data1, ctx);
|
||||
}
|
||||
|
||||
int ec_GFp_mont_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_mont_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
if (group->field_data1 == NULL) {
|
||||
ERR_raise(ERR_LIB_EC, EC_R_NOT_INITIALIZED);
|
||||
@ -219,8 +220,8 @@ int ec_GFp_mont_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
* If a is zero (or equivalent), you'll get a EC_R_CANNOT_INVERT error.
|
||||
* We have a Mont structure, so SCA hardening is FLT inversion.
|
||||
*/
|
||||
int ec_GFp_mont_field_inv(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_mont_field_inv(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
BIGNUM *e = NULL;
|
||||
BN_CTX *new_ctx = NULL;
|
||||
@ -263,8 +264,8 @@ int ec_GFp_mont_field_inv(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_mont_field_encode(const EC_GROUP *group, BIGNUM *r,
|
||||
const BIGNUM *a, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_mont_field_encode(const EC_GROUP *group, BIGNUM *r,
|
||||
const BIGNUM *a, BN_CTX *ctx)
|
||||
{
|
||||
if (group->field_data1 == NULL) {
|
||||
ERR_raise(ERR_LIB_EC, EC_R_NOT_INITIALIZED);
|
||||
@ -274,8 +275,8 @@ int ec_GFp_mont_field_encode(const EC_GROUP *group, BIGNUM *r,
|
||||
return BN_to_montgomery(r, a, (BN_MONT_CTX *)group->field_data1, ctx);
|
||||
}
|
||||
|
||||
int ec_GFp_mont_field_decode(const EC_GROUP *group, BIGNUM *r,
|
||||
const BIGNUM *a, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_mont_field_decode(const EC_GROUP *group, BIGNUM *r,
|
||||
const BIGNUM *a, BN_CTX *ctx)
|
||||
{
|
||||
if (group->field_data1 == NULL) {
|
||||
ERR_raise(ERR_LIB_EC, EC_R_NOT_INITIALIZED);
|
||||
@ -285,8 +286,8 @@ int ec_GFp_mont_field_decode(const EC_GROUP *group, BIGNUM *r,
|
||||
return BN_from_montgomery(r, a, group->field_data1, ctx);
|
||||
}
|
||||
|
||||
int ec_GFp_mont_field_set_to_one(const EC_GROUP *group, BIGNUM *r,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_mont_field_set_to_one(const EC_GROUP *group, BIGNUM *r,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
if (group->field_data2 == NULL) {
|
||||
ERR_raise(ERR_LIB_EC, EC_R_NOT_INITIALIZED);
|
||||
|
@ -25,72 +25,73 @@ const EC_METHOD *EC_GFp_nist_method(void)
|
||||
static const EC_METHOD ret = {
|
||||
EC_FLAGS_DEFAULT_OCT,
|
||||
NID_X9_62_prime_field,
|
||||
ec_GFp_simple_group_init,
|
||||
ec_GFp_simple_group_finish,
|
||||
ec_GFp_simple_group_clear_finish,
|
||||
ec_GFp_nist_group_copy,
|
||||
ec_GFp_nist_group_set_curve,
|
||||
ec_GFp_simple_group_get_curve,
|
||||
ec_GFp_simple_group_get_degree,
|
||||
ec_group_simple_order_bits,
|
||||
ec_GFp_simple_group_check_discriminant,
|
||||
ec_GFp_simple_point_init,
|
||||
ec_GFp_simple_point_finish,
|
||||
ec_GFp_simple_point_clear_finish,
|
||||
ec_GFp_simple_point_copy,
|
||||
ec_GFp_simple_point_set_to_infinity,
|
||||
ec_GFp_simple_point_set_affine_coordinates,
|
||||
ec_GFp_simple_point_get_affine_coordinates,
|
||||
ossl_ec_GFp_simple_group_init,
|
||||
ossl_ec_GFp_simple_group_finish,
|
||||
ossl_ec_GFp_simple_group_clear_finish,
|
||||
ossl_ec_GFp_nist_group_copy,
|
||||
ossl_ec_GFp_nist_group_set_curve,
|
||||
ossl_ec_GFp_simple_group_get_curve,
|
||||
ossl_ec_GFp_simple_group_get_degree,
|
||||
ossl_ec_group_simple_order_bits,
|
||||
ossl_ec_GFp_simple_group_check_discriminant,
|
||||
ossl_ec_GFp_simple_point_init,
|
||||
ossl_ec_GFp_simple_point_finish,
|
||||
ossl_ec_GFp_simple_point_clear_finish,
|
||||
ossl_ec_GFp_simple_point_copy,
|
||||
ossl_ec_GFp_simple_point_set_to_infinity,
|
||||
ossl_ec_GFp_simple_point_set_affine_coordinates,
|
||||
ossl_ec_GFp_simple_point_get_affine_coordinates,
|
||||
0, 0, 0,
|
||||
ec_GFp_simple_add,
|
||||
ec_GFp_simple_dbl,
|
||||
ec_GFp_simple_invert,
|
||||
ec_GFp_simple_is_at_infinity,
|
||||
ec_GFp_simple_is_on_curve,
|
||||
ec_GFp_simple_cmp,
|
||||
ec_GFp_simple_make_affine,
|
||||
ec_GFp_simple_points_make_affine,
|
||||
ossl_ec_GFp_simple_add,
|
||||
ossl_ec_GFp_simple_dbl,
|
||||
ossl_ec_GFp_simple_invert,
|
||||
ossl_ec_GFp_simple_is_at_infinity,
|
||||
ossl_ec_GFp_simple_is_on_curve,
|
||||
ossl_ec_GFp_simple_cmp,
|
||||
ossl_ec_GFp_simple_make_affine,
|
||||
ossl_ec_GFp_simple_points_make_affine,
|
||||
0 /* mul */ ,
|
||||
0 /* precompute_mult */ ,
|
||||
0 /* have_precompute_mult */ ,
|
||||
ec_GFp_nist_field_mul,
|
||||
ec_GFp_nist_field_sqr,
|
||||
ossl_ec_GFp_nist_field_mul,
|
||||
ossl_ec_GFp_nist_field_sqr,
|
||||
0 /* field_div */ ,
|
||||
ec_GFp_simple_field_inv,
|
||||
ossl_ec_GFp_simple_field_inv,
|
||||
0 /* field_encode */ ,
|
||||
0 /* field_decode */ ,
|
||||
0, /* field_set_to_one */
|
||||
ec_key_simple_priv2oct,
|
||||
ec_key_simple_oct2priv,
|
||||
ossl_ec_key_simple_priv2oct,
|
||||
ossl_ec_key_simple_oct2priv,
|
||||
0, /* set private */
|
||||
ec_key_simple_generate_key,
|
||||
ec_key_simple_check_key,
|
||||
ec_key_simple_generate_public_key,
|
||||
ossl_ec_key_simple_generate_key,
|
||||
ossl_ec_key_simple_check_key,
|
||||
ossl_ec_key_simple_generate_public_key,
|
||||
0, /* keycopy */
|
||||
0, /* keyfinish */
|
||||
ecdh_simple_compute_key,
|
||||
ecdsa_simple_sign_setup,
|
||||
ecdsa_simple_sign_sig,
|
||||
ecdsa_simple_verify_sig,
|
||||
ossl_ecdh_simple_compute_key,
|
||||
ossl_ecdsa_simple_sign_setup,
|
||||
ossl_ecdsa_simple_sign_sig,
|
||||
ossl_ecdsa_simple_verify_sig,
|
||||
0, /* field_inverse_mod_ord */
|
||||
ec_GFp_simple_blind_coordinates,
|
||||
ec_GFp_simple_ladder_pre,
|
||||
ec_GFp_simple_ladder_step,
|
||||
ec_GFp_simple_ladder_post
|
||||
ossl_ec_GFp_simple_blind_coordinates,
|
||||
ossl_ec_GFp_simple_ladder_pre,
|
||||
ossl_ec_GFp_simple_ladder_step,
|
||||
ossl_ec_GFp_simple_ladder_post
|
||||
};
|
||||
|
||||
return &ret;
|
||||
}
|
||||
|
||||
int ec_GFp_nist_group_copy(EC_GROUP *dest, const EC_GROUP *src)
|
||||
int ossl_ec_GFp_nist_group_copy(EC_GROUP *dest, const EC_GROUP *src)
|
||||
{
|
||||
dest->field_mod_func = src->field_mod_func;
|
||||
|
||||
return ec_GFp_simple_group_copy(dest, src);
|
||||
return ossl_ec_GFp_simple_group_copy(dest, src);
|
||||
}
|
||||
|
||||
int ec_GFp_nist_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_nist_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *b,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
BN_CTX *new_ctx = NULL;
|
||||
@ -116,7 +117,7 @@ int ec_GFp_nist_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
goto err;
|
||||
}
|
||||
|
||||
ret = ec_GFp_simple_group_set_curve(group, p, a, b, ctx);
|
||||
ret = ossl_ec_GFp_simple_group_set_curve(group, p, a, b, ctx);
|
||||
|
||||
err:
|
||||
BN_CTX_end(ctx);
|
||||
@ -124,8 +125,8 @@ int ec_GFp_nist_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_nist_field_mul(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_nist_field_mul(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
BN_CTX *ctx_new = NULL;
|
||||
@ -149,8 +150,8 @@ int ec_GFp_nist_field_mul(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_nist_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_nist_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
BN_CTX *ctx_new = NULL;
|
||||
|
@ -248,55 +248,55 @@ const EC_METHOD *EC_GFp_nistp224_method(void)
|
||||
static const EC_METHOD ret = {
|
||||
EC_FLAGS_DEFAULT_OCT,
|
||||
NID_X9_62_prime_field,
|
||||
ec_GFp_nistp224_group_init,
|
||||
ec_GFp_simple_group_finish,
|
||||
ec_GFp_simple_group_clear_finish,
|
||||
ec_GFp_nist_group_copy,
|
||||
ec_GFp_nistp224_group_set_curve,
|
||||
ec_GFp_simple_group_get_curve,
|
||||
ec_GFp_simple_group_get_degree,
|
||||
ec_group_simple_order_bits,
|
||||
ec_GFp_simple_group_check_discriminant,
|
||||
ec_GFp_simple_point_init,
|
||||
ec_GFp_simple_point_finish,
|
||||
ec_GFp_simple_point_clear_finish,
|
||||
ec_GFp_simple_point_copy,
|
||||
ec_GFp_simple_point_set_to_infinity,
|
||||
ec_GFp_simple_point_set_affine_coordinates,
|
||||
ec_GFp_nistp224_point_get_affine_coordinates,
|
||||
ossl_ec_GFp_nistp224_group_init,
|
||||
ossl_ec_GFp_simple_group_finish,
|
||||
ossl_ec_GFp_simple_group_clear_finish,
|
||||
ossl_ec_GFp_nist_group_copy,
|
||||
ossl_ec_GFp_nistp224_group_set_curve,
|
||||
ossl_ec_GFp_simple_group_get_curve,
|
||||
ossl_ec_GFp_simple_group_get_degree,
|
||||
ossl_ec_group_simple_order_bits,
|
||||
ossl_ec_GFp_simple_group_check_discriminant,
|
||||
ossl_ec_GFp_simple_point_init,
|
||||
ossl_ec_GFp_simple_point_finish,
|
||||
ossl_ec_GFp_simple_point_clear_finish,
|
||||
ossl_ec_GFp_simple_point_copy,
|
||||
ossl_ec_GFp_simple_point_set_to_infinity,
|
||||
ossl_ec_GFp_simple_point_set_affine_coordinates,
|
||||
ossl_ec_GFp_nistp224_point_get_affine_coordinates,
|
||||
0 /* point_set_compressed_coordinates */ ,
|
||||
0 /* point2oct */ ,
|
||||
0 /* oct2point */ ,
|
||||
ec_GFp_simple_add,
|
||||
ec_GFp_simple_dbl,
|
||||
ec_GFp_simple_invert,
|
||||
ec_GFp_simple_is_at_infinity,
|
||||
ec_GFp_simple_is_on_curve,
|
||||
ec_GFp_simple_cmp,
|
||||
ec_GFp_simple_make_affine,
|
||||
ec_GFp_simple_points_make_affine,
|
||||
ec_GFp_nistp224_points_mul,
|
||||
ec_GFp_nistp224_precompute_mult,
|
||||
ec_GFp_nistp224_have_precompute_mult,
|
||||
ec_GFp_nist_field_mul,
|
||||
ec_GFp_nist_field_sqr,
|
||||
ossl_ec_GFp_simple_add,
|
||||
ossl_ec_GFp_simple_dbl,
|
||||
ossl_ec_GFp_simple_invert,
|
||||
ossl_ec_GFp_simple_is_at_infinity,
|
||||
ossl_ec_GFp_simple_is_on_curve,
|
||||
ossl_ec_GFp_simple_cmp,
|
||||
ossl_ec_GFp_simple_make_affine,
|
||||
ossl_ec_GFp_simple_points_make_affine,
|
||||
ossl_ec_GFp_nistp224_points_mul,
|
||||
ossl_ec_GFp_nistp224_precompute_mult,
|
||||
ossl_ec_GFp_nistp224_have_precompute_mult,
|
||||
ossl_ec_GFp_nist_field_mul,
|
||||
ossl_ec_GFp_nist_field_sqr,
|
||||
0 /* field_div */ ,
|
||||
ec_GFp_simple_field_inv,
|
||||
ossl_ec_GFp_simple_field_inv,
|
||||
0 /* field_encode */ ,
|
||||
0 /* field_decode */ ,
|
||||
0, /* field_set_to_one */
|
||||
ec_key_simple_priv2oct,
|
||||
ec_key_simple_oct2priv,
|
||||
ossl_ec_key_simple_priv2oct,
|
||||
ossl_ec_key_simple_oct2priv,
|
||||
0, /* set private */
|
||||
ec_key_simple_generate_key,
|
||||
ec_key_simple_check_key,
|
||||
ec_key_simple_generate_public_key,
|
||||
ossl_ec_key_simple_generate_key,
|
||||
ossl_ec_key_simple_check_key,
|
||||
ossl_ec_key_simple_generate_public_key,
|
||||
0, /* keycopy */
|
||||
0, /* keyfinish */
|
||||
ecdh_simple_compute_key,
|
||||
ecdsa_simple_sign_setup,
|
||||
ecdsa_simple_sign_sig,
|
||||
ecdsa_simple_verify_sig,
|
||||
ossl_ecdh_simple_compute_key,
|
||||
ossl_ecdsa_simple_sign_setup,
|
||||
ossl_ecdsa_simple_sign_sig,
|
||||
ossl_ecdsa_simple_verify_sig,
|
||||
0, /* field_inverse_mod_ord */
|
||||
0, /* blind_coordinates */
|
||||
0, /* ladder_pre */
|
||||
@ -1207,7 +1207,7 @@ static void batch_mul(felem x_out, felem y_out, felem z_out,
|
||||
bits |= get_bit(scalars[num], i + 1) << 2;
|
||||
bits |= get_bit(scalars[num], i) << 1;
|
||||
bits |= get_bit(scalars[num], i - 1);
|
||||
ec_GFp_nistp_recode_scalar_bits(&sign, &digit, bits);
|
||||
ossl_ec_GFp_nistp_recode_scalar_bits(&sign, &digit, bits);
|
||||
|
||||
/* select the point to add or subtract */
|
||||
select_point(digit, 17, pre_comp[num], tmp);
|
||||
@ -1286,17 +1286,17 @@ void EC_nistp224_pre_comp_free(NISTP224_PRE_COMP *p)
|
||||
* OPENSSL EC_METHOD FUNCTIONS
|
||||
*/
|
||||
|
||||
int ec_GFp_nistp224_group_init(EC_GROUP *group)
|
||||
int ossl_ec_GFp_nistp224_group_init(EC_GROUP *group)
|
||||
{
|
||||
int ret;
|
||||
ret = ec_GFp_simple_group_init(group);
|
||||
ret = ossl_ec_GFp_simple_group_init(group);
|
||||
group->a_is_minus3 = 1;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_nistp224_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *b,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_nistp224_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *b,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
BIGNUM *curve_p, *curve_a, *curve_b;
|
||||
@ -1323,7 +1323,7 @@ int ec_GFp_nistp224_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
goto err;
|
||||
}
|
||||
group->field_mod_func = BN_nist_mod_224;
|
||||
ret = ec_GFp_simple_group_set_curve(group, p, a, b, ctx);
|
||||
ret = ossl_ec_GFp_simple_group_set_curve(group, p, a, b, ctx);
|
||||
err:
|
||||
BN_CTX_end(ctx);
|
||||
#ifndef FIPS_MODULE
|
||||
@ -1336,10 +1336,10 @@ int ec_GFp_nistp224_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
* Takes the Jacobian coordinates (X, Y, Z) of a point and returns (X', Y') =
|
||||
* (X/Z^2, Y/Z^3)
|
||||
*/
|
||||
int ec_GFp_nistp224_point_get_affine_coordinates(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
BIGNUM *x, BIGNUM *y,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_nistp224_point_get_affine_coordinates(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
BIGNUM *x, BIGNUM *y,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
felem z1, z2, x_in, y_in, x_out, y_out;
|
||||
widefelem tmp;
|
||||
@ -1384,36 +1384,36 @@ static void make_points_affine(size_t num, felem points[ /* num */ ][3],
|
||||
* Runs in constant time, unless an input is the point at infinity (which
|
||||
* normally shouldn't happen).
|
||||
*/
|
||||
ec_GFp_nistp_points_make_affine_internal(num,
|
||||
points,
|
||||
sizeof(felem),
|
||||
tmp_felems,
|
||||
(void (*)(void *))felem_one,
|
||||
felem_is_zero_int,
|
||||
(void (*)(void *, const void *))
|
||||
felem_assign,
|
||||
(void (*)(void *, const void *))
|
||||
felem_square_reduce, (void (*)
|
||||
(void *,
|
||||
const void
|
||||
*,
|
||||
const void
|
||||
*))
|
||||
felem_mul_reduce,
|
||||
(void (*)(void *, const void *))
|
||||
felem_inv,
|
||||
(void (*)(void *, const void *))
|
||||
felem_contract);
|
||||
ossl_ec_GFp_nistp_points_make_affine_internal(num,
|
||||
points,
|
||||
sizeof(felem),
|
||||
tmp_felems,
|
||||
(void (*)(void *))felem_one,
|
||||
felem_is_zero_int,
|
||||
(void (*)(void *, const void *))
|
||||
felem_assign,
|
||||
(void (*)(void *, const void *))
|
||||
felem_square_reduce, (void (*)
|
||||
(void *,
|
||||
const void
|
||||
*,
|
||||
const void
|
||||
*))
|
||||
felem_mul_reduce,
|
||||
(void (*)(void *, const void *))
|
||||
felem_inv,
|
||||
(void (*)(void *, const void *))
|
||||
felem_contract);
|
||||
}
|
||||
|
||||
/*
|
||||
* Computes scalar*generator + \sum scalars[i]*points[i], ignoring NULL
|
||||
* values Result is stored in r (r can equal one of the inputs).
|
||||
*/
|
||||
int ec_GFp_nistp224_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, size_t num,
|
||||
const EC_POINT *points[],
|
||||
const BIGNUM *scalars[], BN_CTX *ctx)
|
||||
int ossl_ec_GFp_nistp224_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, size_t num,
|
||||
const EC_POINT *points[],
|
||||
const BIGNUM *scalars[], BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
int j;
|
||||
@ -1460,8 +1460,9 @@ int ec_GFp_nistp224_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_BN_LIB);
|
||||
goto err;
|
||||
}
|
||||
if (!ec_GFp_simple_set_Jprojective_coordinates_GFp(group, generator, x,
|
||||
y, z, ctx))
|
||||
if (!ossl_ec_GFp_simple_set_Jprojective_coordinates_GFp(group,
|
||||
generator,
|
||||
x, y, z, ctx))
|
||||
goto err;
|
||||
if (0 == EC_POINT_cmp(group, generator, group->generator, ctx))
|
||||
/* precomputation matches generator */
|
||||
@ -1595,7 +1596,8 @@ int ec_GFp_nistp224_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_BN_LIB);
|
||||
goto err;
|
||||
}
|
||||
ret = ec_GFp_simple_set_Jprojective_coordinates_GFp(group, r, x, y, z, ctx);
|
||||
ret = ossl_ec_GFp_simple_set_Jprojective_coordinates_GFp(group, r, x, y, z,
|
||||
ctx);
|
||||
|
||||
err:
|
||||
BN_CTX_end(ctx);
|
||||
@ -1606,7 +1608,7 @@ int ec_GFp_nistp224_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_nistp224_precompute_mult(EC_GROUP *group, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_nistp224_precompute_mult(EC_GROUP *group, BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
NISTP224_PRE_COMP *pre = NULL;
|
||||
@ -1742,7 +1744,7 @@ int ec_GFp_nistp224_precompute_mult(EC_GROUP *group, BN_CTX *ctx)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_nistp224_have_precompute_mult(const EC_GROUP *group)
|
||||
int ossl_ec_GFp_nistp224_have_precompute_mult(const EC_GROUP *group)
|
||||
{
|
||||
return HAVEPRECOMP(group, nistp224);
|
||||
}
|
||||
|
@ -1743,7 +1743,7 @@ static void batch_mul(felem x_out, felem y_out, felem z_out,
|
||||
bits |= get_bit(scalars[num], i + 1) << 2;
|
||||
bits |= get_bit(scalars[num], i) << 1;
|
||||
bits |= get_bit(scalars[num], i - 1);
|
||||
ec_GFp_nistp_recode_scalar_bits(&sign, &digit, bits);
|
||||
ossl_ec_GFp_nistp_recode_scalar_bits(&sign, &digit, bits);
|
||||
|
||||
/*
|
||||
* select the point to add or subtract, in constant time
|
||||
@ -1784,55 +1784,55 @@ const EC_METHOD *EC_GFp_nistp256_method(void)
|
||||
static const EC_METHOD ret = {
|
||||
EC_FLAGS_DEFAULT_OCT,
|
||||
NID_X9_62_prime_field,
|
||||
ec_GFp_nistp256_group_init,
|
||||
ec_GFp_simple_group_finish,
|
||||
ec_GFp_simple_group_clear_finish,
|
||||
ec_GFp_nist_group_copy,
|
||||
ec_GFp_nistp256_group_set_curve,
|
||||
ec_GFp_simple_group_get_curve,
|
||||
ec_GFp_simple_group_get_degree,
|
||||
ec_group_simple_order_bits,
|
||||
ec_GFp_simple_group_check_discriminant,
|
||||
ec_GFp_simple_point_init,
|
||||
ec_GFp_simple_point_finish,
|
||||
ec_GFp_simple_point_clear_finish,
|
||||
ec_GFp_simple_point_copy,
|
||||
ec_GFp_simple_point_set_to_infinity,
|
||||
ec_GFp_simple_point_set_affine_coordinates,
|
||||
ec_GFp_nistp256_point_get_affine_coordinates,
|
||||
ossl_ec_GFp_nistp256_group_init,
|
||||
ossl_ec_GFp_simple_group_finish,
|
||||
ossl_ec_GFp_simple_group_clear_finish,
|
||||
ossl_ec_GFp_nist_group_copy,
|
||||
ossl_ec_GFp_nistp256_group_set_curve,
|
||||
ossl_ec_GFp_simple_group_get_curve,
|
||||
ossl_ec_GFp_simple_group_get_degree,
|
||||
ossl_ec_group_simple_order_bits,
|
||||
ossl_ec_GFp_simple_group_check_discriminant,
|
||||
ossl_ec_GFp_simple_point_init,
|
||||
ossl_ec_GFp_simple_point_finish,
|
||||
ossl_ec_GFp_simple_point_clear_finish,
|
||||
ossl_ec_GFp_simple_point_copy,
|
||||
ossl_ec_GFp_simple_point_set_to_infinity,
|
||||
ossl_ec_GFp_simple_point_set_affine_coordinates,
|
||||
ossl_ec_GFp_nistp256_point_get_affine_coordinates,
|
||||
0 /* point_set_compressed_coordinates */ ,
|
||||
0 /* point2oct */ ,
|
||||
0 /* oct2point */ ,
|
||||
ec_GFp_simple_add,
|
||||
ec_GFp_simple_dbl,
|
||||
ec_GFp_simple_invert,
|
||||
ec_GFp_simple_is_at_infinity,
|
||||
ec_GFp_simple_is_on_curve,
|
||||
ec_GFp_simple_cmp,
|
||||
ec_GFp_simple_make_affine,
|
||||
ec_GFp_simple_points_make_affine,
|
||||
ec_GFp_nistp256_points_mul,
|
||||
ec_GFp_nistp256_precompute_mult,
|
||||
ec_GFp_nistp256_have_precompute_mult,
|
||||
ec_GFp_nist_field_mul,
|
||||
ec_GFp_nist_field_sqr,
|
||||
ossl_ec_GFp_simple_add,
|
||||
ossl_ec_GFp_simple_dbl,
|
||||
ossl_ec_GFp_simple_invert,
|
||||
ossl_ec_GFp_simple_is_at_infinity,
|
||||
ossl_ec_GFp_simple_is_on_curve,
|
||||
ossl_ec_GFp_simple_cmp,
|
||||
ossl_ec_GFp_simple_make_affine,
|
||||
ossl_ec_GFp_simple_points_make_affine,
|
||||
ossl_ec_GFp_nistp256_points_mul,
|
||||
ossl_ec_GFp_nistp256_precompute_mult,
|
||||
ossl_ec_GFp_nistp256_have_precompute_mult,
|
||||
ossl_ec_GFp_nist_field_mul,
|
||||
ossl_ec_GFp_nist_field_sqr,
|
||||
0 /* field_div */ ,
|
||||
ec_GFp_simple_field_inv,
|
||||
ossl_ec_GFp_simple_field_inv,
|
||||
0 /* field_encode */ ,
|
||||
0 /* field_decode */ ,
|
||||
0, /* field_set_to_one */
|
||||
ec_key_simple_priv2oct,
|
||||
ec_key_simple_oct2priv,
|
||||
ossl_ec_key_simple_priv2oct,
|
||||
ossl_ec_key_simple_oct2priv,
|
||||
0, /* set private */
|
||||
ec_key_simple_generate_key,
|
||||
ec_key_simple_check_key,
|
||||
ec_key_simple_generate_public_key,
|
||||
ossl_ec_key_simple_generate_key,
|
||||
ossl_ec_key_simple_check_key,
|
||||
ossl_ec_key_simple_generate_public_key,
|
||||
0, /* keycopy */
|
||||
0, /* keyfinish */
|
||||
ecdh_simple_compute_key,
|
||||
ecdsa_simple_sign_setup,
|
||||
ecdsa_simple_sign_sig,
|
||||
ecdsa_simple_verify_sig,
|
||||
ossl_ecdh_simple_compute_key,
|
||||
ossl_ecdsa_simple_sign_setup,
|
||||
ossl_ecdsa_simple_sign_sig,
|
||||
ossl_ecdsa_simple_verify_sig,
|
||||
0, /* field_inverse_mod_ord */
|
||||
0, /* blind_coordinates */
|
||||
0, /* ladder_pre */
|
||||
@ -1898,17 +1898,17 @@ void EC_nistp256_pre_comp_free(NISTP256_PRE_COMP *pre)
|
||||
* OPENSSL EC_METHOD FUNCTIONS
|
||||
*/
|
||||
|
||||
int ec_GFp_nistp256_group_init(EC_GROUP *group)
|
||||
int ossl_ec_GFp_nistp256_group_init(EC_GROUP *group)
|
||||
{
|
||||
int ret;
|
||||
ret = ec_GFp_simple_group_init(group);
|
||||
ret = ossl_ec_GFp_simple_group_init(group);
|
||||
group->a_is_minus3 = 1;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_nistp256_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *b,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_nistp256_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *b,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
BIGNUM *curve_p, *curve_a, *curve_b;
|
||||
@ -1935,7 +1935,7 @@ int ec_GFp_nistp256_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
goto err;
|
||||
}
|
||||
group->field_mod_func = BN_nist_mod_256;
|
||||
ret = ec_GFp_simple_group_set_curve(group, p, a, b, ctx);
|
||||
ret = ossl_ec_GFp_simple_group_set_curve(group, p, a, b, ctx);
|
||||
err:
|
||||
BN_CTX_end(ctx);
|
||||
#ifndef FIPS_MODULE
|
||||
@ -1948,10 +1948,10 @@ int ec_GFp_nistp256_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
* Takes the Jacobian coordinates (X, Y, Z) of a point and returns (X', Y') =
|
||||
* (X/Z^2, Y/Z^3)
|
||||
*/
|
||||
int ec_GFp_nistp256_point_get_affine_coordinates(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
BIGNUM *x, BIGNUM *y,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_nistp256_point_get_affine_coordinates(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
BIGNUM *x, BIGNUM *y,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
felem z1, z2, x_in, y_in;
|
||||
smallfelem x_out, y_out;
|
||||
@ -1998,35 +1998,35 @@ static void make_points_affine(size_t num, smallfelem points[][3],
|
||||
* Runs in constant time, unless an input is the point at infinity (which
|
||||
* normally shouldn't happen).
|
||||
*/
|
||||
ec_GFp_nistp_points_make_affine_internal(num,
|
||||
points,
|
||||
sizeof(smallfelem),
|
||||
tmp_smallfelems,
|
||||
(void (*)(void *))smallfelem_one,
|
||||
smallfelem_is_zero_int,
|
||||
(void (*)(void *, const void *))
|
||||
smallfelem_assign,
|
||||
(void (*)(void *, const void *))
|
||||
smallfelem_square_contract,
|
||||
(void (*)
|
||||
(void *, const void *,
|
||||
const void *))
|
||||
smallfelem_mul_contract,
|
||||
(void (*)(void *, const void *))
|
||||
smallfelem_inv_contract,
|
||||
/* nothing to contract */
|
||||
(void (*)(void *, const void *))
|
||||
smallfelem_assign);
|
||||
ossl_ec_GFp_nistp_points_make_affine_internal(num,
|
||||
points,
|
||||
sizeof(smallfelem),
|
||||
tmp_smallfelems,
|
||||
(void (*)(void *))smallfelem_one,
|
||||
smallfelem_is_zero_int,
|
||||
(void (*)(void *, const void *))
|
||||
smallfelem_assign,
|
||||
(void (*)(void *, const void *))
|
||||
smallfelem_square_contract,
|
||||
(void (*)
|
||||
(void *, const void *,
|
||||
const void *))
|
||||
smallfelem_mul_contract,
|
||||
(void (*)(void *, const void *))
|
||||
smallfelem_inv_contract,
|
||||
/* nothing to contract */
|
||||
(void (*)(void *, const void *))
|
||||
smallfelem_assign);
|
||||
}
|
||||
|
||||
/*
|
||||
* Computes scalar*generator + \sum scalars[i]*points[i], ignoring NULL
|
||||
* values Result is stored in r (r can equal one of the inputs).
|
||||
*/
|
||||
int ec_GFp_nistp256_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, size_t num,
|
||||
const EC_POINT *points[],
|
||||
const BIGNUM *scalars[], BN_CTX *ctx)
|
||||
int ossl_ec_GFp_nistp256_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, size_t num,
|
||||
const EC_POINT *points[],
|
||||
const BIGNUM *scalars[], BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
int j;
|
||||
@ -2074,8 +2074,9 @@ int ec_GFp_nistp256_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_BN_LIB);
|
||||
goto err;
|
||||
}
|
||||
if (!ec_GFp_simple_set_Jprojective_coordinates_GFp(group, generator, x,
|
||||
y, z, ctx))
|
||||
if (!ossl_ec_GFp_simple_set_Jprojective_coordinates_GFp(group,
|
||||
generator,
|
||||
x, y, z, ctx))
|
||||
goto err;
|
||||
if (0 == EC_POINT_cmp(group, generator, group->generator, ctx))
|
||||
/* precomputation matches generator */
|
||||
@ -2215,7 +2216,8 @@ int ec_GFp_nistp256_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_BN_LIB);
|
||||
goto err;
|
||||
}
|
||||
ret = ec_GFp_simple_set_Jprojective_coordinates_GFp(group, r, x, y, z, ctx);
|
||||
ret = ossl_ec_GFp_simple_set_Jprojective_coordinates_GFp(group, r, x, y, z,
|
||||
ctx);
|
||||
|
||||
err:
|
||||
BN_CTX_end(ctx);
|
||||
@ -2226,7 +2228,7 @@ int ec_GFp_nistp256_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_nistp256_precompute_mult(EC_GROUP *group, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_nistp256_precompute_mult(EC_GROUP *group, BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
NISTP256_PRE_COMP *pre = NULL;
|
||||
@ -2373,7 +2375,7 @@ int ec_GFp_nistp256_precompute_mult(EC_GROUP *group, BN_CTX *ctx)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_nistp256_have_precompute_mult(const EC_GROUP *group)
|
||||
int ossl_ec_GFp_nistp256_have_precompute_mult(const EC_GROUP *group)
|
||||
{
|
||||
return HAVEPRECOMP(group, nistp256);
|
||||
}
|
||||
|
@ -1269,8 +1269,8 @@ static void point_add(felem x3, felem y3, felem z3,
|
||||
* This is obviously not constant-time but it will almost-never happen
|
||||
* for ECDH / ECDSA. The case where it can happen is during scalar-mult
|
||||
* where the intermediate value gets very close to the group order.
|
||||
* Since |ec_GFp_nistp_recode_scalar_bits| produces signed digits for
|
||||
* the scalar, it's possible for the intermediate value to be a small
|
||||
* Since |ossl_ec_GFp_nistp_recode_scalar_bits| produces signed digits
|
||||
* for the scalar, it's possible for the intermediate value to be a small
|
||||
* negative multiple of the base point, and for the final signed digit
|
||||
* to be the same value. We believe that this only occurs for the scalar
|
||||
* 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
@ -1587,7 +1587,7 @@ static void batch_mul(felem x_out, felem y_out, felem z_out,
|
||||
bits |= get_bit(scalars[num], i + 1) << 2;
|
||||
bits |= get_bit(scalars[num], i) << 1;
|
||||
bits |= get_bit(scalars[num], i - 1);
|
||||
ec_GFp_nistp_recode_scalar_bits(&sign, &digit, bits);
|
||||
ossl_ec_GFp_nistp_recode_scalar_bits(&sign, &digit, bits);
|
||||
|
||||
/*
|
||||
* select the point to add or subtract, in constant time
|
||||
@ -1625,55 +1625,55 @@ const EC_METHOD *EC_GFp_nistp521_method(void)
|
||||
static const EC_METHOD ret = {
|
||||
EC_FLAGS_DEFAULT_OCT,
|
||||
NID_X9_62_prime_field,
|
||||
ec_GFp_nistp521_group_init,
|
||||
ec_GFp_simple_group_finish,
|
||||
ec_GFp_simple_group_clear_finish,
|
||||
ec_GFp_nist_group_copy,
|
||||
ec_GFp_nistp521_group_set_curve,
|
||||
ec_GFp_simple_group_get_curve,
|
||||
ec_GFp_simple_group_get_degree,
|
||||
ec_group_simple_order_bits,
|
||||
ec_GFp_simple_group_check_discriminant,
|
||||
ec_GFp_simple_point_init,
|
||||
ec_GFp_simple_point_finish,
|
||||
ec_GFp_simple_point_clear_finish,
|
||||
ec_GFp_simple_point_copy,
|
||||
ec_GFp_simple_point_set_to_infinity,
|
||||
ec_GFp_simple_point_set_affine_coordinates,
|
||||
ec_GFp_nistp521_point_get_affine_coordinates,
|
||||
ossl_ec_GFp_nistp521_group_init,
|
||||
ossl_ec_GFp_simple_group_finish,
|
||||
ossl_ec_GFp_simple_group_clear_finish,
|
||||
ossl_ec_GFp_nist_group_copy,
|
||||
ossl_ec_GFp_nistp521_group_set_curve,
|
||||
ossl_ec_GFp_simple_group_get_curve,
|
||||
ossl_ec_GFp_simple_group_get_degree,
|
||||
ossl_ec_group_simple_order_bits,
|
||||
ossl_ec_GFp_simple_group_check_discriminant,
|
||||
ossl_ec_GFp_simple_point_init,
|
||||
ossl_ec_GFp_simple_point_finish,
|
||||
ossl_ec_GFp_simple_point_clear_finish,
|
||||
ossl_ec_GFp_simple_point_copy,
|
||||
ossl_ec_GFp_simple_point_set_to_infinity,
|
||||
ossl_ec_GFp_simple_point_set_affine_coordinates,
|
||||
ossl_ec_GFp_nistp521_point_get_affine_coordinates,
|
||||
0 /* point_set_compressed_coordinates */ ,
|
||||
0 /* point2oct */ ,
|
||||
0 /* oct2point */ ,
|
||||
ec_GFp_simple_add,
|
||||
ec_GFp_simple_dbl,
|
||||
ec_GFp_simple_invert,
|
||||
ec_GFp_simple_is_at_infinity,
|
||||
ec_GFp_simple_is_on_curve,
|
||||
ec_GFp_simple_cmp,
|
||||
ec_GFp_simple_make_affine,
|
||||
ec_GFp_simple_points_make_affine,
|
||||
ec_GFp_nistp521_points_mul,
|
||||
ec_GFp_nistp521_precompute_mult,
|
||||
ec_GFp_nistp521_have_precompute_mult,
|
||||
ec_GFp_nist_field_mul,
|
||||
ec_GFp_nist_field_sqr,
|
||||
ossl_ec_GFp_simple_add,
|
||||
ossl_ec_GFp_simple_dbl,
|
||||
ossl_ec_GFp_simple_invert,
|
||||
ossl_ec_GFp_simple_is_at_infinity,
|
||||
ossl_ec_GFp_simple_is_on_curve,
|
||||
ossl_ec_GFp_simple_cmp,
|
||||
ossl_ec_GFp_simple_make_affine,
|
||||
ossl_ec_GFp_simple_points_make_affine,
|
||||
ossl_ec_GFp_nistp521_points_mul,
|
||||
ossl_ec_GFp_nistp521_precompute_mult,
|
||||
ossl_ec_GFp_nistp521_have_precompute_mult,
|
||||
ossl_ec_GFp_nist_field_mul,
|
||||
ossl_ec_GFp_nist_field_sqr,
|
||||
0 /* field_div */ ,
|
||||
ec_GFp_simple_field_inv,
|
||||
ossl_ec_GFp_simple_field_inv,
|
||||
0 /* field_encode */ ,
|
||||
0 /* field_decode */ ,
|
||||
0, /* field_set_to_one */
|
||||
ec_key_simple_priv2oct,
|
||||
ec_key_simple_oct2priv,
|
||||
ossl_ec_key_simple_priv2oct,
|
||||
ossl_ec_key_simple_oct2priv,
|
||||
0, /* set private */
|
||||
ec_key_simple_generate_key,
|
||||
ec_key_simple_check_key,
|
||||
ec_key_simple_generate_public_key,
|
||||
ossl_ec_key_simple_generate_key,
|
||||
ossl_ec_key_simple_check_key,
|
||||
ossl_ec_key_simple_generate_public_key,
|
||||
0, /* keycopy */
|
||||
0, /* keyfinish */
|
||||
ecdh_simple_compute_key,
|
||||
ecdsa_simple_sign_setup,
|
||||
ecdsa_simple_sign_sig,
|
||||
ecdsa_simple_verify_sig,
|
||||
ossl_ecdh_simple_compute_key,
|
||||
ossl_ecdsa_simple_sign_setup,
|
||||
ossl_ecdsa_simple_sign_sig,
|
||||
ossl_ecdsa_simple_verify_sig,
|
||||
0, /* field_inverse_mod_ord */
|
||||
0, /* blind_coordinates */
|
||||
0, /* ladder_pre */
|
||||
@ -1739,17 +1739,17 @@ void EC_nistp521_pre_comp_free(NISTP521_PRE_COMP *p)
|
||||
* OPENSSL EC_METHOD FUNCTIONS
|
||||
*/
|
||||
|
||||
int ec_GFp_nistp521_group_init(EC_GROUP *group)
|
||||
int ossl_ec_GFp_nistp521_group_init(EC_GROUP *group)
|
||||
{
|
||||
int ret;
|
||||
ret = ec_GFp_simple_group_init(group);
|
||||
ret = ossl_ec_GFp_simple_group_init(group);
|
||||
group->a_is_minus3 = 1;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_nistp521_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *b,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_nistp521_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
const BIGNUM *a, const BIGNUM *b,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
BIGNUM *curve_p, *curve_a, *curve_b;
|
||||
@ -1776,7 +1776,7 @@ int ec_GFp_nistp521_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
goto err;
|
||||
}
|
||||
group->field_mod_func = BN_nist_mod_521;
|
||||
ret = ec_GFp_simple_group_set_curve(group, p, a, b, ctx);
|
||||
ret = ossl_ec_GFp_simple_group_set_curve(group, p, a, b, ctx);
|
||||
err:
|
||||
BN_CTX_end(ctx);
|
||||
#ifndef FIPS_MODULE
|
||||
@ -1789,10 +1789,10 @@ int ec_GFp_nistp521_group_set_curve(EC_GROUP *group, const BIGNUM *p,
|
||||
* Takes the Jacobian coordinates (X, Y, Z) of a point and returns (X', Y') =
|
||||
* (X/Z^2, Y/Z^3)
|
||||
*/
|
||||
int ec_GFp_nistp521_point_get_affine_coordinates(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
BIGNUM *x, BIGNUM *y,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_nistp521_point_get_affine_coordinates(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
BIGNUM *x, BIGNUM *y,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
felem z1, z2, x_in, y_in, x_out, y_out;
|
||||
largefelem tmp;
|
||||
@ -1838,36 +1838,36 @@ static void make_points_affine(size_t num, felem points[][3],
|
||||
* Runs in constant time, unless an input is the point at infinity (which
|
||||
* normally shouldn't happen).
|
||||
*/
|
||||
ec_GFp_nistp_points_make_affine_internal(num,
|
||||
points,
|
||||
sizeof(felem),
|
||||
tmp_felems,
|
||||
(void (*)(void *))felem_one,
|
||||
felem_is_zero_int,
|
||||
(void (*)(void *, const void *))
|
||||
felem_assign,
|
||||
(void (*)(void *, const void *))
|
||||
felem_square_reduce, (void (*)
|
||||
(void *,
|
||||
const void
|
||||
*,
|
||||
const void
|
||||
*))
|
||||
felem_mul_reduce,
|
||||
(void (*)(void *, const void *))
|
||||
felem_inv,
|
||||
(void (*)(void *, const void *))
|
||||
felem_contract);
|
||||
ossl_ec_GFp_nistp_points_make_affine_internal(num,
|
||||
points,
|
||||
sizeof(felem),
|
||||
tmp_felems,
|
||||
(void (*)(void *))felem_one,
|
||||
felem_is_zero_int,
|
||||
(void (*)(void *, const void *))
|
||||
felem_assign,
|
||||
(void (*)(void *, const void *))
|
||||
felem_square_reduce, (void (*)
|
||||
(void *,
|
||||
const void
|
||||
*,
|
||||
const void
|
||||
*))
|
||||
felem_mul_reduce,
|
||||
(void (*)(void *, const void *))
|
||||
felem_inv,
|
||||
(void (*)(void *, const void *))
|
||||
felem_contract);
|
||||
}
|
||||
|
||||
/*
|
||||
* Computes scalar*generator + \sum scalars[i]*points[i], ignoring NULL
|
||||
* values Result is stored in r (r can equal one of the inputs).
|
||||
*/
|
||||
int ec_GFp_nistp521_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, size_t num,
|
||||
const EC_POINT *points[],
|
||||
const BIGNUM *scalars[], BN_CTX *ctx)
|
||||
int ossl_ec_GFp_nistp521_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
const BIGNUM *scalar, size_t num,
|
||||
const EC_POINT *points[],
|
||||
const BIGNUM *scalars[], BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
int j;
|
||||
@ -1914,8 +1914,9 @@ int ec_GFp_nistp521_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_BN_LIB);
|
||||
goto err;
|
||||
}
|
||||
if (!ec_GFp_simple_set_Jprojective_coordinates_GFp(group, generator, x,
|
||||
y, z, ctx))
|
||||
if (!ossl_ec_GFp_simple_set_Jprojective_coordinates_GFp(group,
|
||||
generator,
|
||||
x, y, z, ctx))
|
||||
goto err;
|
||||
if (0 == EC_POINT_cmp(group, generator, group->generator, ctx))
|
||||
/* precomputation matches generator */
|
||||
@ -2053,7 +2054,8 @@ int ec_GFp_nistp521_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_BN_LIB);
|
||||
goto err;
|
||||
}
|
||||
ret = ec_GFp_simple_set_Jprojective_coordinates_GFp(group, r, x, y, z, ctx);
|
||||
ret = ossl_ec_GFp_simple_set_Jprojective_coordinates_GFp(group, r, x, y, z,
|
||||
ctx);
|
||||
|
||||
err:
|
||||
BN_CTX_end(ctx);
|
||||
@ -2064,7 +2066,7 @@ int ec_GFp_nistp521_points_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_nistp521_precompute_mult(EC_GROUP *group, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_nistp521_precompute_mult(EC_GROUP *group, BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
NISTP521_PRE_COMP *pre = NULL;
|
||||
@ -2180,7 +2182,7 @@ int ec_GFp_nistp521_precompute_mult(EC_GROUP *group, BN_CTX *ctx)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_nistp521_have_precompute_mult(const EC_GROUP *group)
|
||||
int ossl_ec_GFp_nistp521_have_precompute_mult(const EC_GROUP *group)
|
||||
{
|
||||
return HAVEPRECOMP(group, nistp521);
|
||||
}
|
||||
|
@ -49,7 +49,8 @@
|
||||
* of size 'felem_size'. tmp_felems needs to point to a temporary array of
|
||||
* 'num'+1 field elements for storage of intermediate values.
|
||||
*/
|
||||
void ec_GFp_nistp_points_make_affine_internal(size_t num, void *point_array,
|
||||
void
|
||||
ossl_ec_GFp_nistp_points_make_affine_internal(size_t num, void *point_array,
|
||||
size_t felem_size,
|
||||
void *tmp_felems,
|
||||
void (*felem_one) (void *out),
|
||||
@ -209,8 +210,8 @@ void ec_GFp_nistp_points_make_affine_internal(size_t num, void *point_array,
|
||||
* b_-1, has to be b_4 b_3 b_2 b_1 b_0 0.
|
||||
*
|
||||
*/
|
||||
void ec_GFp_nistp_recode_scalar_bits(unsigned char *sign,
|
||||
unsigned char *digit, unsigned char in)
|
||||
void ossl_ec_GFp_nistp_recode_scalar_bits(unsigned char *sign,
|
||||
unsigned char *digit, unsigned char in)
|
||||
{
|
||||
unsigned char s, d;
|
||||
|
||||
|
@ -1471,53 +1471,53 @@ const EC_METHOD *EC_GFp_nistz256_method(void)
|
||||
static const EC_METHOD ret = {
|
||||
EC_FLAGS_DEFAULT_OCT,
|
||||
NID_X9_62_prime_field,
|
||||
ec_GFp_mont_group_init,
|
||||
ec_GFp_mont_group_finish,
|
||||
ec_GFp_mont_group_clear_finish,
|
||||
ec_GFp_mont_group_copy,
|
||||
ec_GFp_mont_group_set_curve,
|
||||
ec_GFp_simple_group_get_curve,
|
||||
ec_GFp_simple_group_get_degree,
|
||||
ec_group_simple_order_bits,
|
||||
ec_GFp_simple_group_check_discriminant,
|
||||
ec_GFp_simple_point_init,
|
||||
ec_GFp_simple_point_finish,
|
||||
ec_GFp_simple_point_clear_finish,
|
||||
ec_GFp_simple_point_copy,
|
||||
ec_GFp_simple_point_set_to_infinity,
|
||||
ec_GFp_simple_point_set_affine_coordinates,
|
||||
ossl_ec_GFp_mont_group_init,
|
||||
ossl_ec_GFp_mont_group_finish,
|
||||
ossl_ec_GFp_mont_group_clear_finish,
|
||||
ossl_ec_GFp_mont_group_copy,
|
||||
ossl_ec_GFp_mont_group_set_curve,
|
||||
ossl_ec_GFp_simple_group_get_curve,
|
||||
ossl_ec_GFp_simple_group_get_degree,
|
||||
ossl_ec_group_simple_order_bits,
|
||||
ossl_ec_GFp_simple_group_check_discriminant,
|
||||
ossl_ec_GFp_simple_point_init,
|
||||
ossl_ec_GFp_simple_point_finish,
|
||||
ossl_ec_GFp_simple_point_clear_finish,
|
||||
ossl_ec_GFp_simple_point_copy,
|
||||
ossl_ec_GFp_simple_point_set_to_infinity,
|
||||
ossl_ec_GFp_simple_point_set_affine_coordinates,
|
||||
ecp_nistz256_get_affine,
|
||||
0, 0, 0,
|
||||
ec_GFp_simple_add,
|
||||
ec_GFp_simple_dbl,
|
||||
ec_GFp_simple_invert,
|
||||
ec_GFp_simple_is_at_infinity,
|
||||
ec_GFp_simple_is_on_curve,
|
||||
ec_GFp_simple_cmp,
|
||||
ec_GFp_simple_make_affine,
|
||||
ec_GFp_simple_points_make_affine,
|
||||
ossl_ec_GFp_simple_add,
|
||||
ossl_ec_GFp_simple_dbl,
|
||||
ossl_ec_GFp_simple_invert,
|
||||
ossl_ec_GFp_simple_is_at_infinity,
|
||||
ossl_ec_GFp_simple_is_on_curve,
|
||||
ossl_ec_GFp_simple_cmp,
|
||||
ossl_ec_GFp_simple_make_affine,
|
||||
ossl_ec_GFp_simple_points_make_affine,
|
||||
ecp_nistz256_points_mul, /* mul */
|
||||
ecp_nistz256_mult_precompute, /* precompute_mult */
|
||||
ecp_nistz256_window_have_precompute_mult, /* have_precompute_mult */
|
||||
ec_GFp_mont_field_mul,
|
||||
ec_GFp_mont_field_sqr,
|
||||
ossl_ec_GFp_mont_field_mul,
|
||||
ossl_ec_GFp_mont_field_sqr,
|
||||
0, /* field_div */
|
||||
ec_GFp_mont_field_inv,
|
||||
ec_GFp_mont_field_encode,
|
||||
ec_GFp_mont_field_decode,
|
||||
ec_GFp_mont_field_set_to_one,
|
||||
ec_key_simple_priv2oct,
|
||||
ec_key_simple_oct2priv,
|
||||
ossl_ec_GFp_mont_field_inv,
|
||||
ossl_ec_GFp_mont_field_encode,
|
||||
ossl_ec_GFp_mont_field_decode,
|
||||
ossl_ec_GFp_mont_field_set_to_one,
|
||||
ossl_ec_key_simple_priv2oct,
|
||||
ossl_ec_key_simple_oct2priv,
|
||||
0, /* set private */
|
||||
ec_key_simple_generate_key,
|
||||
ec_key_simple_check_key,
|
||||
ec_key_simple_generate_public_key,
|
||||
ossl_ec_key_simple_generate_key,
|
||||
ossl_ec_key_simple_check_key,
|
||||
ossl_ec_key_simple_generate_public_key,
|
||||
0, /* keycopy */
|
||||
0, /* keyfinish */
|
||||
ecdh_simple_compute_key,
|
||||
ecdsa_simple_sign_setup,
|
||||
ecdsa_simple_sign_sig,
|
||||
ecdsa_simple_verify_sig,
|
||||
ossl_ecdh_simple_compute_key,
|
||||
ossl_ecdsa_simple_sign_setup,
|
||||
ossl_ecdsa_simple_sign_sig,
|
||||
ossl_ecdsa_simple_verify_sig,
|
||||
ecp_nistz256_inv_mod_ord, /* can be #define-d NULL */
|
||||
0, /* blind_coordinates */
|
||||
0, /* ladder_pre */
|
||||
|
@ -19,10 +19,10 @@
|
||||
|
||||
#include "ec_local.h"
|
||||
|
||||
int ec_GFp_simple_set_compressed_coordinates(const EC_GROUP *group,
|
||||
EC_POINT *point,
|
||||
const BIGNUM *x_, int y_bit,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_set_compressed_coordinates(const EC_GROUP *group,
|
||||
EC_POINT *point,
|
||||
const BIGNUM *x_, int y_bit,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
BN_CTX *new_ctx = NULL;
|
||||
BIGNUM *tmp1, *tmp2, *x, *y;
|
||||
@ -158,9 +158,9 @@ int ec_GFp_simple_set_compressed_coordinates(const EC_GROUP *group,
|
||||
return ret;
|
||||
}
|
||||
|
||||
size_t ec_GFp_simple_point2oct(const EC_GROUP *group, const EC_POINT *point,
|
||||
point_conversion_form_t form,
|
||||
unsigned char *buf, size_t len, BN_CTX *ctx)
|
||||
size_t ossl_ec_GFp_simple_point2oct(const EC_GROUP *group, const EC_POINT *point,
|
||||
point_conversion_form_t form,
|
||||
unsigned char *buf, size_t len, BN_CTX *ctx)
|
||||
{
|
||||
size_t ret;
|
||||
BN_CTX *new_ctx = NULL;
|
||||
@ -273,8 +273,9 @@ size_t ec_GFp_simple_point2oct(const EC_GROUP *group, const EC_POINT *point,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ec_GFp_simple_oct2point(const EC_GROUP *group, EC_POINT *point,
|
||||
const unsigned char *buf, size_t len, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_oct2point(const EC_GROUP *group, EC_POINT *point,
|
||||
const unsigned char *buf, size_t len,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
point_conversion_form_t form;
|
||||
int y_bit;
|
||||
|
@ -115,7 +115,7 @@ static int ec_GFp_s390x_nistp_mul(const EC_GROUP *group, EC_POINT *r,
|
||||
ret:
|
||||
/* Otherwise use default. */
|
||||
if (rc == -1)
|
||||
rc = ec_wNAF_mul(group, r, scalar, num, points, scalars, ctx);
|
||||
rc = ossl_ec_wNAF_mul(group, r, scalar, num, points, scalars, ctx);
|
||||
OPENSSL_cleanse(param + S390X_OFF_SCALAR(len), len);
|
||||
BN_CTX_end(ctx);
|
||||
BN_CTX_free(new_ctx);
|
||||
@ -186,7 +186,7 @@ static ECDSA_SIG *ecdsa_s390x_nistp_sign_sig(const unsigned char *dgst,
|
||||
}
|
||||
} else {
|
||||
/* Reconstruct k = (k^-1)^-1. */
|
||||
if (ec_group_do_inverse_ord(group, k, kinv, NULL) == 0
|
||||
if (ossl_ec_group_do_inverse_ord(group, k, kinv, NULL) == 0
|
||||
|| BN_bn2binpad(k, param + S390X_OFF_RN(len), len) == -1) {
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_BN_LIB);
|
||||
goto ret;
|
||||
@ -321,60 +321,60 @@ const EC_METHOD *EC_GFp_s390x_nistp##bits##_method(void) \
|
||||
static const EC_METHOD EC_GFp_s390x_nistp##bits##_meth = { \
|
||||
EC_FLAGS_DEFAULT_OCT, \
|
||||
NID_X9_62_prime_field, \
|
||||
ec_GFp_simple_group_init, \
|
||||
ec_GFp_simple_group_finish, \
|
||||
ec_GFp_simple_group_clear_finish, \
|
||||
ec_GFp_simple_group_copy, \
|
||||
ec_GFp_simple_group_set_curve, \
|
||||
ec_GFp_simple_group_get_curve, \
|
||||
ec_GFp_simple_group_get_degree, \
|
||||
ec_group_simple_order_bits, \
|
||||
ec_GFp_simple_group_check_discriminant, \
|
||||
ec_GFp_simple_point_init, \
|
||||
ec_GFp_simple_point_finish, \
|
||||
ec_GFp_simple_point_clear_finish, \
|
||||
ec_GFp_simple_point_copy, \
|
||||
ec_GFp_simple_point_set_to_infinity, \
|
||||
ec_GFp_simple_point_set_affine_coordinates, \
|
||||
ec_GFp_simple_point_get_affine_coordinates, \
|
||||
ossl_ec_GFp_simple_group_init, \
|
||||
ossl_ec_GFp_simple_group_finish, \
|
||||
ossl_ec_GFp_simple_group_clear_finish, \
|
||||
ossl_ec_GFp_simple_group_copy, \
|
||||
ossl_ec_GFp_simple_group_set_curve, \
|
||||
ossl_ec_GFp_simple_group_get_curve, \
|
||||
ossl_ec_GFp_simple_group_get_degree, \
|
||||
ossl_ec_group_simple_order_bits, \
|
||||
ossl_ec_GFp_simple_group_check_discriminant, \
|
||||
ossl_ec_GFp_simple_point_init, \
|
||||
ossl_ec_GFp_simple_point_finish, \
|
||||
ossl_ec_GFp_simple_point_clear_finish, \
|
||||
ossl_ec_GFp_simple_point_copy, \
|
||||
ossl_ec_GFp_simple_point_set_to_infinity, \
|
||||
ossl_ec_GFp_simple_point_set_affine_coordinates, \
|
||||
ossl_ec_GFp_simple_point_get_affine_coordinates, \
|
||||
NULL, /* point_set_compressed_coordinates */ \
|
||||
NULL, /* point2oct */ \
|
||||
NULL, /* oct2point */ \
|
||||
ec_GFp_simple_add, \
|
||||
ec_GFp_simple_dbl, \
|
||||
ec_GFp_simple_invert, \
|
||||
ec_GFp_simple_is_at_infinity, \
|
||||
ec_GFp_simple_is_on_curve, \
|
||||
ec_GFp_simple_cmp, \
|
||||
ec_GFp_simple_make_affine, \
|
||||
ec_GFp_simple_points_make_affine, \
|
||||
ossl_ec_GFp_simple_add, \
|
||||
ossl_ec_GFp_simple_dbl, \
|
||||
ossl_ec_GFp_simple_invert, \
|
||||
ossl_ec_GFp_simple_is_at_infinity, \
|
||||
ossl_ec_GFp_simple_is_on_curve, \
|
||||
ossl_ec_GFp_simple_cmp, \
|
||||
ossl_ec_GFp_simple_make_affine, \
|
||||
ossl_ec_GFp_simple_points_make_affine, \
|
||||
ec_GFp_s390x_nistp##bits##_mul, \
|
||||
NULL, /* precompute_mult */ \
|
||||
NULL, /* have_precompute_mult */ \
|
||||
ec_GFp_simple_field_mul, \
|
||||
ec_GFp_simple_field_sqr, \
|
||||
ossl_ec_GFp_simple_field_mul, \
|
||||
ossl_ec_GFp_simple_field_sqr, \
|
||||
NULL, /* field_div */ \
|
||||
ec_GFp_simple_field_inv, \
|
||||
ossl_ec_GFp_simple_field_inv, \
|
||||
NULL, /* field_encode */ \
|
||||
NULL, /* field_decode */ \
|
||||
NULL, /* field_set_to_one */ \
|
||||
ec_key_simple_priv2oct, \
|
||||
ec_key_simple_oct2priv, \
|
||||
ossl_ec_key_simple_priv2oct, \
|
||||
ossl_ec_key_simple_oct2priv, \
|
||||
NULL, /* set_private */ \
|
||||
ec_key_simple_generate_key, \
|
||||
ec_key_simple_check_key, \
|
||||
ec_key_simple_generate_public_key, \
|
||||
ossl_ec_key_simple_generate_key, \
|
||||
ossl_ec_key_simple_check_key, \
|
||||
ossl_ec_key_simple_generate_public_key, \
|
||||
NULL, /* keycopy */ \
|
||||
NULL, /* keyfinish */ \
|
||||
ecdh_simple_compute_key, \
|
||||
ecdsa_simple_sign_setup, \
|
||||
ossl_ecdh_simple_compute_key, \
|
||||
ossl_ecdsa_simple_sign_setup, \
|
||||
ecdsa_s390x_nistp##bits##_sign_sig, \
|
||||
ecdsa_s390x_nistp##bits##_verify_sig, \
|
||||
NULL, /* field_inverse_mod_ord */ \
|
||||
ec_GFp_simple_blind_coordinates, \
|
||||
ec_GFp_simple_ladder_pre, \
|
||||
ec_GFp_simple_ladder_step, \
|
||||
ec_GFp_simple_ladder_post \
|
||||
ossl_ec_GFp_simple_blind_coordinates, \
|
||||
ossl_ec_GFp_simple_ladder_pre, \
|
||||
ossl_ec_GFp_simple_ladder_step, \
|
||||
ossl_ec_GFp_simple_ladder_post \
|
||||
}; \
|
||||
static const EC_METHOD *ret; \
|
||||
\
|
||||
|
@ -24,58 +24,58 @@ const EC_METHOD *EC_GFp_simple_method(void)
|
||||
static const EC_METHOD ret = {
|
||||
EC_FLAGS_DEFAULT_OCT,
|
||||
NID_X9_62_prime_field,
|
||||
ec_GFp_simple_group_init,
|
||||
ec_GFp_simple_group_finish,
|
||||
ec_GFp_simple_group_clear_finish,
|
||||
ec_GFp_simple_group_copy,
|
||||
ec_GFp_simple_group_set_curve,
|
||||
ec_GFp_simple_group_get_curve,
|
||||
ec_GFp_simple_group_get_degree,
|
||||
ec_group_simple_order_bits,
|
||||
ec_GFp_simple_group_check_discriminant,
|
||||
ec_GFp_simple_point_init,
|
||||
ec_GFp_simple_point_finish,
|
||||
ec_GFp_simple_point_clear_finish,
|
||||
ec_GFp_simple_point_copy,
|
||||
ec_GFp_simple_point_set_to_infinity,
|
||||
ec_GFp_simple_point_set_affine_coordinates,
|
||||
ec_GFp_simple_point_get_affine_coordinates,
|
||||
ossl_ec_GFp_simple_group_init,
|
||||
ossl_ec_GFp_simple_group_finish,
|
||||
ossl_ec_GFp_simple_group_clear_finish,
|
||||
ossl_ec_GFp_simple_group_copy,
|
||||
ossl_ec_GFp_simple_group_set_curve,
|
||||
ossl_ec_GFp_simple_group_get_curve,
|
||||
ossl_ec_GFp_simple_group_get_degree,
|
||||
ossl_ec_group_simple_order_bits,
|
||||
ossl_ec_GFp_simple_group_check_discriminant,
|
||||
ossl_ec_GFp_simple_point_init,
|
||||
ossl_ec_GFp_simple_point_finish,
|
||||
ossl_ec_GFp_simple_point_clear_finish,
|
||||
ossl_ec_GFp_simple_point_copy,
|
||||
ossl_ec_GFp_simple_point_set_to_infinity,
|
||||
ossl_ec_GFp_simple_point_set_affine_coordinates,
|
||||
ossl_ec_GFp_simple_point_get_affine_coordinates,
|
||||
0, 0, 0,
|
||||
ec_GFp_simple_add,
|
||||
ec_GFp_simple_dbl,
|
||||
ec_GFp_simple_invert,
|
||||
ec_GFp_simple_is_at_infinity,
|
||||
ec_GFp_simple_is_on_curve,
|
||||
ec_GFp_simple_cmp,
|
||||
ec_GFp_simple_make_affine,
|
||||
ec_GFp_simple_points_make_affine,
|
||||
ossl_ec_GFp_simple_add,
|
||||
ossl_ec_GFp_simple_dbl,
|
||||
ossl_ec_GFp_simple_invert,
|
||||
ossl_ec_GFp_simple_is_at_infinity,
|
||||
ossl_ec_GFp_simple_is_on_curve,
|
||||
ossl_ec_GFp_simple_cmp,
|
||||
ossl_ec_GFp_simple_make_affine,
|
||||
ossl_ec_GFp_simple_points_make_affine,
|
||||
0 /* mul */ ,
|
||||
0 /* precompute_mult */ ,
|
||||
0 /* have_precompute_mult */ ,
|
||||
ec_GFp_simple_field_mul,
|
||||
ec_GFp_simple_field_sqr,
|
||||
ossl_ec_GFp_simple_field_mul,
|
||||
ossl_ec_GFp_simple_field_sqr,
|
||||
0 /* field_div */ ,
|
||||
ec_GFp_simple_field_inv,
|
||||
ossl_ec_GFp_simple_field_inv,
|
||||
0 /* field_encode */ ,
|
||||
0 /* field_decode */ ,
|
||||
0, /* field_set_to_one */
|
||||
ec_key_simple_priv2oct,
|
||||
ec_key_simple_oct2priv,
|
||||
ossl_ec_key_simple_priv2oct,
|
||||
ossl_ec_key_simple_oct2priv,
|
||||
0, /* set private */
|
||||
ec_key_simple_generate_key,
|
||||
ec_key_simple_check_key,
|
||||
ec_key_simple_generate_public_key,
|
||||
ossl_ec_key_simple_generate_key,
|
||||
ossl_ec_key_simple_check_key,
|
||||
ossl_ec_key_simple_generate_public_key,
|
||||
0, /* keycopy */
|
||||
0, /* keyfinish */
|
||||
ecdh_simple_compute_key,
|
||||
ecdsa_simple_sign_setup,
|
||||
ecdsa_simple_sign_sig,
|
||||
ecdsa_simple_verify_sig,
|
||||
ossl_ecdh_simple_compute_key,
|
||||
ossl_ecdsa_simple_sign_setup,
|
||||
ossl_ecdsa_simple_sign_sig,
|
||||
ossl_ecdsa_simple_verify_sig,
|
||||
0, /* field_inverse_mod_ord */
|
||||
ec_GFp_simple_blind_coordinates,
|
||||
ec_GFp_simple_ladder_pre,
|
||||
ec_GFp_simple_ladder_step,
|
||||
ec_GFp_simple_ladder_post
|
||||
ossl_ec_GFp_simple_blind_coordinates,
|
||||
ossl_ec_GFp_simple_ladder_pre,
|
||||
ossl_ec_GFp_simple_ladder_step,
|
||||
ossl_ec_GFp_simple_ladder_post
|
||||
};
|
||||
|
||||
return &ret;
|
||||
@ -95,7 +95,7 @@ const EC_METHOD *EC_GFp_simple_method(void)
|
||||
* representation (i.e. 'encoding' means multiplying by some factor R).
|
||||
*/
|
||||
|
||||
int ec_GFp_simple_group_init(EC_GROUP *group)
|
||||
int ossl_ec_GFp_simple_group_init(EC_GROUP *group)
|
||||
{
|
||||
group->field = BN_new();
|
||||
group->a = BN_new();
|
||||
@ -110,21 +110,21 @@ int ec_GFp_simple_group_init(EC_GROUP *group)
|
||||
return 1;
|
||||
}
|
||||
|
||||
void ec_GFp_simple_group_finish(EC_GROUP *group)
|
||||
void ossl_ec_GFp_simple_group_finish(EC_GROUP *group)
|
||||
{
|
||||
BN_free(group->field);
|
||||
BN_free(group->a);
|
||||
BN_free(group->b);
|
||||
}
|
||||
|
||||
void ec_GFp_simple_group_clear_finish(EC_GROUP *group)
|
||||
void ossl_ec_GFp_simple_group_clear_finish(EC_GROUP *group)
|
||||
{
|
||||
BN_clear_free(group->field);
|
||||
BN_clear_free(group->a);
|
||||
BN_clear_free(group->b);
|
||||
}
|
||||
|
||||
int ec_GFp_simple_group_copy(EC_GROUP *dest, const EC_GROUP *src)
|
||||
int ossl_ec_GFp_simple_group_copy(EC_GROUP *dest, const EC_GROUP *src)
|
||||
{
|
||||
if (!BN_copy(dest->field, src->field))
|
||||
return 0;
|
||||
@ -138,9 +138,9 @@ int ec_GFp_simple_group_copy(EC_GROUP *dest, const EC_GROUP *src)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ec_GFp_simple_group_set_curve(EC_GROUP *group,
|
||||
const BIGNUM *p, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_group_set_curve(EC_GROUP *group,
|
||||
const BIGNUM *p, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
BN_CTX *new_ctx = NULL;
|
||||
@ -197,8 +197,8 @@ int ec_GFp_simple_group_set_curve(EC_GROUP *group,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_simple_group_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a,
|
||||
BIGNUM *b, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_group_get_curve(const EC_GROUP *group, BIGNUM *p,
|
||||
BIGNUM *a, BIGNUM *b, BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
BN_CTX *new_ctx = NULL;
|
||||
@ -242,12 +242,13 @@ int ec_GFp_simple_group_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_simple_group_get_degree(const EC_GROUP *group)
|
||||
int ossl_ec_GFp_simple_group_get_degree(const EC_GROUP *group)
|
||||
{
|
||||
return BN_num_bits(group->field);
|
||||
}
|
||||
|
||||
int ec_GFp_simple_group_check_discriminant(const EC_GROUP *group, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_group_check_discriminant(const EC_GROUP *group,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
BIGNUM *a, *b, *order, *tmp_1, *tmp_2;
|
||||
@ -318,7 +319,7 @@ int ec_GFp_simple_group_check_discriminant(const EC_GROUP *group, BN_CTX *ctx)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_simple_point_init(EC_POINT *point)
|
||||
int ossl_ec_GFp_simple_point_init(EC_POINT *point)
|
||||
{
|
||||
point->X = BN_new();
|
||||
point->Y = BN_new();
|
||||
@ -334,14 +335,14 @@ int ec_GFp_simple_point_init(EC_POINT *point)
|
||||
return 1;
|
||||
}
|
||||
|
||||
void ec_GFp_simple_point_finish(EC_POINT *point)
|
||||
void ossl_ec_GFp_simple_point_finish(EC_POINT *point)
|
||||
{
|
||||
BN_free(point->X);
|
||||
BN_free(point->Y);
|
||||
BN_free(point->Z);
|
||||
}
|
||||
|
||||
void ec_GFp_simple_point_clear_finish(EC_POINT *point)
|
||||
void ossl_ec_GFp_simple_point_clear_finish(EC_POINT *point)
|
||||
{
|
||||
BN_clear_free(point->X);
|
||||
BN_clear_free(point->Y);
|
||||
@ -349,7 +350,7 @@ void ec_GFp_simple_point_clear_finish(EC_POINT *point)
|
||||
point->Z_is_one = 0;
|
||||
}
|
||||
|
||||
int ec_GFp_simple_point_copy(EC_POINT *dest, const EC_POINT *src)
|
||||
int ossl_ec_GFp_simple_point_copy(EC_POINT *dest, const EC_POINT *src)
|
||||
{
|
||||
if (!BN_copy(dest->X, src->X))
|
||||
return 0;
|
||||
@ -363,20 +364,20 @@ int ec_GFp_simple_point_copy(EC_POINT *dest, const EC_POINT *src)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ec_GFp_simple_point_set_to_infinity(const EC_GROUP *group,
|
||||
EC_POINT *point)
|
||||
int ossl_ec_GFp_simple_point_set_to_infinity(const EC_GROUP *group,
|
||||
EC_POINT *point)
|
||||
{
|
||||
point->Z_is_one = 0;
|
||||
BN_zero(point->Z);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ec_GFp_simple_set_Jprojective_coordinates_GFp(const EC_GROUP *group,
|
||||
EC_POINT *point,
|
||||
const BIGNUM *x,
|
||||
const BIGNUM *y,
|
||||
const BIGNUM *z,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_set_Jprojective_coordinates_GFp(const EC_GROUP *group,
|
||||
EC_POINT *point,
|
||||
const BIGNUM *x,
|
||||
const BIGNUM *y,
|
||||
const BIGNUM *z,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
BN_CTX *new_ctx = NULL;
|
||||
int ret = 0;
|
||||
@ -431,10 +432,10 @@ int ec_GFp_simple_set_Jprojective_coordinates_GFp(const EC_GROUP *group,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_simple_get_Jprojective_coordinates_GFp(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
BIGNUM *x, BIGNUM *y,
|
||||
BIGNUM *z, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_get_Jprojective_coordinates_GFp(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
BIGNUM *x, BIGNUM *y,
|
||||
BIGNUM *z, BN_CTX *ctx)
|
||||
{
|
||||
BN_CTX *new_ctx = NULL;
|
||||
int ret = 0;
|
||||
@ -480,10 +481,10 @@ int ec_GFp_simple_get_Jprojective_coordinates_GFp(const EC_GROUP *group,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_simple_point_set_affine_coordinates(const EC_GROUP *group,
|
||||
EC_POINT *point,
|
||||
const BIGNUM *x,
|
||||
const BIGNUM *y, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_point_set_affine_coordinates(const EC_GROUP *group,
|
||||
EC_POINT *point,
|
||||
const BIGNUM *x,
|
||||
const BIGNUM *y, BN_CTX *ctx)
|
||||
{
|
||||
if (x == NULL || y == NULL) {
|
||||
/*
|
||||
@ -497,10 +498,10 @@ int ec_GFp_simple_point_set_affine_coordinates(const EC_GROUP *group,
|
||||
BN_value_one(), ctx);
|
||||
}
|
||||
|
||||
int ec_GFp_simple_point_get_affine_coordinates(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
BIGNUM *x, BIGNUM *y,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_point_get_affine_coordinates(const EC_GROUP *group,
|
||||
const EC_POINT *point,
|
||||
BIGNUM *x, BIGNUM *y,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
BN_CTX *new_ctx = NULL;
|
||||
BIGNUM *Z, *Z_1, *Z_2, *Z_3;
|
||||
@ -609,8 +610,8 @@ int ec_GFp_simple_point_get_affine_coordinates(const EC_GROUP *group,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_simple_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a,
|
||||
const EC_POINT *b, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a,
|
||||
const EC_POINT *b, BN_CTX *ctx)
|
||||
{
|
||||
int (*field_mul) (const EC_GROUP *, BIGNUM *, const BIGNUM *,
|
||||
const BIGNUM *, BN_CTX *);
|
||||
@ -794,8 +795,8 @@ int ec_GFp_simple_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_simple_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
int (*field_mul) (const EC_GROUP *, BIGNUM *, const BIGNUM *,
|
||||
const BIGNUM *, BN_CTX *);
|
||||
@ -936,7 +937,8 @@ int ec_GFp_simple_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_simple_invert(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_invert(const EC_GROUP *group, EC_POINT *point,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
if (EC_POINT_is_at_infinity(group, point) || BN_is_zero(point->Y))
|
||||
/* point is its own inverse */
|
||||
@ -945,13 +947,14 @@ int ec_GFp_simple_invert(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx)
|
||||
return BN_usub(point->Y, group->field, point->Y);
|
||||
}
|
||||
|
||||
int ec_GFp_simple_is_at_infinity(const EC_GROUP *group, const EC_POINT *point)
|
||||
int ossl_ec_GFp_simple_is_at_infinity(const EC_GROUP *group,
|
||||
const EC_POINT *point)
|
||||
{
|
||||
return BN_is_zero(point->Z);
|
||||
}
|
||||
|
||||
int ec_GFp_simple_is_on_curve(const EC_GROUP *group, const EC_POINT *point,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_is_on_curve(const EC_GROUP *group, const EC_POINT *point,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
int (*field_mul) (const EC_GROUP *, BIGNUM *, const BIGNUM *,
|
||||
const BIGNUM *, BN_CTX *);
|
||||
@ -1053,8 +1056,8 @@ int ec_GFp_simple_is_on_curve(const EC_GROUP *group, const EC_POINT *point,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_simple_cmp(const EC_GROUP *group, const EC_POINT *a,
|
||||
const EC_POINT *b, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_cmp(const EC_GROUP *group, const EC_POINT *a,
|
||||
const EC_POINT *b, BN_CTX *ctx)
|
||||
{
|
||||
/*-
|
||||
* return values:
|
||||
@ -1161,8 +1164,8 @@ int ec_GFp_simple_cmp(const EC_GROUP *group, const EC_POINT *a,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_simple_make_affine(const EC_GROUP *group, EC_POINT *point,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_make_affine(const EC_GROUP *group, EC_POINT *point,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
BN_CTX *new_ctx = NULL;
|
||||
BIGNUM *x, *y;
|
||||
@ -1200,8 +1203,8 @@ int ec_GFp_simple_make_affine(const EC_GROUP *group, EC_POINT *point,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_simple_points_make_affine(const EC_GROUP *group, size_t num,
|
||||
EC_POINT *points[], BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_points_make_affine(const EC_GROUP *group, size_t num,
|
||||
EC_POINT *points[], BN_CTX *ctx)
|
||||
{
|
||||
BN_CTX *new_ctx = NULL;
|
||||
BIGNUM *tmp, *tmp_Z;
|
||||
@ -1359,14 +1362,14 @@ int ec_GFp_simple_points_make_affine(const EC_GROUP *group, size_t num,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ec_GFp_simple_field_mul(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_field_mul(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
const BIGNUM *b, BN_CTX *ctx)
|
||||
{
|
||||
return BN_mod_mul(r, a, b, group->field, ctx);
|
||||
}
|
||||
|
||||
int ec_GFp_simple_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
return BN_mod_sqr(r, a, group->field, ctx);
|
||||
}
|
||||
@ -1377,8 +1380,8 @@ int ec_GFp_simple_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
* Since we don't have a Mont structure here, SCA hardening is with blinding.
|
||||
* NB: "a" must be in _decoded_ form. (i.e. field_decode must precede.)
|
||||
*/
|
||||
int ec_GFp_simple_field_inv(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_field_inv(const EC_GROUP *group, BIGNUM *r,
|
||||
const BIGNUM *a, BN_CTX *ctx)
|
||||
{
|
||||
BIGNUM *e = NULL;
|
||||
BN_CTX *new_ctx = NULL;
|
||||
@ -1424,8 +1427,8 @@ int ec_GFp_simple_field_inv(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
|
||||
* lambda = [1,group->field)
|
||||
*
|
||||
*/
|
||||
int ec_GFp_simple_blind_coordinates(const EC_GROUP *group, EC_POINT *p,
|
||||
BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_blind_coordinates(const EC_GROUP *group, EC_POINT *p,
|
||||
BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
BIGNUM *lambda = NULL;
|
||||
@ -1487,9 +1490,9 @@ int ec_GFp_simple_blind_coordinates(const EC_GROUP *group, EC_POINT *p,
|
||||
* Blinding uses the equivalence relation (\lambda X, \lambda Y, \lambda Z)
|
||||
* for any non-zero \lambda that holds for projective (homogeneous) coords.
|
||||
*/
|
||||
int ec_GFp_simple_ladder_pre(const EC_GROUP *group,
|
||||
EC_POINT *r, EC_POINT *s,
|
||||
EC_POINT *p, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_ladder_pre(const EC_GROUP *group,
|
||||
EC_POINT *r, EC_POINT *s,
|
||||
EC_POINT *p, BN_CTX *ctx)
|
||||
{
|
||||
BIGNUM *t1, *t2, *t3, *t4, *t5 = NULL;
|
||||
|
||||
@ -1557,9 +1560,9 @@ int ec_GFp_simple_ladder_pre(const EC_GROUP *group,
|
||||
* attacks", as described at
|
||||
* https://hyperelliptic.org/EFD/g1p/auto-shortw-xz.html#ladder-mladd-2002-it-4
|
||||
*/
|
||||
int ec_GFp_simple_ladder_step(const EC_GROUP *group,
|
||||
EC_POINT *r, EC_POINT *s,
|
||||
EC_POINT *p, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_ladder_step(const EC_GROUP *group,
|
||||
EC_POINT *r, EC_POINT *s,
|
||||
EC_POINT *p, BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
BIGNUM *t0, *t1, *t2, *t3, *t4, *t5, *t6 = NULL;
|
||||
@ -1645,9 +1648,9 @@ int ec_GFp_simple_ladder_step(const EC_GROUP *group,
|
||||
* - Y1==0 implies p has order 2, so either r or s are infinity and handled by
|
||||
* one of the BN_is_zero(...) branches.
|
||||
*/
|
||||
int ec_GFp_simple_ladder_post(const EC_GROUP *group,
|
||||
EC_POINT *r, EC_POINT *s,
|
||||
EC_POINT *p, BN_CTX *ctx)
|
||||
int ossl_ec_GFp_simple_ladder_post(const EC_GROUP *group,
|
||||
EC_POINT *r, EC_POINT *s,
|
||||
EC_POINT *p, BN_CTX *ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
BIGNUM *t0, *t1, *t2, *t3, *t4, *t5, *t6 = NULL;
|
||||
|
@ -20,7 +20,7 @@
|
||||
* implementations alike.
|
||||
*/
|
||||
|
||||
int ecx_public_from_private(ECX_KEY *key)
|
||||
int ossl_ecx_public_from_private(ECX_KEY *key)
|
||||
{
|
||||
switch (key->type) {
|
||||
case ECX_KEY_TYPE_X25519:
|
||||
@ -47,8 +47,8 @@ int ecx_public_from_private(ECX_KEY *key)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ecx_key_fromdata(ECX_KEY *ecx, const OSSL_PARAM params[],
|
||||
int include_private)
|
||||
int ossl_ecx_key_fromdata(ECX_KEY *ecx, const OSSL_PARAM params[],
|
||||
int include_private)
|
||||
{
|
||||
size_t privkeylen = 0, pubkeylen = 0;
|
||||
const OSSL_PARAM *param_priv_key = NULL, *param_pub_key;
|
||||
@ -82,7 +82,7 @@ int ecx_key_fromdata(ECX_KEY *ecx, const OSSL_PARAM params[],
|
||||
|| (param_priv_key != NULL && privkeylen != ecx->keylen))
|
||||
return 0;
|
||||
|
||||
if (param_pub_key == NULL && !ecx_public_from_private(ecx))
|
||||
if (param_pub_key == NULL && !ossl_ecx_public_from_private(ecx))
|
||||
return 0;
|
||||
|
||||
ecx->haspubkey = 1;
|
||||
|
@ -10,8 +10,8 @@
|
||||
#include <openssl/err.h>
|
||||
#include "crypto/ecx.h"
|
||||
|
||||
ECX_KEY *ecx_key_new(OSSL_LIB_CTX *libctx, ECX_KEY_TYPE type, int haspubkey,
|
||||
const char *propq)
|
||||
ECX_KEY *ossl_ecx_key_new(OSSL_LIB_CTX *libctx, ECX_KEY_TYPE type, int haspubkey,
|
||||
const char *propq)
|
||||
{
|
||||
ECX_KEY *ret = OPENSSL_zalloc(sizeof(*ret));
|
||||
|
||||
@ -54,7 +54,7 @@ err:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void ecx_key_free(ECX_KEY *key)
|
||||
void ossl_ecx_key_free(ECX_KEY *key)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -73,12 +73,12 @@ void ecx_key_free(ECX_KEY *key)
|
||||
OPENSSL_free(key);
|
||||
}
|
||||
|
||||
void ecx_key_set0_libctx(ECX_KEY *key, OSSL_LIB_CTX *libctx)
|
||||
void ossl_ecx_key_set0_libctx(ECX_KEY *key, OSSL_LIB_CTX *libctx)
|
||||
{
|
||||
key->libctx = libctx;
|
||||
}
|
||||
|
||||
int ecx_key_up_ref(ECX_KEY *key)
|
||||
int ossl_ecx_key_up_ref(ECX_KEY *key)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -90,7 +90,7 @@ int ecx_key_up_ref(ECX_KEY *key)
|
||||
return ((i > 1) ? 1 : 0);
|
||||
}
|
||||
|
||||
unsigned char *ecx_key_allocate_privkey(ECX_KEY *key)
|
||||
unsigned char *ossl_ecx_key_allocate_privkey(ECX_KEY *key)
|
||||
{
|
||||
key->privkey = OPENSSL_secure_zalloc(key->keylen);
|
||||
|
||||
|
@ -59,7 +59,7 @@ static int ecx_key_op(EVP_PKEY *pkey, int id, const X509_ALGOR *palg,
|
||||
}
|
||||
}
|
||||
|
||||
key = ecx_key_new(libctx, KEYNID2TYPE(id), 1, propq);
|
||||
key = ossl_ecx_key_new(libctx, KEYNID2TYPE(id), 1, propq);
|
||||
if (key == NULL) {
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_MALLOC_FAILURE);
|
||||
return 0;
|
||||
@ -69,7 +69,7 @@ static int ecx_key_op(EVP_PKEY *pkey, int id, const X509_ALGOR *palg,
|
||||
if (op == KEY_OP_PUBLIC) {
|
||||
memcpy(pubkey, p, plen);
|
||||
} else {
|
||||
privkey = ecx_key_allocate_privkey(key);
|
||||
privkey = ossl_ecx_key_allocate_privkey(key);
|
||||
if (privkey == NULL) {
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
@ -88,7 +88,7 @@ static int ecx_key_op(EVP_PKEY *pkey, int id, const X509_ALGOR *palg,
|
||||
} else {
|
||||
memcpy(privkey, p, KEYLENID(id));
|
||||
}
|
||||
if (!ecx_public_from_private(key)) {
|
||||
if (!ossl_ecx_public_from_private(key)) {
|
||||
ERR_raise(ERR_LIB_EC, EC_R_FAILED_MAKING_PUBLIC_KEY);
|
||||
goto err;
|
||||
}
|
||||
@ -97,7 +97,7 @@ static int ecx_key_op(EVP_PKEY *pkey, int id, const X509_ALGOR *palg,
|
||||
EVP_PKEY_assign(pkey, id, key);
|
||||
return 1;
|
||||
err:
|
||||
ecx_key_free(key);
|
||||
ossl_ecx_key_free(key);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -235,7 +235,7 @@ static int ecx_security_bits(const EVP_PKEY *pkey)
|
||||
|
||||
static void ecx_free(EVP_PKEY *pkey)
|
||||
{
|
||||
ecx_key_free(pkey->pkey.ecx);
|
||||
ossl_ecx_key_free(pkey->pkey.ecx);
|
||||
}
|
||||
|
||||
/* "parameters" are always equal */
|
||||
@ -438,17 +438,17 @@ static int ecx_generic_import_from(const OSSL_PARAM params[], void *vpctx,
|
||||
{
|
||||
EVP_PKEY_CTX *pctx = vpctx;
|
||||
EVP_PKEY *pkey = EVP_PKEY_CTX_get0_pkey(pctx);
|
||||
ECX_KEY *ecx = ecx_key_new(pctx->libctx, KEYNID2TYPE(keytype), 0,
|
||||
pctx->propquery);
|
||||
ECX_KEY *ecx = ossl_ecx_key_new(pctx->libctx, KEYNID2TYPE(keytype), 0,
|
||||
pctx->propquery);
|
||||
|
||||
if (ecx == NULL) {
|
||||
ERR_raise(ERR_LIB_DH, ERR_R_MALLOC_FAILURE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!ecx_key_fromdata(ecx, params, 1)
|
||||
if (!ossl_ecx_key_fromdata(ecx, params, 1)
|
||||
|| !EVP_PKEY_assign(pkey, keytype, ecx)) {
|
||||
ecx_key_free(ecx);
|
||||
ossl_ecx_key_free(ecx);
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
@ -943,8 +943,8 @@ static int s390x_pkey_ecx_keygen25519(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
ECX_KEY *key = ecx_key_new(ctx->libctx, ECX_KEY_TYPE_X25519, 1,
|
||||
ctx->propquery);
|
||||
ECX_KEY *key = ossl_ecx_key_new(ctx->libctx, ECX_KEY_TYPE_X25519, 1,
|
||||
ctx->propquery);
|
||||
unsigned char *privkey = NULL, *pubkey;
|
||||
|
||||
if (key == NULL) {
|
||||
@ -954,7 +954,7 @@ static int s390x_pkey_ecx_keygen25519(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
|
||||
|
||||
pubkey = key->pubkey;
|
||||
|
||||
privkey = ecx_key_allocate_privkey(key);
|
||||
privkey = ossl_ecx_key_allocate_privkey(key);
|
||||
if (privkey == NULL) {
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
@ -973,7 +973,7 @@ static int s390x_pkey_ecx_keygen25519(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
|
||||
EVP_PKEY_assign(pkey, ctx->pmeth->pkey_id, key);
|
||||
return 1;
|
||||
err:
|
||||
ecx_key_free(key);
|
||||
ossl_ecx_key_free(key);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -986,8 +986,8 @@ static int s390x_pkey_ecx_keygen448(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
ECX_KEY *key = ecx_key_new(ctx->libctx, ECX_KEY_TYPE_X448, 1,
|
||||
ctx->propquery);
|
||||
ECX_KEY *key = ossl_ecx_key_new(ctx->libctx, ECX_KEY_TYPE_X448, 1,
|
||||
ctx->propquery);
|
||||
unsigned char *privkey = NULL, *pubkey;
|
||||
|
||||
if (key == NULL) {
|
||||
@ -997,7 +997,7 @@ static int s390x_pkey_ecx_keygen448(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
|
||||
|
||||
pubkey = key->pubkey;
|
||||
|
||||
privkey = ecx_key_allocate_privkey(key);
|
||||
privkey = ossl_ecx_key_allocate_privkey(key);
|
||||
if (privkey == NULL) {
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
@ -1015,7 +1015,7 @@ static int s390x_pkey_ecx_keygen448(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
|
||||
EVP_PKEY_assign(pkey, ctx->pmeth->pkey_id, key);
|
||||
return 1;
|
||||
err:
|
||||
ecx_key_free(key);
|
||||
ossl_ecx_key_free(key);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1032,8 +1032,8 @@ static int s390x_pkey_ecd_keygen25519(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
|
||||
0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
|
||||
};
|
||||
unsigned char x_dst[32], buff[SHA512_DIGEST_LENGTH];
|
||||
ECX_KEY *key = ecx_key_new(ctx->libctx, ECX_KEY_TYPE_ED25519, 1,
|
||||
ctx->propquery);
|
||||
ECX_KEY *key = ossl_ecx_key_new(ctx->libctx, ECX_KEY_TYPE_ED25519, 1,
|
||||
ctx->propquery);
|
||||
unsigned char *privkey = NULL, *pubkey;
|
||||
unsigned int sz;
|
||||
|
||||
@ -1044,7 +1044,7 @@ static int s390x_pkey_ecd_keygen25519(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
|
||||
|
||||
pubkey = key->pubkey;
|
||||
|
||||
privkey = ecx_key_allocate_privkey(key);
|
||||
privkey = ossl_ecx_key_allocate_privkey(key);
|
||||
if (privkey == NULL) {
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
@ -1069,7 +1069,7 @@ static int s390x_pkey_ecd_keygen25519(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
|
||||
EVP_PKEY_assign(pkey, ctx->pmeth->pkey_id, key);
|
||||
return 1;
|
||||
err:
|
||||
ecx_key_free(key);
|
||||
ossl_ecx_key_free(key);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1090,8 +1090,8 @@ static int s390x_pkey_ecd_keygen448(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
|
||||
0x24, 0xbc, 0xb6, 0x6e, 0x71, 0x46, 0x3f, 0x69, 0x00
|
||||
};
|
||||
unsigned char x_dst[57], buff[114];
|
||||
ECX_KEY *key = ecx_key_new(ctx->libctx, ECX_KEY_TYPE_ED448, 1,
|
||||
ctx->propquery);
|
||||
ECX_KEY *key = ossl_ecx_key_new(ctx->libctx, ECX_KEY_TYPE_ED448, 1,
|
||||
ctx->propquery);
|
||||
unsigned char *privkey = NULL, *pubkey;
|
||||
EVP_MD_CTX *hashctx = NULL;
|
||||
|
||||
@ -1102,7 +1102,7 @@ static int s390x_pkey_ecd_keygen448(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
|
||||
|
||||
pubkey = key->pubkey;
|
||||
|
||||
privkey = ecx_key_allocate_privkey(key);
|
||||
privkey = ossl_ecx_key_allocate_privkey(key);
|
||||
if (privkey == NULL) {
|
||||
ERR_raise(ERR_LIB_EC, ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
@ -1135,7 +1135,7 @@ static int s390x_pkey_ecd_keygen448(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
|
||||
EVP_MD_CTX_free(hashctx);
|
||||
return 1;
|
||||
err:
|
||||
ecx_key_free(key);
|
||||
ossl_ecx_key_free(key);
|
||||
EVP_MD_CTX_free(hashctx);
|
||||
return 0;
|
||||
}
|
||||
@ -1351,7 +1351,7 @@ static const EVP_PKEY_METHOD ed448_s390x_pkey_meth = {
|
||||
};
|
||||
#endif
|
||||
|
||||
const EVP_PKEY_METHOD *ecx25519_pkey_method(void)
|
||||
const EVP_PKEY_METHOD *ossl_ecx25519_pkey_method(void)
|
||||
{
|
||||
#ifdef S390X_EC_ASM
|
||||
if (OPENSSL_s390xcap_P.pcc[1] & S390X_CAPBIT(S390X_SCALAR_MULTIPLY_X25519))
|
||||
@ -1360,7 +1360,7 @@ const EVP_PKEY_METHOD *ecx25519_pkey_method(void)
|
||||
return &ecx25519_pkey_meth;
|
||||
}
|
||||
|
||||
const EVP_PKEY_METHOD *ecx448_pkey_method(void)
|
||||
const EVP_PKEY_METHOD *ossl_ecx448_pkey_method(void)
|
||||
{
|
||||
#ifdef S390X_EC_ASM
|
||||
if (OPENSSL_s390xcap_P.pcc[1] & S390X_CAPBIT(S390X_SCALAR_MULTIPLY_X448))
|
||||
@ -1369,7 +1369,7 @@ const EVP_PKEY_METHOD *ecx448_pkey_method(void)
|
||||
return &ecx448_pkey_meth;
|
||||
}
|
||||
|
||||
const EVP_PKEY_METHOD *ed25519_pkey_method(void)
|
||||
const EVP_PKEY_METHOD *ossl_ed25519_pkey_method(void)
|
||||
{
|
||||
#ifdef S390X_EC_ASM
|
||||
if (OPENSSL_s390xcap_P.pcc[1] & S390X_CAPBIT(S390X_SCALAR_MULTIPLY_ED25519)
|
||||
@ -1381,7 +1381,7 @@ const EVP_PKEY_METHOD *ed25519_pkey_method(void)
|
||||
return &ed25519_pkey_meth;
|
||||
}
|
||||
|
||||
const EVP_PKEY_METHOD *ed448_pkey_method(void)
|
||||
const EVP_PKEY_METHOD *ossl_ed448_pkey_method(void)
|
||||
{
|
||||
#ifdef S390X_EC_ASM
|
||||
if (OPENSSL_s390xcap_P.pcc[1] & S390X_CAPBIT(S390X_SCALAR_MULTIPLY_ED448)
|
||||
|
@ -1023,7 +1023,7 @@ static int fix_dh_paramgen_type(enum state state,
|
||||
return 0;
|
||||
|
||||
if (state == PRE_CTRL_TO_PARAMS) {
|
||||
ctx->p2 = (char *)dh_gen_type_id2name(ctx->p1);
|
||||
ctx->p2 = (char *)ossl_dh_gen_type_id2name(ctx->p1);
|
||||
ctx->p1 = 0;
|
||||
}
|
||||
|
||||
@ -1031,7 +1031,7 @@ static int fix_dh_paramgen_type(enum state state,
|
||||
return ret;
|
||||
|
||||
if (state == PRE_PARAMS_TO_CTRL) {
|
||||
ctx->p1 = dh_gen_type_name2id(ctx->p2);
|
||||
ctx->p1 = ossl_dh_gen_type_name2id(ctx->p2);
|
||||
ctx->p2 = NULL;
|
||||
}
|
||||
|
||||
@ -1504,7 +1504,7 @@ static int get_payload_group_name(enum state state,
|
||||
if (grp != NULL)
|
||||
nid = EC_GROUP_get_curve_name(grp);
|
||||
if (nid != NID_undef)
|
||||
ctx->p2 = (char *)ec_curve_nid2name(nid);
|
||||
ctx->p2 = (char *)ossl_ec_curve_nid2name(nid);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
@ -1569,7 +1569,7 @@ static int get_payload_public_key(enum state state,
|
||||
case EVP_PKEY_DH:
|
||||
switch (ctx->params->data_type) {
|
||||
case OSSL_PARAM_OCTET_STRING:
|
||||
ctx->sz = dh_key2buf(EVP_PKEY_get0_DH(pkey), &buf, 0, 1);
|
||||
ctx->sz = ossl_dh_key2buf(EVP_PKEY_get0_DH(pkey), &buf, 0, 1);
|
||||
ctx->p2 = buf;
|
||||
break;
|
||||
case OSSL_PARAM_UNSIGNED_INTEGER:
|
||||
@ -1592,7 +1592,7 @@ static int get_payload_public_key(enum state state,
|
||||
case EVP_PKEY_EC:
|
||||
if (ctx->params->data_type == OSSL_PARAM_OCTET_STRING) {
|
||||
EC_KEY *eckey = EVP_PKEY_get0_EC_KEY(pkey);
|
||||
BN_CTX *bnctx = BN_CTX_new_ex(ec_key_get_libctx(eckey));
|
||||
BN_CTX *bnctx = BN_CTX_new_ex(ossl_ec_key_get_libctx(eckey));
|
||||
const EC_GROUP *ecg = EC_KEY_get0_group(eckey);
|
||||
const EC_POINT *point = EC_KEY_get0_public_key(eckey);
|
||||
|
||||
|
@ -115,7 +115,7 @@ static const EC_NAME2NID curve_list[] = {
|
||||
{"SM2", NID_sm2 },
|
||||
};
|
||||
|
||||
const char *ec_curve_nid2name(int nid)
|
||||
const char *ossl_ec_curve_nid2name(int nid)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
@ -126,7 +126,7 @@ const char *ec_curve_nid2name(int nid)
|
||||
* TODO(3.0) Figure out if we should try to find the nid with
|
||||
* EC_curve_nid2nist() first, i.e. make it a priority to return
|
||||
* NIST names if there is one for the NID. This is related to
|
||||
* the TODO comment in ec_curve_name2nid().
|
||||
* the TODO comment in ossl_ec_curve_name2nid().
|
||||
*/
|
||||
|
||||
for (i = 0; i < OSSL_NELEM(curve_list); i++) {
|
||||
@ -136,13 +136,13 @@ const char *ec_curve_nid2name(int nid)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int ec_curve_name2nid(const char *name)
|
||||
int ossl_ec_curve_name2nid(const char *name)
|
||||
{
|
||||
size_t i;
|
||||
int nid;
|
||||
|
||||
if (name != NULL) {
|
||||
if ((nid = ec_curve_nist2nid_int(name)) != NID_undef)
|
||||
if ((nid = ossl_ec_curve_nist2nid_int(name)) != NID_undef)
|
||||
return nid;
|
||||
|
||||
for (i = 0; i < OSSL_NELEM(curve_list); i++) {
|
||||
@ -174,7 +174,7 @@ static const EC_NAME2NID nist_curves[] = {
|
||||
{"P-521", NID_secp521r1}
|
||||
};
|
||||
|
||||
const char *ec_curve_nid2nist_int(int nid)
|
||||
const char *ossl_ec_curve_nid2nist_int(int nid)
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < OSSL_NELEM(nist_curves); i++) {
|
||||
@ -184,7 +184,7 @@ const char *ec_curve_nid2nist_int(int nid)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int ec_curve_nist2nid_int(const char *name)
|
||||
int ossl_ec_curve_nist2nid_int(const char *name)
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < OSSL_NELEM(nist_curves); i++) {
|
||||
|
@ -838,12 +838,12 @@ static ECX_KEY *evp_pkey_get1_ECX_KEY(EVP_PKEY *pkey, int type)
|
||||
{
|
||||
ECX_KEY *ret = evp_pkey_get0_ECX_KEY(pkey, type);
|
||||
if (ret != NULL)
|
||||
ecx_key_up_ref(ret);
|
||||
ossl_ecx_key_up_ref(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
# define IMPLEMENT_ECX_VARIANT(NAME) \
|
||||
ECX_KEY *evp_pkey_get1_##NAME(EVP_PKEY *pkey) \
|
||||
ECX_KEY *ossl_evp_pkey_get1_##NAME(EVP_PKEY *pkey) \
|
||||
{ \
|
||||
return evp_pkey_get1_ECX_KEY(pkey, EVP_PKEY_##NAME); \
|
||||
}
|
||||
|
@ -57,19 +57,19 @@ static pmeth_fn standard_methods[] = {
|
||||
ossl_dsa_pkey_method,
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_EC
|
||||
ec_pkey_method,
|
||||
ossl_ec_pkey_method,
|
||||
# endif
|
||||
ossl_rsa_pss_pkey_method,
|
||||
# ifndef OPENSSL_NO_DH
|
||||
ossl_dhx_pkey_method,
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_EC
|
||||
ecx25519_pkey_method,
|
||||
ecx448_pkey_method,
|
||||
ossl_ecx25519_pkey_method,
|
||||
ossl_ecx448_pkey_method,
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_EC
|
||||
ed25519_pkey_method,
|
||||
ed448_pkey_method,
|
||||
ossl_ed25519_pkey_method,
|
||||
ossl_ed448_pkey_method,
|
||||
# endif
|
||||
};
|
||||
|
||||
@ -1326,99 +1326,7 @@ int EVP_PKEY_CTX_ctrl_uint64(EVP_PKEY_CTX *ctx, int keytype, int optype,
|
||||
return EVP_PKEY_CTX_ctrl(ctx, keytype, optype, cmd, 0, &value);
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
static int legacy_ctrl_str_to_param(EVP_PKEY_CTX *ctx, const char *name,
|
||||
const char *value)
|
||||
{
|
||||
if (strcmp(name, "md") == 0)
|
||||
name = OSSL_ALG_PARAM_DIGEST;
|
||||
else if (strcmp(name, "rsa_padding_mode") == 0)
|
||||
name = OSSL_ASYM_CIPHER_PARAM_PAD_MODE;
|
||||
else if (strcmp(name, "rsa_mgf1_md") == 0)
|
||||
name = OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST;
|
||||
else if (strcmp(name, "rsa_oaep_md") == 0)
|
||||
name = OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST;
|
||||
else if (strcmp(name, "rsa_oaep_label") == 0)
|
||||
name = OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL;
|
||||
else if (strcmp(name, "rsa_pss_saltlen") == 0)
|
||||
name = OSSL_SIGNATURE_PARAM_PSS_SALTLEN;
|
||||
else if (strcmp(name, "rsa_keygen_bits") == 0)
|
||||
name = OSSL_PKEY_PARAM_RSA_BITS;
|
||||
else if (strcmp(name, "rsa_keygen_pubexp") == 0)
|
||||
name = OSSL_PKEY_PARAM_RSA_E;
|
||||
else if (strcmp(name, "rsa_keygen_primes") == 0)
|
||||
name = OSSL_PKEY_PARAM_RSA_PRIMES;
|
||||
else if (strcmp(name, "rsa_pss_keygen_md") == 0)
|
||||
name = OSSL_PKEY_PARAM_RSA_DIGEST;
|
||||
else if (strcmp(name, "rsa_pss_keygen_mgf1_md") == 0)
|
||||
name = OSSL_PKEY_PARAM_RSA_MGF1_DIGEST;
|
||||
else if (strcmp(name, "rsa_pss_keygen_saltlen") == 0)
|
||||
name = OSSL_PKEY_PARAM_RSA_PSS_SALTLEN;
|
||||
else if (strcmp(name, "dsa_paramgen_bits") == 0)
|
||||
name = OSSL_PKEY_PARAM_FFC_PBITS;
|
||||
else if (strcmp(name, "dsa_paramgen_q_bits") == 0)
|
||||
name = OSSL_PKEY_PARAM_FFC_QBITS;
|
||||
else if (strcmp(name, "dsa_paramgen_md") == 0)
|
||||
name = OSSL_PKEY_PARAM_FFC_DIGEST;
|
||||
else if (strcmp(name, "dh_paramgen_generator") == 0)
|
||||
name = OSSL_PKEY_PARAM_DH_GENERATOR;
|
||||
else if (strcmp(name, "dh_paramgen_prime_len") == 0)
|
||||
name = OSSL_PKEY_PARAM_FFC_PBITS;
|
||||
else if (strcmp(name, "dh_paramgen_subprime_len") == 0)
|
||||
name = OSSL_PKEY_PARAM_FFC_QBITS;
|
||||
else if (strcmp(name, "dh_paramgen_type") == 0) {
|
||||
name = OSSL_PKEY_PARAM_FFC_TYPE;
|
||||
value = ossl_dh_gen_type_id2name(atoi(value));
|
||||
} else if (strcmp(name, "dh_param") == 0)
|
||||
name = OSSL_PKEY_PARAM_GROUP_NAME;
|
||||
else if (strcmp(name, "dh_rfc5114") == 0) {
|
||||
int num = atoi(value);
|
||||
|
||||
name = OSSL_PKEY_PARAM_GROUP_NAME;
|
||||
value =
|
||||
ossl_ffc_named_group_get_name(ossl_ffc_uid_to_dh_named_group(num));
|
||||
} else if (strcmp(name, "dh_pad") == 0)
|
||||
name = OSSL_EXCHANGE_PARAM_PAD;
|
||||
else if (strcmp(name, "ec_paramgen_curve") == 0)
|
||||
name = OSSL_PKEY_PARAM_GROUP_NAME;
|
||||
else if (strcmp(name, "ecdh_cofactor_mode") == 0)
|
||||
name = OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE;
|
||||
else if (strcmp(name, "ecdh_kdf_md") == 0)
|
||||
name = OSSL_EXCHANGE_PARAM_KDF_DIGEST;
|
||||
else if (strcmp(name, "ec_param_enc") == 0)
|
||||
name = OSSL_PKEY_PARAM_EC_ENCODING;
|
||||
else if (strcmp(name, "N") == 0)
|
||||
name = OSSL_KDF_PARAM_SCRYPT_N;
|
||||
|
||||
{
|
||||
/*
|
||||
* TODO(3.0) reduce the code above to only translate known legacy
|
||||
* string to the corresponding core name (see core_names.h), but
|
||||
* otherwise leave it to this code block to do the actual work.
|
||||
*/
|
||||
const OSSL_PARAM *settable = EVP_PKEY_CTX_settable_params(ctx);
|
||||
OSSL_PARAM params[2] = { OSSL_PARAM_END, OSSL_PARAM_END };
|
||||
int rv = 0;
|
||||
int exists = 0;
|
||||
|
||||
if (!OSSL_PARAM_allocate_from_text(¶ms[0], settable, name, value,
|
||||
strlen(value), &exists)) {
|
||||
if (!exists) {
|
||||
ERR_raise_data(ERR_LIB_EVP, EVP_R_COMMAND_NOT_SUPPORTED,
|
||||
"name=%s,value=%s", name, value);
|
||||
return -2;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
if (EVP_PKEY_CTX_set_params(ctx, params))
|
||||
rv = 1;
|
||||
OPENSSL_free(params[0].data);
|
||||
return rv;
|
||||
}
|
||||
}
|
||||
|
||||
>>>>>>> 4651c47010... Fix external symbols related to dh keys
|
||||
static int evp_pkey_ctx_ctrl_str_int(EVP_PKEY_CTX *ctx,
|
||||
const char *name, const char *value)
|
||||
{
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
#include "crypto/sm2.h"
|
||||
#include "crypto/sm2err.h"
|
||||
#include "crypto/ec.h" /* ecdh_KDF_X9_63() */
|
||||
#include "crypto/ec.h" /* ossl_ecdh_kdf_X9_63() */
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/evp.h>
|
||||
#include <openssl/bn.h>
|
||||
@ -67,8 +67,8 @@ static size_t ec_field_size(const EC_GROUP *group)
|
||||
return field_size;
|
||||
}
|
||||
|
||||
int sm2_plaintext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len,
|
||||
size_t *pt_size)
|
||||
int ossl_sm2_plaintext_size(const EC_KEY *key, const EVP_MD *digest,
|
||||
size_t msg_len, size_t *pt_size)
|
||||
{
|
||||
const size_t field_size = ec_field_size(EC_KEY_get0_group(key));
|
||||
const int md_size = EVP_MD_size(digest);
|
||||
@ -93,8 +93,8 @@ int sm2_plaintext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len,
|
||||
return 1;
|
||||
}
|
||||
|
||||
int sm2_ciphertext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len,
|
||||
size_t *ct_size)
|
||||
int ossl_sm2_ciphertext_size(const EC_KEY *key, const EVP_MD *digest,
|
||||
size_t msg_len, size_t *ct_size)
|
||||
{
|
||||
const size_t field_size = ec_field_size(EC_KEY_get0_group(key));
|
||||
const int md_size = EVP_MD_size(digest);
|
||||
@ -113,10 +113,10 @@ int sm2_ciphertext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len,
|
||||
return 1;
|
||||
}
|
||||
|
||||
int sm2_encrypt(const EC_KEY *key,
|
||||
const EVP_MD *digest,
|
||||
const uint8_t *msg,
|
||||
size_t msg_len, uint8_t *ciphertext_buf, size_t *ciphertext_len)
|
||||
int ossl_sm2_encrypt(const EC_KEY *key,
|
||||
const EVP_MD *digest,
|
||||
const uint8_t *msg, size_t msg_len,
|
||||
uint8_t *ciphertext_buf, size_t *ciphertext_len)
|
||||
{
|
||||
int rc = 0, ciphertext_leni;
|
||||
size_t i;
|
||||
@ -139,8 +139,8 @@ int sm2_encrypt(const EC_KEY *key,
|
||||
size_t field_size;
|
||||
const int C3_size = EVP_MD_size(digest);
|
||||
EVP_MD *fetched_digest = NULL;
|
||||
OSSL_LIB_CTX *libctx = ec_key_get_libctx(key);
|
||||
const char *propq = ec_key_get0_propq(key);
|
||||
OSSL_LIB_CTX *libctx = ossl_ec_key_get_libctx(key);
|
||||
const char *propq = ossl_ec_key_get0_propq(key);
|
||||
|
||||
/* NULL these before any "goto done" */
|
||||
ctext_struct.C2 = NULL;
|
||||
@ -213,8 +213,8 @@ int sm2_encrypt(const EC_KEY *key,
|
||||
}
|
||||
|
||||
/* X9.63 with no salt happens to match the KDF used in SM2 */
|
||||
if (!ecdh_KDF_X9_63(msg_mask, msg_len, x2y2, 2 * field_size, NULL, 0,
|
||||
digest, libctx, propq)) {
|
||||
if (!ossl_ecdh_kdf_X9_63(msg_mask, msg_len, x2y2, 2 * field_size, NULL, 0,
|
||||
digest, libctx, propq)) {
|
||||
ERR_raise(ERR_LIB_SM2, ERR_R_EVP_LIB);
|
||||
goto done;
|
||||
}
|
||||
@ -275,10 +275,10 @@ int sm2_encrypt(const EC_KEY *key,
|
||||
return rc;
|
||||
}
|
||||
|
||||
int sm2_decrypt(const EC_KEY *key,
|
||||
const EVP_MD *digest,
|
||||
const uint8_t *ciphertext,
|
||||
size_t ciphertext_len, uint8_t *ptext_buf, size_t *ptext_len)
|
||||
int ossl_sm2_decrypt(const EC_KEY *key,
|
||||
const EVP_MD *digest,
|
||||
const uint8_t *ciphertext, size_t ciphertext_len,
|
||||
uint8_t *ptext_buf, size_t *ptext_len)
|
||||
{
|
||||
int rc = 0;
|
||||
int i;
|
||||
@ -297,8 +297,8 @@ int sm2_decrypt(const EC_KEY *key,
|
||||
const uint8_t *C3 = NULL;
|
||||
int msg_len = 0;
|
||||
EVP_MD_CTX *hash = NULL;
|
||||
OSSL_LIB_CTX *libctx = ec_key_get_libctx(key);
|
||||
const char *propq = ec_key_get0_propq(key);
|
||||
OSSL_LIB_CTX *libctx = ossl_ec_key_get_libctx(key);
|
||||
const char *propq = ossl_ec_key_get0_propq(key);
|
||||
|
||||
if (field_size == 0 || hash_size <= 0)
|
||||
goto done;
|
||||
@ -362,8 +362,8 @@ int sm2_decrypt(const EC_KEY *key,
|
||||
|
||||
if (BN_bn2binpad(x2, x2y2, field_size) < 0
|
||||
|| BN_bn2binpad(y2, x2y2 + field_size, field_size) < 0
|
||||
|| !ecdh_KDF_X9_63(msg_mask, msg_len, x2y2, 2 * field_size, NULL, 0,
|
||||
digest, libctx, propq)) {
|
||||
|| !ossl_ecdh_kdf_X9_63(msg_mask, msg_len, x2y2, 2 * field_size,
|
||||
NULL, 0, digest, libctx, propq)) {
|
||||
ERR_raise(ERR_LIB_SM2, ERR_R_INTERNAL_ERROR);
|
||||
goto done;
|
||||
}
|
||||
|
@ -19,7 +19,7 @@
|
||||
* crypto/ec/ec_key.c
|
||||
*/
|
||||
|
||||
int sm2_key_private_check(const EC_KEY *eckey)
|
||||
int ossl_sm2_key_private_check(const EC_KEY *eckey)
|
||||
{
|
||||
int ret = 0;
|
||||
BIGNUM *max = NULL;
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
#include "crypto/sm2.h"
|
||||
#include "crypto/sm2err.h"
|
||||
#include "crypto/ec.h" /* ec_group_do_inverse_ord() */
|
||||
#include "crypto/ec.h" /* ossl_ec_group_do_inverse_ord() */
|
||||
#include "internal/numbers.h"
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/evp.h>
|
||||
@ -21,11 +21,11 @@
|
||||
#include <openssl/bn.h>
|
||||
#include <string.h>
|
||||
|
||||
int sm2_compute_z_digest(uint8_t *out,
|
||||
const EVP_MD *digest,
|
||||
const uint8_t *id,
|
||||
const size_t id_len,
|
||||
const EC_KEY *key)
|
||||
int ossl_sm2_compute_z_digest(uint8_t *out,
|
||||
const EVP_MD *digest,
|
||||
const uint8_t *id,
|
||||
const size_t id_len,
|
||||
const EC_KEY *key)
|
||||
{
|
||||
int rc = 0;
|
||||
const EC_GROUP *group = EC_KEY_get0_group(key);
|
||||
@ -44,7 +44,7 @@ int sm2_compute_z_digest(uint8_t *out,
|
||||
uint8_t e_byte = 0;
|
||||
|
||||
hash = EVP_MD_CTX_new();
|
||||
ctx = BN_CTX_new_ex(ec_key_get_libctx(key));
|
||||
ctx = BN_CTX_new_ex(ossl_ec_key_get_libctx(key));
|
||||
if (hash == NULL || ctx == NULL) {
|
||||
ERR_raise(ERR_LIB_SM2, ERR_R_MALLOC_FAILURE);
|
||||
goto done;
|
||||
@ -149,8 +149,8 @@ static BIGNUM *sm2_compute_msg_hash(const EVP_MD *digest,
|
||||
uint8_t *z = NULL;
|
||||
BIGNUM *e = NULL;
|
||||
EVP_MD *fetched_digest = NULL;
|
||||
OSSL_LIB_CTX *libctx = ec_key_get_libctx(key);
|
||||
const char *propq = ec_key_get0_propq(key);
|
||||
OSSL_LIB_CTX *libctx = ossl_ec_key_get_libctx(key);
|
||||
const char *propq = ossl_ec_key_get0_propq(key);
|
||||
|
||||
if (md_size < 0) {
|
||||
ERR_raise(ERR_LIB_SM2, SM2_R_INVALID_DIGEST);
|
||||
@ -169,7 +169,7 @@ static BIGNUM *sm2_compute_msg_hash(const EVP_MD *digest,
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!sm2_compute_z_digest(z, fetched_digest, id, id_len, key)) {
|
||||
if (!ossl_sm2_compute_z_digest(z, fetched_digest, id, id_len, key)) {
|
||||
/* SM2err already called */
|
||||
goto done;
|
||||
}
|
||||
@ -208,7 +208,7 @@ static ECDSA_SIG *sm2_sig_gen(const EC_KEY *key, const BIGNUM *e)
|
||||
BIGNUM *s = NULL;
|
||||
BIGNUM *x1 = NULL;
|
||||
BIGNUM *tmp = NULL;
|
||||
OSSL_LIB_CTX *libctx = ec_key_get_libctx(key);
|
||||
OSSL_LIB_CTX *libctx = ossl_ec_key_get_libctx(key);
|
||||
|
||||
kG = EC_POINT_new(group);
|
||||
ctx = BN_CTX_new_ex(libctx);
|
||||
@ -266,7 +266,7 @@ static ECDSA_SIG *sm2_sig_gen(const EC_KEY *key, const BIGNUM *e)
|
||||
continue;
|
||||
|
||||
if (!BN_add(s, dA, BN_value_one())
|
||||
|| !ec_group_do_inverse_ord(group, s, s, ctx)
|
||||
|| !ossl_ec_group_do_inverse_ord(group, s, s, ctx)
|
||||
|| !BN_mod_mul(tmp, dA, r, order, ctx)
|
||||
|| !BN_sub(tmp, k, tmp)
|
||||
|| !BN_mod_mul(s, s, tmp, order, ctx)) {
|
||||
@ -308,7 +308,7 @@ static int sm2_sig_verify(const EC_KEY *key, const ECDSA_SIG *sig,
|
||||
BIGNUM *x1 = NULL;
|
||||
const BIGNUM *r = NULL;
|
||||
const BIGNUM *s = NULL;
|
||||
OSSL_LIB_CTX *libctx = ec_key_get_libctx(key);
|
||||
OSSL_LIB_CTX *libctx = ossl_ec_key_get_libctx(key);
|
||||
|
||||
ctx = BN_CTX_new_ex(libctx);
|
||||
pt = EC_POINT_new(group);
|
||||
@ -375,11 +375,11 @@ static int sm2_sig_verify(const EC_KEY *key, const ECDSA_SIG *sig,
|
||||
return ret;
|
||||
}
|
||||
|
||||
ECDSA_SIG *sm2_do_sign(const EC_KEY *key,
|
||||
const EVP_MD *digest,
|
||||
const uint8_t *id,
|
||||
const size_t id_len,
|
||||
const uint8_t *msg, size_t msg_len)
|
||||
ECDSA_SIG *ossl_sm2_do_sign(const EC_KEY *key,
|
||||
const EVP_MD *digest,
|
||||
const uint8_t *id,
|
||||
const size_t id_len,
|
||||
const uint8_t *msg, size_t msg_len)
|
||||
{
|
||||
BIGNUM *e = NULL;
|
||||
ECDSA_SIG *sig = NULL;
|
||||
@ -397,12 +397,12 @@ ECDSA_SIG *sm2_do_sign(const EC_KEY *key,
|
||||
return sig;
|
||||
}
|
||||
|
||||
int sm2_do_verify(const EC_KEY *key,
|
||||
const EVP_MD *digest,
|
||||
const ECDSA_SIG *sig,
|
||||
const uint8_t *id,
|
||||
const size_t id_len,
|
||||
const uint8_t *msg, size_t msg_len)
|
||||
int ossl_sm2_do_verify(const EC_KEY *key,
|
||||
const EVP_MD *digest,
|
||||
const ECDSA_SIG *sig,
|
||||
const uint8_t *id,
|
||||
const size_t id_len,
|
||||
const uint8_t *msg, size_t msg_len)
|
||||
{
|
||||
BIGNUM *e = NULL;
|
||||
int ret = 0;
|
||||
@ -420,8 +420,9 @@ int sm2_do_verify(const EC_KEY *key,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int sm2_internal_sign(const unsigned char *dgst, int dgstlen,
|
||||
unsigned char *sig, unsigned int *siglen, EC_KEY *eckey)
|
||||
int ossl_sm2_internal_sign(const unsigned char *dgst, int dgstlen,
|
||||
unsigned char *sig, unsigned int *siglen,
|
||||
EC_KEY *eckey)
|
||||
{
|
||||
BIGNUM *e = NULL;
|
||||
ECDSA_SIG *s = NULL;
|
||||
@ -455,8 +456,9 @@ int sm2_internal_sign(const unsigned char *dgst, int dgstlen,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int sm2_internal_verify(const unsigned char *dgst, int dgstlen,
|
||||
const unsigned char *sig, int sig_len, EC_KEY *eckey)
|
||||
int ossl_sm2_internal_verify(const unsigned char *dgst, int dgstlen,
|
||||
const unsigned char *sig, int sig_len,
|
||||
EC_KEY *eckey)
|
||||
{
|
||||
ECDSA_SIG *s = NULL;
|
||||
BIGNUM *e = NULL;
|
||||
|
@ -16,10 +16,10 @@
|
||||
# include <openssl/opensslconf.h>
|
||||
# include <openssl/evp.h>
|
||||
|
||||
const char *ec_curve_nid2name(int nid);
|
||||
int ec_curve_name2nid(const char *name);
|
||||
const char *ec_curve_nid2nist_int(int nid);
|
||||
int ec_curve_nist2nid_int(const char *name);
|
||||
const char *ossl_ec_curve_nid2name(int nid);
|
||||
int ossl_ec_curve_name2nid(const char *name);
|
||||
const char *ossl_ec_curve_nid2nist_int(int nid);
|
||||
int ossl_ec_curve_nist2nid_int(const char *name);
|
||||
int evp_pkey_ctx_set_ec_param_enc_prov(EVP_PKEY_CTX *ctx, int param_enc);
|
||||
|
||||
# ifndef OPENSSL_NO_EC
|
||||
@ -48,43 +48,45 @@ int evp_pkey_ctx_set_ec_param_enc_prov(EVP_PKEY_CTX *ctx, int param_enc);
|
||||
* reduction round on the input can be omitted by the underlying
|
||||
* implementations for better SCA properties on regular input values).
|
||||
*/
|
||||
__owur int ec_group_do_inverse_ord(const EC_GROUP *group, BIGNUM *res,
|
||||
const BIGNUM *x, BN_CTX *ctx);
|
||||
__owur int ossl_ec_group_do_inverse_ord(const EC_GROUP *group, BIGNUM *res,
|
||||
const BIGNUM *x, BN_CTX *ctx);
|
||||
|
||||
/*-
|
||||
* ECDH Key Derivation Function as defined in ANSI X9.63
|
||||
*/
|
||||
int ecdh_KDF_X9_63(unsigned char *out, size_t outlen,
|
||||
const unsigned char *Z, size_t Zlen,
|
||||
const unsigned char *sinfo, size_t sinfolen,
|
||||
const EVP_MD *md, OSSL_LIB_CTX *libctx, const char *propq);
|
||||
int ossl_ecdh_kdf_X9_63(unsigned char *out, size_t outlen,
|
||||
const unsigned char *Z, size_t Zlen,
|
||||
const unsigned char *sinfo, size_t sinfolen,
|
||||
const EVP_MD *md, OSSL_LIB_CTX *libctx,
|
||||
const char *propq);
|
||||
|
||||
int ec_key_public_check(const EC_KEY *eckey, BN_CTX *ctx);
|
||||
int ec_key_public_check_quick(const EC_KEY *eckey, BN_CTX *ctx);
|
||||
int ec_key_private_check(const EC_KEY *eckey);
|
||||
int ec_key_pairwise_check(const EC_KEY *eckey, BN_CTX *ctx);
|
||||
OSSL_LIB_CTX *ec_key_get_libctx(const EC_KEY *eckey);
|
||||
const char *ec_key_get0_propq(const EC_KEY *eckey);
|
||||
void ec_key_set0_libctx(EC_KEY *key, OSSL_LIB_CTX *libctx);
|
||||
int ossl_ec_key_public_check(const EC_KEY *eckey, BN_CTX *ctx);
|
||||
int ossl_ec_key_public_check_quick(const EC_KEY *eckey, BN_CTX *ctx);
|
||||
int ossl_ec_key_private_check(const EC_KEY *eckey);
|
||||
int ossl_ec_key_pairwise_check(const EC_KEY *eckey, BN_CTX *ctx);
|
||||
OSSL_LIB_CTX *ossl_ec_key_get_libctx(const EC_KEY *eckey);
|
||||
const char *ossl_ec_key_get0_propq(const EC_KEY *eckey);
|
||||
void ossl_ec_key_set0_libctx(EC_KEY *key, OSSL_LIB_CTX *libctx);
|
||||
|
||||
/* Backend support */
|
||||
int ec_group_todata(const EC_GROUP *group, OSSL_PARAM_BLD *tmpl,
|
||||
OSSL_PARAM params[], OSSL_LIB_CTX *libctx,
|
||||
const char *propq,
|
||||
BN_CTX *bnctx, unsigned char **genbuf);
|
||||
int ec_group_fromdata(EC_KEY *ec, const OSSL_PARAM params[]);
|
||||
int ec_group_set_params(EC_GROUP *group, const OSSL_PARAM params[]);
|
||||
int ec_key_fromdata(EC_KEY *ecx, const OSSL_PARAM params[], int include_private);
|
||||
int ec_key_otherparams_fromdata(EC_KEY *ec, const OSSL_PARAM params[]);
|
||||
int ec_set_ecdh_cofactor_mode(EC_KEY *ec, int mode);
|
||||
int ec_encoding_name2id(const char *name);
|
||||
int ec_encoding_param2id(const OSSL_PARAM *p, int *id);
|
||||
int ec_pt_format_name2id(const char *name);
|
||||
int ec_pt_format_param2id(const OSSL_PARAM *p, int *id);
|
||||
char *ec_pt_format_id2name(int id);
|
||||
int ossl_ec_group_todata(const EC_GROUP *group, OSSL_PARAM_BLD *tmpl,
|
||||
OSSL_PARAM params[], OSSL_LIB_CTX *libctx,
|
||||
const char *propq,
|
||||
BN_CTX *bnctx, unsigned char **genbuf);
|
||||
int ossl_ec_group_fromdata(EC_KEY *ec, const OSSL_PARAM params[]);
|
||||
int ossl_ec_group_set_params(EC_GROUP *group, const OSSL_PARAM params[]);
|
||||
int ossl_ec_key_fromdata(EC_KEY *ecx, const OSSL_PARAM params[],
|
||||
int include_private);
|
||||
int ossl_ec_key_otherparams_fromdata(EC_KEY *ec, const OSSL_PARAM params[]);
|
||||
int ossl_ec_set_ecdh_cofactor_mode(EC_KEY *ec, int mode);
|
||||
int ossl_ec_encoding_name2id(const char *name);
|
||||
int ossl_ec_encoding_param2id(const OSSL_PARAM *p, int *id);
|
||||
int ossl_ec_pt_format_name2id(const char *name);
|
||||
int ossl_ec_pt_format_param2id(const OSSL_PARAM *p, int *id);
|
||||
char *ossl_ec_pt_format_id2name(int id);
|
||||
|
||||
char *ec_check_group_type_id2name(int flags);
|
||||
int ec_set_check_group_type_from_name(EC_KEY *ec, const char *name);
|
||||
char *ossl_ec_check_group_type_id2name(int flags);
|
||||
int ossl_ec_set_check_group_type_from_name(EC_KEY *ec, const char *name);
|
||||
|
||||
# endif /* OPENSSL_NO_EC */
|
||||
#endif
|
||||
|
@ -76,13 +76,12 @@ struct ecx_key_st {
|
||||
|
||||
typedef struct ecx_key_st ECX_KEY;
|
||||
|
||||
size_t ecx_key_length(ECX_KEY_TYPE type);
|
||||
ECX_KEY *ecx_key_new(OSSL_LIB_CTX *libctx, ECX_KEY_TYPE type, int haspubkey,
|
||||
const char *propq);
|
||||
void ecx_key_set0_libctx(ECX_KEY *key, OSSL_LIB_CTX *libctx);
|
||||
unsigned char *ecx_key_allocate_privkey(ECX_KEY *key);
|
||||
void ecx_key_free(ECX_KEY *key);
|
||||
int ecx_key_up_ref(ECX_KEY *key);
|
||||
ECX_KEY *ossl_ecx_key_new(OSSL_LIB_CTX *libctx, ECX_KEY_TYPE type,
|
||||
int haspubkey, const char *propq);
|
||||
void ossl_ecx_key_set0_libctx(ECX_KEY *key, OSSL_LIB_CTX *libctx);
|
||||
unsigned char *ossl_ecx_key_allocate_privkey(ECX_KEY *key);
|
||||
void ossl_ecx_key_free(ECX_KEY *key);
|
||||
int ossl_ecx_key_up_ref(ECX_KEY *key);
|
||||
|
||||
int X25519(uint8_t out_shared_key[32], const uint8_t private_key[32],
|
||||
const uint8_t peer_public_value[32]);
|
||||
@ -116,13 +115,13 @@ void X448_public_from_private(uint8_t out_public_value[56],
|
||||
|
||||
|
||||
/* Backend support */
|
||||
int ecx_public_from_private(ECX_KEY *key);
|
||||
int ecx_key_fromdata(ECX_KEY *ecx, const OSSL_PARAM params[],
|
||||
int include_private);
|
||||
int ossl_ecx_public_from_private(ECX_KEY *key);
|
||||
int ossl_ecx_key_fromdata(ECX_KEY *ecx, const OSSL_PARAM params[],
|
||||
int include_private);
|
||||
|
||||
ECX_KEY *evp_pkey_get1_X25519(EVP_PKEY *pkey);
|
||||
ECX_KEY *evp_pkey_get1_X448(EVP_PKEY *pkey);
|
||||
ECX_KEY *evp_pkey_get1_ED25519(EVP_PKEY *pkey);
|
||||
ECX_KEY *evp_pkey_get1_ED448(EVP_PKEY *pkey);
|
||||
ECX_KEY *ossl_evp_pkey_get1_X25519(EVP_PKEY *pkey);
|
||||
ECX_KEY *ossl_evp_pkey_get1_X448(EVP_PKEY *pkey);
|
||||
ECX_KEY *ossl_evp_pkey_get1_ED25519(EVP_PKEY *pkey);
|
||||
ECX_KEY *ossl_evp_pkey_get1_ED448(EVP_PKEY *pkey);
|
||||
# endif /* OPENSSL_NO_EC */
|
||||
#endif
|
||||
|
@ -182,11 +182,11 @@ void evp_pkey_set_cb_translate(BN_GENCB *cb, EVP_PKEY_CTX *ctx);
|
||||
const EVP_PKEY_METHOD *ossl_dh_pkey_method(void);
|
||||
const EVP_PKEY_METHOD *ossl_dhx_pkey_method(void);
|
||||
const EVP_PKEY_METHOD *ossl_dsa_pkey_method(void);
|
||||
const EVP_PKEY_METHOD *ec_pkey_method(void);
|
||||
const EVP_PKEY_METHOD *ecx25519_pkey_method(void);
|
||||
const EVP_PKEY_METHOD *ecx448_pkey_method(void);
|
||||
const EVP_PKEY_METHOD *ed25519_pkey_method(void);
|
||||
const EVP_PKEY_METHOD *ed448_pkey_method(void);
|
||||
const EVP_PKEY_METHOD *ossl_ec_pkey_method(void);
|
||||
const EVP_PKEY_METHOD *ossl_ecx25519_pkey_method(void);
|
||||
const EVP_PKEY_METHOD *ossl_ecx448_pkey_method(void);
|
||||
const EVP_PKEY_METHOD *ossl_ed25519_pkey_method(void);
|
||||
const EVP_PKEY_METHOD *ossl_ed448_pkey_method(void);
|
||||
const EVP_PKEY_METHOD *ossl_rsa_pkey_method(void);
|
||||
const EVP_PKEY_METHOD *ossl_rsa_pss_pkey_method(void);
|
||||
|
||||
|
@ -20,65 +20,67 @@
|
||||
# include <openssl/ec.h>
|
||||
# include "crypto/types.h"
|
||||
|
||||
int sm2_key_private_check(const EC_KEY *eckey);
|
||||
int ossl_sm2_key_private_check(const EC_KEY *eckey);
|
||||
|
||||
/* The default user id as specified in GM/T 0009-2012 */
|
||||
# define SM2_DEFAULT_USERID "1234567812345678"
|
||||
|
||||
int sm2_compute_z_digest(uint8_t *out,
|
||||
const EVP_MD *digest,
|
||||
const uint8_t *id,
|
||||
const size_t id_len,
|
||||
const EC_KEY *key);
|
||||
int ossl_sm2_compute_z_digest(uint8_t *out,
|
||||
const EVP_MD *digest,
|
||||
const uint8_t *id,
|
||||
const size_t id_len,
|
||||
const EC_KEY *key);
|
||||
|
||||
/*
|
||||
* SM2 signature operation. Computes Z and then signs H(Z || msg) using SM2
|
||||
*/
|
||||
ECDSA_SIG *sm2_do_sign(const EC_KEY *key,
|
||||
ECDSA_SIG *ossl_sm2_do_sign(const EC_KEY *key,
|
||||
const EVP_MD *digest,
|
||||
const uint8_t *id,
|
||||
const size_t id_len,
|
||||
const uint8_t *msg, size_t msg_len);
|
||||
|
||||
int ossl_sm2_do_verify(const EC_KEY *key,
|
||||
const EVP_MD *digest,
|
||||
const ECDSA_SIG *signature,
|
||||
const uint8_t *id,
|
||||
const size_t id_len,
|
||||
const uint8_t *msg, size_t msg_len);
|
||||
|
||||
int sm2_do_verify(const EC_KEY *key,
|
||||
const EVP_MD *digest,
|
||||
const ECDSA_SIG *signature,
|
||||
const uint8_t *id,
|
||||
const size_t id_len,
|
||||
const uint8_t *msg, size_t msg_len);
|
||||
|
||||
/*
|
||||
* SM2 signature generation.
|
||||
*/
|
||||
int sm2_internal_sign(const unsigned char *dgst, int dgstlen,
|
||||
unsigned char *sig, unsigned int *siglen, EC_KEY *eckey);
|
||||
int ossl_sm2_internal_sign(const unsigned char *dgst, int dgstlen,
|
||||
unsigned char *sig, unsigned int *siglen,
|
||||
EC_KEY *eckey);
|
||||
|
||||
/*
|
||||
* SM2 signature verification.
|
||||
*/
|
||||
int sm2_internal_verify(const unsigned char *dgst, int dgstlen,
|
||||
const unsigned char *sig, int siglen, EC_KEY *eckey);
|
||||
int ossl_sm2_internal_verify(const unsigned char *dgst, int dgstlen,
|
||||
const unsigned char *sig, int siglen,
|
||||
EC_KEY *eckey);
|
||||
|
||||
/*
|
||||
* SM2 encryption
|
||||
*/
|
||||
int sm2_ciphertext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len,
|
||||
size_t *ct_size);
|
||||
int ossl_sm2_ciphertext_size(const EC_KEY *key, const EVP_MD *digest,
|
||||
size_t msg_len, size_t *ct_size);
|
||||
|
||||
int sm2_plaintext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len,
|
||||
size_t *pt_size);
|
||||
int ossl_sm2_plaintext_size(const EC_KEY *key, const EVP_MD *digest,
|
||||
size_t msg_len, size_t *pt_size);
|
||||
|
||||
int sm2_encrypt(const EC_KEY *key,
|
||||
const EVP_MD *digest,
|
||||
const uint8_t *msg,
|
||||
size_t msg_len,
|
||||
uint8_t *ciphertext_buf, size_t *ciphertext_len);
|
||||
int ossl_sm2_encrypt(const EC_KEY *key,
|
||||
const EVP_MD *digest,
|
||||
const uint8_t *msg, size_t msg_len,
|
||||
uint8_t *ciphertext_buf, size_t *ciphertext_len);
|
||||
|
||||
int sm2_decrypt(const EC_KEY *key,
|
||||
const EVP_MD *digest,
|
||||
const uint8_t *ciphertext,
|
||||
size_t ciphertext_len, uint8_t *ptext_buf, size_t *ptext_len);
|
||||
int ossl_sm2_decrypt(const EC_KEY *key,
|
||||
const EVP_MD *digest,
|
||||
const uint8_t *ciphertext, size_t ciphertext_len,
|
||||
uint8_t *ptext_buf, size_t *ptext_len);
|
||||
|
||||
const unsigned char *sm2_algorithmidentifier_encoding(int md_nid, size_t *len);
|
||||
const unsigned char *ossl_sm2_algorithmidentifier_encoding(int md_nid,
|
||||
size_t *len);
|
||||
# endif /* OPENSSL_NO_SM2 */
|
||||
#endif
|
||||
|
@ -89,14 +89,14 @@ static int sm2_asym_encrypt(void *vpsm2ctx, unsigned char *out, size_t *outlen,
|
||||
return 0;
|
||||
|
||||
if (out == NULL) {
|
||||
if (!sm2_ciphertext_size(psm2ctx->key, md, inlen, outlen)) {
|
||||
if (!ossl_sm2_ciphertext_size(psm2ctx->key, md, inlen, outlen)) {
|
||||
ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_KEY);
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
return sm2_encrypt(psm2ctx->key, md, in, inlen, out, outlen);
|
||||
return ossl_sm2_encrypt(psm2ctx->key, md, in, inlen, out, outlen);
|
||||
}
|
||||
|
||||
static int sm2_asym_decrypt(void *vpsm2ctx, unsigned char *out, size_t *outlen,
|
||||
@ -110,12 +110,12 @@ static int sm2_asym_decrypt(void *vpsm2ctx, unsigned char *out, size_t *outlen,
|
||||
return 0;
|
||||
|
||||
if (out == NULL) {
|
||||
if (!sm2_plaintext_size(psm2ctx->key, md, inlen, outlen))
|
||||
if (!ossl_sm2_plaintext_size(psm2ctx->key, md, inlen, outlen))
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return sm2_decrypt(psm2ctx->key, md, in, inlen, out, outlen);
|
||||
return ossl_sm2_decrypt(psm2ctx->key, md, in, inlen, out, outlen);
|
||||
}
|
||||
|
||||
static void sm2_freectx(void *vpsm2ctx)
|
||||
|
@ -462,7 +462,7 @@ static void dsa_adjust(void *key, struct der2key_ctx_st *ctx)
|
||||
|
||||
static void ec_adjust(void *key, struct der2key_ctx_st *ctx)
|
||||
{
|
||||
ec_key_set0_libctx(key, PROV_LIBCTX_OF(ctx->provctx));
|
||||
ossl_ec_key_set0_libctx(key, PROV_LIBCTX_OF(ctx->provctx));
|
||||
}
|
||||
|
||||
/*
|
||||
@ -472,39 +472,39 @@ static void ec_adjust(void *key, struct der2key_ctx_st *ctx)
|
||||
|
||||
static void ecx_key_adjust(void *key, struct der2key_ctx_st *ctx)
|
||||
{
|
||||
ecx_key_set0_libctx(key, PROV_LIBCTX_OF(ctx->provctx));
|
||||
ossl_ecx_key_set0_libctx(key, PROV_LIBCTX_OF(ctx->provctx));
|
||||
}
|
||||
|
||||
# define ed25519_evp_type EVP_PKEY_ED25519
|
||||
# define ed25519_evp_extract (extract_key_fn *)evp_pkey_get1_ED25519
|
||||
# define ed25519_evp_extract (extract_key_fn *)ossl_evp_pkey_get1_ED25519
|
||||
# define ed25519_d2i_private_key NULL
|
||||
# define ed25519_d2i_public_key NULL
|
||||
# define ed25519_d2i_key_params NULL
|
||||
# define ed25519_free (free_key_fn *)ecx_key_free
|
||||
# define ed25519_free (free_key_fn *)ossl_ecx_key_free
|
||||
# define ed25519_adjust ecx_key_adjust
|
||||
|
||||
# define ed448_evp_type EVP_PKEY_ED448
|
||||
# define ed448_evp_extract (extract_key_fn *)evp_pkey_get1_ED448
|
||||
# define ed448_evp_extract (extract_key_fn *)ossl_evp_pkey_get1_ED448
|
||||
# define ed448_d2i_private_key NULL
|
||||
# define ed448_d2i_public_key NULL
|
||||
# define ed448_d2i_key_params NULL
|
||||
# define ed448_free (free_key_fn *)ecx_key_free
|
||||
# define ed448_free (free_key_fn *)ossl_ecx_key_free
|
||||
# define ed448_adjust ecx_key_adjust
|
||||
|
||||
# define x25519_evp_type EVP_PKEY_X25519
|
||||
# define x25519_evp_extract (extract_key_fn *)evp_pkey_get1_X25519
|
||||
# define x25519_evp_extract (extract_key_fn *)ossl_evp_pkey_get1_X25519
|
||||
# define x25519_d2i_private_key NULL
|
||||
# define x25519_d2i_public_key NULL
|
||||
# define x25519_d2i_key_params NULL
|
||||
# define x25519_free (free_key_fn *)ecx_key_free
|
||||
# define x25519_free (free_key_fn *)ossl_ecx_key_free
|
||||
# define x25519_adjust ecx_key_adjust
|
||||
|
||||
# define x448_evp_type EVP_PKEY_X448
|
||||
# define x448_evp_extract (extract_key_fn *)evp_pkey_get1_X448
|
||||
# define x448_evp_extract (extract_key_fn *)ossl_evp_pkey_get1_X448
|
||||
# define x448_d2i_private_key NULL
|
||||
# define x448_d2i_public_key NULL
|
||||
# define x448_d2i_key_params NULL
|
||||
# define x448_free (free_key_fn *)ecx_key_free
|
||||
# define x448_free (free_key_fn *)ossl_ecx_key_free
|
||||
# define x448_adjust ecx_key_adjust
|
||||
|
||||
# ifndef OPENSSL_NO_SM2
|
||||
|
@ -25,7 +25,7 @@
|
||||
#include "crypto/bn.h" /* bn_get_words() */
|
||||
#include "crypto/dh.h" /* ossl_dh_get0_params() */
|
||||
#include "crypto/dsa.h" /* ossl_dsa_get0_params() */
|
||||
#include "crypto/ec.h" /* ec_key_get_libctx */
|
||||
#include "crypto/ec.h" /* ossl_ec_key_get_libctx */
|
||||
#include "crypto/ecx.h" /* ECX_KEY, etc... */
|
||||
#include "crypto/rsa.h" /* RSA_PSS_PARAMS_30, etc... */
|
||||
#include "prov/bio.h"
|
||||
@ -539,7 +539,7 @@ static int ec_to_text(BIO *out, const void *key, int selection)
|
||||
&& !print_labeled_buf(out, "pub:", pub, pub_len))
|
||||
goto err;
|
||||
if ((selection & OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS) != 0)
|
||||
ret = ec_param_to_text(out, group, ec_key_get_libctx(ec));
|
||||
ret = ec_param_to_text(out, group, ossl_ec_key_get_libctx(ec));
|
||||
err:
|
||||
OPENSSL_clear_free(priv, priv_len);
|
||||
OPENSSL_free(pub);
|
||||
|
@ -25,7 +25,7 @@
|
||||
#include "prov/providercommon.h"
|
||||
#include "prov/implementations.h"
|
||||
#include "prov/securitycheck.h"
|
||||
#include "crypto/ec.h" /* ecdh_KDF_X9_63() */
|
||||
#include "crypto/ec.h" /* ossl_ecdh_kdf_X9_63() */
|
||||
|
||||
static OSSL_FUNC_keyexch_newctx_fn ecdh_newctx;
|
||||
static OSSL_FUNC_keyexch_init_fn ecdh_init;
|
||||
@ -498,12 +498,12 @@ int ecdh_X9_63_kdf_derive(void *vpecdhctx, unsigned char *secret,
|
||||
goto err;
|
||||
|
||||
/* Do KDF stuff */
|
||||
if (!ecdh_KDF_X9_63(secret, pecdhctx->kdf_outlen,
|
||||
stmp, stmplen,
|
||||
pecdhctx->kdf_ukm,
|
||||
pecdhctx->kdf_ukmlen,
|
||||
pecdhctx->kdf_md,
|
||||
pecdhctx->libctx, NULL))
|
||||
if (!ossl_ecdh_kdf_X9_63(secret, pecdhctx->kdf_outlen,
|
||||
stmp, stmplen,
|
||||
pecdhctx->kdf_ukm,
|
||||
pecdhctx->kdf_ukmlen,
|
||||
pecdhctx->kdf_md,
|
||||
pecdhctx->libctx, NULL))
|
||||
goto err;
|
||||
*psecretlen = pecdhctx->kdf_outlen;
|
||||
ret = 1;
|
||||
|
@ -80,12 +80,12 @@ static int ecx_init(void *vecxctx, void *vkey)
|
||||
if (ecxctx == NULL
|
||||
|| key == NULL
|
||||
|| key->keylen != ecxctx->keylen
|
||||
|| !ecx_key_up_ref(key)) {
|
||||
|| !ossl_ecx_key_up_ref(key)) {
|
||||
ERR_raise(ERR_LIB_PROV, ERR_R_INTERNAL_ERROR);
|
||||
return 0;
|
||||
}
|
||||
|
||||
ecx_key_free(ecxctx->key);
|
||||
ossl_ecx_key_free(ecxctx->key);
|
||||
ecxctx->key = key;
|
||||
|
||||
return 1;
|
||||
@ -102,11 +102,11 @@ static int ecx_set_peer(void *vecxctx, void *vkey)
|
||||
if (ecxctx == NULL
|
||||
|| key == NULL
|
||||
|| key->keylen != ecxctx->keylen
|
||||
|| !ecx_key_up_ref(key)) {
|
||||
|| !ossl_ecx_key_up_ref(key)) {
|
||||
ERR_raise(ERR_LIB_PROV, ERR_R_INTERNAL_ERROR);
|
||||
return 0;
|
||||
}
|
||||
ecx_key_free(ecxctx->peerkey);
|
||||
ossl_ecx_key_free(ecxctx->peerkey);
|
||||
ecxctx->peerkey = key;
|
||||
|
||||
return 1;
|
||||
@ -182,8 +182,8 @@ static void ecx_freectx(void *vecxctx)
|
||||
{
|
||||
PROV_ECX_CTX *ecxctx = (PROV_ECX_CTX *)vecxctx;
|
||||
|
||||
ecx_key_free(ecxctx->key);
|
||||
ecx_key_free(ecxctx->peerkey);
|
||||
ossl_ecx_key_free(ecxctx->key);
|
||||
ossl_ecx_key_free(ecxctx->peerkey);
|
||||
|
||||
OPENSSL_free(ecxctx);
|
||||
}
|
||||
@ -203,15 +203,15 @@ static void *ecx_dupctx(void *vecxctx)
|
||||
}
|
||||
|
||||
*dstctx = *srcctx;
|
||||
if (dstctx->key != NULL && !ecx_key_up_ref(dstctx->key)) {
|
||||
if (dstctx->key != NULL && !ossl_ecx_key_up_ref(dstctx->key)) {
|
||||
ERR_raise(ERR_LIB_PROV, ERR_R_INTERNAL_ERROR);
|
||||
OPENSSL_free(dstctx);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (dstctx->peerkey != NULL && !ecx_key_up_ref(dstctx->peerkey)) {
|
||||
if (dstctx->peerkey != NULL && !ossl_ecx_key_up_ref(dstctx->peerkey)) {
|
||||
ERR_raise(ERR_LIB_PROV, ERR_R_INTERNAL_ERROR);
|
||||
ecx_key_free(dstctx->key);
|
||||
ossl_ecx_key_free(dstctx->key);
|
||||
OPENSSL_free(dstctx);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -131,7 +131,7 @@ int key_to_params(const EC_KEY *eckey, OSSL_PARAM_BLD *tmpl,
|
||||
* EC_POINT_point2buf() can generate random numbers in some
|
||||
* implementations so we need to ensure we use the correct libctx.
|
||||
*/
|
||||
bnctx = BN_CTX_new_ex(ec_key_get_libctx(eckey));
|
||||
bnctx = BN_CTX_new_ex(ossl_ec_key_get_libctx(eckey));
|
||||
if (bnctx == NULL)
|
||||
goto err;
|
||||
|
||||
@ -237,7 +237,7 @@ int otherparams_to_params(const EC_KEY *ec, OSSL_PARAM_BLD *tmpl,
|
||||
return 0;
|
||||
|
||||
format = EC_KEY_get_conv_form(ec);
|
||||
name = ec_pt_format_id2name((int)format);
|
||||
name = ossl_ec_pt_format_id2name((int)format);
|
||||
if (name != NULL
|
||||
&& !ossl_param_build_set_utf8_string(tmpl, params,
|
||||
OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT,
|
||||
@ -245,7 +245,7 @@ int otherparams_to_params(const EC_KEY *ec, OSSL_PARAM_BLD *tmpl,
|
||||
return 0;
|
||||
|
||||
group_check = EC_KEY_get_flags(ec) & EC_FLAG_CHECK_NAMED_GROUP_MASK;
|
||||
name = ec_check_group_type_id2name(group_check);
|
||||
name = ossl_ec_check_group_type_id2name(group_check);
|
||||
if (name != NULL
|
||||
&& !ossl_param_build_set_utf8_string(tmpl, params,
|
||||
OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE,
|
||||
@ -314,7 +314,7 @@ static int ec_match(const void *keydata1, const void *keydata2, int selection)
|
||||
if (!ossl_prov_is_running())
|
||||
return 0;
|
||||
|
||||
ctx = BN_CTX_new_ex(ec_key_get_libctx(ec1));
|
||||
ctx = BN_CTX_new_ex(ossl_ec_key_get_libctx(ec1));
|
||||
if (ctx == NULL)
|
||||
return 0;
|
||||
|
||||
@ -377,7 +377,7 @@ int common_import(void *keydata, int selection, const OSSL_PARAM params[],
|
||||
if ((selection & OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS) == 0)
|
||||
return 0;
|
||||
|
||||
ok = ok && ec_group_fromdata(ec, params);
|
||||
ok = ok && ossl_ec_group_fromdata(ec, params);
|
||||
|
||||
if (!common_check_sm2(ec, sm2_wanted))
|
||||
return 0;
|
||||
@ -386,10 +386,10 @@ int common_import(void *keydata, int selection, const OSSL_PARAM params[],
|
||||
int include_private =
|
||||
selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY ? 1 : 0;
|
||||
|
||||
ok = ok && ec_key_fromdata(ec, params, include_private);
|
||||
ok = ok && ossl_ec_key_fromdata(ec, params, include_private);
|
||||
}
|
||||
if ((selection & OSSL_KEYMGMT_SELECT_OTHER_PARAMETERS) != 0)
|
||||
ok = ok && ec_key_otherparams_fromdata(ec, params);
|
||||
ok = ok && ossl_ec_key_otherparams_fromdata(ec, params);
|
||||
|
||||
return ok;
|
||||
}
|
||||
@ -451,15 +451,16 @@ int ec_export(void *keydata, int selection, OSSL_CALLBACK *param_cb,
|
||||
return 0;
|
||||
|
||||
if ((selection & OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS) != 0) {
|
||||
bnctx = BN_CTX_new_ex(ec_key_get_libctx(ec));
|
||||
bnctx = BN_CTX_new_ex(ossl_ec_key_get_libctx(ec));
|
||||
if (bnctx == NULL) {
|
||||
ok = 0;
|
||||
goto end;
|
||||
}
|
||||
BN_CTX_start(bnctx);
|
||||
ok = ok && ec_group_todata(EC_KEY_get0_group(ec), tmpl, NULL,
|
||||
ec_key_get_libctx(ec), ec_key_get0_propq(ec),
|
||||
bnctx, &genbuf);
|
||||
ok = ok && ossl_ec_group_todata(EC_KEY_get0_group(ec), tmpl, NULL,
|
||||
ossl_ec_key_get_libctx(ec),
|
||||
ossl_ec_key_get0_propq(ec),
|
||||
bnctx, &genbuf);
|
||||
}
|
||||
|
||||
if ((selection & OSSL_KEYMGMT_SELECT_KEYPAIR) != 0) {
|
||||
@ -610,8 +611,8 @@ int common_get_params(void *key, OSSL_PARAM params[], int sm2)
|
||||
if (ecg == NULL)
|
||||
return 0;
|
||||
|
||||
libctx = ec_key_get_libctx(eck);
|
||||
propq = ec_key_get0_propq(eck);
|
||||
libctx = ossl_ec_key_get_libctx(eck);
|
||||
propq = ossl_ec_key_get0_propq(eck);
|
||||
|
||||
bnctx = BN_CTX_new_ex(libctx);
|
||||
if (bnctx == NULL)
|
||||
@ -696,7 +697,8 @@ int common_get_params(void *key, OSSL_PARAM params[], int sm2)
|
||||
}
|
||||
|
||||
ret = ec_get_ecm_params(ecg, params)
|
||||
&& ec_group_todata(ecg, NULL, params, libctx, propq, bnctx, &genbuf)
|
||||
&& ossl_ec_group_todata(ecg, NULL, params, libctx, propq, bnctx,
|
||||
&genbuf)
|
||||
&& key_to_params(eck, NULL, params, 1, &pub_key)
|
||||
&& otherparams_to_params(eck, NULL, params);
|
||||
err:
|
||||
@ -773,12 +775,12 @@ int ec_set_params(void *key, const OSSL_PARAM params[])
|
||||
if (key == NULL)
|
||||
return 0;
|
||||
|
||||
if (!ec_group_set_params((EC_GROUP *)EC_KEY_get0_group(key), params))
|
||||
if (!ossl_ec_group_set_params((EC_GROUP *)EC_KEY_get0_group(key), params))
|
||||
return 0;
|
||||
|
||||
p = OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY);
|
||||
if (p != NULL) {
|
||||
BN_CTX *ctx = BN_CTX_new_ex(ec_key_get_libctx(key));
|
||||
BN_CTX *ctx = BN_CTX_new_ex(ossl_ec_key_get_libctx(key));
|
||||
int ret = 1;
|
||||
|
||||
if (ctx == NULL
|
||||
@ -790,7 +792,7 @@ int ec_set_params(void *key, const OSSL_PARAM params[])
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ec_key_otherparams_fromdata(eck, params);
|
||||
return ossl_ec_key_otherparams_fromdata(eck, params);
|
||||
}
|
||||
|
||||
#ifndef FIPS_MODULE
|
||||
@ -842,7 +844,7 @@ int sm2_validate(const void *keydata, int selection, int checktype)
|
||||
if (!ossl_prov_is_running())
|
||||
return 0;
|
||||
|
||||
ctx = BN_CTX_new_ex(ec_key_get_libctx(eck));
|
||||
ctx = BN_CTX_new_ex(ossl_ec_key_get_libctx(eck));
|
||||
if (ctx == NULL)
|
||||
return 0;
|
||||
|
||||
@ -854,16 +856,16 @@ int sm2_validate(const void *keydata, int selection, int checktype)
|
||||
|
||||
if ((selection & OSSL_KEYMGMT_SELECT_PUBLIC_KEY) != 0) {
|
||||
if (checktype == OSSL_KEYMGMT_VALIDATE_QUICK_CHECK)
|
||||
ok = ok && ec_key_public_check_quick(eck, ctx);
|
||||
ok = ok && ossl_ec_key_public_check_quick(eck, ctx);
|
||||
else
|
||||
ok = ok && ec_key_public_check(eck, ctx);
|
||||
ok = ok && ossl_ec_key_public_check(eck, ctx);
|
||||
}
|
||||
|
||||
if ((selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) != 0)
|
||||
ok = ok && sm2_key_private_check(eck);
|
||||
ok = ok && ossl_sm2_key_private_check(eck);
|
||||
|
||||
if ((selection & OSSL_KEYMGMT_SELECT_KEYPAIR) == OSSL_KEYMGMT_SELECT_KEYPAIR)
|
||||
ok = ok && ec_key_pairwise_check(eck, ctx);
|
||||
ok = ok && ossl_ec_key_pairwise_check(eck, ctx);
|
||||
|
||||
BN_CTX_free(ctx);
|
||||
return ok;
|
||||
@ -881,7 +883,7 @@ int ec_validate(const void *keydata, int selection, int checktype)
|
||||
if (!ossl_prov_is_running())
|
||||
return 0;
|
||||
|
||||
ctx = BN_CTX_new_ex(ec_key_get_libctx(eck));
|
||||
ctx = BN_CTX_new_ex(ossl_ec_key_get_libctx(eck));
|
||||
if (ctx == NULL)
|
||||
return 0;
|
||||
|
||||
@ -900,16 +902,16 @@ int ec_validate(const void *keydata, int selection, int checktype)
|
||||
|
||||
if ((selection & OSSL_KEYMGMT_SELECT_PUBLIC_KEY) != 0) {
|
||||
if (checktype == OSSL_KEYMGMT_VALIDATE_QUICK_CHECK)
|
||||
ok = ok && ec_key_public_check_quick(eck, ctx);
|
||||
ok = ok && ossl_ec_key_public_check_quick(eck, ctx);
|
||||
else
|
||||
ok = ok && ec_key_public_check(eck, ctx);
|
||||
ok = ok && ossl_ec_key_public_check(eck, ctx);
|
||||
}
|
||||
|
||||
if ((selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) != 0)
|
||||
ok = ok && ec_key_private_check(eck);
|
||||
ok = ok && ossl_ec_key_private_check(eck);
|
||||
|
||||
if ((selection & OSSL_KEYMGMT_SELECT_KEYPAIR) == OSSL_KEYMGMT_SELECT_KEYPAIR)
|
||||
ok = ok && ec_key_pairwise_check(eck, ctx);
|
||||
ok = ok && ossl_ec_key_pairwise_check(eck, ctx);
|
||||
|
||||
BN_CTX_free(ctx);
|
||||
return ok;
|
||||
@ -1168,14 +1170,14 @@ static void *ec_gen(void *genctx, OSSL_CALLBACK *osslcb, void *cbarg)
|
||||
goto err;
|
||||
} else {
|
||||
if (gctx->encoding != NULL) {
|
||||
int flags = ec_encoding_name2id(gctx->encoding);
|
||||
int flags = ossl_ec_encoding_name2id(gctx->encoding);
|
||||
|
||||
if (flags < 0)
|
||||
goto err;
|
||||
EC_GROUP_set_asn1_flag(gctx->gen_group, flags);
|
||||
}
|
||||
if (gctx->pt_format != NULL) {
|
||||
int format = ec_pt_format_name2id(gctx->pt_format);
|
||||
int format = ossl_ec_pt_format_name2id(gctx->pt_format);
|
||||
|
||||
if (format < 0)
|
||||
goto err;
|
||||
@ -1191,10 +1193,10 @@ static void *ec_gen(void *genctx, OSSL_CALLBACK *osslcb, void *cbarg)
|
||||
ret = ret && EC_KEY_generate_key(ec);
|
||||
|
||||
if (gctx->ecdh_mode != -1)
|
||||
ret = ret && ec_set_ecdh_cofactor_mode(ec, gctx->ecdh_mode);
|
||||
ret = ret && ossl_ec_set_ecdh_cofactor_mode(ec, gctx->ecdh_mode);
|
||||
|
||||
if (gctx->group_check != NULL)
|
||||
ret = ret && ec_set_check_group_type_from_name(ec, gctx->group_check);
|
||||
ret = ret && ossl_ec_set_check_group_type_from_name(ec, gctx->group_check);
|
||||
if (ret)
|
||||
return ec;
|
||||
err:
|
||||
@ -1223,14 +1225,14 @@ static void *sm2_gen(void *genctx, OSSL_CALLBACK *osslcb, void *cbarg)
|
||||
goto err;
|
||||
} else {
|
||||
if (gctx->encoding) {
|
||||
int flags = ec_encoding_name2id(gctx->encoding);
|
||||
int flags = ossl_ec_encoding_name2id(gctx->encoding);
|
||||
|
||||
if (flags < 0)
|
||||
goto err;
|
||||
EC_GROUP_set_asn1_flag(gctx->gen_group, flags);
|
||||
}
|
||||
if (gctx->pt_format != NULL) {
|
||||
int format = ec_pt_format_name2id(gctx->pt_format);
|
||||
int format = ossl_ec_pt_format_name2id(gctx->pt_format);
|
||||
|
||||
if (format < 0)
|
||||
goto err;
|
||||
|
@ -89,32 +89,32 @@ static void *x25519_new_key(void *provctx)
|
||||
{
|
||||
if (!ossl_prov_is_running())
|
||||
return 0;
|
||||
return ecx_key_new(PROV_LIBCTX_OF(provctx), ECX_KEY_TYPE_X25519, 0,
|
||||
NULL);
|
||||
return ossl_ecx_key_new(PROV_LIBCTX_OF(provctx), ECX_KEY_TYPE_X25519, 0,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void *x448_new_key(void *provctx)
|
||||
{
|
||||
if (!ossl_prov_is_running())
|
||||
return 0;
|
||||
return ecx_key_new(PROV_LIBCTX_OF(provctx), ECX_KEY_TYPE_X448, 0,
|
||||
NULL);
|
||||
return ossl_ecx_key_new(PROV_LIBCTX_OF(provctx), ECX_KEY_TYPE_X448, 0,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void *ed25519_new_key(void *provctx)
|
||||
{
|
||||
if (!ossl_prov_is_running())
|
||||
return 0;
|
||||
return ecx_key_new(PROV_LIBCTX_OF(provctx), ECX_KEY_TYPE_ED25519, 0,
|
||||
NULL);
|
||||
return ossl_ecx_key_new(PROV_LIBCTX_OF(provctx), ECX_KEY_TYPE_ED25519, 0,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void *ed448_new_key(void *provctx)
|
||||
{
|
||||
if (!ossl_prov_is_running())
|
||||
return 0;
|
||||
return ecx_key_new(PROV_LIBCTX_OF(provctx), ECX_KEY_TYPE_ED448, 0,
|
||||
NULL);
|
||||
return ossl_ecx_key_new(PROV_LIBCTX_OF(provctx), ECX_KEY_TYPE_ED448, 0,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static int ecx_has(const void *keydata, int selection)
|
||||
@ -184,7 +184,7 @@ static int ecx_import(void *keydata, int selection, const OSSL_PARAM params[])
|
||||
return 0;
|
||||
|
||||
include_private = ((selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) != 0);
|
||||
ok = ok && ecx_key_fromdata(key, params, include_private);
|
||||
ok = ok && ossl_ecx_key_fromdata(key, params, include_private);
|
||||
|
||||
return ok;
|
||||
}
|
||||
@ -546,7 +546,8 @@ static void *ecx_gen(struct ecx_gen_ctx *gctx)
|
||||
|
||||
if (gctx == NULL)
|
||||
return NULL;
|
||||
if ((key = ecx_key_new(gctx->libctx, gctx->type, 0, gctx->propq)) == NULL) {
|
||||
if ((key = ossl_ecx_key_new(gctx->libctx, gctx->type, 0,
|
||||
gctx->propq)) == NULL) {
|
||||
ERR_raise(ERR_LIB_PROV, ERR_R_MALLOC_FAILURE);
|
||||
return NULL;
|
||||
}
|
||||
@ -555,7 +556,7 @@ static void *ecx_gen(struct ecx_gen_ctx *gctx)
|
||||
if ((gctx->selection & OSSL_KEYMGMT_SELECT_KEYPAIR) == 0)
|
||||
return key;
|
||||
|
||||
if ((privkey = ecx_key_allocate_privkey(key)) == NULL) {
|
||||
if ((privkey = ossl_ecx_key_allocate_privkey(key)) == NULL) {
|
||||
ERR_raise(ERR_LIB_PROV, ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
}
|
||||
@ -587,7 +588,7 @@ static void *ecx_gen(struct ecx_gen_ctx *gctx)
|
||||
key->haspubkey = 1;
|
||||
return key;
|
||||
err:
|
||||
ecx_key_free(key);
|
||||
ossl_ecx_key_free(key);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -749,7 +750,7 @@ static int ed448_validate(const void *keydata, int selection, int checktype)
|
||||
#define MAKE_KEYMGMT_FUNCTIONS(alg) \
|
||||
const OSSL_DISPATCH ossl_##alg##_keymgmt_functions[] = { \
|
||||
{ OSSL_FUNC_KEYMGMT_NEW, (void (*)(void))alg##_new_key }, \
|
||||
{ OSSL_FUNC_KEYMGMT_FREE, (void (*)(void))ecx_key_free }, \
|
||||
{ OSSL_FUNC_KEYMGMT_FREE, (void (*)(void))ossl_ecx_key_free }, \
|
||||
{ OSSL_FUNC_KEYMGMT_GET_PARAMS, (void (*) (void))alg##_get_params }, \
|
||||
{ OSSL_FUNC_KEYMGMT_GETTABLE_PARAMS, (void (*) (void))alg##_gettable_params }, \
|
||||
{ OSSL_FUNC_KEYMGMT_SET_PARAMS, (void (*) (void))alg##_set_params }, \
|
||||
@ -786,7 +787,8 @@ static void *s390x_ecx_keygen25519(struct ecx_gen_ctx *gctx)
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
ECX_KEY *key = ecx_key_new(gctx->libctx, ECX_KEY_TYPE_X25519, 1, gctx->propq);
|
||||
ECX_KEY *key = ossl_ecx_key_new(gctx->libctx, ECX_KEY_TYPE_X25519, 1,
|
||||
gctx->propq);
|
||||
unsigned char *privkey = NULL, *pubkey;
|
||||
|
||||
if (key == NULL) {
|
||||
@ -800,7 +802,7 @@ static void *s390x_ecx_keygen25519(struct ecx_gen_ctx *gctx)
|
||||
|
||||
pubkey = key->pubkey;
|
||||
|
||||
privkey = ecx_key_allocate_privkey(key);
|
||||
privkey = ossl_ecx_key_allocate_privkey(key);
|
||||
if (privkey == NULL) {
|
||||
ERR_raise(ERR_LIB_PROV, ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
@ -818,7 +820,7 @@ static void *s390x_ecx_keygen25519(struct ecx_gen_ctx *gctx)
|
||||
key->haspubkey = 1;
|
||||
return key;
|
||||
err:
|
||||
ecx_key_free(key);
|
||||
ossl_ecx_key_free(key);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -831,7 +833,8 @@ static void *s390x_ecx_keygen448(struct ecx_gen_ctx *gctx)
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
ECX_KEY *key = ecx_key_new(gctx->libctx, ECX_KEY_TYPE_X448, 1, gctx->propq);
|
||||
ECX_KEY *key = ossl_ecx_key_new(gctx->libctx, ECX_KEY_TYPE_X448, 1,
|
||||
gctx->propq);
|
||||
unsigned char *privkey = NULL, *pubkey;
|
||||
|
||||
if (key == NULL) {
|
||||
@ -845,7 +848,7 @@ static void *s390x_ecx_keygen448(struct ecx_gen_ctx *gctx)
|
||||
|
||||
pubkey = key->pubkey;
|
||||
|
||||
privkey = ecx_key_allocate_privkey(key);
|
||||
privkey = ossl_ecx_key_allocate_privkey(key);
|
||||
if (privkey == NULL) {
|
||||
ERR_raise(ERR_LIB_PROV, ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
@ -862,7 +865,7 @@ static void *s390x_ecx_keygen448(struct ecx_gen_ctx *gctx)
|
||||
key->haspubkey = 1;
|
||||
return key;
|
||||
err:
|
||||
ecx_key_free(key);
|
||||
ossl_ecx_key_free(key);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -879,7 +882,8 @@ static void *s390x_ecd_keygen25519(struct ecx_gen_ctx *gctx)
|
||||
0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
|
||||
};
|
||||
unsigned char x_dst[32], buff[SHA512_DIGEST_LENGTH];
|
||||
ECX_KEY *key = ecx_key_new(gctx->libctx, ECX_KEY_TYPE_ED25519, 1, gctx->propq);
|
||||
ECX_KEY *key = ossl_ecx_key_new(gctx->libctx, ECX_KEY_TYPE_ED25519, 1,
|
||||
gctx->propq);
|
||||
unsigned char *privkey = NULL, *pubkey;
|
||||
unsigned int sz;
|
||||
EVP_MD *sha = NULL;
|
||||
@ -896,7 +900,7 @@ static void *s390x_ecd_keygen25519(struct ecx_gen_ctx *gctx)
|
||||
|
||||
pubkey = key->pubkey;
|
||||
|
||||
privkey = ecx_key_allocate_privkey(key);
|
||||
privkey = ossl_ecx_key_allocate_privkey(key);
|
||||
if (privkey == NULL) {
|
||||
ERR_raise(ERR_LIB_PROV, ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
@ -925,7 +929,7 @@ static void *s390x_ecd_keygen25519(struct ecx_gen_ctx *gctx)
|
||||
key->haspubkey = 1;
|
||||
return key;
|
||||
err:
|
||||
ecx_key_free(key);
|
||||
ossl_ecx_key_free(key);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -946,7 +950,8 @@ static void *s390x_ecd_keygen448(struct ecx_gen_ctx *gctx)
|
||||
0x24, 0xbc, 0xb6, 0x6e, 0x71, 0x46, 0x3f, 0x69, 0x00
|
||||
};
|
||||
unsigned char x_dst[57], buff[114];
|
||||
ECX_KEY *key = ecx_key_new(gctx->libctx, ECX_KEY_TYPE_ED448, 1, gctx->propq);
|
||||
ECX_KEY *key = ossl_ecx_key_new(gctx->libctx, ECX_KEY_TYPE_ED448, 1,
|
||||
gctx->propq);
|
||||
unsigned char *privkey = NULL, *pubkey;
|
||||
EVP_MD_CTX *hashctx = NULL;
|
||||
EVP_MD *shake = NULL;
|
||||
@ -962,7 +967,7 @@ static void *s390x_ecd_keygen448(struct ecx_gen_ctx *gctx)
|
||||
|
||||
pubkey = key->pubkey;
|
||||
|
||||
privkey = ecx_key_allocate_privkey(key);
|
||||
privkey = ossl_ecx_key_allocate_privkey(key);
|
||||
if (privkey == NULL) {
|
||||
ERR_raise(ERR_LIB_PROV, ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
@ -998,7 +1003,7 @@ static void *s390x_ecd_keygen448(struct ecx_gen_ctx *gctx)
|
||||
key->haspubkey = 1;
|
||||
return key;
|
||||
err:
|
||||
ecx_key_free(key);
|
||||
ossl_ecx_key_free(key);
|
||||
EVP_MD_CTX_free(hashctx);
|
||||
EVP_MD_free(shake);
|
||||
return NULL;
|
||||
|
@ -99,7 +99,7 @@ static int eddsa_digest_signverify_init(void *vpeddsactx, const char *mdname,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!ecx_key_up_ref(edkey)) {
|
||||
if (!ossl_ecx_key_up_ref(edkey)) {
|
||||
ERR_raise(ERR_LIB_PROV, ERR_R_INTERNAL_ERROR);
|
||||
return 0;
|
||||
}
|
||||
@ -240,7 +240,7 @@ static void eddsa_freectx(void *vpeddsactx)
|
||||
{
|
||||
PROV_EDDSA_CTX *peddsactx = (PROV_EDDSA_CTX *)vpeddsactx;
|
||||
|
||||
ecx_key_free(peddsactx->key);
|
||||
ossl_ecx_key_free(peddsactx->key);
|
||||
|
||||
OPENSSL_free(peddsactx);
|
||||
}
|
||||
@ -260,7 +260,7 @@ static void *eddsa_dupctx(void *vpeddsactx)
|
||||
*dstctx = *srcctx;
|
||||
dstctx->key = NULL;
|
||||
|
||||
if (srcctx->key != NULL && !ecx_key_up_ref(srcctx->key)) {
|
||||
if (srcctx->key != NULL && !ossl_ecx_key_up_ref(srcctx->key)) {
|
||||
ERR_raise(ERR_LIB_PROV, ERR_R_INTERNAL_ERROR);
|
||||
goto err;
|
||||
}
|
||||
|
@ -144,7 +144,7 @@ static int sm2sig_sign(void *vpsm2ctx, unsigned char *sig, size_t *siglen,
|
||||
if (ctx->mdsize != 0 && tbslen != ctx->mdsize)
|
||||
return 0;
|
||||
|
||||
ret = sm2_internal_sign(tbs, tbslen, sig, &sltmp, ctx->ec);
|
||||
ret = ossl_sm2_internal_sign(tbs, tbslen, sig, &sltmp, ctx->ec);
|
||||
if (ret <= 0)
|
||||
return 0;
|
||||
|
||||
@ -160,7 +160,7 @@ static int sm2sig_verify(void *vpsm2ctx, const unsigned char *sig, size_t siglen
|
||||
if (ctx->mdsize != 0 && tbslen != ctx->mdsize)
|
||||
return 0;
|
||||
|
||||
return sm2_internal_verify(tbs, tbslen, sig, siglen, ctx->ec);
|
||||
return ossl_sm2_internal_verify(tbs, tbslen, sig, siglen, ctx->ec);
|
||||
}
|
||||
|
||||
static void free_md(PROV_SM2_CTX *ctx)
|
||||
@ -231,7 +231,8 @@ static int sm2sig_compute_z_digest(PROV_SM2_CTX *ctx)
|
||||
|
||||
if ((z = OPENSSL_zalloc(ctx->mdsize)) == NULL
|
||||
/* get hashed prefix 'z' of tbs message */
|
||||
|| !sm2_compute_z_digest(z, ctx->md, ctx->id, ctx->id_len, ctx->ec)
|
||||
|| !ossl_sm2_compute_z_digest(z, ctx->md, ctx->id, ctx->id_len,
|
||||
ctx->ec)
|
||||
|| !EVP_DigestUpdate(ctx->mdctx, z, ctx->mdsize))
|
||||
ret = 0;
|
||||
OPENSSL_free(z);
|
||||
|
@ -233,8 +233,8 @@ static int underflow_test(void)
|
||||
|| !TEST_int_gt(BN_hex2bn(&y1, p521m1), 0)
|
||||
|| !TEST_int_gt(BN_hex2bn(&z1, p521m1), 0)
|
||||
|| !TEST_int_gt(BN_hex2bn(&k, "02"), 0)
|
||||
|| !TEST_true(ec_GFp_simple_set_Jprojective_coordinates_GFp(grp, P, x1,
|
||||
y1, z1, ctx))
|
||||
|| !TEST_true(ossl_ec_GFp_simple_set_Jprojective_coordinates_GFp(grp, P, x1,
|
||||
y1, z1, ctx))
|
||||
|| !TEST_true(EC_POINT_mul(grp, Q, NULL, P, k, ctx))
|
||||
|| !TEST_true(EC_POINT_get_affine_coordinates(grp, Q, x1, y1, ctx))
|
||||
|| !TEST_true(EC_POINT_dbl(grp, R, P, ctx))
|
||||
|
@ -159,7 +159,8 @@ static int test_sm2_crypt(const EC_GROUP *group,
|
||||
if (!TEST_ptr(pt)
|
||||
|| !TEST_true(EC_POINT_mul(group, pt, priv, NULL, NULL, NULL))
|
||||
|| !TEST_true(EC_KEY_set_public_key(key, pt))
|
||||
|| !TEST_true(sm2_ciphertext_size(key, digest, msg_len, &ctext_len)))
|
||||
|| !TEST_true(ossl_sm2_ciphertext_size(key, digest, msg_len,
|
||||
&ctext_len)))
|
||||
goto done;
|
||||
|
||||
ctext = OPENSSL_zalloc(ctext_len);
|
||||
@ -167,8 +168,9 @@ static int test_sm2_crypt(const EC_GROUP *group,
|
||||
goto done;
|
||||
|
||||
start_fake_rand(k_hex);
|
||||
if (!TEST_true(sm2_encrypt(key, digest, (const uint8_t *)message, msg_len,
|
||||
ctext, &ctext_len))) {
|
||||
if (!TEST_true(ossl_sm2_encrypt(key, digest,
|
||||
(const uint8_t *)message, msg_len,
|
||||
ctext, &ctext_len))) {
|
||||
restore_rand();
|
||||
goto done;
|
||||
}
|
||||
@ -177,13 +179,14 @@ static int test_sm2_crypt(const EC_GROUP *group,
|
||||
if (!TEST_mem_eq(ctext, ctext_len, expected, ctext_len))
|
||||
goto done;
|
||||
|
||||
if (!TEST_true(sm2_plaintext_size(key, digest, ctext_len, &ptext_len))
|
||||
if (!TEST_true(ossl_sm2_plaintext_size(key, digest, ctext_len, &ptext_len))
|
||||
|| !TEST_int_eq(ptext_len, msg_len))
|
||||
goto done;
|
||||
|
||||
recovered = OPENSSL_zalloc(ptext_len);
|
||||
if (!TEST_ptr(recovered)
|
||||
|| !TEST_true(sm2_decrypt(key, digest, ctext, ctext_len, recovered, &recovered_len))
|
||||
|| !TEST_true(ossl_sm2_decrypt(key, digest, ctext, ctext_len,
|
||||
recovered, &recovered_len))
|
||||
|| !TEST_int_eq(recovered_len, msg_len)
|
||||
|| !TEST_mem_eq(recovered, recovered_len, message, msg_len))
|
||||
goto done;
|
||||
@ -286,8 +289,8 @@ static int test_sm2_sign(const EC_GROUP *group,
|
||||
goto done;
|
||||
|
||||
start_fake_rand(k_hex);
|
||||
sig = sm2_do_sign(key, EVP_sm3(), (const uint8_t *)userid, strlen(userid),
|
||||
(const uint8_t *)message, msg_len);
|
||||
sig = ossl_sm2_do_sign(key, EVP_sm3(), (const uint8_t *)userid,
|
||||
strlen(userid), (const uint8_t *)message, msg_len);
|
||||
if (!TEST_ptr(sig)) {
|
||||
restore_rand();
|
||||
goto done;
|
||||
@ -302,8 +305,8 @@ static int test_sm2_sign(const EC_GROUP *group,
|
||||
|| !TEST_BN_eq(s, sig_s))
|
||||
goto done;
|
||||
|
||||
ok = sm2_do_verify(key, EVP_sm3(), sig, (const uint8_t *)userid,
|
||||
strlen(userid), (const uint8_t *)message, msg_len);
|
||||
ok = ossl_sm2_do_verify(key, EVP_sm3(), sig, (const uint8_t *)userid,
|
||||
strlen(userid), (const uint8_t *)message, msg_len);
|
||||
|
||||
/* We goto done whether this passes or fails */
|
||||
TEST_true(ok);
|
||||
|
Loading…
x
Reference in New Issue
Block a user