diff options
author | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2016-11-30 09:15:06 +0100 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2016-11-30 09:25:22 +0100 |
commit | 3ae7423780426d2f2c97d87af6e9bcd6ce3a2f69 (patch) | |
tree | e34dfb35b1d41d1e24d0f020302786d7b7d4ff31 | |
parent | c2d27215550945a2f39d40abd3d1985134b9e89c (diff) | |
download | gnutls-3ae7423780426d2f2c97d87af6e9bcd6ce3a2f69.tar.gz |
When decoding a public key ensure that algorithm is written in the params struct
Reported by Dmitry Eremin-Solenikov.
-rw-r--r-- | lib/x509/key_decode.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/x509/key_decode.c b/lib/x509/key_decode.c index 049e93a951..f1ce99f6b3 100644 --- a/lib/x509/key_decode.c +++ b/lib/x509/key_decode.c @@ -239,18 +239,24 @@ int _gnutls_x509_read_pubkey(gnutls_pk_algorithm_t algo, uint8_t * der, switch (algo) { case GNUTLS_PK_RSA: ret = _gnutls_x509_read_rsa_pubkey(der, dersize, params); - if (ret >= 0) + if (ret >= 0) { + params->algo = GNUTLS_PK_RSA; params->params_nr = RSA_PUBLIC_PARAMS; + } break; case GNUTLS_PK_DSA: ret = _gnutls_x509_read_dsa_pubkey(der, dersize, params); - if (ret >= 0) + if (ret >= 0) { + params->algo = GNUTLS_PK_DSA; params->params_nr = DSA_PUBLIC_PARAMS; + } break; case GNUTLS_PK_EC: ret = _gnutls_x509_read_ecc_pubkey(der, dersize, params); - if (ret >= 0) + if (ret >= 0) { + params->algo = GNUTLS_PK_ECDSA; params->params_nr = ECC_PUBLIC_PARAMS; + } break; default: ret = gnutls_assert_val(GNUTLS_E_UNIMPLEMENTED_FEATURE); |