Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/boringssl.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-12-14Reformatting of several DTLS source files.Adam Langley
This change has no semantic effect (I hope!). It's just a reformatting of a few files in ssl/. This is just a start – the other files in ssl/ should follow in the coming days. Change-Id: I5eb3f4b18d0d46349d0f94d3fe5ab2003db5364e
2014-12-14Pull SSL3_ENC_METHOD out of SSL_METHOD.David Benjamin
SSL3_ENC_METHOD will remain version-specific while SSL_METHOD will become protocol-specific. This finally removes all the version-specific portions of SSL_METHOD but the version tag itself. (SSL3_ENC_METHOD's version-specific bits themselves can probably be handled by tracking a canonicalized protocol version. It would simplify version comparisons anyway. The one catch is SSLv3 has a very different table. But that's a cleanup for future. Then again, perhaps a version-specific method table swap somewhere will be useful later for TLS 1.3.) Much of this commit was generated with sed invocation: s/method->ssl3_enc/enc_method/g Change-Id: I2b192507876aadd4f9310240687e562e56e6c0b1 Reviewed-on: https://boringssl-review.googlesource.com/2581 Reviewed-by: Adam Langley <agl@google.com>
2014-12-14Drop unnecessary version checks.David Benjamin
These may as well be replaced with assertions. Get them out of the way of the initialization. Change-Id: Ie4ab8bdc018e4a1def7d3f6b3b172a77896bfc0a Reviewed-on: https://boringssl-review.googlesource.com/2563 Reviewed-by: Adam Langley <agl@google.com>
2014-12-04Remove SSL_set_debug.David Benjamin
It just inserts extra flushes everywhere and isn't used. Change-Id: I082e4bada405611f4986ba852dd5575265854036 Reviewed-on: https://boringssl-review.googlesource.com/2456 Reviewed-by: Adam Langley <agl@google.com>
2014-12-02Remove redundant s->server assignments in handshake.David Benjamin
It should be set correctly prior to entering the handshake. Don't mask bugs by assigning it. Change-Id: Ib9bca8fad68916b3b242aad8819e3760e59e777a Reviewed-on: https://boringssl-review.googlesource.com/2443 Reviewed-by: Adam Langley <agl@google.com>
2014-12-02Replace s->first_packet with a s->s3->have_version bit.David Benjamin
first_packet is a temporary connection-global flag set for the duration of some call and then queried from other code. This kind of logic is too difficult to reason through. It also incorrectly treats renegotiate ClientHellos as pre-version-negotiation records. This eliminates the need to query enc_write_ctx (which wasn't EVP_AEAD-aware anyway). Instead, take a leaf from Go TLS's book and add a have_version bit. This is placed on s->s3 as it is connection state; s->s3 automatically gets reset on SSL_clear while s doesn't. This new flag will also be used to determine whether to do the V2ClientHello sniff when the version-locked methods merge into SSLv23_method. It will also replace needing to condition s->method against a dummy DTLS_ANY_VERSION value to determine whether DTLS version negotiation has happened yet. Change-Id: I5c8bc6258b182ba4ab175a48a84eab6d3a001333 Reviewed-on: https://boringssl-review.googlesource.com/2442 Reviewed-by: Adam Langley <agl@google.com>
2014-12-02Merge client/server SSL_METHODs into the generic one.David Benjamin
Supporting both schemes seems pointless. Now that s->server and s->state are set appropriately late and get_ssl_method is gone, the only difference is that the client/server ones have non-functional ssl_accept or ssl_connect hooks. We can't lose the generic ones, so let's unify on that. Note: this means a static linker will no longer drop the client or server handshake code if unused by a consumer linking statically. However, Chromium needs the server half anyway for DTLS and WebRTC, so that's probably a lost cause. Android also exposes server APIs. Change-Id: I290f5fb4ed558f59fadb5d1f84e9d9c405004c23 Reviewed-on: https://boringssl-review.googlesource.com/2440 Reviewed-by: Adam Langley <agl@google.com>
2014-12-02Remove s->type from SSL.David Benjamin
It's redundant with s->server. Change-Id: Idb4ca44618477b54f3be5f0630f0295f0708b0f4 Reviewed-on: https://boringssl-review.googlesource.com/2438 Reviewed-by: Adam Langley <agl@google.com>
2014-12-02Remove SSL_clear calls in handshake functions.David Benjamin
If the state is SSL_ST_BEFORE, the SSL* was just initialized. Otherwise, we don't want to call SSL_clear. The one case I found where we do is if a handshake message is received and someone sets SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS. This is apparently intended for external consumers to set, but I see no code in Google that does. Which is fortunate because it'll trigger SSL_clear. This retains the BIOs but drops all connection state, including the record. If the client just initiated renego, that's the ClientHello that's lost. The connection then hangs: the now reset SSL* wants a ClientHello (under the null cipher because that too's been dropped) while the peer wants an encrypted ServerHello. Change-Id: Iddb3e0bb86d39d98155b060f9273a0856f2d1409 Reviewed-on: https://boringssl-review.googlesource.com/2436 Reviewed-by: Adam Langley <agl@google.com>
2014-12-02Trim impossible state combinations.David Benjamin
SSL_ST_BEFORE is never standalone. As of upstream's 413c4f45ed0508d2242638696b7665f499d68265, SSL_ST_BEFORE is only ever set paired with SSL_ST_ACCEPT or SSL_ST_CONNECT. Conversely, SSL_ST_OK is never paired with SSL_ST_ACCEPT or SSL_ST_CONNECT. As far as I can tell, this combination has never been possible. Change-Id: Ifbc8f147be821026cf59f3d5038f0dbad3b0a1d2 Reviewed-on: https://boringssl-review.googlesource.com/2433 Reviewed-by: Adam Langley <agl@google.com>
2014-12-02Don't assign handshake_func in the handshake functions.David Benjamin
It should already be assigned, as of upstream's b31b04d951e9b65bde29657e1ae057b76f0f0a73. I believe these assignments are part of the reason it used to appear to work. Replace them with assertions. So the assertions are actually valid, check in SSL_connect / SSL_accept that they are never called if the socket had been placed in the opposite state. (Or we'd be in another place where it would have appeared to work with the handshake functions fixing things afterwards.) Now the only places handshake_func is set are in SSL_set_{connect,accept}_state and the method switches. Change-Id: Ib249212bf4aa889b94c35965a62ca06bdbcf52e1 Reviewed-on: https://boringssl-review.googlesource.com/2432 Reviewed-by: Adam Langley <agl@google.com>
2014-12-02Remove method swap in SSL_set_session.David Benjamin
This is a bit of cleanup that probably should have been done at the same time as 30ddb434bfb845356fbacb6b2bd51f8814c7043c. For now, version negotiation is implemented with a method swap. It also performs this swap on SSL_set_session, but this was neutered in 30ddb434bfb845356fbacb6b2bd51f8814c7043c. Rather than hackishly neuter it, remove it outright. In addition, remove SSL_set_ssl_method. Now all method swaps are internal: SSLv23_method switch to a version-specific method and SSL_clear undoing it. Note that this does change behavior: if an SSL* is created with one version-specific method and we SSL_set_session to a session from a /different/ version, we would switch to the /other/ version-specific method. This is extremely confusing, so it's unlikely anyone was actually expecting it. Version-specific methods in general don't work well. Change-Id: I72a5c1f321ca9aeb1b52ebe0317072950ba25092 Reviewed-on: https://boringssl-review.googlesource.com/2390 Reviewed-by: Adam Langley <agl@google.com>
2014-11-19Add malloc failure tests.Adam Langley
This commit fixes a number of crashes caused by malloc failures. They were found using the -malloc-test=0 option to runner.go which runs tests many times, causing a different allocation call to fail in each case. (This test only works on Linux and only looks for crashes caused by allocation failures, not memory leaks or other errors.) This is not the complete set of crashes! More can be found by collecting core dumps from running with -malloc-test=0. Change-Id: Ia61d19f51e373bccb7bc604642c51e043a74bd83 Reviewed-on: https://boringssl-review.googlesource.com/2320 Reviewed-by: Adam Langley <agl@google.com>
2014-11-11Remove SSL3_FLAGS_POP_BUFFER.David Benjamin
This is an experimental flag that dates back to SSLeay 0.8.1b or earlier. It's never set internally and never set in consumers. Change-Id: I922583635c9f3d8d93f08f1707531ad22a26ae6a Reviewed-on: https://boringssl-review.googlesource.com/2214 Reviewed-by: Adam Langley <agl@google.com>
2014-08-29Client-side OCSP stapling support.David Benjamin
Remove the old implementation which was excessively general. This mirrors the SCT support and adds a single boolean flag to request an OCSP response with no responder IDs, extensions, or frills. The response, if received, is stored on the SSL_SESSION so that it is available for (re)validation on session resumption; Chromium revalidates the saved auth parameters on resume. Server support is unimplemented for now. This API will also need to be adjusted in the future if we implement RFC 6961. Change-Id: I533c029b7f7ea622d814d05f934fdace2da85cb1 Reviewed-on: https://boringssl-review.googlesource.com/1671 Reviewed-by: Adam Langley <agl@google.com>
2014-08-27Introduce a hash_message parameter to ssl_get_message.David Benjamin
This replaces the special-case in ssl3_get_message for Channel ID. Also add ssl3_hash_current_message to hash the current message, taking TLS vs DTLS handshake header size into account. One subtlety with this flag is that a message intended to be processed with SSL_GET_MESSAGE_DONT_HASH_MESSAGE cannot follow an optional message (reprocessed with reuse_message, etc.). There is an assertion to that effect. If need be, we can loosen it to requiring that the preceeding optional message also pass SSL_GET_MESSAGE_DONT_HASH_MESSAGE and then maintain some state to perform the more accurate assertion, but this is sufficient for now. Change-Id: If8c87342b291ac041a35885b9b5ee961aee86eab Reviewed-on: https://boringssl-review.googlesource.com/1630 Reviewed-by: Adam Langley <agl@google.com>
2014-08-27Rename some message functions for consistency.David Benjamin
Make the get/send functions match. ssl3_client_hello -> ssl3_send_client_hello. ssl3_send_newsession_ticket -> ssl3_send_new_session_ticket. ssl3_send_client_verify -> ssl3_send_cert_verify Change-Id: Iea5579479b8a8f392167b8fb3b7e9fe961d0f007 Reviewed-on: https://boringssl-review.googlesource.com/1613 Reviewed-by: Adam Langley <agl@google.com>
2014-08-20Remove support on both sides for *_fixed_(ec)dh client auth.David Benjamin
In the fixed_ecdh case, it wasn't even implemented, but there was stub code for it. It complicates the ClientKeyExchange (the client parameters become implicit in the certificate) and isn't used. Change-Id: I3627a37042539c90e05e59cd0cb3cd6c56225561 Reviewed-on: https://boringssl-review.googlesource.com/1563 Reviewed-by: Adam Langley <agl@google.com>
2014-08-18DTLS version negotiation doesn't happen at HelloVerifyRequest.David Benjamin
RFC 6347 changed the meaning of server_version in HelloVerifyRequest. It should now always be 1.0 with version negotiation not happening until ServerHello. Fix runner.go logic and remove #if-0'd code in dtls1_get_hello_verify. Enforce this in the runner for when we get DTLS 1.2 tests. Change-Id: Ice83628798a231df6bf268f66b4c47b14a519386 Reviewed-on: https://boringssl-review.googlesource.com/1552 Reviewed-by: Adam Langley <agl@google.com>
2014-08-18Simplify HelloVerifyRequest processing.David Benjamin
Rather than switching the order of the ServerHello and HelloVerifyRequest states and processing each twice, have the states follow the protocol order. HelloVerifyRequest reading is optional and ServerHello is strict. Use the send_cookie bit to determine whether we're expecting a cookie or not. Fix the dtls1_stop_timer call in these states to consistently hit the end of a server flight; the previous flight should not be cleared from the retransmit buffer until the entire next flight is received. That said, OpenSSL doesn't appear to implement the part where, on receipt of the previous peer flight, the buffered flight is retransmitted. (With the exception of a SSL3_MT_FINISHED special-case in dtls1_read_bytes.) So if the peer is also OpenSSL, this doesn't do anything. Also fix the DTLS test which wasn't actually asserting that the ClientHello matched. Change-Id: Ia542190972dbffabb837d32c9d453a243caa90b2 Reviewed-on: https://boringssl-review.googlesource.com/1551 Reviewed-by: Adam Langley <agl@google.com>
2014-08-18Remove SSL_OP_CISCO_ANYCONNECT.David Benjamin
I see no internal users and the existence of a THIRD version encoding complicates all version-checking logic. Also convert another version check to SSL_IS_DTLS that was missed earlier. Change-Id: I60d215f57d44880f6e6877889307dc39dbf838f7 Reviewed-on: https://boringssl-review.googlesource.com/1550 Reviewed-by: Adam Langley <agl@google.com>
2014-08-14Port dtls1_get_hello_verify to CBS.David Benjamin
Gives bounds checks and asserts that there's nothing after the cookie. Change-Id: I8f9753e0c72670e9960f73a5722cefd9c02696a9 Reviewed-on: https://boringssl-review.googlesource.com/1507 Reviewed-by: Adam Langley <agl@google.com>
2014-08-14Update d1_clnt.c to use ssl_cipher_has_server_public_key.David Benjamin
Mirror the changes in s3_clnt.c. Change-Id: I7af7080c6eea2a67cc994befa11e45d32eaa9615 Reviewed-on: https://boringssl-review.googlesource.com/1506 Reviewed-by: Adam Langley <agl@google.com>
2014-08-14Allow renewed tickets on session resumption in DTLS.David Benjamin
Analogous fix for DTLS as upstream's c519e89f5c359b8c0f747519773284d9b6382791. Change-Id: I8a56070ce2a1edf4e9ceb2fd8ce08552e25a1cf3 Reviewed-on: https://boringssl-review.googlesource.com/1504 Reviewed-by: Adam Langley <agl@google.com>
2014-07-23Remove ssl3_check_finished.David Benjamin
ssl3_get_new_session_ticket is sensible and fills in a session_id for stateless sessions, so the resumption will already be detected at this point. Remove the codepath in ssl3_client_hello which allows for resuming sessions with empty session_ids. The rest of the code doesn't allow it either. This removes another codepath where we potentially probe a Finished message early. Change-Id: I2749b5c65c7ce98c6f30566d8716360ff1bba24c Reviewed-on: https://boringssl-review.googlesource.com/1295 Reviewed-by: Adam Langley <agl@google.com>
2014-07-16Don't delay CKX and Finished for False Start.Adam Langley
Android never did this - they patched out the point in the code that set the SSL3_FLAGS_DELAY_CLIENT_FINISHED flag when doing False Start. Also, from the unittests it appears that NSS doesn't do this either. Thus this change brings BoringSSL into line with existing behaviour. SSL3_FLAGS_DELAY_CLIENT_FINISHED wasn't introduced with False Start, it's an option in vanilla OpenSSL. But I can't find anything that uses it and, since it's going to be untested, I've removed it completely in this change. Change-Id: I910537bfa35e74ab88778b83612cf5607d485969 Reviewed-on: https://boringssl-review.googlesource.com/1221 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2014-07-15Rename ssl3_get_key_exchange to ssl3_get_server_key_exchange.David Benjamin
More consistent with ssl3_send_server_key_exchange and the message name. Change-Id: If0f435a89bdf117297d349099708fff0bd5a6e98 Reviewed-on: https://boringssl-review.googlesource.com/1170 Reviewed-by: Adam Langley <agl@google.com>
2014-07-15Make init_msg a uint8_t*.David Benjamin
It's current a void* and gets explicitly cast everywhere. Make it a uint8_t and only add the casts when converting it come init_buf, which internally stores a char*. Change-Id: I28bed129e46ed37ee1ce378d5c3bd0738fc1177f Reviewed-on: https://boringssl-review.googlesource.com/1163 Reviewed-by: Adam Langley <agl@google.com>
2014-07-08Remove OPENSSL_NO_TLSEXT compilation option.David Benjamin
Mostly done with unifdef. Change-Id: I876f79f9e96d77628d696b09694363d07aee6b74 Reviewed-on: https://boringssl-review.googlesource.com/1096 Reviewed-by: Adam Langley <agl@google.com>
2014-06-27Remove heartbeat extension.David Benjamin
Change-Id: I0273a31e49c5367b89b9899553e3ebe13ec50687 Reviewed-on: https://boringssl-review.googlesource.com/1050 Reviewed-by: Adam Langley <agl@google.com>
2014-06-25Remove more remnants of compression.David Benjamin
Change-Id: I721914594fc92a66d95c7ec2088f13b68e964103
2014-06-21Inital import.Adam Langley
Initial fork from f2d678e6e89b6508147086610e985d4e8416e867 (1.0.2 beta). (This change contains substantial changes from the original and effectively starts a new history.)