Commit Graph

5275 Commits

Author SHA1 Message Date
Simon Butcher
6c2f139271 Merge remote-tracking branch 'restricted/pr/514' into mbedtls-2.1 2018-11-29 17:33:07 +00:00
Simon Butcher
b5bbb95389 Merge remote-tracking branch 'restricted/pr/537' into mbedtls-2.1 2018-11-29 17:32:22 +00:00
Simon Butcher
75da5504e5 Merge remote-tracking branch 'restricted/pr/519' into mbedtls-2.1 2018-11-29 17:30:35 +00:00
Gilles Peskine
c12113a61a Add changelog entry for mbedtls_mpi_write_binary fix 2018-11-29 12:47:52 +01:00
Gilles Peskine
cc47d6c595 Tweak RSA vulnerability changelog entry
* Correct the list of authors.
* Add the CVE number.
* Improve the impact description.
2018-11-29 12:47:50 +01:00
Gilles Peskine
43c19648db Wipe stack buffers in block_cipher_df
This is a partial backport of
1b36499062 (only for the buffer wiping).
Other wiping calls were previously added as backports of
"CTR_DRBG: clean stack
buffers" (d9aa84dc0d). This completes
the backporting of stack buffer wiping from the development branch.
2018-11-27 16:41:09 +01:00
Gilles Peskine
f1a8eeb0a6 mbedtls_mpi_write_binary: don't leak the exact size of the number
In mbedtls_mpi_write_binary, avoid leaking the size of the number
through timing or branches, if possible. More precisely, if the number
fits in the output buffer based on its allocated size, the new code's
trace doesn't depend on the value of the number.
2018-11-26 12:51:34 +01:00
Simon Butcher
568ec7cb61
Merge pull request #534 from sbutcher-arm/version-2.1.16
Bump Mbed TLS Version to 2.1.16
2018-11-19 18:56:03 +00:00
Simon Butcher
cf33e2ef00 Update library version number to 2.1.16 2018-11-19 18:33:24 +00:00
Simon Butcher
90e6c3b941 Refine the language in the ChangeLog
Fix the language and descriptions in the ChangeLog and some duplicate entries,
following review of the Release Notes for the next release.
2018-11-19 16:11:15 +00:00
Simon Butcher
a2c8691c0d Fix language and formatting in ChangeLog
Changed the formatting and language in the ChangeLog to the house-style.
2018-11-08 13:47:40 +00:00
Simon Butcher
3bc2b8be36 Merge remote-tracking branch 'restricted/pr/522' into mbedtls-2.1-restricted-proposed 2018-11-07 00:07:31 +00:00
Simon Butcher
6f682ee463 Merge remote-tracking branch 'restricted/pr/524' into mbedtls-2.1-restricted-proposed 2018-11-07 00:07:03 +00:00
Simon Butcher
35b41ea779 Fix the ChangeLog entry for dh_server bugfix
The merge had placed the ChangeLog entry under the wrong version.
2018-11-06 23:50:32 +00:00
Simon Butcher
e92e446781 Merge remote-tracking branch 'public/pr/2139' into mbedtls-2.1-proposed 2018-11-06 23:44:09 +00:00
Simon Butcher
5eeded67a5 Merge remote-tracking branch 'public/pr/2081' into mbedtls-2.1-proposed 2018-11-06 23:43:50 +00:00
Simon Butcher
35cdc5d5d4 Merge remote-tracking branch 'public/pr/2136' into mbedtls-2.1-proposed 2018-11-06 23:39:16 +00:00
Simon Butcher
7ae3c20f93 Merge remote-tracking branch 'public/pr/2152' into mbedtls-2.1-proposed 2018-11-06 23:36:59 +00:00
Simon Butcher
befdde732e Merge remote-tracking branch 'public/pr/2154' into mbedtls-2.1-proposed 2018-11-06 23:33:07 +00:00
Simon Butcher
f32d5afb22 Merge remote-tracking branch 'public/pr/2177' into mbedtls-2.1-proposed 2018-11-06 23:18:24 +00:00
Hanno Becker
00152d4d94 Adapt ChangeLog 2018-11-06 13:22:45 +00:00
Hanno Becker
a18de85425 Don't perform binary comparison of CRL issuer and CA subject
Previously, when checking whether a CRT was revoked through
one of the configured CRLs, the library would only consider
those CRLs whose `issuer` field binary-matches the `subject`
field of the CA that has issued the CRT in question. If those
fields were not binary equivalent, the corresponding CRL was
discarded.

