boringssl/include/openssl
David Benjamin daf207a52a Don't use the buffer BIO in TLS.
On the TLS side, we introduce a running buffer of ciphertext. Queuing up
pending data consists of encrypting the record into the buffer. This
effectively reimplements what the buffer BIO was doing previously, but
this resizes to fit the whole flight.

As part of this, rename all the functions to add to the pending flight
to be more uniform. This CL proposes "add_foo" to add to the pending
flight and "flush_flight" to drain it.

We add an add_alert hook for alerts but, for now, only the SSL 3.0
warning alert (sent mid-handshake) uses this mechanism.  Later work will
push this down to the rest of the write path so closure alerts use it
too, as in DTLS. The intended end state is that all the ssl_buffer.c and
wpend_ret logic will only be used for application data and eventually
optionally replaced by the in-place API, while all "incidental" data
will be handled internally.

For now, the two buffers are mutually exclusive. Moving closure alerts
to "incidentals" will change this, but flushing application data early
is tricky due to wpend_ret. (If we call ssl_write_buffer_flush,
do_ssl3_write doesn't realize it still has a wpend_ret to replay.) That
too is all left alone in this change.

To keep the diff down, write_message is retained for now and will be
removed from the state machines in a follow-up change.

BUG=72

Change-Id: Ibce882f5f7196880648f25d5005322ca4055c71d
Reviewed-on: https://boringssl-review.googlesource.com/13224
Reviewed-by: Adam Langley <agl@google.com>
2017-01-25 23:35:47 +00:00
..
aead.h Remove old ChaCha20-Poly1305 AEAD. 2017-01-19 23:27:54 +00:00
aes.h Replace keywrap AEADs with upstream's APIs. 2016-10-04 01:37:31 +00:00
arm_arch.h
asn1_mac.h Purge the remainder of asn1_mac.h. 2016-08-03 21:37:31 +00:00
asn1.h Add d2i_X509_from_buffer. 2016-11-01 23:06:43 +00:00
asn1t.h Remove ASN.1 print hooks. 2016-06-14 17:38:31 +00:00
base64.h Replace base64 decoding. 2016-05-26 17:59:10 +00:00
base.h Add support for Fuchsia in crypto/rand. 2017-01-13 21:47:11 +00:00
bio.h Spellcheck our public headers. 2017-01-12 18:24:27 +00:00
blowfish.h
bn.h Spellcheck our public headers. 2017-01-12 18:24:27 +00:00
buf.h Fold stack-allocated types into headers. 2016-09-07 21:50:05 +00:00
buffer.h
bytestring.h Add CBS functions for working with BIT STRINGs. 2016-12-14 17:25:30 +00:00
cast.h
chacha.h Require in == out for in-place encryption. 2016-06-09 19:49:03 +00:00
cipher.h Spellcheck our public headers. 2017-01-12 18:24:27 +00:00
cmac.h Fold stack-allocated types into headers. 2016-09-07 21:50:05 +00:00
conf.h Spellcheck our public headers. 2017-01-12 18:24:27 +00:00
cpu.h Add PPC64LE assembly for AES-GCM. 2016-09-27 18:43:20 +00:00
crypto.h Add no-op function ENGINE_register_all_complete. 2016-07-12 17:54:41 +00:00
curve25519.h Add yet another way to spell 32. 2016-12-12 21:39:34 +00:00
des.h
dh.h Fold stack-allocated types into headers. 2016-09-07 21:50:05 +00:00
digest.h Spellcheck our public headers. 2017-01-12 18:24:27 +00:00
dsa.h Spellcheck our public headers. 2017-01-12 18:24:27 +00:00
dtls1.h
ec_key.h Fold stack-allocated types into headers. 2016-09-07 21:50:05 +00:00
ec.h Fix a couple of missing spaces in comments. 2017-01-12 18:35:25 +00:00
ecdh.h Const-correct ECDH_compute_key. 2016-10-09 17:53:19 +00:00
ecdsa.h Spellcheck our public headers. 2017-01-12 18:24:27 +00:00
engine.h Fold stack-allocated types into headers. 2016-09-07 21:50:05 +00:00
err.h Spellcheck our public headers. 2017-01-12 18:24:27 +00:00
evp.h Spellcheck our public headers. 2017-01-12 18:24:27 +00:00
ex_data.h
hkdf.h Const-correct HKDF_expand. 2016-07-16 07:55:19 +00:00
hmac.h Fold stack-allocated types into headers. 2016-09-07 21:50:05 +00:00
lhash_macros.h Add CRYPTO_BUFFER and CRYPTO_BUFFER_POOL. 2016-10-27 22:55:55 +00:00
lhash.h Remove lh_new's default hash and comparator. 2017-01-04 01:44:10 +00:00
md4.h
md5.h
mem.h Fold stack-allocated types into headers. 2016-09-07 21:50:05 +00:00
nid.h Reimplement objects.pl in Go. 2016-12-21 22:14:13 +00:00
obj_mac.h Rename obj_mac.h to nid.h and make it a multiply-includable header. 2016-03-31 20:45:35 +00:00
obj.h Spellcheck our public headers. 2017-01-12 18:24:27 +00:00
objects.h
opensslconf.h
opensslv.h
ossl_typ.h
pem.h Include crypto.h from pem.h. 2016-05-20 15:31:26 +00:00
pkcs7.h
pkcs8.h Const-correct the PKCS8 salt parameter. 2017-01-10 23:42:10 +00:00
pkcs12.h
poly1305.h Revert "Enable upstream's Poly1305 code." 2016-03-29 22:47:11 +00:00
pool.h Fix a couple of missing spaces in comments. 2017-01-12 18:35:25 +00:00
rand.h Add corpora for fuzzers with fuzzer mode disabled. 2016-11-09 16:53:37 +00:00
rc4.h
ripemd.h
rsa.h Spellcheck our public headers. 2017-01-12 18:24:27 +00:00
safestack.h
sha.h Remove SHA_LBLOCK and SHA_LONG. 2017-01-25 23:30:13 +00:00
srtp.h
ssl3.h Emulate the client_cert_cb with cert_cb. 2016-12-12 21:58:24 +00:00
ssl.h Don't use the buffer BIO in TLS. 2017-01-25 23:35:47 +00:00
stack_macros.h Add STACK_OF(CRYPTO_BUFFER). 2016-11-09 01:00:09 +00:00
stack.h Add STACK_OF(CRYPTO_BUFFER). 2016-11-09 01:00:09 +00:00
thread.h Add missing 'does nothing' comments for consistency. 2016-06-28 20:40:45 +00:00
time_support.h
tls1.h Remove old ChaCha20-Poly1305 AEAD. 2017-01-19 23:27:54 +00:00
type_check.h Get OPENSSL_COMPILE_ASSERT working in function bodies. 2017-01-24 21:30:33 +00:00
x509_vfy.h Add |X509_STORE_set0_additional_untrusted|. 2016-12-21 00:20:43 +00:00
x509.h Unexport PKCS5 functions. 2017-01-10 23:41:44 +00:00
x509v3.h Fix up macros. 2016-10-18 18:28:23 +00:00