mbedtls/include/mbedtls
Hanno Becker 2e24c3b672 Provide standalone version of ssl_decrypt_buf
Analogous to the previous commit, but concerning the record decryption
routine `ssl_decrypt_buf`.

An important change regards the checking of CBC padding:
Prior to this commit, the CBC padding check always read 256 bytes at
the end of the internal record buffer, almost always going past the
boundaries of the record under consideration. In order to stay within
the bounds of the given record, this commit changes this behavior by
always reading the last min(256, plaintext_len) bytes of the record
plaintext buffer and taking into consideration the last `padlen` of
these for the padding check. With this change, the memory access
pattern and runtime of the padding check is entirely determined by
the size of the encrypted record, in particular not giving away
any information on the validity of the padding.

The following depicts the different behaviors:

1) Previous CBC padding check

1.a) Claimed padding length <= plaintext length

  +----------------------------------------+----+
  |   Record plaintext buffer   |          | PL |
  +----------------------------------------+----+
                                 \__ PL __/

                                +------------------------------------...
                                |  read for padding check            ...
                                +------------------------------------...
                                                |
                                                 contents discarded
                                                 from here

1.b) Claimed padding length > plaintext length

  +----------------------------------------+----+
  |   Record plaintext buffer              | PL |
  +----------------------------------------+----+
                                           +-------------------------...
                                           |  read for padding check ...
                                           +-------------------------...
                                                |
                                                 contents discarded
                                                 from here

2) New CBC padding check

  +----------------------------------------+----+
  |   Record plaintext buffer   |          | PL |
  +----------------------------------------+----+
                                 \__ PL __/

        +---------------------------------------+
        |        read for padding check         |
        +---------------------------------------+
                                |
                                 contents discarded
                                 until here
2019-04-25 12:58:21 +01:00
..
aes.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
aesni.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
arc4.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
aria.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
asn1.h Merge remote-tracking branch 'upstream-restricted/pr/398' into development-restricted-proposed 2018-03-13 17:18:06 +01:00
asn1write.h Improve docs for named bitstrings and their usage 2019-02-28 09:36:30 +00:00
base64.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
bignum.h Add little endian export to Bignum 2019-02-22 15:41:31 +00:00
blowfish.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
bn_mul.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
camellia.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
ccm.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
certs.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
chacha20.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
chachapoly.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
check_config.h Merge remote-tracking branch 'restricted/pr/552' into development 2019-03-27 17:01:16 +00:00
cipher.h Add NIST keywrap as a cipher mode 2019-04-02 10:02:55 -07:00
cipher_internal.h Adapt to the new key allocation mechanism 2019-01-08 09:36:01 -05:00
cmac.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
compat-1.3.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
config.h Merge remote-tracking branch 'origin/pr/2532' into development 2019-04-16 14:42:11 +01:00
ctr_drbg.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
debug.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
des.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
dhm.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
ecdh.h Define MBEDTLS_ECDH_LEGACY_CONTEXT in config.h 2019-02-22 13:04:20 +01:00
ecdsa.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
ecjpake.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
ecp.h Make ecp_get_type public 2019-02-26 16:49:42 +00:00
ecp_internal.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05: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 Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
gcm.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
havege.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
hkdf.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
hmac_drbg.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
md.h Provide standalone version of ssl_decrypt_buf 2019-04-25 12:58:21 +01:00
md2.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
md4.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
md5.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05: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 Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05: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 Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
oid.h Add Wisun Fan device extended key usage 2019-04-03 13:48:50 +03:00
padlock.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
pem.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
pk.h Documentation fixes 2019-02-05 05:06:35 -05:00
pk_internal.h Align names to use "opaque" only everywhere 2018-11-22 09:59:34 +01:00
pkcs5.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
pkcs11.h Allow to forward declare of public structs #1215 2018-07-24 10:02:47 +02:00
pkcs12.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
platform.h Merge remote-tracking branch 'origin/pr/1551' into development 2019-01-30 13:24:55 +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 Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
poly1305.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
psa_util.h Define maximum EC public key length depending on enabled curves 2019-02-18 17:04:24 +00:00
ripemd160.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
rsa.h Revert "Forbid passing NULL input buffers to RSA encryption routines" 2019-02-08 08:43:31 -05: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 development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
sha256.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
sha512.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
ssl.h Merge remote-tracking branch 'origin/pr/2539' into development 2019-04-16 15:05:18 +01:00
ssl_cache.h Remove peer CRT from cache if !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE 2019-02-26 14:38:09 +00:00
ssl_ciphersuites.h Introduce helper function to determine whether suite uses server CRT 2019-02-26 14:38:09 +00:00
ssl_cookie.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00
ssl_internal.h Provide standalone version of ssl_encrypt_buf 2019-04-25 12:58:21 +01:00
ssl_ticket.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05: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.17.0 2019-03-19 16:12:55 +00:00
x509.h Merge remote-tracking branch 'origin/pr/2380' into development 2019-03-05 16:37:40 +00:00
x509_crl.h Fix #2370, minor typos and spelling mistakes 2019-01-24 10:37:40 +01:00
x509_crt.h Document and test flags in x509_verify 2019-04-05 16:45:01 +01:00
x509_csr.h Improve docs for named bitstrings and their usage 2019-02-28 09:36:30 +00:00
xtea.h Merge development commit 8e76332 into development-psa 2019-01-31 08:20:20 -05:00