diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2011-05-22 16:27:27 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2011-05-22 16:27:27 +0200 |
commit | 5892d0bf34761686c1078d8a251210fadef34d18 (patch) | |
tree | 012d5843fad3cae288854b9f9c24bd994742a078 /lib/x509/key_decode.c | |
parent | f91665debbb2b044ef95b0676a41cbf9c8ba2e79 (diff) | |
download | gnutls-5892d0bf34761686c1078d8a251210fadef34d18.tar.gz |
corrected ECC public key encoding/decoding.
Diffstat (limited to 'lib/x509/key_decode.c')
-rw-r--r-- | lib/x509/key_decode.c | 38 |
1 files changed, 3 insertions, 35 deletions
diff --git a/lib/x509/key_decode.c b/lib/x509/key_decode.c index d0bbce1b45..e7ec3aecb8 100644 --- a/lib/x509/key_decode.c +++ b/lib/x509/key_decode.c @@ -104,41 +104,9 @@ _gnutls_x509_read_rsa_pubkey (opaque * der, int dersize, gnutls_pk_params_st * p int _gnutls_x509_read_ecc_pubkey (opaque * der, int dersize, gnutls_pk_params_st * params) { -#if 0 - int ret; - ASN1_TYPE spk = ASN1_TYPE_EMPTY; - gnutls_datum_t octet; - - if ((ret = asn1_create_element - (_gnutls_get_gnutls_asn (), "GNUTLS.ECPoint", &spk)) - != ASN1_SUCCESS) - { - gnutls_assert (); - return _gnutls_asn2err (ret); - } - - ret = asn1_der_decoding (&spk, der, dersize, NULL); - if (ret != ASN1_SUCCESS) - { - gnutls_assert (); - asn1_delete_structure (&spk); - return _gnutls_asn2err (ret); - } - - - if ((ret = _gnutls_x509_read_value (spk, "", &octet, 0)) < 0) - { - gnutls_assert (); - asn1_delete_structure (&spk); - return GNUTLS_E_ASN1_GENERIC_ERROR; - } - - ret = _gnutls_ecc_ansi_x963_import (octet.data, octet.size, ¶ms->params[5], - ¶ms->params[6]); - _gnutls_free_datum(&octet); - - return ret; -#endif +/* Eventhough RFC5480 defines the public key to be an ECPoint (i.e. OCTET STRING), + * it is actually copied in raw there. Why do they use ASN.1 anyway? + */ return _gnutls_ecc_ansi_x963_import (der, dersize, ¶ms->params[5], ¶ms->params[6]); } |