|
|
@ -235,7 +235,7 @@ int EC_METHOD_get_field_type(const EC_METHOD *meth); |
|
|
|
* \param order the order of the group generated by the generator. |
|
|
|
* \param cofactor the index of the sub-group generated by the generator |
|
|
|
* in the group of all points on the elliptic curve. |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, const BIGNUM *order, const BIGNUM *cofactor); |
|
|
|
|
|
|
@ -249,7 +249,7 @@ const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); |
|
|
|
* \param group EC_GROUP object |
|
|
|
* \param order BIGNUM to which the order is copied |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); |
|
|
|
|
|
|
@ -257,7 +257,7 @@ int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); |
|
|
|
* \param group EC_GROUP object |
|
|
|
* \param cofactor BIGNUM to which the cofactor is copied |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, BN_CTX *ctx); |
|
|
|
|
|
|
@ -289,7 +289,7 @@ size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); |
|
|
|
* \param a BIGNUM with parameter a of the equation |
|
|
|
* \param b BIGNUM with parameter b of the equation |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); |
|
|
|
|
|
|
@ -299,7 +299,7 @@ int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, co |
|
|
|
* \param a BIGNUM for parameter a of the equation |
|
|
|
* \param b BIGNUM for parameter b of the equation |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx); |
|
|
|
|
|
|
@ -310,7 +310,7 @@ int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM * |
|
|
|
* \param a BIGNUM with parameter a of the equation |
|
|
|
* \param b BIGNUM with parameter b of the equation |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); |
|
|
|
|
|
|
@ -320,7 +320,7 @@ int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, c |
|
|
|
* \param a BIGNUM for parameter a of the equation |
|
|
|
* \param b BIGNUM for parameter b of the equation |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx); |
|
|
|
#endif |
|
|
@ -424,7 +424,7 @@ void EC_POINT_clear_free(EC_POINT *point); |
|
|
|
/** Copies EC_POINT object |
|
|
|
* \param dst destination EC_POINT object |
|
|
|
* \param src source EC_POINT object |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); |
|
|
|
|
|
|
@ -445,7 +445,7 @@ const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); |
|
|
|
/** Sets a point to infinity (neutral element) |
|
|
|
* \param group underlying EC_GROUP object |
|
|
|
* \param point EC_POINT to set to infinity |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); |
|
|
|
|
|
|
@ -456,7 +456,7 @@ int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); |
|
|
|
* \param y BIGNUM with the y-coordinate |
|
|
|
* \param z BIGNUM with the z-coordinate |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, |
|
|
|
const BIGNUM *x, const BIGNUM *y, const BIGNUM *z, BN_CTX *ctx); |
|
|
@ -468,7 +468,7 @@ int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, |
|
|
|
* \param y BIGNUM for the y-coordinate |
|
|
|
* \param z BIGNUM for the z-coordinate |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, |
|
|
|
const EC_POINT *p, BIGNUM *x, BIGNUM *y, BIGNUM *z, BN_CTX *ctx); |
|
|
@ -479,7 +479,7 @@ int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, |
|
|
|
* \param x BIGNUM with the x-coordinate |
|
|
|
* \param y BIGNUM with the y-coordinate |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, |
|
|
|
const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); |
|
|
@ -490,7 +490,7 @@ int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, |
|
|
|
* \param x BIGNUM for the x-coordinate |
|
|
|
* \param y BIGNUM for the y-coordinate |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, |
|
|
|
const EC_POINT *p, BIGNUM *x, BIGNUM *y, BN_CTX *ctx); |
|
|
@ -501,7 +501,7 @@ int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, |
|
|
|
* \param x BIGNUM with x-coordinate |
|
|
|
* \param y_bit integer with the y-Bit (either 0 or 1) |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, |
|
|
|
const BIGNUM *x, int y_bit, BN_CTX *ctx); |
|
|
@ -512,7 +512,7 @@ int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, |
|
|
|
* \param x BIGNUM with the x-coordinate |
|
|
|
* \param y BIGNUM with the y-coordinate |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, |
|
|
|
const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); |
|
|
@ -523,7 +523,7 @@ int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, |
|
|
|
* \param x BIGNUM for the x-coordinate |
|
|
|
* \param y BIGNUM for the y-coordinate |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, |
|
|
|
const EC_POINT *p, BIGNUM *x, BIGNUM *y, BN_CTX *ctx); |
|
|
@ -534,7 +534,7 @@ int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, |
|
|
|
* \param x BIGNUM with x-coordinate |
|
|
|
* \param y_bit integer with the y-Bit (either 0 or 1) |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, |
|
|
|
const BIGNUM *x, int y_bit, BN_CTX *ctx); |
|
|
@ -559,7 +559,7 @@ size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, |
|
|
|
* \param buf memory buffer with the encoded ec point |
|
|
|
* \param len length of the encoded ec point |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, |
|
|
|
const unsigned char *buf, size_t len, BN_CTX *ctx); |
|
|
@ -585,7 +585,7 @@ EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, |
|
|
|
* \param a EC_POINT object with the first summand |
|
|
|
* \param b EC_POINT object with the second summand |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, const EC_POINT *b, BN_CTX *ctx); |
|
|
|
|
|
|
@ -594,7 +594,7 @@ int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, const EC |
|
|
|
* \param r EC_POINT object for the result (r = 2 * a) |
|
|
|
* \param a EC_POINT object |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, BN_CTX *ctx); |
|
|
|
|
|
|
@ -602,7 +602,7 @@ int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, BN_CTX * |
|
|
|
* \param group underlying EC_GROUP object |
|
|
|
* \param a EC_POINT object to be inverted (it's used for the result as well) |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); |
|
|
|
|
|
|
@ -641,7 +641,7 @@ int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, EC_POINT *points[], |
|
|
|
* \param p array of size num of EC_POINT objects |
|
|
|
* \param m array of size num of BIGNUM objects |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, size_t num, const EC_POINT *p[], const BIGNUM *m[], BN_CTX *ctx); |
|
|
|
|
|
|
@ -652,14 +652,14 @@ int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, size_t nu |
|
|
|
* \param q EC_POINT object with the first factor of the second summand |
|
|
|
* \param m BIGNUM with the second factor of the second summand |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); |
|
|
|
|
|
|
|
/** Stores multiples of generator for faster point multiplication |
|
|
|
* \param group EC_GROUP object |
|
|
|
* \param ctx BN_CTX object (optional) |
|
|
|
* \return 1 on success and 0 if an error occured |
|
|
|
* \return 1 on success and 0 if an error occurred |
|
|
|
*/ |
|
|
|
int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); |
|
|
|
|
|
|
@ -844,7 +844,7 @@ int EC_KEY_generate_key(EC_KEY *key); |
|
|
|
int EC_KEY_check_key(const EC_KEY *key); |
|
|
|
|
|
|
|
/** Sets a public key from affine coordindates performing |
|
|
|
* neccessary NIST PKV tests. |
|
|
|
* necessary NIST PKV tests. |
|
|
|
* \param key the EC_KEY object |
|
|
|
* \param x public key x coordinate |
|
|
|
* \param y public key y coordinate |
|
|
|