From: Nikos Mavrogiannopoulos Date: Sun, 22 May 2011 18:18:12 +0000 (+0200) Subject: Decode PEM ECC private keys. X-Git-Tag: gnutls_2_99_2~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4a03cf1e69fb80859705a3652ddfe9646f00a58f;p=thirdparty%2Fgnutls.git Decode PEM ECC private keys. --- diff --git a/lib/x509/privkey.c b/lib/x509/privkey.c index 060068f76e..d4cccdd34c 100644 --- a/lib/x509/privkey.c +++ b/lib/x509/privkey.c @@ -472,16 +472,25 @@ gnutls_x509_privkey_import (gnutls_x509_privkey_t key, result = _gnutls_fbase64_decode (PEM_KEY_DSA, data->data, data->size, &out); - if (result <= 0) - { - if (result == 0) - result = GNUTLS_E_INTERNAL_ERROR; - gnutls_assert (); - goto failover; - } + if (result >= 0) + key->pk_algorithm = GNUTLS_PK_DSA; - key->pk_algorithm = GNUTLS_PK_DSA; + if (result == GNUTLS_E_BASE64_UNEXPECTED_HEADER_ERROR) + { + /* try for the second header */ + result = + _gnutls_fbase64_decode (PEM_KEY_ECC, data->data, data->size, + &out); + if (result >= 0) + key->pk_algorithm = GNUTLS_PK_ECC; + } + } + + if (result < 0) + { + gnutls_assert (); + goto failover; } _data.data = out;