pobj->pubkey_size = 2;
- ret = _gnutls_x509_read_ecc_params(pobj->pubkey[0].data,
- pobj->pubkey[0].size,
- &curve);
+ ret = _gnutls_pubkey_parse_ecc_eddsa_params(
+ &pobj->pubkey[0], &curve);
if (ret < 0) {
ret = GNUTLS_E_INVALID_REQUEST;
goto cleanup;
int _pkcs11_privkey_get_pubkey(gnutls_pkcs11_privkey_t pkey,
gnutls_pubkey_t *pub, unsigned flags);
+int _gnutls_pubkey_parse_ecc_eddsa_params(const gnutls_datum_t *parameters,
+ gnutls_ecc_curve_t *outcurve);
+
static inline int pk_to_mech(gnutls_pk_algorithm_t pk)
{
if (pk == GNUTLS_PK_DSA)
if (pkcs11_get_attribute_value(module, pks, ctx, a, 1) ==
CKR_OK) {
+ const gnutls_datum_t pubkey = {
+ .data = a[0].value, .size = a[0].value_len
+ };
gnutls_ecc_curve_t curve;
const gnutls_ecc_curve_entry_st *ce;
int ret;
- ret = _gnutls_x509_read_ecc_params(
- a[0].value, a[0].value_len, &curve);
+ ret = _gnutls_pubkey_parse_ecc_eddsa_params(&pubkey,
+ &curve);
if (ret < 0) {
goto edwards_cleanup;
}
/* The EC_PARAMS attribute can contain either printable string with curve name
* or OID defined in RFC 8410 */
-static int
-gnutls_pubkey_parse_ecc_eddsa_params(const gnutls_datum_t *parameters,
- gnutls_ecc_curve_t *outcurve)
+int _gnutls_pubkey_parse_ecc_eddsa_params(const gnutls_datum_t *parameters,
+ gnutls_ecc_curve_t *outcurve)
{
gnutls_ecc_curve_t curve = GNUTLS_ECC_CURVE_INVALID;
asn1_node asn1 = NULL;
gnutls_ecc_curve_t curve = GNUTLS_ECC_CURVE_INVALID;
gnutls_datum_t raw_point = { NULL, 0 };
- ret = gnutls_pubkey_parse_ecc_eddsa_params(parameters, &curve);
+ ret = _gnutls_pubkey_parse_ecc_eddsa_params(parameters, &curve);
if (ret < 0) {
return gnutls_assert_val(ret);
}