This is not in line with RFC 5280, which demands that the
comparison should be format- and case-insensitive. For example:

- If the same string is once encoded as a `PrintableString` and
  another time as a `UTF8String`, they should compare equal.
- If two strings differ only in their choice of upper and lower case
  letters, they should compare equal.

This commit fixes this by using the dedicated x509_name_cmp()
function to compare the CRL issuer with the CA subject.

Fixes #1784.
2018-11-06 13:22:34 +00:00
Hanno Becker
dafd5405e4 Move static x509_name_cmp() in library/x509_crt.c
A subsequent change will need this function earlier
within the file.
2018-11-06 13:22:17 +00:00
Hanno Becker
af02a7bbed Add tests for relaxed CRL-CA name comparison
This commit introduces variants test-ca_utf8.crt,
test-ca_printablestring.crt and test-ca_uppercase.crt
of tests/data_files/test-ca.crt which differ from
test-ca.crt in their choice of string encoding and
upper and lower case letters in the DN field. These
changes should be immaterial to the recovation check,
and three tests are added that crl.pem, which applies
to test-ca.crt, is also considered as applying to
test-ca_*.crt.

The test files were generated using PR #1641 which
- adds a build instruction for test-ca.crt to
  tests/data_files/Makefile which allows easy
  change of the subject DN.
- changes the default string format from `PrintableString`
  to `UTF8String`.

Specifically:
- `test-ca_utf8.crt` was generated by running
      `rm test-ca.crt && make test-ca.crt`
   on PR #1641.
- `test-ca_uppercase.crt`, too, was generated by running
      `rm test-ca.crt && make test-ca.crt`
   on PR #1641, after modifying the subject DN line in the build
   instruction for `test-ca.crt` in `tests/data_files/Makefile`.
-  `test-ca_printable.crt` is a copy of `test-ca.crt`
   because at the time of this commit, `PrintableString` is
   still the default string format.
2018-11-06 13:21:22 +00:00
Gilles Peskine
2521d16ace Fix buffer overflow in test mbedtls_mpi_is_prime_det 2018-11-05 16:37:06 +01:00
Simon Butcher
2b0b9912e0 Merge remote-tracking branch 'public/pr/2046' into mbedtls-2.1-proposed 2018-11-04 18:52:30 +00:00
Simon Butcher
5ca1f27bff Merge remote-tracking branch 'public/pr/2097' into mbedtls-2.1-proposed 2018-11-04 18:49:17 +00:00
Simon Butcher
ad95594acf Merge remote-tracking branch 'public/pr/2116' into mbedtls-2.1-proposed 2018-11-04 18:42:59 +00:00
Hanno Becker
8ac041637f Adapt ChangeLog 2018-10-30 10:09:45 +00:00
Hanno Becker
6e7d5abe06 Correct typo in documentation of MBEDTLS_SSL_RENEGOTIATION 2018-10-30 09:39:06 +00:00
Hanno Becker
25422e1f02 Improve documentation of mbedtls_ssl_get_verify_result()
Fixes #517.
2018-10-30 09:35:43 +00:00
Simon Butcher
4acdf6dea8 Merge remote-tracking branch 'public/pr/1298' into mbedtls-2.1-proposed 2018-10-28 18:17:00 +00:00
Simon Butcher
1238a2fd03 Merge remote-tracking branch 'public/pr/1762' into mbedtls-2.1-proposed 2018-10-28 18:15:26 +00:00
Simon Butcher
a1f11cfc38 Merge remote-tracking branch 'public/pr/2058' into mbedtls-2.1-proposed 2018-10-28 17:25:16 +00:00
Simon Butcher
c84f5c937d Merge remote-tracking branch 'public/pr/2072' into mbedtls-2.1-proposed 2018-10-28 16:58:29 +00:00
Simon Butcher
351c4f15f4 Merge remote-tracking branch 'public/pr/2113' into mbedtls-2.1-proposed 2018-10-28 16:32:05 +00:00
Simon Butcher
34f32fa93c Merge remote-tracking branch 'public/pr/2110' into mbedtls-2.1-proposed 2018-10-28 16:17:28 +00:00
Simon Butcher
d10c8ed6d0 Merge remote-tracking branch 'public/pr/2033' into mbedtls-2.1 2018-10-27 18:34:57 +01:00
Simon Butcher
a4441430b7 Merge remote-tracking branch 'public/pr/2042' into mbedtls-2.1 2018-10-27 18:29:08 +01:00
Simon Butcher
d975e46d00 Make inclusion of stdio.h conditional in x509_crt.c
stdio.h was being included both conditionally if MBEDTLS_FS_IO was
defined, and also unconditionally, which made at least one of them
redundant.

