diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2018-11-13 22:49:26 +0100 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2018-11-15 13:43:10 +0100 |
commit | d6cb0fb1272292a52b5bc6b3a293fbf7ec043ca4 (patch) | |
tree | 177e0d14504a189ee336a8ae0a55dbc0a6b8cded | |
parent | edeea341813d3cad544a2e089ef8192711ac79aa (diff) | |
download | gnutls-d6cb0fb1272292a52b5bc6b3a293fbf7ec043ca4.tar.gz |
_gnutls_x509_read_eddsa_pubkey(): sanity check the input valuestmp-cert-status
Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
-rw-r--r-- | lib/x509/key_decode.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/x509/key_decode.c b/lib/x509/key_decode.c index 02b381ec85..c20b841654 100644 --- a/lib/x509/key_decode.c +++ b/lib/x509/key_decode.c @@ -38,8 +38,9 @@ static int _gnutls_x509_read_dsa_pubkey(uint8_t * der, int dersize, gnutls_pk_params_st * params); static int _gnutls_x509_read_ecc_pubkey(uint8_t * der, int dersize, gnutls_pk_params_st * params); -static int _gnutls_x509_read_eddsa_pubkey(uint8_t * der, int dersize, - gnutls_pk_params_st * params); +static int _gnutls_x509_read_eddsa_pubkey(gnutls_ecc_curve_t curve, + uint8_t * der, int dersize, + gnutls_pk_params_st * params); static int _gnutls_x509_read_gost_pubkey(uint8_t * der, int dersize, gnutls_pk_params_st * params); @@ -114,9 +115,14 @@ _gnutls_x509_read_ecc_pubkey(uint8_t * der, int dersize, ¶ms->params[ECC_Y]); } -int _gnutls_x509_read_eddsa_pubkey(uint8_t * der, int dersize, +int _gnutls_x509_read_eddsa_pubkey(gnutls_ecc_curve_t curve, + uint8_t * der, int dersize, gnutls_pk_params_st * params) { + int size = gnutls_ecc_curve_get_size(curve); + if (dersize != size) + return gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); + return _gnutls_set_datum(¶ms->raw_pub, der, dersize); } @@ -554,7 +560,7 @@ int _gnutls_x509_read_pubkey(gnutls_pk_algorithm_t algo, uint8_t * der, } break; case GNUTLS_PK_EDDSA_ED25519: - ret = _gnutls_x509_read_eddsa_pubkey(der, dersize, params); + ret = _gnutls_x509_read_eddsa_pubkey(GNUTLS_ECC_CURVE_ED25519, der, dersize, params); break; case GNUTLS_PK_GOST_01: case GNUTLS_PK_GOST_12_256: |