mbedtls/tests/suites
Hanno Becker 12f62fb82c Obey bounds of ASN.1 substructures
When parsing a substructure of an ASN.1 structure, no field within
the substructure must exceed the bounds of the substructure.
Concretely, the `end` pointer passed to the ASN.1 parsing routines
must be updated to point to the end of the substructure while parsing
the latter.

This was previously not the case for the routines
- x509_get_attr_type_and_value(),
- mbedtls_x509_get_crt_ext(),
- mbedtls_x509_get_crl_ext().
These functions kept using the end of the parent structure as the
`end` pointer and would hence allow substructure fields to cross
the substructure boundary. This could lead to successful parsing
of ill-formed X.509 CRTs.

This commit fixes this.

Care has to be taken when adapting `mbedtls_x509_get_crt_ext()`
and `mbedtls_x509_get_crl_ext()`, as the underlying function
`mbedtls_x509_get_ext()` returns `0` if no extensions are present
but doesn't set the variable which holds the bounds of the Extensions
structure in case the latter is present. This commit addresses
this by returning early from `mbedtls_x509_get_crt_ext()` and
`mbedtls_x509_get_crl_ext()` if parsing has reached the end of
the input buffer.

The following X.509 parsing tests need to be adapted:
- "TBSCertificate, issuer two inner set datas"
  This test exercises the X.509 CRT parser with a Subject name
  which has two empty `AttributeTypeAndValue` structures.
  This is supposed to fail with `MBEDTLS_ERR_ASN1_OUT_OF_DATA`
  because the parser should attempt to parse the first structure
  and fail because of a lack of data. Previously, it failed to
  obey the (0-length) bounds of the first AttributeTypeAndValue
  structure and would try to interpret the beginning of the second
  AttributeTypeAndValue structure as the first field of the first
  AttributeTypeAndValue structure, returning an UNEXPECTED_TAG error.
- "TBSCertificate, issuer, no full following string"
  This test exercises the parser's behaviour on an AttributeTypeAndValue
  structure which contains more data than expected; it should therefore
  fail with MBEDTLS_ERR_ASN1_LENGTH_MISMATCH. Because of the missing bounds
  check, it previously failed with UNEXPECTED_TAG because it interpreted
  the remaining byte in the first AttributeTypeAndValue structure as the
  first byte in the second AttributeTypeAndValue structure.
- "SubjectAltName repeated"
  This test should exercise two SubjectAltNames extensions in succession,
  but a wrong length values makes the second SubjectAltNames extension appear
  outside of the Extensions structure. With the new bounds in place, this
  therefore fails with a LENGTH_MISMATCH error. This commit adapts the test
  data to put the 2nd SubjectAltNames extension inside the Extensions
  structure, too.