This change removes the unconditional inclusion of stdio.h and makes it
conditional on MBEDTLS_PLATFORM_C.
2018-10-25 18:23:14 +01:00
Simon Butcher
945dfe6f0e Update the ChangeLog for PR #2011
The Changelog merged the PR #2011 entry under the wrong version. This corrects
that merge error, and also clarifies the entry.
2018-10-25 16:18:13 +01:00
Hanno Becker
7e95aa6bd0 Adapt ChangeLog 2018-10-25 15:51:28 +01:00
Hanno Becker
304736d60c Reinitialize PK ctx in mbedtls_pk_parse_key before reuse are free
Context: This commit makes a change to mbedtls_pk_parse_key() which
is responsible for parsing of private keys. The function doesn't know
the key format in advance (PEM vs. DER, encrypted vs. unencrypted) and
tries them one by one, resetting the PK context in between.

Issue: The previous code resets the PK context through a call to
mbedtls_pk_free() along, lacking the accompanying mbedtls_pk_init()
call. Practically, this is not an issue because functionally
mbedtls_pk_free() + mbedtls_pk_init() is equivalent to mbedtls_pk_free()
with the current implementation of these functions, but strictly
speaking it's nonetheless a violation of the API semantics according
to which xxx_free() functions leave a context in uninitialized state.
(yet not entirely random, because xxx_free() functions must be idempotent,
so they cannot just fill the context they operate on with garbage).

Change: The commit adds calls to mbedtls_pk_init() after those calls
to mbedtls_pk_free() within mbedtls_pk_parse_key() after which the
PK context might still be used.
2018-10-25 15:24:47 +01:00
Simon Butcher
fc0524ceb9 Merge remote-tracking branch 'public/pr/2011' into mbedtls-2.1 2018-10-24 13:36:58 +01:00
Simon Butcher
b001e08585
Merge pull request #2123 from dgreen-arm/mbedtls-2.1-jenkinsfile
Backport 2.1: Add Jenkinsfile for PR job
2018-10-19 17:01:03 +01:00
Darryl Green
e45e63cbbc Add Jenkinsfile for PR job 2018-10-19 15:26:49 +01:00
Simon Butcher
7458975805 Add a macro to define the memory size in ssl_server2.c
When MBEDTLS_MEMORY_BUFFER_ALLOC_C was defined, the sample ssl_server2.c was
using its own memory buffer for memory allocated by the library. The memory
used wasn't obvious, so this adds a macro for the memory buffer allocated to
make the allocated memory size more obvious and hence easier to configure.
2018-10-18 10:13:10 +01:00
Simon Butcher
e8c12f1ec9 Increase the memory buffer size for ssl_server2.c
Newer features in the library have increased the overall RAM usage of the
library, when all features are enabled. ssl_server2.c, with all features enabled
was running out of memory for the ssl-opt.sh test 'Authentication: client
max_int chain, server required'.

This commit increases the memory buffer allocation for ssl_server2.c to allow
the test to work with all features enabled.
2018-10-18 10:13:08 +01:00
Hanno Becker
c2a1dd98d5 Adapt ChangeLog 2018-10-17 14:55:03 +01:00
Hanno Becker
3aab4cc486 Fail when encountering invalid CBC padding in EtM records
This commit changes the behavior of the record decryption routine
`ssl_decrypt_buf()` in the following situation:
1. A CBC ciphersuite with Encrypt-then-MAC is used.
2. A record with valid MAC but invalid CBC padding is received.
In this situation, the previous code would not raise and error but
instead forward the decrypted packet, including the wrong padding,
to the user.

This commit changes this behavior to return the error
MBEDTLS_ERR_SSL_INVALID_MAC instead.

While erroneous, the previous behavior does not constitute a
security flaw since it can only happen for properly authenticated
records, that is, if the peer makes a mistake while preparing the
padded plaintext.
2018-10-17 14:54:50 +01:00