Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Add datestamp to autogenerated tls_suite_info.cpp | lloyd | 2013-04-12 | 1 | -3/+2 |
| | |||||
* | Fix Ciphersuite::to_string when using non-GCM AEAD modes | lloyd | 2013-04-12 | 1 | -2/+2 |
| | |||||
* | Add support for AEAD modes in TLS. Add GCM ciphersuites. | lloyd | 2013-04-11 | 4 | -9/+239 |
| | |||||
* | In Channel, pre-size the IO buffers to 16K to avoid excess allocations. | lloyd | 2013-04-11 | 1 | -0/+7 |
| | | | | Translate Integrity_Failure exceptions to bad_record_mac | ||||
* | Only negotiate an AEAD mode when using 1.2 | lloyd | 2013-04-11 | 3 | -0/+12 |
| | |||||
* | Mark Channel IO buffers for zeroing | lloyd | 2013-04-10 | 3 | -7/+7 |
| | |||||
* | Make the IV length and MAC keylength explicit in the ciphersuite | lloyd | 2013-04-10 | 6 | -124/+145 |
| | | | | Add support for alternate PRFs | ||||
* | Make ciphersuite_list a virtual member of TLS::Policy | lloyd | 2013-04-10 | 4 | -21/+20 |
| | | | | so it can be overridden by applications. | ||||
* | Add a param to Connection_Cipher_State so it knows which direction | lloyd | 2013-04-10 | 3 | -1/+5 |
| | | | | processing is happening. | ||||
* | Have tls_suite_info.py generate the entire source file | lloyd | 2013-03-28 | 1 | -6/+6 |
| | | | | | | | instead of just the switch. Next step should be having it be run by configure at build time and a copy of the the params included in build-data | ||||
* | Add TLS::Policy::server_uses_own_ciphersuite_preferences() | lloyd | 2013-03-21 | 4 | -5/+33 |
| | | | | | | Previously the server always took its most-preferred cipher out of the client's list, but this policy allows telling a server to follow the client's preferences insetad. | ||||
* | Add the script that generates the switch in tls_suite_info.cpp | lloyd | 2013-03-16 | 1 | -1/+4 |
| | |||||
* | Move assert.h from internal to very public (included in types.h) | lloyd | 2013-03-13 | 9 | -9/+0 |
| | | | | | | This reduces friction to writing an assert, so hopefully there will be more of them as a result. And we can use asserts in public headers now, very useful for templates. | ||||
* | Pull the code doing TLS session crypto out to cryptobox for general | lloyd | 2013-03-04 | 1 | -101/+4 |
| | | | | use and call it. | ||||
* | Correct Doxygen comments | lloyd | 2013-03-02 | 2 | -2/+1 |
| | |||||
* | Add sync handshake function to Blocking_Client | lloyd | 2013-03-01 | 2 | -8/+32 |
| | |||||
* | Blocking_Client fixes. Add relnote | lloyd | 2013-02-28 | 4 | -16/+7 |
| | |||||
* | Initial blocking client interface for simple uses and 1.10 compat | lloyd | 2013-02-28 | 2 | -0/+174 |
| | |||||
* | Move the major TLS record MAC check and decrypt routines to their own | lloyd | 2013-02-11 | 1 | -75/+112 |
| | | | | functions | ||||
* | Move record decrypt to its own function | lloyd | 2013-02-11 | 1 | -86/+104 |
| | |||||
* | Simplify this catch | lloyd | 2013-02-11 | 1 | -6/+1 |
| | |||||
* | Prefer RC4 over AES. Gak. | lloyd | 2013-02-06 | 1 | -3/+3 |
| | |||||
* | Don't need to pass the sequence numbers struct in here, all we need is | lloyd | 2012-12-14 | 3 | -5/+3 |
| | | | | the value we want to use this time. | ||||
* | Re-add support for reading SSLv2 client hellos | lloyd | 2012-12-10 | 2 | -11/+22 |
| | |||||
* | Add a Record struct to combine the record contents, type, sequence #, | lloyd | 2012-12-10 | 5 | -82/+104 |
| | | | | and version into a single value. | ||||
* | Change Credentials_Manager::trusted_certificate_authorities to return | lloyd | 2012-11-13 | 4 | -11/+17 |
| | | | | | | | | | a list of Certificate_Stores instead of a list of actual certs, allowing for instance the ability to reference a DB cert store without actually pulling all the certs into memory. Add Certificate_Store::all_subjects which returns the DNs of all contained certificates. | ||||
* | Changes so DTLS handshake can send messages under different epochs, eg | lloyd | 2012-11-12 | 7 | -55/+85 |
| | | | | for retransmitting a flight. | ||||
* | Remove Channel::m_max_fragment. Instead derive it from the server | lloyd | 2012-11-07 | 4 | -29/+27 |
| | | | | | | hello. This also fixes a bug where a client which sent the fragment limit would enforce it even for servers which did not support the extension. | ||||
* | Store the maximum fragment value instead of the code, convert to the | lloyd | 2012-11-07 | 2 | -37/+31 |
| | | | | code on serialize/deserialize. | ||||
* | Remove Channel::m_connection_closed, instead deriving it from other state | lloyd | 2012-11-07 | 2 | -8/+11 |
| | |||||
* | Pass read_record a callback mapping epoch to cipher state so it can | lloyd | 2012-11-06 | 4 | -53/+38 |
| | | | | read out of order messages in DTLS. | ||||
* | Add Channel::pending_state and Channel::active_state, use where possible | lloyd | 2012-11-06 | 2 | -73/+84 |
| | |||||
* | Store cipher states in Channel instead of Handshake_State. Keep all | lloyd | 2012-11-06 | 7 | -66/+145 |
| | | | | | around by default, expiring them as they are no longer needed. Expiration logic for DTLS needs some work. | ||||
* | Split asn1_obj.h into asn1_alt_name.h, asn1_attribute.h, and | lloyd | 2012-11-06 | 1 | -0/+6 |
| | | | | asn1_time.h | ||||
* | Move Channel::is_{active,closed} to source file | lloyd | 2012-11-01 | 2 | -2/+12 |
| | |||||
* | Add TLS::Policy::negotiate_heartbeat_support which controls if the | lloyd | 2012-10-13 | 5 | -3/+20 |
| | | | | | | client will offer heartbeats (or if a server will negotiate them if the client offers). Defaults to false, which is probably the right behavior in terms of minimizing surprise and attack surface. | ||||
* | Remove TLS::Policy::pref_version. Instead pass the version to offer to | lloyd | 2012-10-13 | 5 | -15/+19 |
| | | | | | | | | the Client constructor. Defaults to the most recent version of TLS. Allows TLS or DTLS, and means that it's possible to back down on the offered version, without requiring a Policy implementation with mutable state. | ||||
* | Add TLS::Server_Information to encapsulate the hostname/port pair. | lloyd | 2012-10-13 | 13 | -103/+179 |
| | | | | | | | Add a service identifier as well, to help out clients which may want to negotiate multiple protocols over a single port and need to keep the sessions disambiguated. Not sure if that is useful, but it might be. | ||||
* | Generate the fake pre master needed if the RSA computation fails ahead | lloyd | 2012-10-02 | 1 | -4/+16 |
| | | | | of time. Otherwise we expose a timing channel WRT using the RNG. | ||||
* | Missing return value | lloyd | 2012-09-19 | 1 | -0/+1 |
| | |||||
* | Inline Channel::{read,write}_cipher_state, only one caller each | lloyd | 2012-09-14 | 2 | -24/+11 |
| | |||||
* | Expose to public in TLS::Channel peer_supports_heartbeats, | lloyd | 2012-09-13 | 1 | -6/+16 |
| | | | | heartbeat_sending_allowed, and secure_renegotiation_supported. | ||||
* | Store the cipher states in the handshake state object as shared_ptrs. | lloyd | 2012-09-13 | 4 | -43/+94 |
| | | | | | | One notable change here is that after we send a close_alert, we ignore any data that follows. That is somewhat unfortunate actually, but overall this change is important (for DTLS). | ||||
* | Update creators of Session to new constructor | lloyd | 2012-09-12 | 2 | -2/+0 |
| | |||||
* | It seems other implementations define the secure renegotiation flag to | lloyd | 2012-09-12 | 3 | -16/+3 |
| | | | | | | | | be part of the connection rather than part of the session. That really does make more sense, so go with it. Changes the format of serialized sessions, but we already broke that with the crypto change. | ||||
* | A quite different approach to extension handling, store both inbound | lloyd | 2012-09-12 | 8 | -282/+233 |
| | | | | | | | | | and outbound extensions in an Extension, and pull out values as requested. This is to some extent just a cleanup but also assures us that the client and the server do agree on what extensions were set. Previously it was possible for extensions to mismatch, eg we set a field in the client hello structure but it didn't make it into an extension. | ||||
* | Spelling | lloyd | 2012-09-12 | 6 | -18/+17 |
| | |||||
* | Duplicated extension checks! | lloyd | 2012-09-12 | 1 | -12/+0 |
| | |||||
* | Remove Channel::m_secure_renegotiation, instead derive from current state. | lloyd | 2012-09-12 | 2 | -46/+23 |
| | |||||
* | CBC overwrote (encrypted) the following block in write_record. I | lloyd | 2012-09-12 | 1 | -1/+4 |
| | | | | | | | | | | | | | | missed it before because the buffer was pre-sized to maximum allowable, thus it just encrypted something we never sent. However after the buffer sizes were set to zero, it would start encrypting ... something ... after the block. This would manifest by strange crashes during a full client renegotiation. The problem was that the buffer was sized up a bit for sending the unencrypted messages (client kex, etc) and so we had some wiggle room. However sending an encrypted client kex took more space than that (due to the MAC, etc) so a full renegotiation would cause values to be overwritten. |