)]}'
{
  "commit": "4fa52141b08fca89250805afcf2f112a2e0d3500",
  "tree": "ab8988a8267c6032f6a8b48846d12fb907930b3b",
  "parents": [
    "57ce7b617c602ae8513c22daa2bda31f179edb0f"
  ],
  "author": {
    "name": "Viktor Dukhovni",
    "email": "openssl-users@dukhovni.org",
    "time": "Tue Dec 29 03:24:17 2015 -0500"
  },
  "committer": {
    "name": "Viktor Dukhovni",
    "email": "openssl-users@dukhovni.org",
    "time": "Sat Jan 02 10:49:06 2016 -0500"
  },
  "message": "Protocol version selection and negotiation rewrite\n\nThe protocol selection code is now consolidated in a few consecutive\nshort functions in a single file and is table driven.  Protocol-specific\nconstraints that influence negotiation are moved into the flags\nfield of the method structure.  The same protocol version constraints\nare now applied in all code paths.  It is now much easier to add\nnew protocol versions without reworking the protocol selection\nlogic.\n\nIn the presence of \"holes\" in the list of enabled client protocols\nwe no longer select client protocols below the hole based on a\nsubset of the constraints and then fail shortly after when it is\nfound that these don\u0027t meet the remaining constraints (suiteb, FIPS,\nsecurity level, ...).  Ideally, with the new min/max controls users\nwill be less likely to create \"holes\" in the first place.\n\nReviewed-by: Kurt Roeckx \u003ckurt@openssl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b0331b25941254f970577c822f7da2fcd8b86b06",
      "old_mode": 33188,
      "old_path": "CHANGES",
      "new_id": "b4cc2d4c93e1c8db7cacda042d07b7d9f7f3adcd",
      "new_mode": 33188,
      "new_path": "CHANGES"
    },
    {
      "type": "modify",
      "old_id": "a0d66fa0c44a72dc722461c8e07dc8c7a4ba986a",
      "old_mode": 33188,
      "old_path": "include/openssl/ssl.h",
      "new_id": "0d22ab7716355b28d644464e20f3aae9fc91bcd3",
      "new_mode": 33188,
      "new_path": "include/openssl/ssl.h"
    },
    {
      "type": "modify",
      "old_id": "a510b5bebe6e234f7e079d81b35ab16436e38a88",
      "old_mode": 33188,
      "old_path": "ssl/d1_lib.c",
      "new_id": "3cd4b786e45e1951c475bf324abf4613bd343a0d",
      "new_mode": 33188,
      "new_path": "ssl/d1_lib.c"
    },
    {
      "type": "modify",
      "old_id": "ef20c9ca3e021f962db248d3acf0d230e8f2656d",
      "old_mode": 33188,
      "old_path": "ssl/methods.c",
      "new_id": "7a8bb11b7772588eca70e961c6ef6e0bb0b8cc7c",
      "new_mode": 33188,
      "new_path": "ssl/methods.c"
    },
    {
      "type": "modify",
      "old_id": "e3e4fd34f8b3dbc5176bed6e2500d3e7feb207a8",
      "old_mode": 33188,
      "old_path": "ssl/s3_lib.c",
      "new_id": "d307ec05d6c4e3941d3b153e11ffc3d9d2a42417",
      "new_mode": 33188,
      "new_path": "ssl/s3_lib.c"
    },
    {
      "type": "modify",
      "old_id": "f01d3a783505d6a71e728d8253f797caed795e20",
      "old_mode": 33188,
      "old_path": "ssl/ssl_cert.c",
      "new_id": "597de0ad6c08592a7e9f2d4c68d6e9f719275770",
      "new_mode": 33188,
      "new_path": "ssl/ssl_cert.c"
    },
    {
      "type": "modify",
      "old_id": "65a5bb6c968cbb886adfed9e59a2c9b97652e4b8",
      "old_mode": 33188,
      "old_path": "ssl/ssl_ciph.c",
      "new_id": "a15248d41bdc19841203d5a3816469fd81801055",
      "new_mode": 33188,
      "new_path": "ssl/ssl_ciph.c"
    },
    {
      "type": "modify",
      "old_id": "1e14a4497e89d10b129002c18833c28465bd6a12",
      "old_mode": 33188,
      "old_path": "ssl/ssl_conf.c",
      "new_id": "9529d30842cc10b60b7d3e09fd91b4e841433b25",
      "new_mode": 33188,
      "new_path": "ssl/ssl_conf.c"
    },
    {
      "type": "modify",
      "old_id": "0c40b7b3ec08d1ef0a46fdea2223ca0644e29457",
      "old_mode": 33188,
      "old_path": "ssl/ssl_err.c",
      "new_id": "d9dbf99391ba4ba9846220a7bad5b9fbeedf9319",
      "new_mode": 33188,
      "new_path": "ssl/ssl_err.c"
    },
    {
      "type": "modify",
      "old_id": "cfc73de9cab84c3f84c841e66a835fcdd41c2762",
      "old_mode": 33188,
      "old_path": "ssl/ssl_lib.c",
      "new_id": "760014d739eed93f874160e68832205d451919a5",
      "new_mode": 33188,
      "new_path": "ssl/ssl_lib.c"
    },
    {
      "type": "modify",
      "old_id": "9482fc91add5d59a25621445ff03a8bee4576447",
      "old_mode": 33188,
      "old_path": "ssl/ssl_locl.h",
      "new_id": "7e07297f2f5146b14983b575cbe65fce9c5dfa60",
      "new_mode": 33188,
      "new_path": "ssl/ssl_locl.h"
    },
    {
      "type": "modify",
      "old_id": "bc3fc54fabf3b86ec115ff779e131f722db7236e",
      "old_mode": 33188,
      "old_path": "ssl/statem/statem.c",
      "new_id": "a03fe32083205b2e84867f3b5b2c362821389c3d",
      "new_mode": 33188,
      "new_path": "ssl/statem/statem.c"
    },
    {
      "type": "modify",
      "old_id": "26acdc548827a1f3829470f19102807f0d3d94c3",
      "old_mode": 33188,
      "old_path": "ssl/statem/statem_clnt.c",
      "new_id": "cfbfa5f8c3d33d67ef01f437f1a23297963880cd",
      "new_mode": 33188,
      "new_path": "ssl/statem/statem_clnt.c"
    },
    {
      "type": "modify",
      "old_id": "86d200f0b2d11b37dcfb488567da6a2454795b9c",
      "old_mode": 33188,
      "old_path": "ssl/statem/statem_lib.c",
      "new_id": "bf59eb3925733b19914df4eeba6d5c2013d11b44",
      "new_mode": 33188,
      "new_path": "ssl/statem/statem_lib.c"
    },
    {
      "type": "modify",
      "old_id": "a1163ed98608e4d9f1fc2d719423d0d2d4591ba4",
      "old_mode": 33188,
      "old_path": "ssl/statem/statem_srvr.c",
      "new_id": "604b36565be3fad28c1f11a9b243183c266511d1",
      "new_mode": 33188,
      "new_path": "ssl/statem/statem_srvr.c"
    },
    {
      "type": "modify",
      "old_id": "a2a68af6c92c6e17ae8008c3ae55eccbf43ed7f2",
      "old_mode": 33188,
      "old_path": "ssl/t1_lib.c",
      "new_id": "980f2f5d0bbba6867c747a956cd4b425187d6367",
      "new_mode": 33188,
      "new_path": "ssl/t1_lib.c"
    }
  ]
}
