)]}'
{
  "log": [
    {
      "commit": "dd529367052d2d4e723407525887310fe866ddd8",
      "tree": "197abc7ea4addecf84f01408d7b747f37c8c54cf",
      "parents": [
        "51f6971f5f06ec101e5fbcabe5a49477708540f3"
      ],
      "author": {
        "name": "Drew Fisher",
        "email": "zarvox@google.com",
        "time": "Wed Dec 09 17:26:00 2020 -0800"
      },
      "committer": {
        "name": "Drew Fisher",
        "email": "zarvox@google.com",
        "time": "Wed Dec 09 17:27:26 2020 -0800"
      },
      "message": "Fix undefined behavior (unaligned write) in protocol.cc\n\nChange-Id: Ia7cf7734e534bfeef689e54c56d95d0d5cab2584\n"
    },
    {
      "commit": "51f6971f5f06ec101e5fbcabe5a49477708540f3",
      "tree": "3f95a32c363aa1af42f79fafbd682455e728b40e",
      "parents": [
        "0174f2b976d6d6cc522ed09a4b48e5b940a49c2a"
      ],
      "author": {
        "name": "Ben Linsay",
        "email": "blinsay@gmail.com",
        "time": "Sat Oct 20 21:30:50 2018 -0400"
      },
      "committer": {
        "name": "Adam Langley",
        "email": "agl@google.com",
        "time": "Thu Apr 18 17:22:56 2019 +0000"
      },
      "message": "go/protocol: fix out of order tag detection\n\nout of order tag detection wasn\u0027t happening because the previous tag\nvalue wasn\u0027t being set correctly in the decode loop\n\nChange-Id: I060d4b15312cd897a1c2d15d4c8b917c2df30128\n"
    },
    {
      "commit": "0174f2b976d6d6cc522ed09a4b48e5b940a49c2a",
      "tree": "00ca7b0e90003555f3ee1ffc8d7ab97729e6213f",
      "parents": [
        "74350dc3b73322bdb9beae11c67f093c1ae0a7b1"
      ],
      "author": {
        "name": "David Benjamin",
        "email": "davidben@google.com",
        "time": "Wed Apr 17 16:36:52 2019 -0500"
      },
      "committer": {
        "name": "David Benjamin",
        "email": "davidben@google.com",
        "time": "Wed Apr 17 21:49:09 2019 +0000"
      },
      "message": "Test the number of replies matches the number of nonces.\n\nIf CreateReplies returns too few replies, the test would still pass.\n\nChange-Id: I7a3c7781d0dd17fa8f2b688daea3c40e25175e98\n"
    },
    {
      "commit": "74350dc3b73322bdb9beae11c67f093c1ae0a7b1",
      "tree": "b6538487eee870fa6e68743b7e0082ca85d5f33a",
      "parents": [
        "e85e2164b1f71f17619ba2ca80618982c20555f0"
      ],
      "author": {
        "name": "David Benjamin",
        "email": "davidben@google.com",
        "time": "Thu Apr 11 17:45:00 2019 -0500"
      },
      "committer": {
        "name": "David Benjamin",
        "email": "davidben@google.com",
        "time": "Wed Apr 17 16:38:55 2019 -0500"
      },
      "message": "Even out levels with existing tree nodes.\n\nWhen the number of messages in a batch is not a power of two, we need to\nintroduce dummy nodes. Rather than filling them with zero, use other nodes at\nthe same level, so we are effectively padding out with more copies of other\nmessages.\n\nThis avoids needing to reason about preimages of the all zero hash.\n\nChange-Id: I9913ac31f7b91064825fdef13e794018dd24e890\n"
    },
    {
      "commit": "e85e2164b1f71f17619ba2ca80618982c20555f0",
      "tree": "68112e4b9fa5f43a1f170de657d42d4d8f4c45db",
      "parents": [
        "08e8bdca4df86febc291133a7547298117ede360"
      ],
      "author": {
        "name": "David Benjamin",
        "email": "davidben@google.com",
        "time": "Thu Apr 11 17:37:38 2019 -0500"
      },
      "committer": {
        "name": "David Benjamin",
        "email": "davidben@google.com",
        "time": "Wed Apr 17 16:38:54 2019 -0500"
      },
      "message": "Fix build with newer Bazel.\n\nBazel 0.24.1 changed a few things around. Update to the new spelling of\nWORKSPACE rules and the new built-in protobuf rules, which require protobuf\nlive at @com_google_protobuf and a newer protobuf. The newest protobuf, in\nturn, needs two more dependencies.\n\nWhile I\u0027m here, also update BoringSSL.\n\nChange-Id: I2ab85b316cefdd0694b1b7c56322bd4fa64b0ffb\n"
    },
    {
      "commit": "08e8bdca4df86febc291133a7547298117ede360",
      "tree": "dfe76697401c24d04d89ab87aa05f7ba5f83e518",
      "parents": [
        "bf2633c8bb6e705687c70d8ea312c0846d879a90"
      ],
      "author": {
        "name": "Matthew Braithwaite",
        "email": "mab@google.com",
        "time": "Wed Mar 20 16:00:00 2019 -0700"
      },
      "committer": {
        "name": "Matthew Braithwaite",
        "email": "mab@google.com",
        "time": "Wed Mar 20 16:05:30 2019 -0700"
      },
      "message": "UdpProcessor: virtual method HandleOne() for preprocessing.\n\nThe new method is a general-purpose hook that is run over all received\ndatagrams.  It may opt to not process a datagram as a Roughtime\nmessage.\n\nChange-Id: I7fdcaabb32fac5e0cc26a18a9ca9e3e09c83350c\n"
    },
    {
      "commit": "bf2633c8bb6e705687c70d8ea312c0846d879a90",
      "tree": "cf68aea58a27387140088f48537150261f91fc28",
      "parents": [
        "bc37f76ce2f941b4dc2a8919450c0b8a1af6c272"
      ],
      "author": {
        "name": "Konstantin Pozin",
        "email": "kpozin@google.com",
        "time": "Fri Sep 21 18:11:34 2018 -0700"
      },
      "committer": {
        "name": "Konstantin Pozin",
        "email": "kpozin@google.com",
        "time": "Fri Sep 21 18:13:34 2018 -0700"
      },
      "message": "Enable sendmmsg and recvmmsg shims for Fuchsia target\n\nChange-Id: Ib164d8afed42424830987697cf0933c5d96493a2\n"
    },
    {
      "commit": "bc37f76ce2f941b4dc2a8919450c0b8a1af6c272",
      "tree": "3a91779193b172dc91e1671a9cc652069a569b4c",
      "parents": [
        "c44eb24d403a3b330189b2b09a9af7b81882b9f9"
      ],
      "author": {
        "name": "Konstantin Pozin",
        "email": "kpozin@google.com",
        "time": "Thu Sep 06 13:11:25 2018 -0700"
      },
      "committer": {
        "name": "Konstantin Pozin",
        "email": "kpozin@google.com",
        "time": "Thu Sep 06 13:20:08 2018 -0700"
      },
      "message": "Remove remaining boringssl constant from client.h\n\nFollow-up to https://roughtime-review.googlesource.com/c/roughtime/+/2200\n\nChange-Id: I27b411d493e1b3f0b188d24e71fd2d103a046960\n"
    },
    {
      "commit": "c44eb24d403a3b330189b2b09a9af7b81882b9f9",
      "tree": "876bd2a7f04dab654c4cb9b87dc7c7b7257c4d61",
      "parents": [
        "4185cd3409ef1f50b4f47fa44f34f892bfa98be4"
      ],
      "author": {
        "name": "Konstantin Pozin",
        "email": "kpozin@google.com",
        "time": "Wed Sep 05 16:37:33 2018 -0700"
      },
      "committer": {
        "name": "Konstantin Pozin",
        "email": "kpozin@google.com",
        "time": "Wed Sep 05 18:06:02 2018 -0700"
      },
      "message": "Pull SimpleServer out into a public static_library\n\nChange-Id: I0bb49116fffe0b8084e17fb1caa900b1cdb6541e\n"
    },
    {
      "commit": "4185cd3409ef1f50b4f47fa44f34f892bfa98be4",
      "tree": "4a395b26d042b47ec83d55ba192998ebe783ff6c",
      "parents": [
        "fc753ee78d3cc339f5a721f39c75f61100c1d8f5"
      ],
      "author": {
        "name": "Aaron Green",
        "email": "aarongreen@google.com",
        "time": "Fri Aug 31 14:59:22 2018 -0700"
      },
      "committer": {
        "name": "Aaron Green",
        "email": "aarongreen@google.com",
        "time": "Fri Aug 31 14:59:22 2018 -0700"
      },
      "message": "Remove openssl imports from public header files\n\nCurrently, protocol.h includes openssl/curve25519.h, meaning code which\nwishes to link against a roughtime library must also have the OpenSSL/\nBoringSSL source available. That\u0027s an unneeded dependency.\n\nThis CL introduces three new symbols for the Ed25519 public key, private\nkey, and signature lengths need in the headers and adds static asserts\nin protocol.cc to pin them to the libcrypto values.\n\nChange-Id: I1ef78e66bf83ae98b0a82a12d4130c053c70c5e2\n"
    },
    {
      "commit": "fc753ee78d3cc339f5a721f39c75f61100c1d8f5",
      "tree": "ab8f4874cf008bf8463b4c7760a1b5fe68f585a8",
      "parents": [
        "c567828a8138119bb14e11e4d19827ccaed411cd"
      ],
      "author": {
        "name": "Nemanja Mijailovic",
        "email": "baraghd@gmail.com",
        "time": "Sat Oct 14 12:11:59 2017 +0200"
      },
      "committer": {
        "name": "Nemanja Mijailovic",
        "email": "baraghd@gmail.com",
        "time": "Sat Oct 14 12:26:11 2017 +0200"
      },
      "message": "Fix panic in protocol.Decode\n\nDecode function was checking if the message was too\nshort to be valid by comparing the length of the\nmessage with 4*((numTags-1)+numTag), which is not\nthe correct minimum size of the valid message (the\ncorrect minimum size is 4*(1+(numTags-1)+numTag)).\nThat\u0027s why the message with the size of\n4*((numTags-1)+numTag) was causing slice index out\nof bounds in the subsequent payload access (the\nshortest message that would trigger this is\n[1, 0, 0, 0]).\n\nChange-Id: I52a518bd5d89f07038ac3525094a0db0f76b2c29\n"
    },
    {
      "commit": "c567828a8138119bb14e11e4d19827ccaed411cd",
      "tree": "7ecfd80c1bff408b285bfc8ed035b7252e40a8a9",
      "parents": [
        "0dabf4cb1ba9b5cbcc32ea7cda986f41d6ed7497"
      ],
      "author": {
        "name": "Ankur Mittal",
        "email": "anmittal@google.com",
        "time": "Wed Apr 05 17:51:36 2017 -0700"
      },
      "committer": {
        "name": "Ankur Mittal",
        "email": "anmittal@google.com",
        "time": "Wed Apr 05 17:51:36 2017 -0700"
      },
      "message": "Adding static library for client\n\nAlso fixing clock_linux for fuchsia\n\nChange-Id: I5679a187825c8c3539cd99651010871e4e0a620b\n"
    },
    {
      "commit": "0dabf4cb1ba9b5cbcc32ea7cda986f41d6ed7497",
      "tree": "f2083e9fda10e8acc7063e103a69f3856cdd55da",
      "parents": [
        "bde0239147cf00eb2155117fd8bc1931c7161bff"
      ],
      "author": {
        "name": "Ankur Mittal",
        "email": "anmittal@google.com",
        "time": "Wed Mar 22 17:51:46 2017 -0700"
      },
      "committer": {
        "name": "Ankur Mittal",
        "email": "anmittal@google.com",
        "time": "Mon Mar 27 13:27:08 2017 -0700"
      },
      "message": "Adding BUILD.gn file to build using gn and ninja\n\nChange-Id: Ife3ba2ef131bf89e71c58da6c7cfde6ea87eb16f\n"
    },
    {
      "commit": "bde0239147cf00eb2155117fd8bc1931c7161bff",
      "tree": "1785e3979b59da5c6ba07adc969a49722afe2034",
      "parents": [
        "41997ebda785aaddfe70e7880c15d4d56f0f3d77"
      ],
      "author": {
        "name": "Ankur Mittal",
        "email": "anmittal@google.com",
        "time": "Wed Mar 22 17:48:25 2017 -0700"
      },
      "committer": {
        "name": "Ankur Mittal",
        "email": "anmittal@google.com",
        "time": "Mon Mar 27 13:19:43 2017 -0700"
      },
      "message": "Add option to compile with glog\n\nAdding option to choose between glog and protobuf logger\n\nChange-Id: I596fdde57b82f63f055dc3010a085a321808ea29\n"
    },
    {
      "commit": "41997ebda785aaddfe70e7880c15d4d56f0f3d77",
      "tree": "aa9c414e395ed6155f8a16752ef4b51cf6a118f0",
      "parents": [
        "b26dccac7c3961aa94bdd543ad6eaec52ab529f5"
      ],
      "author": {
        "name": "Ankur Mittal",
        "email": "anmittal@google.com",
        "time": "Wed Mar 22 17:41:07 2017 -0700"
      },
      "committer": {
        "name": "Ankur Mittal",
        "email": "anmittal@google.com",
        "time": "Wed Mar 22 17:42:34 2017 -0700"
      },
      "message": "Update protobuf to fix \"\u0027HOST_CFG\u0027 is not defined\"\n\nUpdating protobuf so that rougtime can be built with latest blaze\n\nChange-Id: I461f2d685cfd11cd751f3eea5ddf31c902e89ec2\n"
    },
    {
      "commit": "b26dccac7c3961aa94bdd543ad6eaec52ab529f5",
      "tree": "9616b5e0f231124d2ba5809f08863cd7f42d860e",
      "parents": [
        "a1c1e5496395dd2b0cf2498a691f038e71aa7fa2"
      ],
      "author": {
        "name": "Adam Langley",
        "email": "alangley@gmail.com",
        "time": "Mon Dec 05 10:05:20 2016 -0800"
      },
      "committer": {
        "name": "Adam Langley",
        "email": "alangley@gmail.com",
        "time": "Fri Dec 09 09:45:35 2016 -0800"
      },
      "message": "Support building on macOS.\n\nThis change allows all the C++ targets to be built on OS X. (Tested with\n10.12.1)\n\nThanks to Ben Laurie for the change.\n\nChange-Id: I1bb6cfbe920aef2eaea7e3f7ef7c669d1218275a\n"
    },
    {
      "commit": "a1c1e5496395dd2b0cf2498a691f038e71aa7fa2",
      "tree": "c03868d8f0381868c34e58d45ef9e9f343422a44",
      "parents": [
        "12cb0077e01a2c8fcb5d99f54a9cb22f5bc8f4a9"
      ],
      "author": {
        "name": "Adam Langley",
        "email": "alangley@gmail.com",
        "time": "Mon Oct 24 14:36:04 2016 -0700"
      },
      "committer": {
        "name": "Adam Langley",
        "email": "alangley@gmail.com",
        "time": "Mon Oct 24 14:37:59 2016 -0700"
      },
      "message": "Report more information about queried servers.\n\nThis change causes the Go client to report the timespan and query\nduration for each server queried.\n\nChange-Id: I5ddb8e3fe7a7877dbc184f64f82d9d1f5236344e\n"
    },
    {
      "commit": "12cb0077e01a2c8fcb5d99f54a9cb22f5bc8f4a9",
      "tree": "91e8d30e41594e8e9ba9a67a9cec98f367751202",
      "parents": [
        "355aada3b105fb20636b5aaff886855155314029"
      ],
      "author": {
        "name": "Adam Langley",
        "email": "alangley@gmail.com",
        "time": "Mon Oct 24 14:35:58 2016 -0700"
      },
      "committer": {
        "name": "Adam Langley",
        "email": "alangley@gmail.com",
        "time": "Mon Oct 24 14:37:55 2016 -0700"
      },
      "message": "Correct monotonic times before use.\n\nThe monotonic times are time.Durations, which need to be adjusted before\nthey can be used as Roughtime UTC milliseconds.\n\nChange-Id: I2bf8a7f6067b3e522350c47a1cb1d13f63b70b32\n"
    },
    {
      "commit": "355aada3b105fb20636b5aaff886855155314029",
      "tree": "00a427993f791cc4e4624d925a1420b402c59aaf",
      "parents": [
        "027b73a9c1a2cf783ef0cad9f95d524a3027a64b"
      ],
      "author": {
        "name": "Adam Langley",
        "email": "agl@google.com",
        "time": "Mon Oct 10 15:40:11 2016 -0700"
      },
      "committer": {
        "name": "Adam Langley",
        "email": "agl@google.com",
        "time": "Wed Oct 12 13:07:50 2016 -0700"
      },
      "message": "Match against math.MaxInt32 in the Go code.\n\nWhen building for 32-bit, len() in Go returns a (signed) 32-bit value.\nThis was exceeding the constant (2^32) and causing a build failure.\n\nChange-Id: I3b0c08792b0fea0be8d571ebd7ebc1714f9a86a2\n"
    },
    {
      "commit": "027b73a9c1a2cf783ef0cad9f95d524a3027a64b",
      "tree": "3c7b144497da8535051c90723b1361cc04548b31",
      "parents": [
        "a66e82c8c1d5bcda60e0ff72a7567f8f062d916f",
        "7e23cd13bca80f8735bbeef9d5f4496ab1e5427b"
      ],
      "author": {
        "name": "Adam Langley",
        "email": "agl@google.com",
        "time": "Sun Oct 02 15:03:50 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Oct 02 15:03:50 2016 +0000"
      },
      "message": "Merge \"Fix typo in PROTOCOL.md\""
    },
    {
      "commit": "7e23cd13bca80f8735bbeef9d5f4496ab1e5427b",
      "tree": "c32b46fb3b4de9d9400ad58d3ed10105b6f8ae39",
      "parents": [
        "0ffc68530425d87cc01255b5b375006d45ed5072"
      ],
      "author": {
        "name": "Adam Langley",
        "email": "agl@google.com",
        "time": "Sun Oct 02 08:02:30 2016 -0700"
      },
      "committer": {
        "name": "Adam Langley",
        "email": "agl@google.com",
        "time": "Sun Oct 02 08:02:30 2016 -0700"
      },
      "message": "Fix typo in PROTOCOL.md\n\nShould be `max`, not `min`.\n\nChange-Id: Iec8d74b57bafee64e816f97a893ef18565c883a4\n"
    },
    {
      "commit": "a66e82c8c1d5bcda60e0ff72a7567f8f062d916f",
      "tree": "4c7dc2001cf50e90dead2da787c3f27b87ed0cfa",
      "parents": [
        "9833a703e666d7d8c226453dc468d6ddcf0fcf41",
        "0ffc68530425d87cc01255b5b375006d45ed5072"
      ],
      "author": {
        "name": "Adam Langley",
        "email": "agl@google.com",
        "time": "Fri Sep 30 17:19:57 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 30 17:19:57 2016 +0000"
      },
      "message": "Merge \"Fix instructions for building Go code.\""
    },
    {
      "commit": "0ffc68530425d87cc01255b5b375006d45ed5072",
      "tree": "fc355529837f2077dea691961938ddc834ce28c3",
      "parents": [
        "afd26f19a619ea0b6a64909920fd446ea2dd9810"
      ],
      "author": {
        "name": "Adam Langley",
        "email": "agl@google.com",
        "time": "Thu Sep 29 09:12:36 2016 -0700"
      },
      "committer": {
        "name": "Adam Langley",
        "email": "agl@google.com",
        "time": "Thu Sep 29 09:12:36 2016 -0700"
      },
      "message": "Fix instructions for building Go code.\n\nI had thought that googlesource.com was go gettable for some reason, but\nit\u0027s not so people will need to run `git clone` manually.\n\nChange-Id: I28f67dbc2e0566493e7c4218ece2fed5d7f29caf\n"
    },
    {
      "commit": "9833a703e666d7d8c226453dc468d6ddcf0fcf41",
      "tree": "884fa558071f3015cc49c50e6bf28502f4cc9a10",
      "parents": [
        "51f728dcf5cad8dd8f0acb41a3218f4bb9ef7d8d",
        "a5d2c83468407e0004fc84951749a1f3770d8525"
      ],
      "author": {
        "name": "Adam Langley",
        "email": "agl@google.com",
        "time": "Thu Sep 22 19:39:58 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 22 19:39:58 2016 +0000"
      },
      "message": "Merge \"Several cleanups suggested by mab.\""
    },
    {
      "commit": "a5d2c83468407e0004fc84951749a1f3770d8525",
      "tree": "e3a35ca912c415a1a82573da8261beb08db6cd2d",
      "parents": [
        "afd26f19a619ea0b6a64909920fd446ea2dd9810"
      ],
      "author": {
        "name": "Adam Langley",
        "email": "agl@google.com",
        "time": "Wed Sep 21 17:10:22 2016 -0700"
      },
      "committer": {
        "name": "Adam Langley",
        "email": "agl@google.com",
        "time": "Wed Sep 21 17:13:16 2016 -0700"
      },
      "message": "Several cleanups suggested by mab.\n\nThis change addresses several issues noted by mab:\n   • Use rough_time_t as a type for Roughtime timestamps. (Note that not\n     all timestamps use this type. Times from the monotonic clock, for\n     example, are not Roughtime timestamps.)\n   • Split the Success test into so that misalignment is tested\n     separately.\n   • Use sizeof(tag_t) in protocol.cc.\n\nChange-Id: I0228d35c9116aa44b9a792df54a2df6b7d26d6e3\n"
    },
    {
      "commit": "51f728dcf5cad8dd8f0acb41a3218f4bb9ef7d8d",
      "tree": "8b0cd22873da32588d078eb39541c16f6d2d3621",
      "parents": [
        "afd26f19a619ea0b6a64909920fd446ea2dd9810"
      ],
      "author": {
        "name": "Robert Obryk",
        "email": "robryk@google.com",
        "time": "Wed Sep 21 14:26:46 2016 +0200"
      },
      "committer": {
        "name": "Adam Langley",
        "email": "agl@google.com",
        "time": "Wed Sep 21 14:38:58 2016 -0700"
      },
      "message": "Fix findNOverlapping and intesection. Add test.\n\nPrevious implementation of findNOverlapping failed on the last\ntestcase in the test that this change adds. The new version works,\nbecause an intersection of any subset of intervals starts in the\nstarting point of one of them.\n\nChange-Id: I9a99ba1910f18f70069c6ab8c4bef6da35733286\n"
    },
    {
      "commit": "afd26f19a619ea0b6a64909920fd446ea2dd9810",
      "tree": "283c968aecea93b1de2fe5be489d94eba4ffa44e",
      "parents": [
        "4866a02ab632d0e04d0067b3510754aa5863777d"
      ],
      "author": {
        "name": "Robert Obryk",
        "email": "robryk@google.com",
        "time": "Wed Sep 21 13:26:13 2016 +0200"
      },
      "committer": {
        "name": "Robert Obryk",
        "email": "robryk@google.com",
        "time": "Wed Sep 21 21:34:21 2016 +0200"
      },
      "message": "Fix wrong time interval calculation in Client.query\n\nNetwork delays can be asymmetric, thus the response from the server can\ncorrespond to any point in time between baseTime and replyTime. If it\ndoes correspond to replyTime (ie. network latency for the request is\nlarge, while network latency for the response is negligible), baseTime\nactually corresponds to a time that\u0027s earlier than the beginning of the\ninterval returned by the server. If it corresponds to baseTime, baseTime\ncorresponds to the interval returned by the server. Thus the interval\nreturned from the server has to be broadened on the lower side only.\n\nChange-Id: I6fab289a5daa8e3390f426172fa2b084b7c365fb\n"
    },
    {
      "commit": "4866a02ab632d0e04d0067b3510754aa5863777d",
      "tree": "65268164a95e51da5426cccb98f3691948557a8d",
      "parents": [],
      "author": {
        "name": "Adam Langley",
        "email": "agl@google.com",
        "time": "Thu Sep 01 11:24:21 2016 -0700"
      },
      "committer": {
        "name": "Adam Langley",
        "email": "agl@google.com",
        "time": "Tue Sep 20 09:24:39 2016 -0700"
      },
      "message": "Initial commit\n"
    }
  ]
}
