mbedtls/library
Hanno Becker 6ccfb18ab1 Always return a high-level error code from X.509 module
Some functions within the X.509 module return an ASN.1 low level
error code where instead this error code should be wrapped by a
high-level X.509 error code as in the bulk of the module.

Specifically, the following functions are affected:
- mbedtls_x509_get_ext()
- x509_get_version()
- x509_get_uid()

This commit modifies these functions to always return an
X.509 high level error code.

Care has to be taken when adapting `mbetls_x509_get_ext()`:
Currently, the callers `mbedtls_x509_crt_ext()` treat the
return code `MBEDTLS_ERR_ASN1_UNEXPECTED_TAG` specially to
gracefully detect and continue if the extension structure is not
present. Wrapping the ASN.1 error with
`MBEDTLS_ERR_X509_INVALID_EXTENSIONS` and adapting the check
accordingly would mean that an unexpected tag somewhere
down the extension parsing would be ignored by the caller.

The way out of this is the following: Luckily, the extension
structure is always the last field in the surrounding structure,
so if there is some data remaining, it must be an Extension
structure, so we don't need to deal with a tag mismatch gracefully
in the first place.

We may therefore wrap the return code from the initial call to
`mbedtls_asn1_get_tag()` in `mbedtls_x509_get_ext()` by
`MBEDTLS_ERR_X509_INVALID_EXTENSIONS` and simply remove
the special treatment of `MBEDTLS_ERR_ASN1_UNEXPECTED_TAG`
in the callers `x509_crl_get_ext()` and `x509_crt_get_ext()`.

This renders `mbedtls_x509_get_ext()` unsuitable if it ever
happened that an Extension structure is optional and does not
occur at the end of its surrounding structure, but for CRTs
and CRLs, it's fine.

The following tests need to be adapted:
- "TBSCertificate v3, issuerID wrong tag"
  The issuerID is optional, so if we look for its presence
  but find a different tag, we silently continue and try
  parsing the subjectID, and then the extensions. The tag '00'
  used in this test doesn't match either of these, and the
  previous code would hence return LENGTH_MISMATCH after
  unsucessfully trying issuerID, subjectID and Extensions.
  With the new code, any data remaining after issuerID and
  subjectID _must_ be Extension data, so we fail with
  UNEXPECTED_TAG when trying to parse the Extension data.
- "TBSCertificate v3, UIDs, invalid length"
  The test hardcodes the expectation of
  MBEDTLS_ERR_ASN1_INVALID_LENGTH, which needs to be
  wrapped in MBEDTLS_ERR_X509_INVALID_FORMAT now.