2019-06-04 10:15:09 +01:00
..
helpers.function Write documentation for TEST_ASSERT 2019-02-15 10:13:35 -05:00
host_test.function Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
main_test.function psa: Initialize crypto in tests that need to 2019-02-13 07:34:54 -05:00
target_test.function
test_suite_aes.cbc.data
test_suite_aes.cfb.data
test_suite_aes.ecb.data
test_suite_aes.function Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_aes.ofb.data
test_suite_aes.rest.data Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_aes.xts.data
test_suite_arc4.data
test_suite_arc4.function
test_suite_aria.data Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_aria.function Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_asn1write.data Add tests for (named) bitstring to suite_asn1write 2019-02-28 09:36:30 +00:00
test_suite_asn1write.function Add tests for (named) bitstring to suite_asn1write 2019-02-28 09:36:30 +00:00
test_suite_base64.data
test_suite_base64.function
test_suite_blowfish.data Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_blowfish.function Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_camellia.data Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_camellia.function Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_ccm.data Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_ccm.function Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_chacha20.data
test_suite_chacha20.function Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_chachapoly.data
test_suite_chachapoly.function Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_cipher.aes.data Add AES-*-CBC test vectors for PSA-based cipher contexts 2018-11-22 14:03:39 +00:00
test_suite_cipher.arc4.data
test_suite_cipher.blowfish.data
test_suite_cipher.camellia.data
test_suite_cipher.ccm.data Test PSA-based CCM cipher operations 2018-11-22 14:03:39 +00:00
test_suite_cipher.chacha20.data
test_suite_cipher.chachapoly.data Test PSA-based CCM cipher operations 2018-11-22 14:03:39 +00:00
test_suite_cipher.des.data
test_suite_cipher.function Call mbedtls_cipher_free() to reset a cipher context 2019-04-16 16:06:34 +02:00
test_suite_cipher.gcm.data Add missing newline at the end of test_suite_cipher.gcm.data 2018-11-22 14:03:39 +00:00
test_suite_cipher.misc.data Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_cipher.nist_kw.data Add NIST keywrap as a cipher mode 2019-04-02 10:02:55 -07:00
test_suite_cipher.null.data
test_suite_cipher.padding.data Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_cmac.data
test_suite_cmac.function
test_suite_ctr_drbg.data
test_suite_ctr_drbg.function test_suite_ctr_drbg: use ctr_drbg_update_ret instead of ctr_drbg_update 2019-02-01 02:53:16 -05:00
test_suite_debug.data
test_suite_debug.function
test_suite_des.data
test_suite_des.function
test_suite_dhm.data Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_dhm.function Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_ecdh.data ECDH: Add test vectors for Curve25519 2019-02-22 15:42:03 +00:00
test_suite_ecdh.function Add mbedtls_ecp_read_key 2019-02-22 15:39:03 +00:00
test_suite_ecdsa.data Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_ecdsa.function Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_ecjpake.data Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_ecjpake.function Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_ecp.data ECP: Clarify test descriptions 2019-02-27 14:47:10 +00:00
test_suite_ecp.function Merge remote-tracking branch 'restricted/pr/551' into development 2019-03-27 17:01:24 +00:00
test_suite_entropy.data
test_suite_entropy.function
test_suite_error.data
test_suite_error.function
test_suite_gcm.aes128_de.data
test_suite_gcm.aes128_en.data
test_suite_gcm.aes192_de.data
test_suite_gcm.aes192_en.data
test_suite_gcm.aes256_de.data
test_suite_gcm.aes256_en.data
test_suite_gcm.camellia.data
test_suite_gcm.function Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_gcm.misc.data Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_hkdf.data
test_suite_hkdf.function Increase okm_hex buffer to contain null character 2019-01-28 15:18:15 +02:00
test_suite_hmac_drbg.function
test_suite_hmac_drbg.misc.data
test_suite_hmac_drbg.no_reseed.data
test_suite_hmac_drbg.nopr.data
test_suite_hmac_drbg.pr.data
test_suite_md.data
test_suite_md.function
test_suite_mdx.data
test_suite_mdx.function
test_suite_memory_buffer_alloc.data
test_suite_memory_buffer_alloc.function
test_suite_mpi.data Merge remote-tracking branch 'origin/pr/2405' into development 2019-04-05 14:08:49 +01:00
test_suite_mpi.function Merge remote-tracking branch 'origin/pr/2405' into development 2019-04-05 14:08:49 +01:00
test_suite_nist_kw.data
test_suite_nist_kw.function Fix #2370, minor typos and spelling mistakes 2019-01-24 10:37:40 +01:00
test_suite_oid.data Add a test of the OID->MD map functions 2019-05-06 12:16:18 -04:00
test_suite_oid.function Test the return value in the OID->X.509 map functions 2019-05-06 12:16:32 -04:00
test_suite_pem.data
test_suite_pem.function
test_suite_pk.data Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_pk.function psa: Initialize crypto in tests that need to 2019-02-13 07:34:54 -05:00
test_suite_pkcs1_v15.data Fix test data missing some fake-random input 2019-02-19 18:33:57 +01:00
test_suite_pkcs1_v15.function Add tests for RSA encrypt/decrypt with NULL for empty message 2019-02-19 18:33:57 +01:00
test_suite_pkcs1_v21.data Add tests for RSA encrypt/decrypt with NULL for empty message 2019-02-19 18:33:57 +01:00
test_suite_pkcs1_v21.function Add tests for RSA encrypt/decrypt with NULL for empty message 2019-02-19 18:33:57 +01:00
test_suite_pkcs5.data
test_suite_pkcs5.function
test_suite_pkparse.data
test_suite_pkparse.function
test_suite_pkwrite.data
test_suite_pkwrite.function Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_poly1305.data
test_suite_poly1305.function Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_rsa.data Add support for RSA PKCSv1.5 signatures using RIPEMD-160 2019-05-06 12:15:17 -04:00
test_suite_rsa.function Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_shax.data Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_shax.function Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
test_suite_ssl.data Fix missing tls version test failures 2019-05-15 14:54:22 +03:00
test_suite_ssl.function Initialize psa_crypto in ssl test 2019-05-15 17:04:33 +03:00
test_suite_timing.data Reduce the timing tests complexity 2019-01-29 10:19:49 +01:00
test_suite_timing.function Correct code formatting in the timing test suites 2019-02-05 09:22:20 +01:00
test_suite_version.data Update library version to 2.17.0 2019-03-19 16:12:55 +00:00
test_suite_version.function
test_suite_x509parse.data Obey bounds of ASN.1 substructures 2019-06-04 10:15:09 +01:00
test_suite_x509parse.function Add test cases exercising successful verification of MD2/MD4/MD5 CRT 2019-06-03 14:45:21 +01:00
test_suite_x509write.data Fix typo in x509write test data 2019-02-28 09:38:03 +00:00
test_suite_x509write.function Add tests for (named) bitstring to suite_asn1write 2019-02-28 09:36:30 +00:00
test_suite_xtea.data
test_suite_xtea.function