diff options
author | Bodo Möller <bodo@openssl.org> | 2001-03-06 07:01:51 +0000 |
---|---|---|
committer | Bodo Möller <bodo@openssl.org> | 2001-03-06 07:01:51 +0000 |
commit | fb171e534e93bf09a4117e1dd9fbc9d7e670157d (patch) | |
tree | 5ed94e4ec61997b5ea64cddd07a755dc554d88a0 | |
parent | 7d7db13e67b7834818e361d5a16083e1d237b62a (diff) | |
download | openssl-fb171e534e93bf09a4117e1dd9fbc9d7e670157d.zip openssl-fb171e534e93bf09a4117e1dd9fbc9d7e670157d.tar.gz openssl-fb171e534e93bf09a4117e1dd9fbc9d7e670157d.tar.bz2 |
New function declarations.
-rw-r--r-- | crypto/ec/ec.h | 5 | ||||
-rw-r--r-- | crypto/ec/ec_lcl.h | 20 |
2 files changed, 20 insertions, 5 deletions
diff --git a/crypto/ec/ec.h b/crypto/ec/ec.h index b008f20..7fe1ba9 100644 --- a/crypto/ec/ec.h +++ b/crypto/ec/ec.h @@ -129,6 +129,11 @@ int EC_POINT_oct2point(const EC_GROUP *, EC_POINT *, int EC_POINT_add(const EC_GROUP *, EC_POINT *r, const EC_POINT *a, const EC_POINT *b, BN_CTX *); int EC_POINT_dbl(const EC_GROUP *, EC_POINT *r, const EC_POINT *a, BN_CTX *); +int EC_POINT_is_at_infinity(const EC_GROUP *, EC_POINT *, BN_CTX *); +int EC_POINT_is_on_curve(const EC_GROUP *, EC_POINT *, BN_CTX *); + +int EC_POINT_make_affine(const EC_GROUP *, EC_POINT *, BN_CTX *); + /* TODO: scalar multiplication */ diff --git a/crypto/ec/ec_lcl.h b/crypto/ec/ec_lcl.h index 2473c6f..2f260fa 100644 --- a/crypto/ec/ec_lcl.h +++ b/crypto/ec/ec_lcl.h @@ -95,6 +95,11 @@ struct ec_method_st { int (*add)(const EC_GROUP *, EC_POINT *r, const EC_POINT *a, const EC_POINT *b, BN_CTX *); int (*dbl)(const EC_GROUP *, EC_POINT *r, const EC_POINT *a, BN_CTX *); + /* used by EC_POINT_is_at_infinity, EC_POINT_is_on_curve, EC_POINT_make_affine */ + int (*is_at_infinity)(const EC_GROUP *, EC_POINT *, BN_CTX *); + int (*is_on_curve)(const EC_GROUP *, EC_POINT *, BN_CTX *); + int (*make_affine)(const EC_GROUP *, EC_POINT *, BN_CTX *); + /* internal functions */ @@ -118,7 +123,11 @@ struct ec_group_st { BIGNUM a, b; /* Curve coefficients. * (Here the assumption is that BIGNUMs can be used - * or abused for all kinds of fields, not just GF(p).) */ + * or abused for all kinds of fields, not just GF(p).) + * For characteristic > 3, the curve is defined + * by a Weierstrass equation of the form + * Y^2 = X^3 + a*X + b. + */ int a_is_minus3; /* enable optimized point arithmetics for special case */ EC_POINT *generator; /* optional */ @@ -131,8 +140,9 @@ struct ec_group_st { struct ec_point_st { EC_METHOD *meth; - BIGNUM x; - BIGNUM y; - BIGNUM z; /* Jacobian projective coordinates */ - int z_is_one; /* enable optimized point arithmetics for special case */ + BIGNUM X; + BIGNUM Y; + BIGNUM Z; /* Jacobian projective coordinates: + * (X, Y, Z) represents (X/Z^2, Y/Z^3) if Z != 0 */ + int Z_is_one; /* enable optimized point arithmetics for special case */ } /* EC_POINT */; |