Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | gmp: Support of SHA-3 RSA signatures | Andreas Steffen | 2016-09-22 | 1 | -10/+10 |
| | |||||
* | Use standard unsigned integer types | Andreas Steffen | 2016-03-24 | 12 | -54/+54 |
| | |||||
* | credential-manager: Make online revocation checks optional for public key ↵ | Tobias Brunner | 2016-03-10 | 2 | -2/+3 |
| | | | | enumerator | ||||
* | unit-tests: Forward variable argument list in TEST_SUITE_DEPEND | Martin Willi | 2015-07-12 | 1 | -2/+2 |
| | | | | | For some plugin features, such as crypters or AEADs, we have some additional feature arguments, such as the key size. | ||||
* | libtls: As client, reject DH exchanges using primes smaller than 1024 bit | Martin Willi | 2015-05-26 | 1 | -0/+7 |
| | | | | | | | | | | | | | | | | | | 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. | ||||
* | utils: Use chunk_equals_const() for all cryptographic purposes | Martin Willi | 2015-04-14 | 2 | -2/+2 |
| | |||||
* | diffie-hellman: Add a bool return value to set_other_public_value() | Martin Willi | 2015-03-23 | 2 | -3/+18 |
| | |||||
* | diffie-hellman: Add a bool return value to get_my_public_value() | Martin Willi | 2015-03-23 | 2 | -2/+10 |
| | |||||
* | diffie-hellman: Use bool instead of status_t as get_shared_secret() return value | Martin Willi | 2015-03-23 | 2 | -2/+2 |
| | | | | | While such a change is not unproblematic, keeping status_t makes the API inconsistent once we introduce return values for the public value operations. | ||||
* | tls-peer: Make sure to use the right trusted public key for peer | Tobias Brunner | 2015-03-09 | 1 | -4/+8 |
| | | | | | | | | | 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. | ||||
* | libtls: Add getters for TLS handshake authentication details | Martin Willi | 2015-03-03 | 7 | -0/+49 |
| | |||||
* | libtls: Merge trustchain auth verification details done during TLS handhsake | Martin Willi | 2015-03-03 | 2 | -0/+2 |
| | |||||
* | libtls: Don't send TLS close notifies in EAP after application succeeds | Martin Willi | 2015-02-19 | 3 | -3/+38 |
| | | | | | | | | | | | | | With the introduction of PT-TLS, we started sending TLS close notifies after the application layer completes (7bbf7aa9). While this makes sense for TCP based transports, it is not required in EAP methods. In EAP, handshake completion can be directly signaled using the outer EAP-SUCCESS message. This also saves one round-trip in the EAP exchange. Windows 7/8 does not seem to like TLS close notifies at all in EAP, and either stalls (EAP-TTLS) or disconnects (PEAP). Fixes #556. | ||||
* | libtls: Check for CHANGE_CIPHER_SPEC type only if upper layer returns NEED_MORE | Martin Willi | 2015-01-12 | 1 | -6/+5 |
| | | | | | | | A type is returned only if upper layers successfully created a record, that is returns NEED_MORE. If we do not check for the return value, we might check a previous record or the uninitialized type variable and falsely reset the sequence number. | ||||
* | libtls: Catch POLLHUP/NVAL in TLS socket splicing | Martin Willi | 2014-11-28 | 1 | -2/+2 |
| | | | | | If one of the sockets gets disconnected, some systems return POLLHUP. Signal the socket as ready to let the read/write call fail properly. | ||||
* | libtls: Use poll(2) instead of select() in tls_socket | Martin Willi | 2014-11-21 | 1 | -8/+7 |
| | |||||
* | tls: Fix an invalid free on CBC encryption failure | Martin Willi | 2014-10-15 | 1 | -1/+0 |
| | |||||
* | tls: Fix a memory leak if AEAD encryption fails | Martin Willi | 2014-10-15 | 1 | -0/+1 |
| | |||||
* | tls: Check all bytes of the padding if they equal the padding length | Martin Willi | 2014-10-15 | 2 | -0/+16 |
| | |||||
* | libtls: Link against ws_w32 on Windows | Martin Willi | 2014-06-04 | 1 | -0/+4 |
| | |||||
* | unit-tests: Make sure plugins in the builddir are loaded | Tobias Brunner | 2014-05-19 | 1 | -1/+1 |
| | | | | | | When running the tests in GDB the working directory apparently is different. With the relative path used previously the plugins would not be found and those installed on the system would get used. | ||||
* | enum: Return boolean result for enum_from_name() lookup | Martin Willi | 2014-05-16 | 1 | -2/+2 |
| | | | | | | | | | | | Handling the result for enum_from_name() is difficult, as checking for negative return values requires a cast if the enum type is unsigned. The new signature clearly differentiates lookup result from lookup value. Further, this actually allows to convert real -1 enum values, which could not be distinguished from "not-found" and the -1 return value. This also fixes several clang warnings where enums are unsigned. | ||||
* | tls: Move variable sized tls_record_t struct to end of tls_t data | Martin Willi | 2014-05-16 | 1 | -4/+4 |
| | | | | clang complains about the the non-last variable length member. | ||||
* | Implemented PT-EAP protocol (RFC 7171) | Andreas Steffen | 2014-05-12 | 2 | -47/+70 |
| | |||||
* | tls: Add a test case to check correct enum name mapping of cipher suites | Martin Willi | 2014-04-01 | 3 | -0/+250 |
| | |||||
* | tls: Add socket based tests testing all supported suites with TLS 1.2/1.1/1.0 | Martin Willi | 2014-04-01 | 3 | -0/+527 |
| | |||||
* | tls: Remove superfluous initializers in TLS AEAD implementations | Martin Willi | 2014-04-01 | 4 | -4/+0 |
| | |||||
* | tls: Support a maximum TLS version to negotiate using TLS socket abstraction | Martin Willi | 2014-04-01 | 2 | -2/+4 |
| | |||||
* | tls: Support a null encryption flag on TLS socket abstraction | Martin Willi | 2014-04-01 | 2 | -3/+16 |
| | |||||
* | tls: Introduce a generic TLS purpose that accepts NULL encryption ciphers | Martin Willi | 2014-04-01 | 3 | -0/+6 |
| | |||||
* | tls: Export a function to list supported TLS cipher suites | Martin Willi | 2014-04-01 | 2 | -18/+66 |
| | |||||
* | tls: Create a unit-test runner | Martin Willi | 2014-04-01 | 5 | -0/+93 |
| | |||||
* | tls: Fix some TLS cipher suite enum names | Martin Willi | 2014-03-31 | 1 | -3/+3 |
| | | | | | It is important to have them mapped correctly, as we use these official TLS identifiers to configure specific TLS suites. | ||||
* | tls: Include TLS version announced in Client Hello in encrypted premaster | Martin Willi | 2014-03-31 | 1 | -1/+7 |
| | | | | | | 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. | ||||
* | tls: Check for minimal TLS record length before each record iteration | Martin Willi | 2014-03-31 | 1 | -8/+8 |
| | | | | | | Fixes fragment reassembling if a buffer contains more than one record, but the last record contains a partial TLS record header. Thanks to Nick Saunders and Jamil Nimeh for identifying this issue and providing a fix for it. | ||||
* | tls: Fix AEAD algorithm filtering, avoid filtering all suites if no AEAD found | Martin Willi | 2014-03-31 | 1 | -19/+52 |
| | |||||
* | tls: Offer TLS signature schemes in ClientHello in order of preference | Martin Willi | 2014-03-31 | 1 | -90/+59 |
| | | | | | Additionally, we now query plugin features to find out what schemes we exactly support. | ||||
* | tls: Define AES-GCM cipher suites from RFC 5288/5289 | Martin Willi | 2014-03-31 | 1 | -0/+54 |
| | |||||
* | tls: Implement the TLS AEAD abstraction for real AEAD modes | Martin Willi | 2014-03-31 | 4 | -8/+262 |
| | |||||
* | tls: Separate TLS protection to abstracted AEAD modes | Martin Willi | 2014-03-31 | 8 | -325/+874 |
| | | | | | | To better separate the code path for different TLS versions and modes of operation, we introduce a TLS AEAD abstraction. We provide three implementations using traditional transforms, and get prepared for TLS AEAD modes. | ||||
* | libtls: Move settings to <ns>.tls with fallback to libtls | Tobias Brunner | 2014-02-12 | 2 | -4/+9 |
| | |||||
* | Build all shared libraries with -no-undefined and link them properly | Tobias Brunner | 2013-09-12 | 1 | -0/+6 |
| | | | | | | | | | | The flag is required to convince libtool on Cygwin to build DLLs. But on Windows these shared libraries can not have undefined symbols, so we have to link them explicitly to the libraries they reference. For plugins this is currently not done, so only the monolithic build is supported. The plugin loader wouldn't be able to load DLLs anyway, as it tries to load files that don't exist on Cygwin. | ||||
* | Optimize TLS socket buffer for TLS_MAX_FRAGMENT_LEN | Andreas Steffen | 2013-08-19 | 1 | -2/+2 |
| | |||||
* | Extract client identity and authentication type from SASL authentication | Andreas Steffen | 2013-08-15 | 1 | -0/+7 |
| | |||||
* | automake: replace INCLUDES by AM_CPPFLAGS | Martin Willi | 2013-07-18 | 1 | -2/+2 |
| | | | | | | INCLUDES are now deprecated and throw warnings when using automake 1.13. We now also differentiate AM_CPPFLAGS and AM_CFLAGS, where includes and defines are passed to AM_CPPFLAGS only. | ||||
* | fixed typo | Andreas Steffen | 2013-03-27 | 1 | -1/+1 |
| | |||||
* | Use proper integer types when handling TLS exchanges | Tobias Brunner | 2013-03-22 | 1 | -5/+6 |
| | | | | tls_t.build takes a size_t argument not a ssize_t. | ||||
* | If TLS peer authentication not required, the client does nonetheless, allow ↵ | Martin Willi | 2013-03-06 | 1 | -4/+19 |
| | | | | it to fail | ||||
* | Request a TLS client certificate even if no peer identity is given | Martin Willi | 2013-02-28 | 1 | -5/+1 |
| | | | | | This allows a peer to perform client authentication if it wants, but skip it if not. | ||||
* | Wrap tls_t.get_{server,peer}_id methods in tls_socket_t | Martin Willi | 2013-02-28 | 2 | -0/+28 |
| |