)]}'
{
  "commit": "c16de9d8329d41a2433d0f273c080d9d06ad7a87",
  "tree": "3bdcf5e354efd8991aa1f7d83921655e81db726b",
  "parents": [
    "af1d638730bdfad85a7fa8c3f157b2828eda7c1d"
  ],
  "author": {
    "name": "Dr. Matthias St. Pierre",
    "email": "Matthias.St.Pierre@ncp-e.com",
    "time": "Thu Aug 31 23:16:22 2017 +0200"
  },
  "committer": {
    "name": "Ben Kaduk",
    "email": "kaduk@mit.edu",
    "time": "Wed Oct 18 08:39:20 2017 -0500"
  },
  "message": "Fix reseeding issues of the public RAND_DRBG\n\nReseeding is handled very differently by the classic RAND_METHOD API\nand the new RAND_DRBG api. These differences led to some problems when\nthe new RAND_DRBG was made the default OpenSSL RNG. In particular,\nRAND_add() did not work as expected anymore. These issues are discussed\non the thread \u0027[openssl-dev] Plea for a new public OpenSSL RNG API\u0027\nand in Pull Request #4328. This commit fixes the mentioned issues,\nintroducing the following changes:\n\n- Replace the fixed size RAND_BYTES_BUFFER by a new RAND_POOL API which\n  facilitates collecting entropy by the get_entropy() callback.\n- Don\u0027t use RAND_poll()/RAND_add() for collecting entropy from the\n  get_entropy() callback anymore. Instead, replace RAND_poll() by\n  RAND_POOL_acquire_entropy().\n- Add a new function rand_drbg_restart() which tries to get the DRBG\n  in an instantiated state by all means, regardless of the current\n  state (uninstantiated, error, ...) the DRBG is in. If the caller\n  provides entropy or additional input, it will be used for reseeding.\n- Restore the original documented behaviour of RAND_add() and RAND_poll()\n  (namely to reseed the DRBG immediately) by a new implementation based\n  on rand_drbg_restart().\n- Add automatic error recovery from temporary failures of the entropy\n  source to RAND_DRBG_generate() using the rand_drbg_restart() function.\n\nReviewed-by: Paul Dale \u003cpaul.dale@oracle.com\u003e\nReviewed-by: Kurt Roeckx \u003ckurt@roeckx.be\u003e\nReviewed-by: Rich Salz \u003crsalz@openssl.org\u003e\nReviewed-by: Ben Kaduk \u003ckaduk@mit.edu\u003e\n(Merged from https://github.com/openssl/openssl/pull/4328)\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "67f708602bbee70c5ccf5a51bffac560295f3482",
      "old_mode": 33188,
      "old_path": "crypto/err/openssl.txt",
      "new_id": "1749a7037f6eb62e3520b01eaddeef54342ea875",
      "new_mode": 33188,
      "new_path": "crypto/err/openssl.txt"
    },
    {
      "type": "modify",
      "old_id": "d0999f28adb4b6a2c2042384ee6470d8ec0aaef2",
      "old_mode": 33188,
      "old_path": "crypto/include/internal/rand_int.h",
      "new_id": "fc1abd97bc3fdb3d7a5173683c9402126f6de2ef",
      "new_mode": 33188,
      "new_path": "crypto/include/internal/rand_int.h"
    },
    {
      "type": "modify",
      "old_id": "3eda1c987da9cbf05c24930cd8b7b2fb8fcf9c48",
      "old_mode": 33188,
      "old_path": "crypto/init.c",
      "new_id": "8daf4e31cfa99553448d71f6c39e90f7242eaff2",
      "new_mode": 33188,
      "new_path": "crypto/init.c"
    },
    {
      "type": "modify",
      "old_id": "b7f7e4c3412e1cc3989227e4c24fc6bf30eda79d",
      "old_mode": 33188,
      "old_path": "crypto/rand/drbg_lib.c",
      "new_id": "eef5e11cc5986f6949699421278f9bf055a3b3b3",
      "new_mode": 33188,
      "new_path": "crypto/rand/drbg_lib.c"
    },
    {
      "type": "modify",
      "old_id": "83f1ad876fb796e8490630ddfdad90fd97aa2af1",
      "old_mode": 33188,
      "old_path": "crypto/rand/drbg_rand.c",
      "new_id": "f45ef1424c0540e72ae75158d946fc9e712f04fe",
      "new_mode": 33188,
      "new_path": "crypto/rand/drbg_rand.c"
    },
    {
      "type": "modify",
      "old_id": "707f010e4ce061fc049f9b2a3ee46f1962c352b6",
      "old_mode": 33188,
      "old_path": "crypto/rand/rand_err.c",
      "new_id": "dc6140c07538ba2c4dfeef58be2e03c44b3ea4f3",
      "new_mode": 33188,
      "new_path": "crypto/rand/rand_err.c"
    },
    {
      "type": "modify",
      "old_id": "498b7e687e2a9e2d48783d364373fb5c0e90ba4c",
      "old_mode": 33188,
      "old_path": "crypto/rand/rand_lcl.h",
      "new_id": "10a6f00a2ddc2d381abf65a940a70a6ee9317704",
      "new_mode": 33188,
      "new_path": "crypto/rand/rand_lcl.h"
    },
    {
      "type": "modify",
      "old_id": "2f2ab6a86dc63934b6bb918e11d9dc43248347d9",
      "old_mode": 33188,
      "old_path": "crypto/rand/rand_lib.c",
      "new_id": "6f8deca1f9ff16e3aa72df7c14af90ad14ec339c",
      "new_mode": 33188,
      "new_path": "crypto/rand/rand_lib.c"
    },
    {
      "type": "modify",
      "old_id": "08ea55fbb9dbf08a2f79c84ecb541605f156e0e0",
      "old_mode": 33188,
      "old_path": "crypto/rand/rand_unix.c",
      "new_id": "f5a59cb28a66879a44c706b5216fa3d74dcd2a2f",
      "new_mode": 33188,
      "new_path": "crypto/rand/rand_unix.c"
    },
    {
      "type": "modify",
      "old_id": "773373d1a6ccff44ec41d5718628df91219680cc",
      "old_mode": 33188,
      "old_path": "crypto/rand/rand_vms.c",
      "new_id": "4ec4b35bd4a4e65b1c67199a1e0b017777d275b4",
      "new_mode": 33188,
      "new_path": "crypto/rand/rand_vms.c"
    },
    {
      "type": "modify",
      "old_id": "8637ca4185522121a1bd6b1ea084451e732aa271",
      "old_mode": 33188,
      "old_path": "crypto/rand/rand_win.c",
      "new_id": "9eff319bc8d58360d1a9be0703a1bc1ef36d42b3",
      "new_mode": 33188,
      "new_path": "crypto/rand/rand_win.c"
    },
    {
      "type": "modify",
      "old_id": "ea81492c2c55797e2549640cc26853863e1ab98d",
      "old_mode": 33188,
      "old_path": "doc/man3/RAND_add.pod",
      "new_id": "62048e67923eba4955dc4a0133cedc0c0fa83ac2",
      "new_mode": 33188,
      "new_path": "doc/man3/RAND_add.pod"
    },
    {
      "type": "modify",
      "old_id": "07f141d6cc52b2c96e2a5bbca403c1270725a219",
      "old_mode": 33188,
      "old_path": "include/internal/rand.h",
      "new_id": "feda9beaa18e26969828a4f12aeeec0cade5b426",
      "new_mode": 33188,
      "new_path": "include/internal/rand.h"
    },
    {
      "type": "modify",
      "old_id": "b00777694f03e4df0182e13e26d5547a7200bb36",
      "old_mode": 33188,
      "old_path": "include/openssl/ossl_typ.h",
      "new_id": "f5214ab1e5b04a365a3ca01ccd7fd70bc8393b43",
      "new_mode": 33188,
      "new_path": "include/openssl/ossl_typ.h"
    },
    {
      "type": "modify",
      "old_id": "82e37626900a0b0a62acaffd35f7d413c038a107",
      "old_mode": 33188,
      "old_path": "include/openssl/rand.h",
      "new_id": "2dec35ea53c08b171c32e708cb461fa7fc3d20be",
      "new_mode": 33188,
      "new_path": "include/openssl/rand.h"
    },
    {
      "type": "modify",
      "old_id": "79c652fcdf93191d948c2fffa4804ef6c1fb2cc9",
      "old_mode": 33188,
      "old_path": "include/openssl/randerr.h",
      "new_id": "b07ea233eb53be047e61548656197d500f2c76bc",
      "new_mode": 33188,
      "new_path": "include/openssl/randerr.h"
    },
    {
      "type": "modify",
      "old_id": "9fec761714ef935ac33caa9e02df80f207a69ed6",
      "old_mode": 33188,
      "old_path": "ssl/ssl_lib.c",
      "new_id": "da74e96ecb35854de67322f8335bbffe71dd87e6",
      "new_mode": 33188,
      "new_path": "ssl/ssl_lib.c"
    },
    {
      "type": "modify",
      "old_id": "7d33c3035d1df78597aef26d34832b15c1f64090",
      "old_mode": 33188,
      "old_path": "test/drbgtest.c",
      "new_id": "25920d6e40af01368976926a8f7dae3c7d70d184",
      "new_mode": 33188,
      "new_path": "test/drbgtest.c"
    },
    {
      "type": "modify",
      "old_id": "0a29e8cfca87195264d5cea0abd5f659e66c494f",
      "old_mode": 33188,
      "old_path": "util/libcrypto.num",
      "new_id": "96990ed959fbb6e8ba6abae66385f036998f58a2",
      "new_mode": 33188,
      "new_path": "util/libcrypto.num"
    }
  ]
}
