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-14Implement the V2ClientHello sniff in version-locked methods.David Benjamin
Tested manually by replacing SSLv23_method() with TLSv1_2_method() in bssl_shim. This is a large chunk of code which is not run in SSLv23_method(), but it will be run after unification. It's split out separately to ease review. Change-Id: I6bd241daca17aa0f9b3e36e51864a29755a41097
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-11-14Remove support for processing fragmented alertsAlex Chernyakhovsky
Prior to this change, BoringSSL maintained a 2-byte buffer for alerts, and would support reassembly of fragmented alerts. NSS does not support fragmented alerts, nor would any reasonable implementation produce them. Remove fragmented alert handling and produce an error if a fragmented alert has ever been encountered. Change-Id: I31530ac372e8a90b47cf89404630c1c207cfb048 Reviewed-on: https://boringssl-review.googlesource.com/2125 Reviewed-by: Adam Langley <agl@google.com>
2014-10-28Add SSL_SESSION_to_bytes to replace i2d_SSL_SESSION.David Benjamin
Deprecate the old two-pass version of the function. If the ticket is too long, replace it with a placeholder value but keep the connection working. Change-Id: Ib9fdea66389b171862143d79b5540ea90a9bd5fb Reviewed-on: https://boringssl-review.googlesource.com/2011 Reviewed-by: Adam Langley <agl@google.com>
2014-10-24Reimplement i2d_SSL_SESSION using CBB.David Benjamin
No more need for all the macros. For now, this still follows the two-pass i2d_* API despite paying a now-unnecessary malloc. The follow-on commit will expose a more reasonable API and deprecate this one. Change-Id: I50ec63e65afbd455ad3bcd2f1ae3c782d9e8f9d2 Reviewed-on: https://boringssl-review.googlesource.com/2000 Reviewed-by: Adam Langley <agl@google.com>
2014-10-24Reimplement d2i_SSL_SESSION with CBS.David Benjamin
Do away with all those unreadable macros. Also fix many many memory leaks in the SSL_SESSION reuse case. Add a number of helper functions in CBS to help with parsing optional fields. Change-Id: I2ce8fd0d5b060a1b56e7f99f7780997fabc5ce41 Reviewed-on: https://boringssl-review.googlesource.com/1998 Reviewed-by: Adam Langley <agl@google.com>
2014-09-17Add missing errors codes for alerts.David Benjamin
This gives inappropriate_fallback and close_notify sent during the handshake error strings. It'd also avoid having to write case SSL_AD_REASON_OFFSET + SSL_AD_CLOSE_NOTIFY: in Chromium. Change-Id: I42123d5452eb7843ead883d112e58b3f087d3067 Reviewed-on: https://boringssl-review.googlesource.com/1780 Reviewed-by: Adam Langley <agl@google.com>
2014-09-04Add SSL_CTX_set_keylog_bio.David Benjamin
Configures the SSL stack to log session information to a BIO. The intent is to support NSS's SSLKEYLOGFILE environment variable. Add support for the same environment variable to tool/client.cc. Tested against Wireshark 1.12.0. BUG=393477 Change-Id: I4c231f9abebf194eb2df4aaeeafa337516774c95 Reviewed-on: https://boringssl-review.googlesource.com/1699 Reviewed-by: Adam Langley <agl@google.com>
2014-08-27Refactor server-side CertificateVerify handling.David Benjamin
This moves CertificateVerify digest processing to the new SSL_GET_MESSAGE_DONT_HASH_MESSAGE flag. It also refactors it similarly to ssl3_send_cert_verify and moves that logic to a common ssl3_cert_verify_hash function to compute the handshake hash. This removes a large chunk of duplicate (and divergent!) logic between TLS and DTLS. It also removes TLS1_FLAGS_KEEP_HANDSHAKE. Change-Id: Ia63c94f7d76d901bc9c4c33454fbfede411adf63 Reviewed-on: https://boringssl-review.googlesource.com/1633 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-13Add mode to disallow session creation.Adam Langley
Android needs this and it was patched into their OpenSSL in https://android.googlesource.com/platform/external/openssl.git/+/master/patches/0003-jsse.patch It appears that this is needed because javax.net.ssl.SSLEngine has it as part of its interface and thus it's part of the Android API. No idea why anything would ever want to disable that though. Change-Id: I9c6279a961637f44936889edbe269b9d5c19746d
2014-08-13Clean up s23_srvr.c.David Benjamin
ssl23_get_client_hello has lots of remnants of SSLv2 support and remnants of an even older SSL_OP_NON_EXPORT_FIRST option (see upstream's d92f0bb6e9ed94ac0c3aa0c939f2565f2ed95935) which complicates the logic. Split it into three states and move V2ClientHello parsing into its own function. Port it to CBS and CBB to give bounds checks on the V2ClientHello parse. This fixes a minor bug where, if the SSL_accept call in ssl23_get_client_hello failed, cb would not be NULL'd and SSL_CB_ACCEPT_LOOP would get reported an extra time. It also unbreaks the invariant between s->packet, s->packet_length, s->s3->rbuf.buf, and s->s3->rbuf.offset at the point the switch, although this was of no consequence because the first ssl3_read_n call passes extend = 0 which resets s->packet and s->packet_length. It also makes us tolerant to major version bumps in the ClientHello. Add tests for TLS tolerance of both minor and major version bumps as well as the HTTP request error codes. Change-Id: I948337f4dc483f4ebe1742d3eba53b045b260257 Reviewed-on: https://boringssl-review.googlesource.com/1455 Reviewed-by: Adam Langley <agl@google.com>
2014-07-25Change CCS_OK to EXPECT_CCS.David Benjamin
Now that the flag is set accurately, use it to enforce that the handshake and CCS synchronization. If EXPECT_CCS is set, enforce that: (a) No handshake records may be received before ChangeCipherSpec. (b) There is no pending handshake data at the point EXPECT_CCS is set. Change-Id: I04b228fe6a7a771cf6600b7d38aa762b2d553f08 Reviewed-on: https://boringssl-review.googlesource.com/1299 Reviewed-by: Adam Langley <agl@google.com>
2014-07-16Fix magic SSL reason codes.David Benjamin
SSL reason codes corresponding to alerts have special values. Teach make_errors.go that values above 1000 are reserved (otherwise it will assign new values in that namespace). Also fix all the existing reason codes which corresponded to alerts. Change-Id: Ieabdf8fd59f4802938616934e1d84e659227cf84 Reviewed-on: https://boringssl-review.googlesource.com/1212 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-15Move public headers to include/openssl/Adam Langley
Previously, public headers lived next to the respective code and there were symlinks from include/openssl to them. This doesn't work on Windows. This change moves the headers to live in include/openssl. In cases where some symlinks pointed to the same header, I've added a file that just includes the intended target. These cases are all for backwards-compat. Change-Id: I6e285b74caf621c644b5168a4877db226b07fd92 Reviewed-on: https://boringssl-review.googlesource.com/1180 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2014-07-09Check duplicate extensions before processing.David Benjamin
ClientHello and ServerHello are not allowed to include duplicate extensions. Add a new helper function to check this and call as appropriate. Remove ad-hoc per-extension duplicate checks which are no unnecessary. Add runner.go tests to verify such message correctly rejected. Change-Id: I7babd5b642dfec941459512869e2dd6de26a831c Reviewed-on: https://boringssl-review.googlesource.com/1100 Reviewed-by: Adam Langley <agl@google.com>
2014-07-08Port Certificate Request parsing to crypto/bytestringAlex Chernyakhovsky
Along the way, clean up the certificate types code to not have the hard-coded fixed-size array. Change-Id: If3e5978f7c5099478a3dfa37a0a7059072f5454a Reviewed-on: https://boringssl-review.googlesource.com/1103 Reviewed-by: Adam Langley <agl@google.com>
2014-06-27Remove serverinfo and custom extensions support.David Benjamin
If we need an extension, we can implement it in-library. Change-Id: I0eac5affcd8e7252b998b6c86ed2068234134b08 Reviewed-on: https://boringssl-review.googlesource.com/1051 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-21Early callback support.Adam Langley
2014-06-21Fallback SCSV.Adam Langley
This patch adds server-side support for TLS_FALLBACK_SCSV (see http://tools.ietf.org/html/draft-bmoeller-tls-downgrade-scsv-01).
2014-06-21Equal preference cipher groups.Adam Langley
This change implements equal-preference groups of cipher suites. This allows, for example, a server to prefer one of AES-GCM or ChaCha20 ciphers, but to allow the client to pick which one. When coupled with clients that will boost AES-GCM in their preferences when AES-NI is present, this allows us to use AES-GCM when the hardware exists and ChaCha20 otherwise.
2014-06-21SSL AEAD support.Adam Langley
This change allows AEADs to be used in ssl/ to implement SSL/TLS ciphersuites.
2014-06-21tls1_change_cipher_state rewriteAdam Langley
The previous version of the function made adding AEAD changes very difficult. This change should be a semantic no-op - it should be purely a cleanup.
2014-06-21TLS 1.1 ciphers.Adam Langley
This patch adds support for a different cipher list when the connection is using TLS 1.1. This is intended to support the case where we want to use AES with >= TLS 1.1 clients but RC4 otherwise because of the BEAST attack.
2014-06-21Empty record limit.Adam Langley
Limit the number of empty records that will be processed consecutively in order to prevent ssl3_get_record from never returning. Reported by "oftc_must_be_destroyed" and George Kadianakis.
2014-06-21ChannelID support.Adam Langley
Implement ChannelID as both a client and server.
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.)