Janos Follath
da31fa137a
Bignum: Fix prime validation vulnerability
...
The input distribution to primality testing functions is completely
different when used for generating primes and when for validating
primes. The constants used in the library are geared towards the prime
generation use case and are weak when used for validation. (Maliciously
constructed composite numbers can pass the test with high probability)
The mbedtls_mpi_is_prime() function is in the public API and although it
is not documented, it is reasonable to assume that the primary use case
is validating primes. The RSA module too uses it for validating key
material.
2018-10-09 16:36:53 +01:00
Janos Follath
b728c29114
Bignum: Remove dead code
...
Both variables affected by the code are overwritten before their next
read.
2018-10-09 16:33:27 +01:00
Janos Follath
b8fc1b02ee
RSA: Use MBEDTLS_MPI_GEN_PRIME_FLAG_LOW_ERR
2018-10-09 16:33:27 +01:00
Janos Follath
f301d23ceb
Bignum: Improve primality test for FIPS primes
...
The FIPS 186-4 RSA key generation prescribes lower failure probability
in primality testing and this makes key generation slower. We enable the
caller to decide between compliance/security and performance.
This python script calculates the base two logarithm of the formulas in
HAC Fact 4.48 and was used to determine the breakpoints and number of
rounds:
def mrpkt_log_2(k, t):
if t <= k/9.0:
return 3*math.log(k,2)/2+t-math.log(t,2)/2+4-2*math.sqrt(t*k)
elif t <= k/4.0:
c1 = math.log(7.0*k/20,2)-5*t
c2 = math.log(1/7.0,2)+15*math.log(k,2)/4.0-k/2.0-2*t
c3 = math.log(12*k,2)-k/4.0-3*t
return max(c1, c2, c3)
else:
return math.log(1/7.0)+15*math.log(k,2)/4.0-k/2.0-2*t
2018-10-09 16:33:27 +01:00
Janos Follath
7c025a9f50
Generalize dh_flag in mbedtls_mpi_gen_prime
...
Setting the dh_flag to 1 used to indicate that the caller requests safe
primes from mbedtls_mpi_gen_prime. We generalize the functionality to
make room for more flags in that parameter.
2018-09-21 16:30:07 +01:00
Simon Butcher
53546ea099
Update library version number to 2.13.1
2018-09-06 19:10:26 +01:00
Simon Butcher
5d40f67138
Merge remote-tracking branch 'public/pr/1927' into development-restricted
2018-09-06 16:24:48 +01:00
Hanno Becker
f5106d54eb
Don't declare and define gmtime()-mutex on Windows platforms
2018-09-06 12:09:56 +01:00
Hanno Becker
323d8019bf
Correct preprocessor guards determining use of gmtime()
...
The previous code erroneously used gmtime_r() to implement
mbedtls_platform_gmtime() in case of a non-windows, non-unix system.
2018-09-06 11:30:57 +01:00
Hanno Becker
6f70581c4a
Correct POSIX version check to determine presence of gmtime_r()
...
Recent versions of POSIX move gmtime_r to the base.
2018-09-06 09:06:33 +01:00
Hanno Becker
7dd82b4f51
platform_utils.{c/h} -> platform_util.{c/h}
2018-09-05 16:26:04 +01:00
Hanno Becker
48a816ff26
Minor documentation improvements
2018-09-05 15:22:22 +01:00
Hanno Becker
6a739789f3
Rename mbedtls_platform_gmtime() to mbedtls_platform_gmtime_r()
...
For consistency, also rename MBEDTLS_PLATFORM_GMTIME_ALT to
MBEDTLS_PLATFORM_GMTIME_R_ALT.
2018-09-05 15:06:19 +01:00
Hanno Becker
be2e4bddd5
Guard decl and use of gmtime mutex by HAVE_TIME_DATE and !GMTIME_ALT
2018-09-05 14:44:31 +01:00
Hanno Becker
cfeb70c6b9
gmtime: Remove special treatment for IAR
...
Previous commits attempted to use `gmtime_s()` for IAR systems; however,
this attempt depends on the use of C11 extensions which lead to incompatibility
with other pieces of the library, such as the use of `memset()` which is
being deprecated in favor of `memset_s()` in C11.
2018-09-05 13:52:46 +01:00
Andres Amaya Garcia
94b540ac63
Avoid redefining _POSIX_C_SOURCE
2018-09-05 12:27:32 +01:00
Andres Amaya Garcia
433f911e59
Check for IAR in gmtime macros
2018-09-05 12:01:57 +01:00
Andres Amaya Garcia
3c9733a0a3
Fix typo in comment for gmtime macro defines
2018-09-05 11:52:07 +01:00
Andres Amaya Garcia
ca04a01bb8
Document shorthand gmtime macros
2018-09-05 11:43:57 +01:00
Andres Amaya Garcia
209960611f
Use gmtime_s() for IAR
2018-09-05 11:27:56 +01:00
Andres Amaya Garcia
e9b10b21f1
Define _POSIX_C_SOURCE in threading.c before POSIX detection
2018-09-05 11:25:30 +01:00
Simon Butcher
4d075cd7d0
Update library version number to 2.13.0
2018-08-31 15:59:10 +01:00
Simon Butcher
0bbb4fc132
Merge branch 'development' into development
2018-08-30 01:11:35 +01:00
Simon Butcher
552754a6ee
Merge remote-tracking branch 'public/pr/1988' into development
2018-08-30 00:57:28 +01:00
Simon Butcher
68dbc94720
Merge remote-tracking branch 'public/pr/1951' into development
2018-08-30 00:56:56 +01:00
Hanno Becker
a591c48302
Correct typo in debug message
2018-08-28 17:52:53 +01:00
Hanno Becker
83ab41c665
Correct typo in comment
2018-08-28 17:52:53 +01:00
Hanno Becker
cd9dcda0a0
Add const qualifier to handshake header reading functions
2018-08-28 17:52:53 +01:00
Hanno Becker
39b8bc9aef
Change wording of debug message
2018-08-28 17:52:49 +01:00
Hanno Becker
ef7afdfa5a
Rename another_record_in_datagram to next_record_is_in_datagram
2018-08-28 17:16:31 +01:00
Hanno Becker
c573ac33dd
Fix typos in debug message and comment in ssl-tls.c
2018-08-28 17:15:25 +01:00
Simon Butcher
3af567d4a7
Merge remote-tracking branch 'restricted/pr/437' into development-restricted
2018-08-28 15:33:59 +01:00
Simon Butcher
129fa82908
Merge remote-tracking branch 'restricted/pr/470' into development-restricted
2018-08-28 15:26:11 +01:00
Simon Butcher
7f85563f9b
Merge remote-tracking branch 'restricted/pr/491' into development-restricted
2018-08-28 15:22:40 +01:00
Simon Butcher
9ce5160fea
Merge remote-tracking branch 'public/pr/1965' into development
2018-08-28 12:34:14 +01:00
Simon Butcher
9d5a9e1213
Merge remote-tracking branch 'public/pr/1625' into development
2018-08-28 12:23:40 +01:00
Simon Butcher
14dac0953e
Merge remote-tracking branch 'public/pr/1918' into development
2018-08-28 12:21:41 +01:00
Simon Butcher
1846e406c8
Merge remote-tracking branch 'public/pr/1939' into development
2018-08-28 12:19:56 +01:00
Simon Butcher
9598845d11
Merge remote-tracking branch 'public/pr/1955' into development
2018-08-28 12:00:18 +01:00
Simon Butcher
4613772dea
Merge remote-tracking branch 'public/pr/1915' into development
2018-08-28 11:45:44 +01:00
Hanno Becker
0207e533b2
Style: Correct typo in ssl-tls.c
2018-08-28 10:28:28 +01:00
Hanno Becker
bc2498a9ff
Style: Add numerous comments indicating condition guarded by #endif
2018-08-28 10:13:29 +01:00
Hanno Becker
d58477769d
Style: Group buffering-related forward declarations in ssl_tls.c
2018-08-28 10:09:23 +01:00
Hanno Becker
360bef3fe3
Reordering: Document that only HS and CCS msgs are buffered
2018-08-28 10:04:33 +01:00
Hanno Becker
4f432ad44d
Style: Don't use abbreviations in comments
2018-08-28 10:02:32 +01:00
Hanno Becker
b8f50147ee
Add explicit MBEDTLS_DEBUG_C-guard around debugging code
2018-08-28 10:01:34 +01:00
Hanno Becker
f0da6670dc
Style: Add braces around if-branch where else-branch has them
2018-08-28 09:55:10 +01:00
Hanno Becker
ecbdf1c048
Style: Correct indentation of debug msgs in mbedtls_ssl_write_record
2018-08-28 09:54:44 +01:00
Hanno Becker
3f7b973e32
Correct typo in mbedtls_ssl_flight_transmit()
2018-08-28 09:53:25 +01:00
Hanno Becker
6e12c1ea7d
Enhance debugging output
2018-08-24 14:48:08 +01:00