change API for looking at the internal curve list
Submitted by: Nils Larsch
This commit is contained in:
parent
b499ed06d2
commit
65b1d31df5
@ -352,19 +352,33 @@ bad:
|
|||||||
|
|
||||||
if (list_curves)
|
if (list_curves)
|
||||||
{
|
{
|
||||||
int counter=0;
|
EC_builtin_curve *curves = NULL;
|
||||||
|
size_t crv_len = 0;
|
||||||
|
size_t n = 0;
|
||||||
|
size_t len;
|
||||||
|
|
||||||
for (;;)
|
crv_len = EC_get_builtin_curves(NULL, 0);
|
||||||
|
|
||||||
|
curves = OPENSSL_malloc(sizeof(EC_builtin_curve) * crv_len);
|
||||||
|
|
||||||
|
if (curves == NULL)
|
||||||
|
goto end;
|
||||||
|
|
||||||
|
if (!EC_get_builtin_curves(curves, crv_len))
|
||||||
|
{
|
||||||
|
OPENSSL_free(curves);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for (n = 0; n < crv_len; n++)
|
||||||
{
|
{
|
||||||
const char *comment;
|
const char *comment;
|
||||||
const char *sname;
|
const char *sname;
|
||||||
int len, nid = ec_group_index2nid(counter++);
|
comment = curves[n].comment;
|
||||||
if (!nid)
|
sname = OBJ_nid2sn(curves[n].nid);
|
||||||
break;
|
|
||||||
comment = EC_GROUP_get0_comment(nid);
|
|
||||||
sname = OBJ_nid2sn(nid);
|
|
||||||
if (comment == NULL)
|
if (comment == NULL)
|
||||||
comment = "";
|
comment = "CURVE DESCRIPTION NOT AVAILABLE";
|
||||||
if (sname == NULL)
|
if (sname == NULL)
|
||||||
sname = "";
|
sname = "";
|
||||||
|
|
||||||
@ -375,6 +389,7 @@ bad:
|
|||||||
BIO_printf(out, "%s\n", comment);
|
BIO_printf(out, "%s\n", comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OPENSSL_free(curves);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
@ -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_new_by_nid() creates a EC_GROUP structure specified by a NID */
|
||||||
EC_GROUP *EC_GROUP_new_by_nid(int nid);
|
EC_GROUP *EC_GROUP_new_by_nid(int nid);
|
||||||
/* EC_GROUP_get0_comment() returns a pointer to the 'comment' field of
|
/* handling of internal curves */
|
||||||
* ec_curve_data_st structure */
|
typedef struct {
|
||||||
const char *EC_GROUP_get0_comment(int nid);
|
int nid;
|
||||||
/* internal function : ec_group_index2nid() returns the NID of curve
|
const char *comment;
|
||||||
* with the given index i from the internal curve list */
|
} EC_builtin_curve;
|
||||||
int ec_group_index2nid(int i);
|
/* 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 */
|
/* EC_POINT functions */
|
||||||
|
@ -1207,19 +1207,20 @@ EC_GROUP *EC_GROUP_new_by_nid(int nid)
|
|||||||
return ret;
|
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 (r == NULL || nitems == 0)
|
||||||
if (curve_list[i].nid == nid)
|
return curve_list_length;
|
||||||
return curve_list[i].data->comment;
|
|
||||||
return NULL;
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ec_group_index2nid(int i)
|
return curve_list_length;
|
||||||
{
|
|
||||||
if (i >= curve_list_length || i < 0)
|
|
||||||
return 0;
|
|
||||||
return curve_list[i].nid;
|
|
||||||
}
|
}
|
||||||
|
@ -3003,9 +3003,10 @@ ENGINE_register_all_ECDH 3436 EXIST::FUNCTION:
|
|||||||
ECDH_DATA_new_method 3437 EXIST::FUNCTION:ECDH
|
ECDH_DATA_new_method 3437 EXIST::FUNCTION:ECDH
|
||||||
ENGINE_set_default_ECDH 3438 EXIST::FUNCTION:
|
ENGINE_set_default_ECDH 3438 EXIST::FUNCTION:
|
||||||
ENGINE_register_ECDH 3439 EXIST::FUNCTION:
|
ENGINE_register_ECDH 3439 EXIST::FUNCTION:
|
||||||
EC_GROUP_get0_comment 3440 EXIST::FUNCTION:EC
|
EC_GROUP_get0_comment 3440 NOEXIST::FUNCTION:
|
||||||
ec_group_index2nid 3441 EXIST::FUNCTION:EC
|
ec_group_index2nid 3441 NOEXIST::FUNCTION:
|
||||||
EC_GROUP_get_basis_type 3442 EXIST::FUNCTION:EC
|
EC_GROUP_get_basis_type 3442 EXIST::FUNCTION:EC
|
||||||
X509_REQ_print_ex 3443 EXIST::FUNCTION:BIO
|
X509_REQ_print_ex 3443 EXIST::FUNCTION:BIO
|
||||||
EC_GROUP_get_pentanomial_basis 3444 EXIST::FUNCTION:EC
|
EC_GROUP_get_pentanomial_basis 3444 EXIST::FUNCTION:EC
|
||||||
EC_GROUP_get_trinomial_basis 3445 EXIST::FUNCTION:EC
|
EC_GROUP_get_trinomial_basis 3445 EXIST::FUNCTION:EC
|
||||||
|
EC_get_builtin_curves 3446 EXIST::FUNCTION:EC
|
||||||
|
Loading…
x
Reference in New Issue
Block a user