aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/ec
diff options
context:
space:
mode:
authorBodo Möller <bodo@openssl.org>2002-09-02 07:08:33 +0000
committerBodo Möller <bodo@openssl.org>2002-09-02 07:08:33 +0000
commit65b1d31df53fecefbf53dedd8fc4f9f64a62a92b (patch)
treebffd3682c63f03629053759a61870a0e238ed46e /crypto/ec
parentb499ed06d2afa4e495f0985ba3c571a1e6ee3f69 (diff)
downloadopenssl-65b1d31df53fecefbf53dedd8fc4f9f64a62a92b.tar.gz
change API for looking at the internal curve list
Submitted by: Nils Larsch
Diffstat (limited to 'crypto/ec')
-rw-r--r--crypto/ec/ec.h16
-rw-r--r--crypto/ec/ec_curve.c25
2 files changed, 23 insertions, 18 deletions
diff --git a/crypto/ec/ec.h b/crypto/ec/ec.h
index faca04aab9..094e05e168 100644
--- a/crypto/ec/ec.h
+++ b/crypto/ec/ec.h
@@ -184,12 +184,16 @@ EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, const BIGNUM
/* EC_GROUP_new_by_nid() creates a EC_GROUP structure specified by a NID */
EC_GROUP *EC_GROUP_new_by_nid(int nid);
-/* EC_GROUP_get0_comment() returns a pointer to the 'comment' field of
- * ec_curve_data_st structure */
-const char *EC_GROUP_get0_comment(int nid);
-/* internal function : ec_group_index2nid() returns the NID of curve
- * with the given index i from the internal curve list */
-int ec_group_index2nid(int i);
+/* handling of internal curves */
+typedef struct {
+ int nid;
+ const char *comment;
+ } EC_builtin_curve;
+/* EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number
+ * of all available curves or zero if a error occurred.
+ * In case r ist not zero nitems EC_builtin_curve structures
+ * are filled with the data of the first nitems internal groups */
+size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems);
/* EC_POINT functions */
diff --git a/crypto/ec/ec_curve.c b/crypto/ec/ec_curve.c
index 93f775d556..090520372e 100644
--- a/crypto/ec/ec_curve.c
+++ b/crypto/ec/ec_curve.c
@@ -1207,19 +1207,20 @@ EC_GROUP *EC_GROUP_new_by_nid(int nid)
return ret;
}
-const char *EC_GROUP_get0_comment(int nid)
+size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems)
{
- size_t i;
+ size_t i, min;
- for (i=0; i<curve_list_length; i++)
- if (curve_list[i].nid == nid)
- return curve_list[i].data->comment;
- return NULL;
- }
+ if (r == NULL || nitems == 0)
+ return curve_list_length;
-int ec_group_index2nid(int i)
- {
- if (i >= curve_list_length || i < 0)
- return 0;
- return curve_list[i].nid;
+ min = nitems < curve_list_length ? nitems : curve_list_length;
+
+ for (i = 0; i < min; i++)
+ {
+ r[i].nid = curve_list[i].nid;
+ r[i].comment = curve_list[i].data->comment;
+ }
+
+ return curve_list_length;
}