)]}'
{
  "commit": "e845f572ec6163fd3bad0267b5bb4f24d369bd93",
  "tree": "9156df472b1692b5a4ff180bdaf02e98b5f40dbb",
  "parents": [
    "a840bf871e005d948ba6442948997eb3ef2e3c7f"
  ],
  "author": {
    "name": "Russ Cox",
    "email": "rsc@golang.org",
    "time": "Wed Apr 27 09:02:53 2022 -0400"
  },
  "committer": {
    "name": "Russ Cox",
    "email": "rsc@golang.org",
    "time": "Fri Apr 29 14:23:32 2022 +0000"
  },
  "message": "[dev.boringcrypto] crypto/ecdsa, crypto/rsa: use boring.Cache\n\nIn the original BoringCrypto port, ecdsa and rsa\u0027s public and private\nkeys added a \u0027boring unsafe.Pointer\u0027 field to cache the BoringCrypto\nform of the key. This led to problems with code that “knew” the layout\nof those structs and in particular that they had no unexported fields.\n\nIn response, as an awful kludge, I changed the compiler to pretend\nthat field did not exist when laying out reflect data. Because we want\nto merge BoringCrypto in the main tree, we need a different solution.\nUsing boring.Cache is that solution.\n\nFor #51940.\n\nChange-Id: Ideb2b40b599a1dc223082eda35a5ea9abcc01e30\nReviewed-on: https://go-review.googlesource.com/c/go/+/395883\nRun-TryBot: Russ Cox \u003crsc@golang.org\u003e\nTryBot-Result: Gopher Robot \u003cgobot@golang.org\u003e\nReviewed-by: Roland Shoemaker \u003croland@golang.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1529de3f2bc2a43715c7fc929555283dabedc95e",
      "old_mode": 33188,
      "old_path": "src/crypto/ecdsa/boring.go",
      "new_id": "edb723fe0ee2dc387580d3098902dc48ce4265f2",
      "new_mode": 33188,
      "new_path": "src/crypto/ecdsa/boring.go"
    },
    {
      "type": "modify",
      "old_id": "efc5dd506737c069e32c1fc1a442c0876e10b26d",
      "old_mode": 33188,
      "old_path": "src/crypto/ecdsa/ecdsa.go",
      "new_id": "7ce7542872c48c528d9164620358aad880dc153b",
      "new_mode": 33188,
      "new_path": "src/crypto/ecdsa/ecdsa.go"
    },
    {
      "type": "modify",
      "old_id": "4cf608368f165b7028200c1a95d69266ac578d35",
      "old_mode": 33188,
      "old_path": "src/crypto/internal/boring/cache.go",
      "new_id": "476e47706c91568428117a9390732af090000459",
      "new_mode": 33188,
      "new_path": "src/crypto/internal/boring/cache.go"
    },
    {
      "type": "modify",
      "old_id": "050ba457b2979ee0a86aca653be1012d39edec67",
      "old_mode": 33188,
      "old_path": "src/crypto/internal/boring/cache_test.go",
      "new_id": "f9ccb74f6fdd31a8a703c50ba852efd418935cc9",
      "new_mode": 33188,
      "new_path": "src/crypto/internal/boring/cache_test.go"
    },
    {
      "type": "modify",
      "old_id": "362e9307f8608f2664aa07fe62cef7492531ca05",
      "old_mode": 33188,
      "old_path": "src/crypto/rsa/boring.go",
      "new_id": "fc2842fb341cc3f182aaf02c9e88d36308cd41cc",
      "new_mode": 33188,
      "new_path": "src/crypto/rsa/boring.go"
    },
    {
      "type": "modify",
      "old_id": "1373da99374503e15cd8d3dbdacaca9c38140239",
      "old_mode": 33188,
      "old_path": "src/crypto/rsa/boring_test.go",
      "new_id": "6223244283fad9157f1720dbe3ee0a0c4cd7ddd7",
      "new_mode": 33188,
      "new_path": "src/crypto/rsa/boring_test.go"
    },
    {
      "type": "modify",
      "old_id": "e084be15cc1b59a87db1d084e86ab959847f5b30",
      "old_mode": 33188,
      "old_path": "src/crypto/rsa/rsa.go",
      "new_id": "c941124fb26a10158e6d132c48ddc3932531f48b",
      "new_mode": 33188,
      "new_path": "src/crypto/rsa/rsa.go"
    },
    {
      "type": "delete",
      "old_id": "bea1276e6975acd6bbeccc0e898d6a28ef629cd8",
      "old_mode": 33188,
      "old_path": "src/internal/boringtest/boring.go",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "a6b07eda70b43b10704fdb51816fcd31d4b3b7f3",
      "old_mode": 33188,
      "old_path": "src/internal/boringtest/boring_test.go",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "b2558c8bd3c44264fac27cd9b3163ea57cc98b62",
      "old_mode": 33188,
      "old_path": "src/runtime/mgc.go",
      "new_id": "f79bd54c5e80cc0aac5e4b5584a7a05552007f29",
      "new_mode": 33188,
      "new_path": "src/runtime/mgc.go"
    },
    {
      "type": "delete",
      "old_id": "149ba51dd7e6fe3e77d658ef4ecb689aca2adaac",
      "old_mode": 33188,
      "old_path": "src/runtime/mgc_boring.go",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    }
  ]
}
