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
path: root/ssl
AgeCommit message (Collapse)Author
2015-12-22Make MSVC happy.Adam Langley
The MSVC build is failing with: ssl\s3_srvr.c(1363) : warning C4701: potentially uninitialized local variable 'digest_len' used I don't believe that this warning is valid, but this change assigns a value to |digest_len| to fix the build. Change-Id: I20107a932bc16c880032cc1a57479b1a806aa8ea Reviewed-on: https://boringssl-review.googlesource.com/6821 Reviewed-by: Adam Langley <agl@google.com>
2015-12-22Rewrite ssl3_send_server_key_exchange to use CBB.David Benjamin
There is some messiness around saving and restoring the CBB, but this is still significantly clearer. Note that the BUF_MEM_grow line is gone in favor of a fixed CBB like the other functions ported thus far. This line was never necessary as init_buf is initialized to 16k and none of our key exchanges get that large. (The largest one can get is DHE_RSA. Even so, it'd take a roughly 30k-bit DH group with a 30k-bit RSA key.) Having such limits and tight assumptions on init_buf's initial size is poor (but on par for the old code which usually just blindly assumed the message would not get too large) and the size of the certificate chain is much less obviously bounded, so those BUF_MEM_grows can't easily go. My current plan is convert everything but those which legitimately need BUF_MEM_grow to CBB, then atomically convert the rest, remove init_buf, and switch everything to non-fixed CBBs. This will hopefully also simplify async resumption. In the meantime, having a story for resumption means the future atomic change is smaller and, more importantly, relieves some complexity budget in the ServerKeyExchange code for adding Curve25519. Change-Id: I1de6af9856caaed353453d92a502ba461a938fbd Reviewed-on: https://boringssl-review.googlesource.com/6770 Reviewed-by: Adam Langley <agl@google.com>
2015-12-22Add a -lldb flag to runner.go.David Benjamin
Apple these days ships lldb without gdb. Teach runner how to launch it too. Change-Id: I25f845f84f1c87872a9e3bc4b7fe3e7344e8c1f7 Reviewed-on: https://boringssl-review.googlesource.com/6769 Reviewed-by: Adam Langley <agl@google.com>
2015-12-22Remove other unnecessary BN_CTX allocations.David Benjamin
Functions which take a BN_CTX also accept NULL. Allocating a BN_CTX is only useful if doing multiple operations, which we aren't. Change-Id: Ib31113f214707cce6283e090ded0bf93ae5e7c12 Reviewed-on: https://boringssl-review.googlesource.com/6768 Reviewed-by: Adam Langley <agl@google.com>
2015-12-22Convert ssl3_send_client_key_exchange to CBB.David Benjamin
This relieves some complexity budget for adding Curve25519 to this code. This also adds a BN_bn2cbb_padded helper function since this seems to be a fairly common need. Change-Id: Ied0066fdaec9d02659abd6eb1a13f33502c9e198 Reviewed-on: https://boringssl-review.googlesource.com/6767 Reviewed-by: Adam Langley <agl@google.com>
2015-12-22Tidy up ssl3_get_server_key_exchange slightly.David Benjamin
Single-use BN_CTXs are unnecessary. Change-Id: I2d59aae2168e43937c5d527794c335ed2809d547 Reviewed-on: https://boringssl-review.googlesource.com/6766 Reviewed-by: Adam Langley <agl@google.com>
2015-12-22Check for EC_KEY_set_public_key error.David Benjamin
This function may fail on malloc error. Change-Id: I8631b1763dac5a3801fcaca81bdfcb8d24d3728c Reviewed-on: https://boringssl-review.googlesource.com/6765 Reviewed-by: Adam Langley <agl@google.com>
2015-12-22Simplify RSA key exchange padding check.David Benjamin
This check was fixed a while ago, but it could have been much simpler. In the RSA key exchange, the expected size of the output is known, making the padding check much simpler. There isn't any use in exporting the more general RSA_message_index_PKCS1_type_2. (Without knowing the expected size, any integrity check or swap to randomness or other mitigation is basically doomed to fail.) Verified with the valgrind uninitialized memory trick that we're still constant-time. Also update rsa.h to recommend against using the PKCS#1 v1.5 schemes. Thanks to Ryan Sleevi for the suggestion. Change-Id: I4328076b1d2e5e06617dd8907cdaa702635c2651 Reviewed-on: https://boringssl-review.googlesource.com/6613 Reviewed-by: Adam Langley <agl@google.com>
2015-12-17Implement draft-ietf-tls-chacha20-poly1305-04.David Benjamin
Only ECDHE-based ciphers are implemented. To ease the transition, the pre-standard cipher shares a name with the standard one. The cipher rule parser is hacked up to match the name to both ciphers. From the perspective of the cipher suite configuration language, there is only one cipher. This does mean it is impossible to disable the old variant without a code change, but this situation will be very short-lived, so this is fine. Also take this opportunity to make the CK and TXT names align with convention. Change-Id: Ie819819c55bce8ff58e533f1dbc8bef5af955c21 Reviewed-on: https://boringssl-review.googlesource.com/6686 Reviewed-by: Adam Langley <agl@google.com>
2015-12-17Implement draft-ietf-tls-chacha20-poly1305-04 in Go.David Benjamin
This will be used to test the C implementation against. Change-Id: I2d396d27630937ea610144e381518eae76f78dab Reviewed-on: https://boringssl-review.googlesource.com/6685 Reviewed-by: Adam Langley <agl@google.com>
2015-12-17Implement RFC 7539 in Go.David Benjamin
In preparation for a Go implementation of the new TLS ciphers to test against, implement the AEAD primitive. Change-Id: I69b5b51257c3de16bdd36912ed2bc9d91ac853c8 Reviewed-on: https://boringssl-review.googlesource.com/6684 Reviewed-by: Adam Langley <agl@google.com>
2015-12-17Rename the Go ChaCha20-Poly1305 implementation.David Benjamin
In preparation for implementing the RFC 7539 variant to test against. Change-Id: I0ce5e856906e00925ad1d849017f9e7fda087a8e Reviewed-on: https://boringssl-review.googlesource.com/6683 Reviewed-by: Adam Langley <agl@google.com>
2015-12-17Remove unreachable code to duplicate DH keys.David Benjamin
dh_tmp can only contain parameters, now that DHE always generates keys fresh for each connection. Change-Id: I56dad4cbec7e21326360d79df211031fd9734004 Reviewed-on: https://boringssl-review.googlesource.com/6702 Reviewed-by: Adam Langley <agl@google.com>
2015-12-17Make CBB_len relative to its argument.David Benjamin
Rather than the length of the top-level CBB, which is kind of odd when ASN.1 length prefixes are not yet determined, return the number of bytes written to the CBB so far. This can be computed without increasing the size of CBB at all. Have offset and pending_*. This means functions which take in a CBB as argument will not be sensitive to whether the CBB is a top-level or child CBB. The extensions logic had to be careful to only ever compare differences of lengths, which was awkward. The reversal will also allow for the following pattern in the future, once CBB_add_space is split into, say, CBB_reserve and CBB_did_write and we add a CBB_data: uint8_t *signature; size_t signature_len = 0; if (!CBB_add_asn1(out, &cert, CBB_ASN1_SEQUENCE) || /* Emit the TBSCertificate. */ !CBB_add_asn1(&cert, &tbs_cert, CBS_ASN1_SEQUENCE) || !CBB_add_tbs_cert_stuff(&tbs_cert, stuff) || !CBB_flush(&cert) || /* Feed it into md_ctx. */ !EVP_DigestSignInit(&md_ctx, NULL, EVP_sha256(), NULL, pkey) || !EVP_DigestSignUpdate(&md_ctx, CBB_data(&cert), CBB_len(&cert)) || /* Emit the signature algorithm. */ !CBB_add_asn1(&cert, &sig_alg, CBS_ASN1_SEQUENCE) || !CBB_add_sigalg_stuff(&sig_alg, other_stuff) || /* Emit the signature. */ !EVP_DigestSignFinal(&md_ctx, NULL, &signature_len) || !CBB_reserve(&cert, &signature, signature_len) || !EVP_DigestSignFinal(&md_ctx, signature, &signature_len) || !CBB_did_write(&cert, signature_len)) { goto err; } (Were TBSCertificate not the first field, we'd still have to sample CBB_len(&cert), but at least that's reasonable straight-forward. The alternative would be if CBB_data and CBB_len somehow worked on recently-invalidated CBBs, but that would go wrong once the invalidated CBB's parent flushed and possibly shifts everything.) And similar for signing ServerKeyExchange. Change-Id: I7761e492ae472d7632875b5666b6088970261b14 Reviewed-on: https://boringssl-review.googlesource.com/6681 Reviewed-by: Adam Langley <agl@google.com>
2015-12-16Remove a dead prototype.David Benjamin
Change-Id: I05cf52b31bd532505393e9a1ccae27f89f81f6f4 Reviewed-on: https://boringssl-review.googlesource.com/6680 Reviewed-by: Adam Langley <agl@google.com>
2015-12-16*_Update of length zero is legal.David Benjamin
We can slightly simplify tls1_P_hash. (Confirmed md32_common.h emits code with the check.) Change-Id: I0293ceaaee261a7ac775b42a639f7a9f67705456 Reviewed-on: https://boringssl-review.googlesource.com/6647 Reviewed-by: Adam Langley <agl@google.com>
2015-12-16Remove |need_record_splitting| from |SSL3_STATE|.David Benjamin
It is redundant given the other state in the connection. Change-Id: I5dc71627132659ab4316a5ea360c9ca480fb7c6c Reviewed-on: https://boringssl-review.googlesource.com/6646 Reviewed-by: Adam Langley <agl@google.com>
2015-12-16Slightly simplify SSL3_RECORD.David Benjamin
There's no need to track consumed bytes, so rr->data and rr->off may be merged together. Change-Id: I8842d005665ea8b4d4a0cced941f3373872cdac4 Reviewed-on: https://boringssl-review.googlesource.com/6644 Reviewed-by: Adam Langley <agl@google.com>
2015-12-16Pull ChangeCipherSpec into the handshake state machine.David Benjamin
This uses ssl3_read_bytes for now. We still need to dismantle that function and then invert the handshake state machine, but this gets things closer to the right shape as an intermediate step and is a large chunk in itself. It simplifies a lot of the CCS/handshake synchronization as a lot of the invariants much more clearly follow from the handshake itself. Tests need to be adjusted since this changes some error codes. Now all the CCS/Handshake checks fall through to the usual SSL_R_UNEXPECTED_RECORD codepath. Most of what used to be a special-case falls out naturally. (If half of Finished was in the same record as the pre-CCS message, that part of the handshake record would have been left unconsumed, so read_change_cipher_spec would have noticed, just like read_app_data would have noticed.) Change-Id: I15c7501afe523d5062f0e24a3b65f053008d87be Reviewed-on: https://boringssl-review.googlesource.com/6642 Reviewed-by: Adam Langley <agl@google.com>
2015-12-16Simplify fragmented HelloRequest state.David Benjamin
With server-side renegotiation gone, handshake_fragment's only purpose in life is to handle a fragmented HelloRequest (we probably do need to support those if some server does 1/n-1 record-splitting on handshake records). The logic to route the data into ssl3_read_bytes(SSL3_RT_HANDSHAKE) never happens, and the contents are always a HelloRequest prefix. This also trims a tiny bit of per-connection state. Change-Id: Ia1b0dda5b7e79d817c28da1478640977891ebc97 Reviewed-on: https://boringssl-review.googlesource.com/6641 Reviewed-by: Adam Langley <agl@google.com>
2015-12-16Add tests for malformed HelloRequests.David Benjamin
Change-Id: Iff053022c7ffe5b01c0daf95726cc7d49c33cbd6 Reviewed-on: https://boringssl-review.googlesource.com/6640 Reviewed-by: Adam Langley <agl@google.com>
2015-12-16Add tests for bad ChangeCipherSpecs.David Benjamin
Change-Id: I7eac3582b7b23b5da95be68277609cfa63195b02 Reviewed-on: https://boringssl-review.googlesource.com/6629 Reviewed-by: Adam Langley <agl@google.com>
2015-12-16Fix flaky BadRSAClientKeyExchange-1 test.David Benjamin
Sometimes BadRSAClientKeyExchange-1 fails with DATA_TOO_LARGE_FOR_MODULUS if the corruption brings the ciphertext above the RSA modulus. Ensure this does not happen. Change-Id: I0d8ea6887dfcab946fdf5d38f5b196f5a927c4a9 Reviewed-on: https://boringssl-review.googlesource.com/6731 Reviewed-by: Adam Langley <agl@google.com>
2015-12-16Remove unused functions.David Benjamin
Change-Id: I48d6db3b2e521c726962c291cce7baa029e09623 Reviewed-on: https://boringssl-review.googlesource.com/6627 Reviewed-by: Adam Langley <agl@google.com>
2015-12-16Remove the CRYPTO_EX_new callback.David Benjamin
This callback is never used. The one caller I've ever seen is in Android code which isn't built with BoringSSL and it was a no-op. It also doesn't actually make much sense. A callback cannot reasonably assume that it sees every, say, SSL_CTX created because the index may be registered after the first SSL_CTX is created. Nor is there any point in an EX_DATA consumer in one file knowing about an SSL_CTX created in completely unrelated code. Replace all the pointers with a typedef to int*. This will ensure code which passes NULL or 0 continues to compile while breaking code which passes an actual function. This simplifies some object creation functions which now needn't worry about CRYPTO_new_ex_data failing. (Also avoids bouncing on the lock, but it's taking a read lock, so this doesn't really matter.) BUG=391192 Change-Id: I02893883c6fa8693682075b7b130aa538a0a1437 Reviewed-on: https://boringssl-review.googlesource.com/6625 Reviewed-by: Adam Langley <agl@google.com>
2015-12-15Get struct timeval from sys/time.h.David Benjamin
The naclports patch switches sys/types.h to sys/time.h. Per http://pubs.opengroup.org/onlinepubs/009604499/basedefs/sys/time.h.html this is correct. Change-Id: If6d56cb28fa16a1d8b4515a45532434f6c23a29d Reviewed-on: https://boringssl-review.googlesource.com/6624 Reviewed-by: Adam Langley <agl@google.com>
2015-12-15Make SSL_(CTX_)?set_tmp_ecdh call SSL_(CTX_)?set1_curves.David Benjamin
Then deprecate the old functions. Thanks to upstream's 6977e8ee4a718a76351ba5275a9f0be4e530eab5 for the idea. Change-Id: I916abd6fca2a3b2a439ec9902d9779707f7e41eb Reviewed-on: https://boringssl-review.googlesource.com/6622 Reviewed-by: Adam Langley <agl@google.com>
2015-12-15Remove SSL_(CTX_)?set_ecdh_callback.David Benjamin
It has no callers. I prepped for its removal earlier with https://android.googlesource.com/platform/external/conscrypt/+/c05697c2c50fe1331f08c6f32d0bc9636eecdc2d and then completely forgot. Thanks to upstream's 6f78b9e824c053d062188578635c575017b587c5 for the reminder. Quoth them: > This only gets used to set a specific curve without actually checking > that the peer supports it or not and can therefor result in handshake > failures that can be avoided by selecting a different cipher. It's also a very confusing API since it does NOT pass ownership of the EC_KEY to the caller. Change-Id: I6a00643b3a2d6746e9e0e228b47c2bc9694b0084 Reviewed-on: https://boringssl-review.googlesource.com/6621 Reviewed-by: Adam Langley <agl@google.com>
2015-12-15Add slightly better RSA key exchange tests.David Benjamin
Cover not just the wrong version, but also other mistakes. Change-Id: I46f05a9a37b7e325adc19084d315a415777d3a46 Reviewed-on: https://boringssl-review.googlesource.com/6610 Reviewed-by: Adam Langley <agl@google.com>
2015-12-15Remove weird ret negation logic.David Benjamin
This is a remnant of ssl3_get_client_hello's old DTLS cookie logic, which has since been removed. (If we ever need HelloVerifyRequest support on the server, we'll implement something stateless in front.) We can switch this to something more straightforward now. See also upstream's 94f98a9019e1c0a3be4ca904b2c27c7af3d937c0, Change-Id: Ie733030209a381a4915d6744fa12a79ffe972fa5 Reviewed-on: https://boringssl-review.googlesource.com/6601 Reviewed-by: Adam Langley <agl@google.com>
2015-12-15Remove SSL_OP_LEGACY_SERVER_CONNECT.David Benjamin
I don't think we're ever going to manage to enforce this, and it doesn't seem worth the trouble. We don't support application protocols which use renegotiation outside of the HTTP/1.1 mid-stream client auth hack. There, it's on the server to reject legacy renegotiations. This removes the last of SSL_OP_ALL. Change-Id: I996fdeaabf175b6facb4f687436549c0d3bb0042 Reviewed-on: https://boringssl-review.googlesource.com/6580 Reviewed-by: Adam Langley <agl@google.com>
2015-12-15Tighten SSL_OP_LEGACY_SERVER_CONNECT to align with RFC 5746.David Benjamin
RFC 5746 forbids a server from downgrading or upgrading renegotiation_info support. Even with SSL_OP_LEGACY_SERVER_CONNECT set (the default), we can still enforce a few things. I do not believe this has practical consequences. The attack variant where the server half is prefixed does not involve a renegotiation on the client. The converse where the client sees the renegotiation and prefix does, but we only support renego for the mid-stream HTTP/1.1 client auth hack, which doesn't do this. (And with triple-handshake, HTTPS clients should be requiring the certificate be unchanged across renego which makes this moot.) Ultimately, an application which makes the mistake of using renegotiation needs to be aware of what exactly that means and how to handle connection state changing mid-stream. We make renego opt-in now, so this is a tenable requirement. (Also the legacy -> secure direction would have been caught by the server anyway since we send a non-empty RI extension.) Change-Id: I915965c342f8a9cf3a4b6b32f0a87a00c3df3559 Reviewed-on: https://boringssl-review.googlesource.com/6559 Reviewed-by: Adam Langley <agl@google.com>
2015-12-15Remove SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER.David Benjamin
This dates to SSLeay 0.8.0 (or earlier). The use counter sees virtually no hits. Change-Id: Iff4c8899d5cb0ba4afca113c66d15f1d980ffe41 Reviewed-on: https://boringssl-review.googlesource.com/6558 Reviewed-by: Adam Langley <agl@google.com>
2015-12-15Remove SSL_OP_TLS_D5_BUG.David Benjamin
This dates to SSLeay 0.9.0. The Internet seems to have completely forgotten what "D5" is. (I can't find reference to it beyond documentation of this quirk.) The use counter we added sees virtually no hits. Change-Id: I9781d401acb98ce3790b1b165fc257a6f5e9b155 Reviewed-on: https://boringssl-review.googlesource.com/6557 Reviewed-by: Adam Langley <agl@google.com>
2015-12-15Add a comment in SetTestState from bssl_shim.David Benjamin
Per Nico's comment in https://boringssl-review.googlesource.com/#/c/3342/3/ssl/test/bssl_shim.cc. Also remove unnecessary cast and change the variable name to |state|. |async| is a remnant from when it was |AsyncState| rather than |TestState|. Change-Id: I83f23593b0c4e64b0ddd056573f75c0aabe96f9e Reviewed-on: https://boringssl-review.googlesource.com/6555 Reviewed-by: Adam Langley <agl@google.com>
2015-12-15Include <sys/time.h> in packeted_bio.h for 'timeval'Sam Clegg
At least for newlib (Native Client) including sys/types.h is not enough to get a timeval declaration. Change-Id: I4971a1aacc80b6fdc12c0e81c5d8007ed13eb8b7 Reviewed-on: https://boringssl-review.googlesource.com/6722 Reviewed-by: Adam Langley <agl@google.com>
2015-12-11Add defines for SRTP profiles using GCM ciphers from RFC 7714.Joachim Bauch
BUG=webrtc:5222 Change-Id: I8399bd595564dedbe5492b8ea6eb915f41367cbf Reviewed-on: https://boringssl-review.googlesource.com/6690 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: David Benjamin <davidben@google.com>
2015-12-01Work around yaSSL bug.Adam Langley
yaSSL has a couple of bugs in their DH client implementation. This change works around the worst of the two. Firstly, they expect the the DH public value to be the same length as the prime. This change pads the public value as needed to ensure this. Secondly, although they handle the first byte of the shared key being zero, they don't handle the case of the second, third, etc bytes being zero. So whenever that happens the handshake fails. I don't think that there's anything that we can do about that one. Change-Id: I789c9e5739f19449473305d59fe5c3fb9b4a6167 Reviewed-on: https://boringssl-review.googlesource.com/6578 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2015-11-21Add get0 getters for EVP_PKEY.David Benjamin
Right now your options are: - Bounce on a reference and deal with cleanup needlessly. - Manually check the type tag and peek into the union. We probably have no hope of opaquifying this struct, but for new code, let's recommend using this function rather than the more error-prone thing. Change-Id: I9b39ff95fe4264a3f7d1e0d2894db337aa968f6c Reviewed-on: https://boringssl-review.googlesource.com/6551 Reviewed-by: Adam Langley <agl@google.com>
2015-11-19Reformat the cipher suite table.David Benjamin
clang-format packing them tightly made newlines inconsistent which wasn't very helpful. Change-Id: I46a787862ed1f5b0eee101394e24c779b6bc652b Reviewed-on: https://boringssl-review.googlesource.com/6517 Reviewed-by: Adam Langley <agl@google.com>
2015-11-19Remove strength_bits.David Benjamin
Trim the cipher table further. Those values are entirely determined by algorithm_enc. Change-Id: I355c245b0663e41e54e62d15903a4a9a667b4ffe Reviewed-on: https://boringssl-review.googlesource.com/6516 Reviewed-by: Adam Langley <agl@google.com>
2015-11-19Remove algo_strength.David Benjamin
FIPS is the same as HIGH (but for CHACHA20), so those are redundant. Likewise, MEDIUM vs HIGH was just RC4. Remove those in favor of redefining those legacy rules to mean this. One less field to keep track of in each cipher. Change-Id: I2b2489cffb9e16efb0ac7d7290c173cac061432a Reviewed-on: https://boringssl-review.googlesource.com/6515 Reviewed-by: Adam Langley <agl@google.com>
2015-11-19Remove algorithm_ssl.David Benjamin
It's redundant with other cipher properties. We can express these in code. Cipher rule matching gets a little bit complicated due to the confusing legacy protocol version cipher rules, so add some tests for it. (It's really hard to grep for uses of them, so I've kept them working to be safe.) Change-Id: Ic6b3fcd55d76d4a51b31bf7ae629a2da50a7450e Reviewed-on: https://boringssl-review.googlesource.com/6453 Reviewed-by: Adam Langley <agl@google.com>
2015-11-19Switch the keylog BIO to a callback.David Benjamin
The keylog BIO is internally synchronized by the SSL_CTX lock, but an application may wish to log keys from multiple SSL_CTXs. This is in preparation for switching Chromium to use a separate SSL_CTX per profile to more naturally split up the session caches. It will also be useful for routing up SSLKEYLOGFILE in WebRTC. There, each log line must be converted to an IPC up from the renderer processes. This will require changes in Chromium when we roll BoringSSL. BUG=458365,webrtc:4417 Change-Id: I2945bdb4def0a9c36e751eab3d5b06c330d66b54 Reviewed-on: https://boringssl-review.googlesource.com/6514 Reviewed-by: Adam Langley <agl@google.com>
2015-11-17Add SSL_CIPHER_is_AES[128|256]CBC.Adam Langley
Change-Id: I3072f884be77b8646e90d316154b96448f0cf2a1 Reviewed-on: https://boringssl-review.googlesource.com/6520 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2015-11-17size_t SSL*_use_*_ASN1.David Benjamin
So long as we're not getting rid of them (the certificate variants may be useful when we decouple from crypto/x509 anyway), get the types and bounds checks right. Also reject trailing data and require the input be a single element. Note: this is a slight compatibility risk, but we did it for SSL*_use_RSAPrivateKey_ASN1 previously and I think it's probably worth seeing if anything breaks here. Change-Id: I64fa3fc6249021ccf59584d68e56ff424a190082 Reviewed-on: https://boringssl-review.googlesource.com/6490 Reviewed-by: Adam Langley <agl@google.com>
2015-11-17Fix ssl3_send_server_key_exchange error path.David Benjamin
This codepath should not actually be reachable, unless maybe the caller is doing something really dumb. (Unconfiguring the key partway through the connection.) Change-Id: Ic8e0cfc3c426439016370f9a85be9c05509358f1 Reviewed-on: https://boringssl-review.googlesource.com/6483 Reviewed-by: Adam Langley <agl@google.com>
2015-11-17Reset epoch state in one place.David Benjamin
TLS resets it in t1_enc.c while DTLS has it sprinkled everywhere. Change-Id: I78f0f0e646b4dc82a1058199c4b00f2e917aa5bc Reviewed-on: https://boringssl-review.googlesource.com/6511 Reviewed-by: Adam Langley <agl@google.com>
2015-11-17Check for overflow when parsing a CBS with d2i_*.David Benjamin
Until we've done away with the d2i_* stack completely, boundaries need to be mindful of the type mismatch. d2i_* takes a long, not a size_t. Change-Id: If02f9ca2cfde02d0929ac18275d09bf5df400f3a Reviewed-on: https://boringssl-review.googlesource.com/6491 Reviewed-by: Adam Langley <agl@google.com>
2015-11-12Become partially -Wmissing-variable-declarations-clean.David Benjamin
There's a few things that will be kind of a nuisance and possibly not worth it (crypto/asn1 dumps a lot of undeclared things, etc.). But it caught some mistakes. Even without the warning, making sure to include the externs before defining a function helps catch type mismatches. Change-Id: I3dab282aaba6023e7cebc94ed7a767a5d7446b08 Reviewed-on: https://boringssl-review.googlesource.com/6484 Reviewed-by: Adam Langley <agl@google.com>