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-19Reformat the rest of ssl/.Adam Langley
Change-Id: I7dc264f7e29b3ba8be4c717583467edf71bf8dd9
2014-12-16Consistently use RAND_bytes and check for failure.David Benjamin
RAND_pseudo_bytes just calls RAND_bytes now and only returns 0 or 1. Switch all callers within the library call the new one and use the simpler failure check. This fixes a few error checks that no longer work (< 0) and some missing ones. Change-Id: Id51c79deec80075949f73fa1fbd7b76aac5570c6 Reviewed-on: https://boringssl-review.googlesource.com/2621 Reviewed-by: Adam Langley <agl@google.com>
2014-12-14Merge SSLv23_method and DTLS_ANY_VERSION.David Benjamin
This makes SSLv23_method go through DTLS_ANY_VERSION's version negotiation logic. This allows us to get rid of duplicate ClientHello logic. For compatibility, SSL_METHOD is now split into SSL_PROTOCOL_METHOD and a version. The legacy version-locked methods set min_version and max_version based this version field to emulate the original semantics. As a bonus, we can now handle fragmented ClientHello versions now. Because SSLv23_method is a silly name, deprecate that too and introduce TLS_method. Change-Id: I8b3df2b427ae34c44ecf972f466ad64dc3dbb171
2014-12-14Add min_version and max_version APIs.David Benjamin
Amend the version negotiation tests to test this new spelling of max_version. min_version will be tested in a follow-up. Change-Id: Ic4bfcd43bc4e5f951140966f64bb5fd3e2472b01 Reviewed-on: https://boringssl-review.googlesource.com/2583 Reviewed-by: Adam Langley <agl@google.com>
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-14Factor out remaining version-related functions.David Benjamin
Now SSLv23 and DTLS_ANY_VERSION share version-related helper functions. ssl3_get_method is temporary until the method switch is no longer necessary. Put them all together so there's one place to refactor them when we add a new version or implement min_version/max_version controls. Change-Id: Ic28a145cad22db08a87fdb854480b22886c451c6 Reviewed-on: https://boringssl-review.googlesource.com/2580 Reviewed-by: Adam Langley <agl@google.com>
2014-12-14Remove SSL_CTX_set_ssl_version.David Benjamin
Missed this one. It requires that we be able to change an SSL_METHOD after the after, which complicates compiling the version locking into min_version / max_version configurations. Change-Id: I24ba54b7939360bbfafe3feb355a65840bda7611 Reviewed-on: https://boringssl-review.googlesource.com/2579 Reviewed-by: Adam Langley <agl@google.com>
2014-12-14Remove redundant SSL_ST_BEFORE-related checks.David Benjamin
SSL_ST_BEFORE isn't a possible state anymore. It seems this state meant the side wasn't known, back in the early SSLeay days. Now upstream guesses (sometimes incorrectly with generic methods), and we don't initialize until later. SSL_shutdown also doesn't bother to call ssl3_shutdown at all if the side isn't initialized and SSL_ST_BEFORE isn't the uninitialized state, which seems a much more sensible arrangement. Likewise, because bare SSL_ST_BEFOREs no longer exist, SSL_in_init implies SSL_in_before and there is no need to check both. Change-Id: Ie680838b2f860b895073dabb4d759996e21c2824 Reviewed-on: https://boringssl-review.googlesource.com/2564 Reviewed-by: Adam Langley <agl@google.com>
2014-12-14Mark SSL3_ENC_METHODs const and remove an unused one.David Benjamin
There's an undefined one not used anywhere. The others ought to be const. Also move the forward declaration to ssl.h so we don't have to use the struct name. Change-Id: I76684cf65255535c677ec19154cac74317c289ba Reviewed-on: https://boringssl-review.googlesource.com/2561 Reviewed-by: Adam Langley <agl@google.com>
2014-12-05ClientHello Padding for Fast Radio Opening in 3G.Feng Lu
The ClientHello record is padded to 1024 bytes when fastradio_padding is enabled. As a result, the 3G cellular radio is fast forwarded to DCH (high data rate) state. This mechanism leads to a substantial redunction in terms of TLS handshake latency, and benefits mobile apps that are running on top of TLS. Change-Id: I3d55197b6d601761c94c0f22871774b5a3dad614
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-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-02Don't set s->state and s->server before the side is known.David Benjamin
If SSL_clear is called before SSL_set_{connect,accept}_state (as SSL_new does internally), s->state will get set prematurely. Likewise, s->server is set based on the method's ssl_accept hook, but client SSL's may be initialized from a generic SSL_METHOD too. Since we can't easily get rid of the generic SSL_METHODs, defer s->state and s->server initialization until the side is known. Change-Id: I0972e17083df22a3c09f6f087011b54c699a22e7 Reviewed-on: https://boringssl-review.googlesource.com/2439 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-02Fix FALLBACK_SCSV, Channel ID, OCSP stapling, and SCTs with the generic method.David Benjamin
s->server's value isn't final until SSL_connect or SSL_accept is called when using the generic SSLv23_method or DTLS_method rather than the version-locked ones. This makes the tests pass if bssl_shim uses those methods. It would be nicer if the generic methods were gone and an SSL* could know from creation which half it's destined for. Unfortunately, there's a lot of code that uses those generic methods, so we probably can't get rid of them. If they have to stay, it seems better to standardize on only having those, rather than support both, even if standardizing on the side-specific ones would be preferable. Change-Id: I40e65a8842cd6706da92263a263f664336a7f3b3 Reviewed-on: https://boringssl-review.googlesource.com/2434 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 obsolete comment.David Benjamin
This comment is no longer true. It dates from OpenSSL's initial commit, but stopped being true in upstream's 413c4f45ed0508d2242638696b7665f499d68265. Change-Id: I47377d992a00e3d57c795fef893e19e109dd6945 Reviewed-on: https://boringssl-review.googlesource.com/2431 Reviewed-by: Adam Langley <agl@google.com>
2014-12-02Remove SSL_(CTX_)get_ssl_method.David Benjamin
We intend to deprecate the version-locked methods and unify them. Don't expose that there's a method swap. (The existing version-locked methods will merely be a shorthand for configuring minimum/maximum versions.) There is one consumer of SSL_get_ssl_method in internal code, but it's just some logging in test-only code. All it's doing is getting the version as a string which should be SSL_get_version instead. While here, also remove dead ssl_bad_method function. Also the bogus ssl_crock_st forward-declaration. The forward declaration in base.h should be perfectly sufficient. Change-Id: I50480808f51022e05b078a285f58ec85d5ad7c8e Reviewed-on: https://boringssl-review.googlesource.com/2408 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-12-02Remove method-switching codepath in SSL_clear.David Benjamin
Although the comment suggests this was added with an s->session check to account for SSL_set_session switching methods (which we will remove in the next commit) and to account for SSLv23_method switching methods (which we hope to remove after a long tower of cleanup), the current codepath never runs and can't work: If it is called prior to handshaking or setting a session, no method switch has happened so that codepath is dead. If it is called after setting a session, the s->session check will keep it from running. If it is called after a handshake, we will have established a session so that check will again keep it from running. (Finally, if it is called during the handshake, the in_handshake check will stop; that there is an SSL_clear call in the handshake state machine at all is a bug that will be addressed once more things are disentangled. See upstream's 979689aa5cfa100ccbc1f25064e9398be4b7b05c.) Were that code to ever run, the SSL* would be in an inconsistent state. It switches the method, but not the handshake_func. The handshake_func isn't switched to NULL, so that will keep the SSL_connect and SSL_accept code from fixing it. It seems the intent was that the caller would always call SSL_set_{connect,accept}_state to fix this. But as of upstream's b31b04d951e9b65bde29657e1ae057b76f0f0a73, this is not necessary and indeed isn't called by a lot of consumer code. Change-Id: I710652b1d565b77bc26f913c2066ce749a9025c9 Reviewed-on: https://boringssl-review.googlesource.com/2430 Reviewed-by: Adam Langley <agl@google.com>
2014-12-02Make OCSP response and SCT list getter const-correct.David Benjamin
The data is owned by the SSL_SESSION, so the caller should not modify it. This will require changes in Chromium, but they should be trivial. Change-Id: I314718530c7d810f7c7b8852339b782b4c2dace1 Reviewed-on: https://boringssl-review.googlesource.com/2409 Reviewed-by: Adam Langley <agl@google.com>
2014-11-22Remove SSL_set_session_secret_cb (EAP-FAST)David Benjamin
This is only used for EAP-FAST which we apparently don't need to support. Remove it outright. We broke it in 9eaeef81fa2d4fd6246dc02b6203fa936a5eaf67 by failing to account for session misses. If this changes and we need it later, we can resurrect it. Preferably implemented differently: the current implementation is bolted badly onto the handshake. Ideally use the supplied callbacks to fabricate an appropriate SSL_SESSION and resume that with as much of the normal session ticket flow as possible. The one difference is that EAP-FAST seems to require the probing mechanism for session tickets rather than the sane session ID echoing version. We can reimplement that by asking the record layer to probe ahead for one byte. Change-Id: I38304953cc36b2020611556a91e8ac091691edac Reviewed-on: https://boringssl-review.googlesource.com/2360 Reviewed-by: Adam Langley <agl@google.com>
2014-11-20Fix a couple more malloc test crashes.David Benjamin
The ex_data index may fail to be allocated. Also don't leave a dangling pointer in handshake_dgst if EVP_DigestInit_ex fails and check a few more init function failures. Change-Id: I2e99a89b2171c9d73ccc925a2f35651af34ac5fb Reviewed-on: https://boringssl-review.googlesource.com/2342 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-19Account for EVP_PKEY capabilities in selecting hash functions.David Benjamin
tls1_process_sigalgs now only determines the intersection between the peer algorithms and those configured locally. That list is queried later to determine the hash algorithm to use when signing CertificateVerify or ServerKeyExchange. This is needed to support client auth on Windows where smartcards or CAPI may not support all hash functions. As a bonus, this does away with more connection-global state. This avoids the current situation where digests are chosen before keys are known (for CertificateVerify) or for slots that don't exist. Change-Id: Iec3619a103d691291d8ebe08ef77d574f2faf0e8 Reviewed-on: https://boringssl-review.googlesource.com/2280 Reviewed-by: Adam Langley <agl@google.com>
2014-11-19Remove CERT_PKEY::valid_flags.David Benjamin
CERT_PKEY_SIGN isn't meaningful since, without strict mode, we always fall back to SHA-1 anyway. So the digest is never NULL when CERT_PKEY_SIGN is computed. The entire valid_flags is now back to it's pre-1.0.2 check of seeing if the certificate and key are configured. This finally removes the sensitivity between valid_flags and selecting the digest, so we can defer choosing the digest all we like. Change-Id: I9f9952498f512d7f0cc799497f7c5b52145a48af Reviewed-on: https://boringssl-review.googlesource.com/2288 Reviewed-by: Adam Langley <agl@google.com>
2014-11-19Clean up ssl_set_cert_masks.David Benjamin
It doesn't depend on the cipher now that export ciphers are gone. It need only be called once. Also remove the valid bit; nothing ever reads it. Its output is also only used within a function, so make mask_k and mask_a local variables. So all the configuration-based checks are in one place, change the input parameter from CERT to SSL and move the PSK and ECDHE checks to the mask computation. This avoids having to evaluate the temporary EC key for each cipher. The remaining uses are on the client which uses them differently (disabled features rather than enabled ones). Those too may as well be local variables, so leave a TODO. Change-Id: Ibcb574341795d4016ea749f0290a793eed798874 Reviewed-on: https://boringssl-review.googlesource.com/2287 Reviewed-by: Adam Langley <agl@google.com>
2014-11-17Remove some remnants of SSLv2.David Benjamin
Change-Id: Id294821162c4c9ea6f2fce2a0be65bafcb616068 Reviewed-on: https://boringssl-review.googlesource.com/2311 Reviewed-by: Adam Langley <agl@google.com>
2014-11-11Remove psk_identity_hint from SSL_SESSION.David Benjamin
There's not much point in retaining the identity hint in the SSL_SESSION. This avoids the complexity around setting psk_identity hint on either the SSL or the SSL_SESSION. Introduce a peer_psk_identity_hint for the client to store the one received from the server. This changes the semantics of SSL_get_psk_identity_hint; it now only returns the value configured for the server. The client learns the hint through the callback. This is compatible with the one use of this API in conscrypt (it pulls the hint back out to pass to a callback). Change-Id: I6d9131636b47f13ac5800b4451436a057021054a Reviewed-on: https://boringssl-review.googlesource.com/2213 Reviewed-by: Adam Langley <agl@google.com>
2014-10-24Remove T** parameter to ssl_bytes_to_cipher_list.David Benjamin
There's only one caller and it doesn't use that feature. While I'm here, tidy that function a little. Don't bother passing FALLBACK_SCSV into ssl3_get_cipher_by_value. Change-Id: Ie71298aeaaab6e24401e0a6c2c0d2281caa93ba4 Reviewed-on: https://boringssl-review.googlesource.com/2030 Reviewed-by: Adam Langley <agl@google.com>
2014-10-01Remove SSL_get_shared_ciphers.David Benjamin
This removes the need to track the client cipher list in the SSL_SESSION. It also eliminates a field in SSL_SESSION that wasn't serialized by i2d_SSL_SESSION. It's only used to implement SSL_get_shared_ciphers which is only used by debug code. Moreover, it doesn't work anyway. The SSLv2 logic pruned that field to the common ciphers, but the SSLv3+ logic just stores the client list as-is. I found no internal callers that were actually compiled (if need be we can stub in something that always returns the empty string or so). Change-Id: I55ad45964fb4037fd623f7591bc574b2983c0698 Reviewed-on: https://boringssl-review.googlesource.com/1866 Reviewed-by: Adam Langley <agl@google.com>
2014-10-01Don't compare signed vs. unsigned.David Benjamin
This resolves a pile of MSVC warnings in Chromium. Change-Id: Ib9a29cb88d8ed8ec4118d153260f775be059a803 Reviewed-on: https://boringssl-review.googlesource.com/1865 Reviewed-by: Adam Langley <agl@google.com>
2014-10-01Remove OPENSSL_SSL_DEBUG_BROKEN_PROTOCOL.David Benjamin
We patch bugs into the runner implementation for testing, not our own. Change-Id: I0a8ac73eaeb70db131c01a0fd9c84f258589a884 Reviewed-on: https://boringssl-review.googlesource.com/1845 Reviewed-by: Adam Langley <agl@google.com>
2014-09-30Clean up ssl_cipher_list_to_bytes a little.David Benjamin
Still need to convert serializing code to CBB, but the current one is kinda crazy. Change-Id: I00e12a812c815bf01c53a26ccbb7c6727ea8c8fc Reviewed-on: https://boringssl-review.googlesource.com/1840 Reviewed-by: Adam Langley <agl@google.com>
2014-09-25Remove OPENSSL_NO_TLS1_2_CLIENT and OPENSSL_NO_DTLS1.David Benjamin
Get those out of the way. Change-Id: Ia1be476e383fc90c2373a24a072944fe377da6ef Reviewed-on: https://boringssl-review.googlesource.com/1820 Reviewed-by: Adam Langley <agl@google.com>
2014-09-22Switch the reason code check to a compile-time assert.David Benjamin
It's just checking some constants. Also the comment's off now. Change-Id: I934d32b76c705758ae7c18009d867e9820a4c5a8 Reviewed-on: https://boringssl-review.googlesource.com/1800 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-09-03Fix minor issues found by Clang's analysis.Adam Langley
Thanks to Denis Denisov for running the analysis. Change-Id: I80810261e013423e746fd8d8afefb3581cffccc0 Reviewed-on: https://boringssl-review.googlesource.com/1701 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-28Remove session_ctx macro.David Benjamin
Don't pollute the embedder's namespace with a session_ctx macro. It looks like the difference was that, without TLS extensions, session_ctx was ctx rather than initial_ctx. Now it's always initial_ctx. Retain the semantics of switching SSL_CTX's out after the fact, until/unless we decide to replace that with something less scary-sounding. Change-Id: Ie5df5138aec25218ca80031cf645671968b8a54a Reviewed-on: https://boringssl-review.googlesource.com/1663 Reviewed-by: Adam Langley <agl@google.com>
2014-08-28unifdef a bunch of OPENSSL_NO_* ifdefs.David Benjamin
Get all this stuff out of the way. - OPENSSL_NO_MD5 - OPENSSL_NO_SHA - OPENSSL_NO_EC - OPENSSL_NO_ECDSA - OPENSSL_NO_ECDH - OPENSSL_NO_NEXTPROTONEG - OPENSSL_NO_DH - OPENSSL_NO_SSL3 - OPENSSL_NO_RC4 - OPENSSL_NO_RSA Also manually removed a couple instances of OPENSSL_NO_DSA that seemed to be confused anyway. Did some minor manual cleanup. (Removed a few now-pointless 'if (0)'s.) Change-Id: Id540ba97ee22ff2309ab20ceb24c7eabe766d4c4 Reviewed-on: https://boringssl-review.googlesource.com/1662 Reviewed-by: Adam Langley <agl@google.com>
2014-08-27Move a variable declaration to function start.Adam Langley
(Fixes the Windows build.) Change-Id: Ibc7e3fe7cee275c8bc24198e996e4f92100ea9fc Reviewed-on: https://boringssl-review.googlesource.com/1642 Reviewed-by: Adam Langley <agl@google.com>
2014-08-21Implement client side of TLS signed certificate stamps extension.HÃ¥vard Molland
https://crbug.com/389420 and 3.3 in rfc6962. Change-Id: Ib22bcd4e4bde5a314ed33e123e19a76cdb714da4 Reviewed-on: https://boringssl-review.googlesource.com/1491 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2014-08-20Remove some unused state and code.David Benjamin
Change-Id: I1f917d1fe70ef5046eeea8fed27cc402bcd674b9 Reviewed-on: https://boringssl-review.googlesource.com/1568 Reviewed-by: Adam Langley <agl@google.com>
2014-08-20Remove DSA-based cipher suites and client auth.David Benjamin
DSA is not connected up to EVP, so it wouldn't work anyway. We shouldn't advertise a cipher suite we don't support. Chrome UMA data says virtually no handshakes end up negotiating one of these. Change-Id: I874d934432da6318f05782ebd149432c1d1e5275 Reviewed-on: https://boringssl-review.googlesource.com/1566 Reviewed-by: Adam Langley <agl@google.com>
2014-08-20Remove ECDH_RSA, ECDH_ECDSA, DH_RSA, and DH_DSS.David Benjamin
These are the variants where the CA signs a Diffie-Hellman keypair. They are not supported by Chrome on NSS. Change-Id: I569a7ac58454bd3ed1cd5292d1f98499012cdf01 Reviewed-on: https://boringssl-review.googlesource.com/1564 Reviewed-by: Adam Langley <agl@google.com>
2014-08-19Remove rsa_md5, md5, and sha1 fields from SSL_CTX.David Benjamin
Just use the normal API for them. Change-Id: Ibb5988611a86e8d39abda1e02087523d98defb51 Reviewed-on: https://boringssl-review.googlesource.com/1555 Reviewed-by: Adam Langley <agl@google.com>
2014-08-18Mark all SSL_CIPHERs as const.David Benjamin
This lets us put the SSL_CIPHER table in the data section. For type-checking, make STACK_OF(SSL_CIPHER) cast everything to const SSL_CIPHER*. Note that this will require some changes in consumers which weren't using a const SSL_CIPHER *. Change-Id: Iff734ac0e36f9e5c4a0f3c8411c7f727b820469c Reviewed-on: https://boringssl-review.googlesource.com/1541 Reviewed-by: Adam Langley <agl@google.com>
2014-08-18Remove default_timeout hook.David Benjamin
Of the remaining implementations left, ssl3_, dtls1_, and ssl23_, dtls1_ is redundant and can be folded into ssl3_. ssl23_ actually isn't; it sets 5 minutes rather than 2 hours. Two hours seems to be what everything else uses and seems a saner default. Most consumers seem to override it anyway (SSL_CTX_set_timeout). But it is a behavior change. The method is called at two points: - SSL_get_default_timeout - SSL_CTX_new Incidentally, the latter call actually makes the former never called internally and the value it returns a lie. SSL_get_default_timeout returns the default timeout of the /current/ method, but in ssl_get_new_session, the timeout is shadowed by session_timeout on the context. That is initialized when SSL_CTX_new is called. So, unless you go out of your way to SSL_CTX_set_timeout(0), it always overrides. (And it actually used to a difference because, for SSL23, the SSL_CTX's method is SSL23, but, when session creation happens, the SSL's method is the version-specific one.) Change-Id: I331d3fd69b726242b36492402717b6d0b521c6ee Reviewed-on: https://boringssl-review.googlesource.com/1521 Reviewed-by: Adam Langley <agl@google.com>
2014-08-14Add SSL_SESSION_get_version.Adam Langley
Android uses this and added it to their OpenSSL in https://android.googlesource.com/platform/external/openssl.git/+/master/patches/0003-jsse.patch Change-Id: Ib7985d51752ad8e7b75480513c3ab582a30f398a