mbedtls/include/mbedtls
Hanno Becker 21f5567571 Introduce X.509 CRT frame structure
This commit restructures the parsing of X.509 CRTs in the following way:

First, it introduces a 'frame' structure `mbedtls_x509_crt_frame`, which
contains pointers to some structured fields of a CRT as well as copies of
primitive fields. For example, there's a pointer-length pair delimiting the raw
public key data in the CRT, but there's a C-uint8 to store the CRT version
(not a pointer-length pair delimiting the ASN.1 structure holding the version).

Setting up a frame from a raw CRT buffer does not require any memory outside
of the frame structure itself; it's just attaches a 'template' to the buffer
that allows to inspect the structured parts of the CRT afterwards.

Note that the frame structure does not correspond to a particular ASN.1
structure; for example, it contains pointers to delimit the three parts
of a CRT (TBS, SignatureAlgorithm, Signature), but also pointers to the
fields of the TBS, and pointers into the Extensions substructure of the TBS.

Further, the commit introduces an internal function `x509_crt_parse_frame()`
which sets up a frame from a raw CRT buffer, as well as several small helper
functions which help setting up the more complex structures (Subject, Issuer, PK)
from the frame.

These functions are then put to use to rewrite the existing parsing function
`mbedtls_x509_crt_parse_der_core()` by setting up a CRT frame from the input
buffer, residing on the stack, and afterwards copying the respective fields
to the actual `mbedtls_x509_crt` structure and performing the deeper parsing
through the various helper functions.
2019-06-25 09:06:26 +01:00
..
aes.h Merge remote-tracking branch 'public/pr/975' into mbedtls-2.16 2019-01-08 16:34:19 +00:00
aesni.h Merge remote-tracking branch 'origin/pr/1375' into mbedtls-2.16 2019-01-30 16:09:08 +00:00
arc4.h Merge remote-tracking branch 'public/pr/975' into mbedtls-2.16 2019-01-08 16:34:19 +00:00
aria.h Leave behaviour on NULL input unspecified in ARIA 2018-12-19 12:51:00 +00:00
asn1.h Introduce ASN.1 API for traversing ASN.1 SEQUENCEs 2019-06-25 09:06:26 +01:00
asn1write.h Improve macro hygiene 2019-04-24 10:51:54 +02:00
base64.h Merge remote-tracking branch 'origin/pr/1375' into mbedtls-2.16 2019-01-30 16:09:08 +00:00
bignum.h Improve macro hygiene 2019-04-24 10:51:54 +02:00
blowfish.h Minor Blowfish documentation improvements 2018-12-19 15:48:37 +00:00
bn_mul.h Merge remote-tracking branch 'origin/pr/1375' into mbedtls-2.16 2019-01-30 16:09:08 +00:00
camellia.h Merge remote-tracking branch 'public/pr/975' into mbedtls-2.16 2019-01-08 16:34:19 +00:00
ccm.h Merge remote-tracking branch 'origin/pr/1375' into mbedtls-2.16 2019-01-30 16:09:08 +00:00
certs.h Document origin of hardcoded certificates in library/certs.c 2019-05-30 10:27:49 +01:00
chacha20.h Minor improvements to ChaCha20/Poly1305/ChaChaPoly documentation 2018-12-18 15:30:30 +00:00
chachapoly.h Minor improvements to ChaCha20/Poly1305/ChaChaPoly documentation 2018-12-18 15:30:30 +00:00
check_config.h Use consistent error messages in check_config.h 2019-06-19 14:59:42 +01:00
cipher.h Fix include file path 2018-12-28 11:11:10 +08:00
cipher_internal.h Move definition to cipher.h 2018-07-01 10:22:53 +03:00
cmac.h Include configuration file to headers 2018-12-16 12:02:50 +02:00
compat-1.3.h Include configuration file to headers 2018-12-16 12:02:50 +02:00
config.h Improve documentation of MBEDTLS_SSL_KEEP_PEER_CERTIFICATE 2019-06-19 10:26:50 +01:00
ctr_drbg.h Merge remote-tracking branch 'origin/pr/1375' into mbedtls-2.16 2019-01-30 16:09:08 +00:00
debug.h Rename MBEDTLS_X509_INFO to !MBEDTLS_X509_REMOVE_INFO 2019-06-18 11:05:44 +01:00
des.h Merge remote-tracking branch 'public/pr/975' into mbedtls-2.16 2019-01-08 16:34:19 +00:00
dhm.h Merge remote-tracking branch 'public/pr/975' into mbedtls-2.16 2019-01-08 16:34:19 +00:00
ecdh.h Merge remote-tracking branch 'origin/pr/1375' into mbedtls-2.16 2019-01-30 16:09:08 +00:00
ecdsa.h Merge remote-tracking branch 'origin/pr/1375' into mbedtls-2.16 2019-01-30 16:09:08 +00:00
ecjpake.h Merge remote-tracking branch 'origin/pr/1375' into mbedtls-2.16 2019-01-30 16:09:08 +00:00
ecp.h Fix typo in documentation 2019-02-21 16:58:20 +01:00
ecp_internal.h Include configuration file to headers 2018-12-16 12:02:50 +02:00
entropy.h Allow to forward declare of public structs #1215 2018-07-24 10:02:47 +02:00
entropy_poll.h Update Doxygen file blocks to remove copyright and license information 2018-01-23 15:44:39 +00:00
error.h Introduce specific error for ver/cfg mismatch on deserialization 2019-06-03 13:01:21 +01:00
gcm.h Merge remote-tracking branch 'origin/pr/1375' into mbedtls-2.16 2019-01-30 16:09:08 +00:00
havege.h Include configuration file for all headers 2018-12-16 12:14:37 +02:00
hkdf.h Include configuration file for all headers 2018-12-16 12:14:37 +02:00
hmac_drbg.h Include configuration file to headers 2018-12-16 12:02:50 +02:00
md.h Provide standalone version of ssl_decrypt_buf 2019-04-29 12:13:25 +02:00
md2.h Merge remote-tracking branch 'public/pr/975' into mbedtls-2.16 2019-01-08 16:34:19 +00:00
md4.h Merge remote-tracking branch 'public/pr/975' into mbedtls-2.16 2019-01-08 16:34:19 +00:00
md5.h Merge remote-tracking branch 'public/pr/975' into mbedtls-2.16 2019-01-08 16:34:19 +00:00
md_internal.h Merge remote-tracking branch 'upstream-public/pr/1294' into development 2018-01-25 14:47:39 +00:00
memory_buffer_alloc.h Update Doxygen file blocks to remove copyright and license information 2018-01-23 15:44:39 +00:00
net.h Include configuration file to headers 2018-12-16 12:02:50 +02:00
net_sockets.h Merge remote-tracking branch 'upstream-public/pr/1861' into development 2018-08-10 11:17:14 +01:00
nist_kw.h Include configuration file for all headers 2018-12-16 12:14:37 +02:00
oid.h Rename MBEDTLS_X509_INFO to !MBEDTLS_X509_REMOVE_INFO 2019-06-18 11:05:44 +01:00
padlock.h Improve macro hygiene 2019-04-24 10:51:54 +02:00
pem.h Include configuration file to headers 2018-12-16 12:02:50 +02:00
pk.h PK: document context validity requirements 2018-12-19 18:10:03 +01:00
pk_internal.h Merge branch 'development' into iotssl-1260-non-blocking-ecc-restricted 2018-06-13 09:52:54 +02:00
pkcs5.h Merge remote-tracking branch 'origin/pr/1375' into mbedtls-2.16 2019-01-30 16:09:08 +00:00
pkcs11.h Allow to forward declare of public structs #1215 2018-07-24 10:02:47 +02:00
pkcs12.h Include configuration file for all headers 2018-12-16 12:14:37 +02:00
platform.h Add common feature unavailable error 2018-11-09 13:57:37 +00:00
platform_time.h Update Doxygen file blocks to remove copyright and license information 2018-01-23 15:44:39 +00:00
platform_util.h Fix include file path 2018-12-28 11:11:10 +08:00
poly1305.h Fix include file path 2018-12-28 11:11:10 +08:00
ripemd160.h Merge remote-tracking branch 'public/pr/975' into mbedtls-2.16 2019-01-08 16:34:19 +00:00
rsa.h Merge remote-tracking branch 'public/pr/975' into mbedtls-2.16 2019-01-08 16:34:19 +00:00
rsa_internal.h Merge remote-tracking branch 'upstream-public/pr/1457' into development-proposed 2018-04-04 09:19:27 +02:00
sha1.h Merge remote-tracking branch 'public/pr/975' into mbedtls-2.16 2019-01-08 16:34:19 +00:00
sha256.h Merge remote-tracking branch 'public/pr/975' into mbedtls-2.16 2019-01-08 16:34:19 +00:00
sha512.h Merge remote-tracking branch 'public/pr/975' into mbedtls-2.16 2019-01-08 16:34:19 +00:00
ssl.h Remove CRT digest from SSL session if !RENEGO + !KEEP_PEER_CERT 2019-06-19 16:56:51 +01:00
ssl_cache.h Remove peer CRT from mbedtls_ssl_session if !KEEP_PEER_CERT 2019-06-19 10:25:01 +01:00
ssl_ciphersuites.h Introduce helper function to determine whether suite uses server CRT 2019-06-19 10:25:01 +01:00
ssl_cookie.h Include configuration file to headers 2018-12-16 12:02:50 +02:00
ssl_internal.h Fix indentation of Doxygen comment in ssl_internal.h 2019-06-19 10:26:50 +01:00
ssl_ticket.h Include configuration file to headers 2018-12-16 12:02:50 +02:00
threading.h Deprecate hardware acceleration errors 2018-11-09 15:01:07 +00:00
timing.h Allow to forward declare of public structs #1215 2018-07-24 10:02:47 +02:00
version.h Update library version to 2.16.1 2019-03-19 16:20:02 +00:00
x509.h Add next_merged field to X.509 name comparison abort callback 2019-06-25 09:06:26 +01:00
x509_crl.h Add buffer with raw issuer data to CRL structure 2019-06-25 09:06:26 +01:00
x509_crt.h Introduce X.509 CRT frame structure 2019-06-25 09:06:26 +01:00
x509_csr.h Address review comments 2019-06-18 11:05:44 +01:00
xtea.h Merge remote-tracking branch 'public/pr/975' into mbedtls-2.16 2019-01-08 16:34:19 +00:00