]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
gnutls_pubkey_import_ecc_raw: allow X25519/X448 curves
authorDaiki Ueno <ueno@gnu.org>
Tue, 12 Apr 2022 06:21:12 +0000 (08:21 +0200)
committerDaiki Ueno <ueno@gnu.org>
Wed, 30 Aug 2023 03:48:48 +0000 (12:48 +0900)
Signed-off-by: Daiki Ueno <ueno@gnu.org>
lib/pubkey.c

index a783371b164f91aacb242992b1a0e163a9ed4e0e..ca58ccc7c676cd64739223999b73ee759954890a 100644 (file)
@@ -1666,7 +1666,7 @@ int gnutls_pubkey_import_ecc_raw(gnutls_pubkey_t key, gnutls_ecc_curve_t curve,
        gnutls_pk_params_release(&key->params);
        gnutls_pk_params_init(&key->params);
 
-       if (curve_is_eddsa(curve)) {
+       if (curve_is_eddsa(curve) || curve_is_modern_ecdh(curve)) {
                unsigned size = gnutls_ecc_curve_get_size(curve);
                if (x->size != size) {
                        ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST);
@@ -1686,6 +1686,12 @@ int gnutls_pubkey_import_ecc_raw(gnutls_pubkey_t key, gnutls_ecc_curve_t curve,
                case GNUTLS_ECC_CURVE_ED448:
                        key->params.algo = GNUTLS_PK_EDDSA_ED448;
                        break;
+               case GNUTLS_ECC_CURVE_X25519:
+                       key->params.algo = GNUTLS_PK_ECDH_X25519;
+                       break;
+               case GNUTLS_ECC_CURVE_X448:
+                       key->params.algo = GNUTLS_PK_ECDH_X448;
+                       break;
                default:
                        break;
                }