Loading crypto/bn/bn.h +0 −1 Original line number Diff line number Diff line Loading @@ -553,4 +553,3 @@ int BN_bntest_rand(BIGNUM *rnd, int bits, int top,int bottom); } #endif #endif crypto/ec/ec.h +38 −24 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ extern "C" { typedef enum { /* values as defined in X9.62 (ECDSA) and elsewhere */ POINT_CONVERSION_COMPRESSED = 2, POINT_CONVERSION_UNCOMPRESSED = 4, POINT_CONVERSION_HYBRID = 6 Loading Loading @@ -120,7 +121,12 @@ void EC_POINT_free(EC_POINT *); void EC_POINT_clear_free(EC_POINT *); int EC_POINT_copy(EC_POINT *, const EC_POINT *); /* TODO: 'set' and 'get' functions for EC_POINTs */ int EC_POINT_set_to_infinity(const EC_GROUP *, EC_POINT *); int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *, EC_POINT *, const BIGNUM *x, const BIGNUM *y, BN_CTX *); int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *, const EC_POINT *, BIGNUM *x, BIGNUM *y, BN_CTX *); /* TODO: other 'set' and 'get' functions for EC_POINTs */ size_t EC_POINT_point2oct(const EC_GROUP *, const EC_POINT *, point_conversion_form_t form, unsigned char *buf, size_t len, BN_CTX *); Loading Loading @@ -149,33 +155,41 @@ int EC_POINT_make_affine(const EC_GROUP *, EC_POINT *, BN_CTX *); /* Error codes for the EC functions. */ /* Function codes. */ #define EC_F_EC_GFP_SIMPLE_GROUP_SET_GENERATOR 117 #define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 118 #define EC_F_EC_GROUP_CLEAR_FREE 103 #define EC_F_EC_GROUP_COPY 102 #define EC_F_EC_GROUP_FREE 104 #define EC_F_EC_GROUP_GET_EXTRA_DATA 115 #define EC_F_EC_GROUP_NEW 100 #define EC_F_EC_GROUP_SET_CURVE_GFP 101 #define EC_F_EC_GROUP_SET_EXTRA_DATA 116 #define EC_F_EC_GROUP_SET_GENERATOR 106 #define EC_F_EC_POINT_ADD 107 #define EC_F_EC_POINT_COPY 108 #define EC_F_EC_POINT_DBL 109 #define EC_F_EC_POINT_IS_AT_INFINITY 110 #define EC_F_EC_POINT_IS_ON_CURVE 111 #define EC_F_EC_POINT_MAKE_AFFINE 112 #define EC_F_EC_POINT_NEW 105 #define EC_F_EC_POINT_OCT2POINT 113 #define EC_F_EC_POINT_POINT2OCT 114 #define EC_F_EC_GFP_SIMPLE_GROUP_SET_GENERATOR 100 #define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 101 #define EC_F_EC_GFP_SIMPLE_OCT2POINT 102 #define EC_F_EC_GFP_SIMPLE_POINT2OCT 103 #define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES_GFP 104 #define EC_F_EC_GROUP_COPY 105 #define EC_F_EC_GROUP_GET_EXTRA_DATA 106 #define EC_F_EC_GROUP_NEW 107 #define EC_F_EC_GROUP_SET_CURVE_GFP 108 #define EC_F_EC_GROUP_SET_EXTRA_DATA 109 #define EC_F_EC_GROUP_SET_GENERATOR 110 #define EC_F_EC_POINT_ADD 111 #define EC_F_EC_POINT_COPY 112 #define EC_F_EC_POINT_DBL 113 #define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP 114 #define EC_F_EC_POINT_IS_AT_INFINITY 115 #define EC_F_EC_POINT_IS_ON_CURVE 116 #define EC_F_EC_POINT_MAKE_AFFINE 117 #define EC_F_EC_POINT_NEW 118 #define EC_F_EC_POINT_OCT2POINT 119 #define EC_F_EC_POINT_POINT2OCT 120 #define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP 121 #define EC_F_EC_POINT_SET_TO_INFINITY 122 /* Reason codes. */ #define EC_R_INCOMPATIBLE_OBJECTS 100 #define EC_R_NO_SUCH_EXTRA_DATA 101 #define EC_R_SLOT_FULL 102 #define EC_R_BUFFER_TOO_SMALL 100 #define EC_R_INCOMPATIBLE_OBJECTS 101 #define EC_R_INVALID_ENCODING 102 #define EC_R_INVALID_FORM 103 #define EC_R_NO_SUCH_EXTRA_DATA 104 #define EC_R_POINT_AT_INFINITY 105 #define EC_R_POINT_IS_NOT_ON_CURVE 106 #define EC_R_SLOT_FULL 107 #ifdef __cplusplus } #endif #endif crypto/ec/ec_err.c +11 −2 Original line number Diff line number Diff line Loading @@ -68,9 +68,10 @@ static ERR_STRING_DATA EC_str_functs[]= { {ERR_PACK(0,EC_F_EC_GFP_SIMPLE_GROUP_SET_GENERATOR,0), "EC_GFP_SIMPLE_GROUP_SET_GENERATOR"}, {ERR_PACK(0,EC_F_EC_GFP_SIMPLE_MAKE_AFFINE,0), "EC_GFP_SIMPLE_MAKE_AFFINE"}, {ERR_PACK(0,EC_F_EC_GROUP_CLEAR_FREE,0), "EC_GROUP_clear_free"}, {ERR_PACK(0,EC_F_EC_GFP_SIMPLE_OCT2POINT,0), "EC_GFP_SIMPLE_OCT2POINT"}, {ERR_PACK(0,EC_F_EC_GFP_SIMPLE_POINT2OCT,0), "EC_GFP_SIMPLE_POINT2OCT"}, {ERR_PACK(0,EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES_GFP,0), "EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES_GFP"}, {ERR_PACK(0,EC_F_EC_GROUP_COPY,0), "EC_GROUP_copy"}, {ERR_PACK(0,EC_F_EC_GROUP_FREE,0), "EC_GROUP_free"}, {ERR_PACK(0,EC_F_EC_GROUP_GET_EXTRA_DATA,0), "EC_GROUP_GET_EXTRA_DATA"}, {ERR_PACK(0,EC_F_EC_GROUP_NEW,0), "EC_GROUP_new"}, {ERR_PACK(0,EC_F_EC_GROUP_SET_CURVE_GFP,0), "EC_GROUP_set_curve_GFp"}, Loading @@ -79,19 +80,27 @@ static ERR_STRING_DATA EC_str_functs[]= {ERR_PACK(0,EC_F_EC_POINT_ADD,0), "EC_POINT_add"}, {ERR_PACK(0,EC_F_EC_POINT_COPY,0), "EC_POINT_copy"}, {ERR_PACK(0,EC_F_EC_POINT_DBL,0), "EC_POINT_dbl"}, {ERR_PACK(0,EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP,0), "EC_POINT_get_affine_coordinates_GFp"}, {ERR_PACK(0,EC_F_EC_POINT_IS_AT_INFINITY,0), "EC_POINT_is_at_infinity"}, {ERR_PACK(0,EC_F_EC_POINT_IS_ON_CURVE,0), "EC_POINT_is_on_curve"}, {ERR_PACK(0,EC_F_EC_POINT_MAKE_AFFINE,0), "EC_POINT_make_affine"}, {ERR_PACK(0,EC_F_EC_POINT_NEW,0), "EC_POINT_new"}, {ERR_PACK(0,EC_F_EC_POINT_OCT2POINT,0), "EC_POINT_oct2point"}, {ERR_PACK(0,EC_F_EC_POINT_POINT2OCT,0), "EC_POINT_point2oct"}, {ERR_PACK(0,EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP,0), "EC_POINT_set_affine_coordinates_GFp"}, {ERR_PACK(0,EC_F_EC_POINT_SET_TO_INFINITY,0), "EC_POINT_set_to_infinity"}, {0,NULL} }; static ERR_STRING_DATA EC_str_reasons[]= { {EC_R_BUFFER_TOO_SMALL ,"buffer too small"}, {EC_R_INCOMPATIBLE_OBJECTS ,"incompatible objects"}, {EC_R_INVALID_ENCODING ,"invalid encoding"}, {EC_R_INVALID_FORM ,"invalid form"}, {EC_R_NO_SUCH_EXTRA_DATA ,"no such extra data"}, {EC_R_POINT_AT_INFINITY ,"point at infinity"}, {EC_R_POINT_IS_NOT_ON_CURVE ,"point is not on curve"}, {EC_R_SLOT_FULL ,"slot full"}, {0,NULL} }; Loading crypto/ec/ec_lcl.h +12 −2 Original line number Diff line number Diff line Loading @@ -84,7 +84,12 @@ struct ec_method_st { void (*point_clear_finish)(EC_POINT *); int (*point_copy)(EC_POINT *, const EC_POINT *); /* TODO: 'set' and 'get' functions for EC_POINTs */ int (*point_set_to_infinity)(const EC_GROUP *, EC_POINT *); int (*point_set_affine_coordinates_GFp)(const EC_GROUP *, EC_POINT *, const BIGNUM *x, const BIGNUM *y, BN_CTX *); int (*point_get_affine_coordinates_GFp)(const EC_GROUP *, const EC_POINT *, BIGNUM *x, BIGNUM *y, BN_CTX *); /* TODO: other 'set' and 'get' functions for EC_POINTs */ /* used by EC_POINT_point2oct, EC_POINT_oct2point: */ size_t (*point2oct)(const EC_GROUP *, const EC_POINT *, point_conversion_form_t form, Loading Loading @@ -188,7 +193,12 @@ 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 *); /* TODO: 'set' and 'get' functions for EC_POINTs */ int ec_GFp_simple_point_set_to_infinity(const EC_GROUP *, EC_POINT *); int ec_GFp_simple_point_set_affine_coordinates_GFp(const EC_GROUP *, EC_POINT *, const BIGNUM *x, const BIGNUM *y, BN_CTX *); int ec_GFp_simple_point_get_affine_coordinates_GFp(const EC_GROUP *, const EC_POINT *, BIGNUM *x, BIGNUM *y, BN_CTX *); /* TODO: other 'set' and 'get' functions for EC_POINTs */ 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 *, Loading crypto/ec/ec_lib.c +51 −3 Original line number Diff line number Diff line Loading @@ -108,7 +108,6 @@ int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, co ECerr(EC_F_EC_GROUP_SET_CURVE_GFP, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); return 0; } return group->meth->group_set_curve_GFp(group, p, a, b, ctx); } Loading Loading @@ -315,12 +314,61 @@ int EC_POINT_copy(EC_POINT *dest, const EC_POINT *src) ECerr(EC_F_EC_POINT_COPY, EC_R_INCOMPATIBLE_OBJECTS); return 0; } return dest->meth->point_copy(dest, src); } /* TODO: 'set' and 'get' functions for EC_POINTs */ int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point) { if (group->meth->point_set_to_infinity == 0) { ECerr(EC_F_EC_POINT_SET_TO_INFINITY, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); return 0; } if (group->meth != point->meth) { ECerr(EC_F_EC_POINT_SET_TO_INFINITY, EC_R_INCOMPATIBLE_OBJECTS); return 0; } return group->meth->point_set_to_infinity(group, point); } int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *point, const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx) { if (group->meth->point_set_affine_coordinates_GFp == 0) { ECerr(EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); return 0; } if (group->meth != point->meth) { ECerr(EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP, EC_R_INCOMPATIBLE_OBJECTS); return 0; } return group->meth->point_set_affine_coordinates_GFp(group, point, x, y, ctx); } int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, const EC_POINT *point, BIGNUM *x, BIGNUM *y, BN_CTX *ctx) { if (group->meth->point_get_affine_coordinates_GFp == 0) { ECerr(EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); return 0; } if (group->meth != point->meth) { ECerr(EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP, EC_R_INCOMPATIBLE_OBJECTS); return 0; } return group->meth->point_get_affine_coordinates_GFp(group, point, x, y, ctx); } /* TODO: other 'set' and 'get' functions for EC_POINTs */ size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *point, point_conversion_form_t form, Loading Loading
crypto/bn/bn.h +0 −1 Original line number Diff line number Diff line Loading @@ -553,4 +553,3 @@ int BN_bntest_rand(BIGNUM *rnd, int bits, int top,int bottom); } #endif #endif
crypto/ec/ec.h +38 −24 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ extern "C" { typedef enum { /* values as defined in X9.62 (ECDSA) and elsewhere */ POINT_CONVERSION_COMPRESSED = 2, POINT_CONVERSION_UNCOMPRESSED = 4, POINT_CONVERSION_HYBRID = 6 Loading Loading @@ -120,7 +121,12 @@ void EC_POINT_free(EC_POINT *); void EC_POINT_clear_free(EC_POINT *); int EC_POINT_copy(EC_POINT *, const EC_POINT *); /* TODO: 'set' and 'get' functions for EC_POINTs */ int EC_POINT_set_to_infinity(const EC_GROUP *, EC_POINT *); int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *, EC_POINT *, const BIGNUM *x, const BIGNUM *y, BN_CTX *); int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *, const EC_POINT *, BIGNUM *x, BIGNUM *y, BN_CTX *); /* TODO: other 'set' and 'get' functions for EC_POINTs */ size_t EC_POINT_point2oct(const EC_GROUP *, const EC_POINT *, point_conversion_form_t form, unsigned char *buf, size_t len, BN_CTX *); Loading Loading @@ -149,33 +155,41 @@ int EC_POINT_make_affine(const EC_GROUP *, EC_POINT *, BN_CTX *); /* Error codes for the EC functions. */ /* Function codes. */ #define EC_F_EC_GFP_SIMPLE_GROUP_SET_GENERATOR 117 #define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 118 #define EC_F_EC_GROUP_CLEAR_FREE 103 #define EC_F_EC_GROUP_COPY 102 #define EC_F_EC_GROUP_FREE 104 #define EC_F_EC_GROUP_GET_EXTRA_DATA 115 #define EC_F_EC_GROUP_NEW 100 #define EC_F_EC_GROUP_SET_CURVE_GFP 101 #define EC_F_EC_GROUP_SET_EXTRA_DATA 116 #define EC_F_EC_GROUP_SET_GENERATOR 106 #define EC_F_EC_POINT_ADD 107 #define EC_F_EC_POINT_COPY 108 #define EC_F_EC_POINT_DBL 109 #define EC_F_EC_POINT_IS_AT_INFINITY 110 #define EC_F_EC_POINT_IS_ON_CURVE 111 #define EC_F_EC_POINT_MAKE_AFFINE 112 #define EC_F_EC_POINT_NEW 105 #define EC_F_EC_POINT_OCT2POINT 113 #define EC_F_EC_POINT_POINT2OCT 114 #define EC_F_EC_GFP_SIMPLE_GROUP_SET_GENERATOR 100 #define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 101 #define EC_F_EC_GFP_SIMPLE_OCT2POINT 102 #define EC_F_EC_GFP_SIMPLE_POINT2OCT 103 #define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES_GFP 104 #define EC_F_EC_GROUP_COPY 105 #define EC_F_EC_GROUP_GET_EXTRA_DATA 106 #define EC_F_EC_GROUP_NEW 107 #define EC_F_EC_GROUP_SET_CURVE_GFP 108 #define EC_F_EC_GROUP_SET_EXTRA_DATA 109 #define EC_F_EC_GROUP_SET_GENERATOR 110 #define EC_F_EC_POINT_ADD 111 #define EC_F_EC_POINT_COPY 112 #define EC_F_EC_POINT_DBL 113 #define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP 114 #define EC_F_EC_POINT_IS_AT_INFINITY 115 #define EC_F_EC_POINT_IS_ON_CURVE 116 #define EC_F_EC_POINT_MAKE_AFFINE 117 #define EC_F_EC_POINT_NEW 118 #define EC_F_EC_POINT_OCT2POINT 119 #define EC_F_EC_POINT_POINT2OCT 120 #define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP 121 #define EC_F_EC_POINT_SET_TO_INFINITY 122 /* Reason codes. */ #define EC_R_INCOMPATIBLE_OBJECTS 100 #define EC_R_NO_SUCH_EXTRA_DATA 101 #define EC_R_SLOT_FULL 102 #define EC_R_BUFFER_TOO_SMALL 100 #define EC_R_INCOMPATIBLE_OBJECTS 101 #define EC_R_INVALID_ENCODING 102 #define EC_R_INVALID_FORM 103 #define EC_R_NO_SUCH_EXTRA_DATA 104 #define EC_R_POINT_AT_INFINITY 105 #define EC_R_POINT_IS_NOT_ON_CURVE 106 #define EC_R_SLOT_FULL 107 #ifdef __cplusplus } #endif #endif
crypto/ec/ec_err.c +11 −2 Original line number Diff line number Diff line Loading @@ -68,9 +68,10 @@ static ERR_STRING_DATA EC_str_functs[]= { {ERR_PACK(0,EC_F_EC_GFP_SIMPLE_GROUP_SET_GENERATOR,0), "EC_GFP_SIMPLE_GROUP_SET_GENERATOR"}, {ERR_PACK(0,EC_F_EC_GFP_SIMPLE_MAKE_AFFINE,0), "EC_GFP_SIMPLE_MAKE_AFFINE"}, {ERR_PACK(0,EC_F_EC_GROUP_CLEAR_FREE,0), "EC_GROUP_clear_free"}, {ERR_PACK(0,EC_F_EC_GFP_SIMPLE_OCT2POINT,0), "EC_GFP_SIMPLE_OCT2POINT"}, {ERR_PACK(0,EC_F_EC_GFP_SIMPLE_POINT2OCT,0), "EC_GFP_SIMPLE_POINT2OCT"}, {ERR_PACK(0,EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES_GFP,0), "EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES_GFP"}, {ERR_PACK(0,EC_F_EC_GROUP_COPY,0), "EC_GROUP_copy"}, {ERR_PACK(0,EC_F_EC_GROUP_FREE,0), "EC_GROUP_free"}, {ERR_PACK(0,EC_F_EC_GROUP_GET_EXTRA_DATA,0), "EC_GROUP_GET_EXTRA_DATA"}, {ERR_PACK(0,EC_F_EC_GROUP_NEW,0), "EC_GROUP_new"}, {ERR_PACK(0,EC_F_EC_GROUP_SET_CURVE_GFP,0), "EC_GROUP_set_curve_GFp"}, Loading @@ -79,19 +80,27 @@ static ERR_STRING_DATA EC_str_functs[]= {ERR_PACK(0,EC_F_EC_POINT_ADD,0), "EC_POINT_add"}, {ERR_PACK(0,EC_F_EC_POINT_COPY,0), "EC_POINT_copy"}, {ERR_PACK(0,EC_F_EC_POINT_DBL,0), "EC_POINT_dbl"}, {ERR_PACK(0,EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP,0), "EC_POINT_get_affine_coordinates_GFp"}, {ERR_PACK(0,EC_F_EC_POINT_IS_AT_INFINITY,0), "EC_POINT_is_at_infinity"}, {ERR_PACK(0,EC_F_EC_POINT_IS_ON_CURVE,0), "EC_POINT_is_on_curve"}, {ERR_PACK(0,EC_F_EC_POINT_MAKE_AFFINE,0), "EC_POINT_make_affine"}, {ERR_PACK(0,EC_F_EC_POINT_NEW,0), "EC_POINT_new"}, {ERR_PACK(0,EC_F_EC_POINT_OCT2POINT,0), "EC_POINT_oct2point"}, {ERR_PACK(0,EC_F_EC_POINT_POINT2OCT,0), "EC_POINT_point2oct"}, {ERR_PACK(0,EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP,0), "EC_POINT_set_affine_coordinates_GFp"}, {ERR_PACK(0,EC_F_EC_POINT_SET_TO_INFINITY,0), "EC_POINT_set_to_infinity"}, {0,NULL} }; static ERR_STRING_DATA EC_str_reasons[]= { {EC_R_BUFFER_TOO_SMALL ,"buffer too small"}, {EC_R_INCOMPATIBLE_OBJECTS ,"incompatible objects"}, {EC_R_INVALID_ENCODING ,"invalid encoding"}, {EC_R_INVALID_FORM ,"invalid form"}, {EC_R_NO_SUCH_EXTRA_DATA ,"no such extra data"}, {EC_R_POINT_AT_INFINITY ,"point at infinity"}, {EC_R_POINT_IS_NOT_ON_CURVE ,"point is not on curve"}, {EC_R_SLOT_FULL ,"slot full"}, {0,NULL} }; Loading
crypto/ec/ec_lcl.h +12 −2 Original line number Diff line number Diff line Loading @@ -84,7 +84,12 @@ struct ec_method_st { void (*point_clear_finish)(EC_POINT *); int (*point_copy)(EC_POINT *, const EC_POINT *); /* TODO: 'set' and 'get' functions for EC_POINTs */ int (*point_set_to_infinity)(const EC_GROUP *, EC_POINT *); int (*point_set_affine_coordinates_GFp)(const EC_GROUP *, EC_POINT *, const BIGNUM *x, const BIGNUM *y, BN_CTX *); int (*point_get_affine_coordinates_GFp)(const EC_GROUP *, const EC_POINT *, BIGNUM *x, BIGNUM *y, BN_CTX *); /* TODO: other 'set' and 'get' functions for EC_POINTs */ /* used by EC_POINT_point2oct, EC_POINT_oct2point: */ size_t (*point2oct)(const EC_GROUP *, const EC_POINT *, point_conversion_form_t form, Loading Loading @@ -188,7 +193,12 @@ 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 *); /* TODO: 'set' and 'get' functions for EC_POINTs */ int ec_GFp_simple_point_set_to_infinity(const EC_GROUP *, EC_POINT *); int ec_GFp_simple_point_set_affine_coordinates_GFp(const EC_GROUP *, EC_POINT *, const BIGNUM *x, const BIGNUM *y, BN_CTX *); int ec_GFp_simple_point_get_affine_coordinates_GFp(const EC_GROUP *, const EC_POINT *, BIGNUM *x, BIGNUM *y, BN_CTX *); /* TODO: other 'set' and 'get' functions for EC_POINTs */ 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 *, Loading
crypto/ec/ec_lib.c +51 −3 Original line number Diff line number Diff line Loading @@ -108,7 +108,6 @@ int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, co ECerr(EC_F_EC_GROUP_SET_CURVE_GFP, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); return 0; } return group->meth->group_set_curve_GFp(group, p, a, b, ctx); } Loading Loading @@ -315,12 +314,61 @@ int EC_POINT_copy(EC_POINT *dest, const EC_POINT *src) ECerr(EC_F_EC_POINT_COPY, EC_R_INCOMPATIBLE_OBJECTS); return 0; } return dest->meth->point_copy(dest, src); } /* TODO: 'set' and 'get' functions for EC_POINTs */ int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point) { if (group->meth->point_set_to_infinity == 0) { ECerr(EC_F_EC_POINT_SET_TO_INFINITY, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); return 0; } if (group->meth != point->meth) { ECerr(EC_F_EC_POINT_SET_TO_INFINITY, EC_R_INCOMPATIBLE_OBJECTS); return 0; } return group->meth->point_set_to_infinity(group, point); } int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *point, const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx) { if (group->meth->point_set_affine_coordinates_GFp == 0) { ECerr(EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); return 0; } if (group->meth != point->meth) { ECerr(EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP, EC_R_INCOMPATIBLE_OBJECTS); return 0; } return group->meth->point_set_affine_coordinates_GFp(group, point, x, y, ctx); } int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, const EC_POINT *point, BIGNUM *x, BIGNUM *y, BN_CTX *ctx) { if (group->meth->point_get_affine_coordinates_GFp == 0) { ECerr(EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); return 0; } if (group->meth != point->meth) { ECerr(EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP, EC_R_INCOMPATIBLE_OBJECTS); return 0; } return group->meth->point_get_affine_coordinates_GFp(group, point, x, y, ctx); } /* TODO: other 'set' and 'get' functions for EC_POINTs */ size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *point, point_conversion_form_t form, Loading