Tobias Brunner
bfa3178836
tls-peer: Use existing code to verify certificate and signature
2021-02-12 11:45:44 +01:00
Tobias Brunner
c78b2bee5d
tls-peer: Refactor parsing of TLS extensions
...
Also adds proper error handling.
2021-02-12 11:45:44 +01:00
Tobias Brunner
f0ed5f9125
tls-peer: Fix parsing of encrypted extensions
2021-02-12 11:45:44 +01:00
Tobias Brunner
4c40a3d3f0
tls-peer: Fix parsing of intermediate CA certificates
2021-02-12 11:45:44 +01:00
Tobias Brunner
2e1c0a2776
tls-crypto: Rename methods to calculate finished message
...
Instead of the version number use "legacy" for the one for earlier TLS
versions.
2021-02-12 11:45:44 +01:00
Tobias Brunner
2921f43705
tls-crypto: Simplify handshake/application key derivation and rename methods
...
Also consistently change the ciphers outside of tls_crypto_t and
simplify key derivation in tls_peer_t and fix a memory leak.
2021-02-12 11:45:44 +01:00
Tobias Brunner
8495138d4a
tls-peer: Support x25519/448 for TLS 1.2
...
These DH groups don't use the point format prefix (RFC 8422 deprecated
any other format anyway). Since they are enumerated now, they can also
be used by servers for TLS 1.2.
2021-02-12 11:45:44 +01:00
Tobias Brunner
ba3c90ded1
libtls: Some code style fixes
2021-02-12 11:45:44 +01:00
bytinbit and ryru
7a2b02667c
libtls: Implement TLS 1.3 handshake on client-side
...
The code is a minimal handshake with the HelloRetryRequest message
implementation missing.
Can be tested with an OpenSSL server running TLS 1.3. The server must
be at least version 1.1.1 (September 2018).
Co-authored-by: ryru <[email protected] >
2021-02-12 11:45:44 +01:00
Tobias Brunner
2ad1df9571
Replace 'inacceptable' with the more common 'unacceptable'
2018-06-28 18:46:42 +02:00
Andreas Steffen
b12c53ce77
Use standard unsigned integer types
2016-03-24 18:52:48 +01:00
Tobias Brunner
5452e3d66e
credential-manager: Make online revocation checks optional for public key enumerator
2016-03-10 11:07:14 +01:00
Martin Willi
47e96391f2
libtls: As client, reject DH exchanges using primes smaller than 1024 bit
...
While the server signs the ephemeral DH parameters, it can be tricked to its
lowest supported DH group by a man-in-the-middle:
https://weakdh.org/imperfect-forward-secrecy.pdf
While we at least use 2048-bit DH groups as server, the client accepts any
DH prime the server sends. If it supports export ciphers, only a 512-bit prime
may be used.
As TLS does not define nor negotiate a DH group for cipher suites, the client
actually must accept what the server offers. To avoid downgrades to weak
DH groups, we must reject what we consider insecure. We set this limit to
1024-bit primes. While this breaks compatibility with TLS servers using weaker
primes, this is what we expect servers at least use. Most browser vendors use
the same limit in a similar fix.
2015-05-26 11:36:24 +02:00
Martin Willi
161a015782
utils: Use chunk_equals_const() for all cryptographic purposes
2015-04-14 12:02:51 +02:00
Martin Willi
a777155ffe
diffie-hellman: Add a bool return value to set_other_public_value()
2015-03-23 17:54:03 +01:00
Martin Willi
42431690e0
diffie-hellman: Add a bool return value to get_my_public_value()
2015-03-23 17:54:03 +01:00
Martin Willi
bace1d6479
diffie-hellman: Use bool instead of status_t as get_shared_secret() return value
...
While such a change is not unproblematic, keeping status_t makes the API
inconsistent once we introduce return values for the public value operations.
2015-03-23 17:54:02 +01:00
Tobias Brunner
18597950fa
tls-peer: Make sure to use the right trusted public key for peer
...
In case a CA certificate uses the same subject DN as the server the
previous code could end up trying to verify the server's signature with
the CA certificate's public key. By comparing the certificate with the
one sent by the peer we make sure to use the right one.
Fixes #849 .
2015-03-09 15:40:06 +01:00
Martin Willi
666c552381
libtls: Add getters for TLS handshake authentication details
2015-03-03 14:08:00 +01:00
Martin Willi
aba5b76ce1
libtls: Merge trustchain auth verification details done during TLS handhsake
2015-03-03 14:08:00 +01:00
Martin Willi
b37080f8c9
tls: Include TLS version announced in Client Hello in encrypted premaster
...
While a hardcoded 1.2 version is fine when we offer that in Client Hello, we
should include the actually offered version if it has been reduced before
starting the exchange.
2014-03-31 16:07:53 +02:00
Martin Willi
2de481e32b
Delegate tls_t.get_{peer,server}_id to handshake layer
...
This allows to get updated peer identities if the peer can't authenticate,
or does when it is optional.
2013-02-28 16:46:08 +01:00
Tobias Brunner
07f826af67
Fixed encoding of TLS extensions (elliptic_curves and signature_algorithms)
2012-11-28 10:20:14 +01:00
Tobias Brunner
f05b427265
Moved debug.[ch] to utils folder
2012-10-24 16:00:51 +02:00
Tobias Brunner
126eb2af59
Check rng return value when generating secrets and IVs in libtls
2012-07-16 14:53:37 +02:00
Martin Willi
9020f7d0b9
Add a return value to tls_crypto_t.derive_secrets()
2012-07-16 14:53:33 +02:00
Martin Willi
6a5c86b7ad
Implemented TLS session resumption both as client and as server
2011-12-31 13:14:49 +01:00
Martin Willi
4caa380625
Separated cipherspec checking and switching, allowing us to defer the second
2011-12-31 13:14:49 +01:00
Andreas Steffen
7e432eff6b
renamed tls_reader|writer to bio_* and moved to libstrongswan
2011-05-31 15:46:51 +02:00
Martin Willi
2db8b58f62
Continue without client authentication if no matching certificate found
2011-04-14 20:02:12 +02:00
Martin Willi
6a8f1a578f
Ignore TLS certificate requests as peer if peer authentication disabled
2011-04-14 20:02:12 +02:00
Martin Willi
1c21f47a06
Send TLS Server Name Indication as peer if server identity is a FQDN
2011-04-14 20:02:12 +02:00
Martin Willi
31c65eb362
Include ec_point_format extension in ClientHello
2010-09-06 18:51:38 +02:00
Martin Willi
ec7d4e70d3
Renamed ecp_format to ansi_format, as point formats in TLS use different identifiers
2010-09-06 18:37:24 +02:00
Martin Willi
e6cce7ff0d
Prepend point format to ECDH public key
2010-09-06 15:37:51 +02:00
Martin Willi
3f7bb88ba3
Use a dynamic curve enumerator to list/convert TLS named curves
2010-09-03 17:24:23 +02:00
Martin Willi
f4c98ae664
Use ECDH group check where appropriate
2010-09-03 16:53:36 +02:00
Martin Willi
4cdade5aae
Select private key based on received cipher suites
2010-09-03 14:54:43 +02:00
Martin Willi
37a59a8fbf
Support for EC curve Hello extension, EC curve fallback
2010-09-03 14:54:43 +02:00
Martin Willi
5fc7297e38
Added client support for ECDHE key exchange
2010-09-03 14:54:43 +02:00
Martin Willi
da3f4a9fd0
Added TLS client side support for DHE suites
2010-09-02 19:33:08 +02:00
Martin Willi
06109c4717
Implemented "signature algorithm" hello extension
2010-09-02 19:33:08 +02:00
Martin Willi
dbb7c0306c
Support different hash/sig algorithms in handshake signing, including ECDSA
2010-09-02 13:07:25 +02:00
Martin Willi
c811479986
Strictly check if the server certificate matches the TLS server identity
2010-08-31 18:10:23 +02:00
Martin Willi
a596006e3f
Send TLS alerts for errors in TLS handshake building
2010-08-25 18:24:27 +02:00
Martin Willi
69e8bb2e8d
Pass NULL peer identity to omit TLS peer authentication, added eap-ttls.request_peer_auth option
2010-08-24 11:34:43 +02:00
Andreas Steffen
c1a929daa7
removed some redundant debug output
2010-08-24 09:02:51 +02:00
Martin Willi
e6f3ef1330
Implemented TLS Alert handling
2010-08-23 15:13:37 +02:00
Martin Willi
f154e30431
Verify negotiated TLS version
2010-08-23 09:47:03 +02:00
Martin Willi
3c19b3461f
Introducing a dedicated debug message group for libtls
2010-08-23 09:47:03 +02:00