|
|
|
@ -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
|
|
|
|
|