aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBodo Möller <bodo@openssl.org>2001-03-06 07:01:51 +0000
committerBodo Möller <bodo@openssl.org>2001-03-06 07:01:51 +0000
commitfb171e534e93bf09a4117e1dd9fbc9d7e670157d (patch)
tree5ed94e4ec61997b5ea64cddd07a755dc554d88a0
parent7d7db13e67b7834818e361d5a16083e1d237b62a (diff)
downloadopenssl-fb171e534e93bf09a4117e1dd9fbc9d7e670157d.zip
openssl-fb171e534e93bf09a4117e1dd9fbc9d7e670157d.tar.gz
openssl-fb171e534e93bf09a4117e1dd9fbc9d7e670157d.tar.bz2
New function declarations.
-rw-r--r--crypto/ec/ec.h5
-rw-r--r--crypto/ec/ec_lcl.h20
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 */;