diff options
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/ec/ec.h | 16 | ||||
-rw-r--r-- | crypto/ec/ec_curve.c | 25 |
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; } |