)]}'
{
  "commit": "b8d28cf532e6dde3d5684ededb3878b05e692e00",
  "tree": "6b622ac4f0c212105fb6e1b261ef50032439dc6b",
  "parents": [
    "e0004721665f099b13ae035fe563fba6c013c6da"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@chromium.org",
    "time": "Tue Jul 28 21:34:45 2015 -0400"
  },
  "committer": {
    "name": "Adam Langley",
    "email": "agl@google.com",
    "time": "Fri Aug 28 22:01:02 2015 +0000"
  },
  "message": "Factor out the buffering and low-level record code.\n\nThis begins decoupling the transport from the SSL state machine. The buffering\nlogic is hidden behind an opaque API. Fields like ssl-\u003epacket and\nssl-\u003epacket_length are gone.\n\nssl3_get_record and dtls1_get_record now call low-level tls_open_record and\ndtls_open_record functions that unpack a single record independent of who owns\nthe buffer. Both may be called in-place. This removes ssl-\u003erstate which was\nredundant with the buffer length.\n\nFuture work will push the buffer up the stack until it is above the handshake.\nThen we can expose SSL_open and SSL_seal APIs which act like *_open_record but\nreturn a slightly larger enum due to other events being possible. Likewise the\nhandshake state machine will be detached from its buffer. The existing\nSSL_read, SSL_write, etc., APIs will be implemented on top of SSL_open, etc.,\ncombined with ssl_read_buffer_* and ssl_write_buffer_*. (Which is why\nssl_read_buffer_extend still tries to abstract between TLS\u0027s and DTLS\u0027s fairly\ndifferent needs.)\n\nThe new buffering logic does not support read-ahead (removed previously) since\nit lacks a memmove on ssl_read_buffer_discard for TLS, but this could be added\nif desired. The old buffering logic wasn\u0027t quite right anyway; it tried to\navoid the memmove in some cases and could get stuck too far into the buffer and\nnot accept records. (The only time the memmove is optional is in DTLS or if\nenough of the record header is available to know that the entire next record\nwould fit in the buffer.)\n\nThe new logic also now actually decrypts the ciphertext in-place again, rather\nthan almost in-place when there\u0027s an explicit nonce/IV. (That accidentally\nswitched in https://boringssl-review.googlesource.com/#/c/4792/; see\n3d59e04bce96474099ba76786a2337e99ae14505.)\n\nBUG\u003d468889\n\nChange-Id: I403c1626253c46897f47c7ae93aeab1064b767b2\nReviewed-on: https://boringssl-review.googlesource.com/5715\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b8caedd5fb19de1333c76cefd90678f2c44cef58",
      "old_mode": 33188,
      "old_path": "crypto/bytestring/cbs.c",
      "new_id": "c0fb67732ee54a38e97d674592f7d1374b1973aa",
      "new_mode": 33188,
      "new_path": "crypto/bytestring/cbs.c"
    },
    {
      "type": "modify",
      "old_id": "4fceeaabc86f7477b252e6b6cd1636696b8a93ab",
      "old_mode": 33188,
      "old_path": "include/openssl/bytestring.h",
      "new_id": "f6db950dcc0fe8c5b80ee57d6ed2ba038d18d23f",
      "new_mode": 33188,
      "new_path": "include/openssl/bytestring.h"
    },
    {
      "type": "modify",
      "old_id": "d6e352ed3fcee4cc950c0619ef6234850d094707",
      "old_mode": 33188,
      "old_path": "include/openssl/ssl.h",
      "new_id": "50fe9bdf7ae38807be0e6b8f673fa1277283304f",
      "new_mode": 33188,
      "new_path": "include/openssl/ssl.h"
    },
    {
      "type": "modify",
      "old_id": "7ff8dbdd0fd522fa10efe814d84f4cf7d1406c09",
      "old_mode": 33188,
      "old_path": "include/openssl/ssl3.h",
      "new_id": "e04412f719ace68de42c90259dc396431b2e46f7",
      "new_mode": 33188,
      "new_path": "include/openssl/ssl3.h"
    },
    {
      "type": "modify",
      "old_id": "856a5afb6ff37c1d4b68e04a04e605c310628ad7",
      "old_mode": 33188,
      "old_path": "ssl/CMakeLists.txt",
      "new_id": "b2fb0667a00f10b8dd73df06e9e9d3a619cec3f0",
      "new_mode": 33188,
      "new_path": "ssl/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "308d69593c3e33b02a537870e6e28d0a5feff9ec",
      "old_mode": 33188,
      "old_path": "ssl/d1_pkt.c",
      "new_id": "6681490efcd01d8b9e6eeca0693849048e91a343",
      "new_mode": 33188,
      "new_path": "ssl/d1_pkt.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d3e3192b1ce6c2402c3dd2e7659c6d36d3e8e6e6",
      "new_mode": 33188,
      "new_path": "ssl/dtls_record.c"
    },
    {
      "type": "modify",
      "old_id": "6781e26da8270631a99d2606c3d81dd83c8d809f",
      "old_mode": 33188,
      "old_path": "ssl/internal.h",
      "new_id": "8dc30688b1347b48217917b054539cdd5071dfeb",
      "new_mode": 33188,
      "new_path": "ssl/internal.h"
    },
    {
      "type": "modify",
      "old_id": "7580016be8d0a9786ffa272f67d2ecba29a7d6b4",
      "old_mode": 33188,
      "old_path": "ssl/s3_both.c",
      "new_id": "0978a5d139a43705c10890b7c2d9883ab371b4cb",
      "new_mode": 33188,
      "new_path": "ssl/s3_both.c"
    },
    {
      "type": "modify",
      "old_id": "52b75d2124d0be2cf6d9c2638962d488fa1872ac",
      "old_mode": 33188,
      "old_path": "ssl/s3_lib.c",
      "new_id": "22e7990752162a943acf45f69b8e5e5729a538d1",
      "new_mode": 33188,
      "new_path": "ssl/s3_lib.c"
    },
    {
      "type": "modify",
      "old_id": "c1dfb91f8e898ef7dfccecacd7483834a6f3bd09",
      "old_mode": 33188,
      "old_path": "ssl/s3_pkt.c",
      "new_id": "5bddf9809c75a25e00754fe184cc10d42601490c",
      "new_mode": 33188,
      "new_path": "ssl/s3_pkt.c"
    },
    {
      "type": "modify",
      "old_id": "5a46abc87ae8c1e25416113fa2260b1efa0602c7",
      "old_mode": 33188,
      "old_path": "ssl/s3_srvr.c",
      "new_id": "b5fa946a7d3454e7b14236dcb6745486a2466cd9",
      "new_mode": 33188,
      "new_path": "ssl/s3_srvr.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "37f27be7a1c6dfff163bbb032b0faf116c29f9a2",
      "new_mode": 33188,
      "new_path": "ssl/ssl_buffer.c"
    },
    {
      "type": "modify",
      "old_id": "551cc528d9d15abe78b9f178e884aac909052a89",
      "old_mode": 33188,
      "old_path": "ssl/ssl_cipher.c",
      "new_id": "976c60252aae8333d0ec5ae0f64275c7b4e376fd",
      "new_mode": 33188,
      "new_path": "ssl/ssl_cipher.c"
    },
    {
      "type": "modify",
      "old_id": "5e322d92d7acc3f7e70170d52332c901e034bb4c",
      "old_mode": 33188,
      "old_path": "ssl/ssl_lib.c",
      "new_id": "2964c37fcad531e5339c1e6955006ca6bf00fc78",
      "new_mode": 33188,
      "new_path": "ssl/ssl_lib.c"
    },
    {
      "type": "modify",
      "old_id": "065e0a7377c8068a13c5c5dbc9ac9726a09ae4da",
      "old_mode": 33188,
      "old_path": "ssl/ssl_stat.c",
      "new_id": "d5feb5d8225cb5b408c706199b3f3039fe90eefa",
      "new_mode": 33188,
      "new_path": "ssl/ssl_stat.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ae754952fc448dc06379011a189a874beb1a8acb",
      "new_mode": 33188,
      "new_path": "ssl/tls_record.c"
    }
  ]
}