Fixes #2431.
2019-06-04 13:59:48 +01:00
..
.gitignore
aes.c Add further missing brackets around macro parameters 2019-02-19 17:59:57 +00:00
aesni.c
arc4.c
aria.c Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
asn1parse.c
asn1write.c Add new function mbedtls_asn1_write_named_bitstring() 2019-02-28 09:36:30 +00:00
base64.c
bignum.c Merge remote-tracking branch 'origin/pr/2405' into development 2019-04-05 14:08:49 +01:00
blowfish.c Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
camellia.c Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
ccm.c Merge remote-tracking branch 'origin/pr/2092' into development 2019-04-24 11:17:21 +01:00
certs.c Use certificates from data_files and refer them 2019-02-12 15:30:26 +02:00
chacha20.c Improve macro hygiene 2019-02-19 17:59:00 +00:00
chachapoly.c Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
cipher.c Wrap lines at 80 columns 2019-04-02 10:07:28 -07:00
cipher_wrap.c Wrap lines at 80 columns 2019-04-02 10:07:28 -07:00
cmac.c Merge remote-tracking branch 'public/pr/1390' into development 2018-06-27 10:51:47 +01:00
CMakeLists.txt Force the usage of crypto submodule 2019-05-23 03:01:35 -04:00
ctr_drbg.c Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
debug.c Merge remote-tracking branch 'origin/pr/1818' into development 2019-03-05 16:27:38 +00:00
des.c Improve macro hygiene 2019-02-19 17:59:00 +00:00
dhm.c Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
ecdh.c Fix ECDH secret export for Mongomery curves 2019-02-26 16:49:52 +00:00
ecdsa.c Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
ecjpake.c Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
ecp.c Merge remote-tracking branch 'origin/pr/2092' into development 2019-04-24 11:17:21 +01:00
ecp_curves.c Improve macro hygiene 2019-02-19 17:59:00 +00:00
entropy.c
entropy_poll.c Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
error.c Regenerate errors.c 2019-04-30 16:47:36 +01:00
gcm.c Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
havege.c Improve macro hygiene 2019-02-19 17:59:00 +00:00
hkdf.c Fix issue if salt = NULL and salt_len !=0 in mbedtls_hkdf_extract() 2018-07-23 10:34:47 -07:00
hmac_drbg.c Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
Makefile Force the usage of crypto submodule 2019-05-23 03:01:35 -04:00
md.c
md2.c
md4.c Add more missing parentheses around macro parameters 2019-02-19 17:59:57 +00:00
md5.c Add further missing brackets around macro parameters 2019-02-19 17:59:57 +00:00
md_wrap.c
memory_buffer_alloc.c Fix braces in mbedtls_memory_buffer_alloc_status() 2018-06-12 16:56:04 +01:00
net_sockets.c Merge remote-tracking branch 'public/pr/1198' into development 2018-07-24 17:20:17 +01:00
nist_kw.c Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
oid.c Add support for RSA PKCSv1.5 signatures using RIPEMD-160 2019-05-06 12:15:17 -04:00
padlock.c
pem.c Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
pk.c pk: restructure precondition check 2019-02-05 05:09:05 -05:00
pk_wrap.c Fix outdated comment in ecdsa_verify_wrap() 2019-01-29 08:26:15 +00:00
pkcs5.c Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
pkcs11.c
pkcs12.c Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
pkparse.c Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
pkwrite.c Merge development-psa commit 80b5662 into development-psa-merged branch 2019-02-05 06:02:51 -05:00
platform.c Merge remote-tracking branch 'origin/pr/1551' into development 2019-01-30 13:24:55 +00:00
platform_util.c Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
poly1305.c Improve macro hygiene 2019-02-19 17:59:00 +00:00
ripemd160.c Improve macro hygiene 2019-02-19 17:59:00 +00:00
rsa.c rsa: Enable use of zero-length null output 2019-02-11 03:39:51 -05:00
rsa_internal.c Bignum: Deprecate mbedtls_mpi_is_prime() 2018-10-09 16:36:53 +01:00
sha1.c Add further missing brackets around macro parameters 2019-02-19 17:59:57 +00:00
sha256.c Add further missing brackets around macro parameters 2019-02-19 17:59:57 +00:00
sha512.c Add more missing parentheses around macro parameters 2019-02-19 17:59:57 +00:00
ssl_cache.c Remove peer CRT from cache if !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE 2019-02-26 14:38:09 +00:00
ssl_ciphersuites.c Reduce priority of 3DES ciphersuites 2019-03-01 10:19:27 +01:00
ssl_cli.c ssl_cli.c : add explicit casting to unsigned char 2019-05-23 03:01:35 -04:00
ssl_cookie.c
ssl_srv.c Remove ciphersuite_info from ssl_transform 2019-04-25 12:58:21 +01:00
ssl_ticket.c Fix typo in SSL ticket documentation 2019-02-26 14:38:09 +00:00
ssl_tls.c Fix compile guard for static function in ssl 2019-05-23 03:01:35 -04:00
threading.c Don't declare and define gmtime()-mutex on Windows platforms 2018-09-06 12:09:56 +01:00
timing.c Merge remote-tracking branch 'public/pr/1777' into development-proposed 2018-11-04 18:51:36 +00:00
version.c
version_features.c Merge remote-tracking branch 'origin/pr/2532' into development 2019-04-16 14:42:11 +01:00
x509.c Always return a high-level error code from X.509 module 2019-06-04 13:59:48 +01:00
x509_create.c Break overly long line in library/x509_create.c 2018-11-02 10:52:38 +00:00
x509_crl.c Always return a high-level error code from X.509 module 2019-06-04 13:59:48 +01:00
x509_crt.c Always return a high-level error code from X.509 module 2019-06-04 13:59:48 +01:00
x509_csr.c Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
x509write_crt.c Add new function mbedtls_asn1_write_named_bitstring() 2019-02-28 09:36:30 +00:00
x509write_csr.c Add new function mbedtls_asn1_write_named_bitstring() 2019-02-28 09:36:30 +00:00
xtea.c