)]}'
{
  "log": [
    {
      "commit": "d8548c353dc307950450c9688fd2d334c500e6be",
      "tree": "f4136683ddad620acc474606ae55c97f4c7fb7a0",
      "parents": [
        "9dbe0211283ed49cec2be5aaec5e344eb3472005"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Nov 20 01:25:31 2025 +0000"
      },
      "committer": {
        "name": "Szymon Janc",
        "email": "szymon.janc@codecoup.pl",
        "time": "Fri Dec 05 09:28:14 2025 +0100"
      },
      "message": "build(deps): bump golang.org/x/crypto from 0.31.0 to 0.45.0\n\nBumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.31.0 to 0.45.0.\n- [Commits](https://github.com/golang/crypto/compare/v0.31.0...v0.45.0)\n\n---\nupdated-dependencies:\n- dependency-name: golang.org/x/crypto\n  dependency-version: 0.45.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "9dbe0211283ed49cec2be5aaec5e344eb3472005",
      "tree": "58e4d943a415b4ea3e1406d46c7f00e71e70225c",
      "parents": [
        "e55cc86a115e26a47a54fae41680ba01f290334a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Dec 12 00:55:57 2024 +0000"
      },
      "committer": {
        "name": "Szymon Janc",
        "email": "szymon.janc@codecoup.pl",
        "time": "Tue Jul 01 17:56:28 2025 +0200"
      },
      "message": "build(deps): bump golang.org/x/crypto from 0.8.0 to 0.31.0\n\nBumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.8.0 to 0.31.0.\n- [Commits](https://github.com/golang/crypto/compare/v0.8.0...v0.31.0)\n\n---\nupdated-dependencies:\n- dependency-name: golang.org/x/crypto\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "e55cc86a115e26a47a54fae41680ba01f290334a",
      "tree": "510a7e5db30b3be77beae9b3eafcf6c24824082b",
      "parents": [
        "85acad3538399ec7269a57d6b90001b39b62e966"
      ],
      "author": {
        "name": "Szymon Janc",
        "email": "szymon.janc@codecoup.pl",
        "time": "Tue Jul 30 08:58:43 2024 +0200"
      },
      "committer": {
        "name": "Szymon Janc",
        "email": "szymon.janc@codecoup.pl",
        "time": "Wed Jul 31 10:56:57 2024 +0200"
      },
      "message": "Add initial asf.yaml configuration\n\nThis sets ininitial configuration for email notifications.\n"
    },
    {
      "commit": "85acad3538399ec7269a57d6b90001b39b62e966",
      "tree": "5d60da01877ad513de96b9b701f4ebfe64d62d09",
      "parents": [
        "8000a5a18b4584b6e49e1ae5b54ead499b278ea2"
      ],
      "author": {
        "name": "Szymon Janc",
        "email": "szymon.janc@codecoup.pl",
        "time": "Mon May 08 11:15:09 2023 +0200"
      },
      "committer": {
        "name": "Szymon Janc",
        "email": "szymon.janc@codecoup.pl",
        "time": "Mon May 15 10:18:15 2023 +0200"
      },
      "message": "Update dependencies\n\nRefresh dependencies to include latest versions of modules.\n"
    },
    {
      "commit": "8000a5a18b4584b6e49e1ae5b54ead499b278ea2",
      "tree": "6dbbfa8e393570a26ad8212fd1153103374cd3c8",
      "parents": [
        "2ef05e6dfb81e1e4d9df881f14f064963303beba"
      ],
      "author": {
        "name": "Szymon Janc",
        "email": "szymon.janc@codecoup.pl",
        "time": "Mon May 08 11:18:59 2023 +0200"
      },
      "committer": {
        "name": "Szymon Janc",
        "email": "szymon.janc@codecoup.pl",
        "time": "Thu May 11 09:43:43 2023 +0200"
      },
      "message": "Integration with Github Actions\n\nASF moved away from Travis to Github Actions.\n"
    },
    {
      "commit": "2ef05e6dfb81e1e4d9df881f14f064963303beba",
      "tree": "300b0f68a60a3590f2a4e09118de5f35ff9cc1ee",
      "parents": [
        "54b7160041b33a00d94a12803bcda5d9443e7138"
      ],
      "author": {
        "name": "Philip Burkhardt",
        "email": "philip.burkhardt@juul.com",
        "time": "Wed May 03 13:26:57 2023 -0700"
      },
      "committer": {
        "name": "wes3",
        "email": "william.sanfilippo@juul.com",
        "time": "Wed May 03 17:20:25 2023 -0400"
      },
      "message": "Comment update\n"
    },
    {
      "commit": "54b7160041b33a00d94a12803bcda5d9443e7138",
      "tree": "9a048a65168de87e36b3e25314fc3fdd8308142d",
      "parents": [
        "dc6549f643c5d6ec666d49b238094991dd0174a8"
      ],
      "author": {
        "name": "Philip Burkhardt",
        "email": "philip.burkhardt@juul.com",
        "time": "Tue Apr 04 11:07:58 2023 -0700"
      },
      "committer": {
        "name": "wes3",
        "email": "william.sanfilippo@juul.com",
        "time": "Wed May 03 17:20:25 2023 -0400"
      },
      "message": "Encrypted images that use HW encryption/decription need to be hashed using the encrypted image\n"
    },
    {
      "commit": "dc6549f643c5d6ec666d49b238094991dd0174a8",
      "tree": "7b327df60200c7d05817789082d3e5418494b5a3",
      "parents": [
        "56555f5f45008ce9f277a4c51c3d5593734752d1"
      ],
      "author": {
        "name": "Fabio Utzig",
        "email": "utzig@apache.org",
        "time": "Sun Oct 31 10:57:23 2021 -0300"
      },
      "committer": {
        "name": "Fabio Utzig",
        "email": "utzig@utzig.org",
        "time": "Mon Nov 01 15:41:42 2021 -0300"
      },
      "message": "Remove ec256 ASN1 signature padding\n\nOld MCUboot releases required the ASN1 of ec256 signatures to be padded;\nthis was removed with:\n\nhttps://github.com/mcu-tools/mcuboot/pull/680\n\nAfter this change, it is possible to build EC-256 based signature\nvalidation using Mbed TLS. This commit removes the padding and should\nallow following releases to use Mbed TLS, instead of Tinycrypt.\n\nSigned-off-by: Fabio Utzig \u003cutzig@apache.org\u003e\n"
    },
    {
      "commit": "56555f5f45008ce9f277a4c51c3d5593734752d1",
      "tree": "8dd04af300dd73ca34d4ac849ed3258a8fa497ce",
      "parents": [
        "4f9430334db169576a73f58ac8db15c1cdeec61f"
      ],
      "author": {
        "name": "Mark Blake",
        "email": "4048475+WeekendSuperhero@users.noreply.github.com",
        "time": "Mon Aug 16 12:32:21 2021 -0700"
      },
      "committer": {
        "name": "Fabio Utzig",
        "email": "utzig@utzig.org",
        "time": "Thu Aug 19 07:00:36 2021 -0300"
      },
      "message": "added HasEncryptionPayload function to check for possible HW encryption\n"
    },
    {
      "commit": "4f9430334db169576a73f58ac8db15c1cdeec61f",
      "tree": "aa682db632f15149badbcbf038c43c13682bb7c9",
      "parents": [
        "21a03200177b09b23f0bab866f7cb61aa3898658",
        "1794f7972c3c6dba99dfe3bdc85354cfe0984e3d"
      ],
      "author": {
        "name": "Vipul Rahane",
        "email": "vipulrahane@apache.org",
        "time": "Tue Jul 27 10:03:53 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 27 10:03:53 2021 -0700"
      },
      "message": "Merge pull request #24 from ccollins476ad/image-bin\n\nimage: Function to convert image to a byte slice"
    },
    {
      "commit": "21a03200177b09b23f0bab866f7cb61aa3898658",
      "tree": "4b39ef94d20933caffc17c9ff923b85181f0fc0c",
      "parents": [
        "4bdb75ba973f480c51be85f4c7cfc8352c87ca6c",
        "64169ed99ee78ce7b12445fd389907199470d808"
      ],
      "author": {
        "name": "Andy Gross",
        "email": "andy.gross@juul.com",
        "time": "Tue Mar 16 15:31:02 2021 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 16 15:31:02 2021 -0500"
      },
      "message": "Merge pull request #31 from utzig/fix-encrypted-images\n\nFix encrypted image support"
    },
    {
      "commit": "64169ed99ee78ce7b12445fd389907199470d808",
      "tree": "4b39ef94d20933caffc17c9ff923b85181f0fc0c",
      "parents": [
        "4bdb75ba973f480c51be85f4c7cfc8352c87ca6c"
      ],
      "author": {
        "name": "Fabio Utzig",
        "email": "utzig@apache.org",
        "time": "Mon Mar 15 20:13:49 2021 -0300"
      },
      "committer": {
        "name": "Fabio Utzig",
        "email": "utzig@apache.org",
        "time": "Mon Mar 15 20:13:49 2021 -0300"
      },
      "message": "Fix encrypted image support\n\nWhen encrypting images, the hash was being calculated using the\nencrypted image body. This is invalid for MCUboot, the hash must be\ncalculated first from the plain body and afterwards this body must be\nencrypted. This commit fixes the behavior.\n\nSigned-off-by: Fabio Utzig \u003cutzig@apache.org\u003e\n"
    },
    {
      "commit": "4bdb75ba973f480c51be85f4c7cfc8352c87ca6c",
      "tree": "0c885e5ed084503fe29163ee12f102e3aca8abbe",
      "parents": [
        "237238fb73ede2b47f2d910f4a60d7a8030ec1d5",
        "92f2b5253a7df492a6329c88e14a5ae67ff8d1cd"
      ],
      "author": {
        "name": "Andy Gross",
        "email": "andy.gross@juul.com",
        "time": "Fri Dec 04 15:49:32 2020 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 04 15:49:32 2020 -0600"
      },
      "message": "Merge pull request #30 from agross-korg/support-legacy-tlvs\n\nimage: Support legacy TLV values via option"
    },
    {
      "commit": "92f2b5253a7df492a6329c88e14a5ae67ff8d1cd",
      "tree": "0c885e5ed084503fe29163ee12f102e3aca8abbe",
      "parents": [
        "237238fb73ede2b47f2d910f4a60d7a8030ec1d5"
      ],
      "author": {
        "name": "Andy Gross",
        "email": "andy.gross@juul.com",
        "time": "Wed Nov 18 10:56:30 2020 -0600"
      },
      "committer": {
        "name": "Andy Gross",
        "email": "andy.gross@juul.com",
        "time": "Wed Nov 18 11:12:16 2020 -0600"
      },
      "message": "image: Support legacy TLV values via option\n\nThis patch adds a legacy TLV option for using the legacy values for AES_NONCE\nand SECRET_ID.  This allows newer newt tools to build usable application images\nfor systems which cannot support the new TLVs on boot.\n\nSigned-off-by: Andy Gross \u003candy.gross@juul.com\u003e\n"
    },
    {
      "commit": "237238fb73ede2b47f2d910f4a60d7a8030ec1d5",
      "tree": "69e7d44ac6994eab16c91f91ae07e868c27cdbba",
      "parents": [
        "aa99c4ccd95b2da7d2ccc916b287faf509146e99",
        "8bbda45fe5f471fbd5c709cba8356657d511d199"
      ],
      "author": {
        "name": "Andy Gross",
        "email": "andy.gross@juul.com",
        "time": "Fri Oct 23 15:41:56 2020 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 15:41:56 2020 -0500"
      },
      "message": "Merge pull request #29 from agross-korg/section-tlv-changes\n\nimage: Add support for section TLV"
    },
    {
      "commit": "8bbda45fe5f471fbd5c709cba8356657d511d199",
      "tree": "69e7d44ac6994eab16c91f91ae07e868c27cdbba",
      "parents": [
        "210585493d4b3945b700bc9dd3fc14f6045bd7ac"
      ],
      "author": {
        "name": "Andy Gross",
        "email": "andy.gross@juul.com",
        "time": "Wed Oct 21 11:45:50 2020 -0500"
      },
      "committer": {
        "name": "Andy Gross",
        "email": "andy.gross@juul.com",
        "time": "Wed Oct 21 11:45:50 2020 -0500"
      },
      "message": "image: Update overlapping TLVs\n\nThis patch updates the NONCE and SECRET_ID TLVs to use values in a reserved\nvendor range.  The original values are now considered legacy and must remain in\nplace to deal with images already created using the new TLVs.\n\nSigned-off-by: Andy Gross \u003candy.gross@juul.com\u003e\n"
    },
    {
      "commit": "210585493d4b3945b700bc9dd3fc14f6045bd7ac",
      "tree": "5903a0171a2ce899f712e12b20aa5b673542e0c2",
      "parents": [
        "aa99c4ccd95b2da7d2ccc916b287faf509146e99"
      ],
      "author": {
        "name": "Andy Gross",
        "email": "andy.gross@juul.com",
        "time": "Mon Oct 19 12:17:37 2020 -0500"
      },
      "committer": {
        "name": "Andy Gross",
        "email": "andy.gross@juul.com",
        "time": "Wed Oct 21 11:44:40 2020 -0500"
      },
      "message": "image: Add support for section TLV\n\nThis patch adds support for the section TLV.  The Section TLV is a protected\nTLV that supplies information about a specific elf section residing inside the\nimage.  There are some cases where only a image file is available and the\nsection information is required to do some post processing.  This TLV adds the\nability to deal with post processing in the absence of elf files.\n\nSigned-off-by: Andy Gross \u003candy.gross@juul.com\u003e\n"
    },
    {
      "commit": "aa99c4ccd95b2da7d2ccc916b287faf509146e99",
      "tree": "eb19c4ad7fa60d6d815e4aa5398b717fb2958e07",
      "parents": [
        "7b5e1d873e28c52aa9142f0ee5194b3069a9457d"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Thu Aug 20 14:07:48 2020 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Thu Aug 20 14:46:32 2020 -0700"
      },
      "message": "sec: Fix infinite loop\n\nIf the caller of EncryptAES() supplied a nonce shorter than 16 bytes,\nthe function would enter an endless loop.\n"
    },
    {
      "commit": "7b5e1d873e28c52aa9142f0ee5194b3069a9457d",
      "tree": "8c2e1d2d9fabb59bd0f638a72871fa10019282d7",
      "parents": [
        "30b07ba324c12550223389445e375866cf544ec7"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Wed Aug 12 14:33:12 2020 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Wed Aug 12 16:53:32 2020 -0700"
      },
      "message": "image/README.md: Document of Mynewt image anatomy\n"
    },
    {
      "commit": "30b07ba324c12550223389445e375866cf544ec7",
      "tree": "428bfa319dcb792dca6c06a7f0abf4a37cde9253",
      "parents": [
        "8fe37e2c13ca5e9f308a1ce52fa41df72626b676"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Wed Aug 12 14:33:07 2020 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Wed Aug 12 16:53:32 2020 -0700"
      },
      "message": "Add some comments\n"
    },
    {
      "commit": "8fe37e2c13ca5e9f308a1ce52fa41df72626b676",
      "tree": "db63b32cb3ace082c38bee0ed7a1d510c6405d8e",
      "parents": [
        "252824cdbca1dc71e5bf1cd59af36552628c049a"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Wed Aug 12 14:32:47 2020 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Wed Aug 12 16:53:32 2020 -0700"
      },
      "message": "image: Add some missing fields to json conversion\n"
    },
    {
      "commit": "252824cdbca1dc71e5bf1cd59af36552628c049a",
      "tree": "9ec0f609239f5d4ef8cadcb5f8c56c3c8e42beea",
      "parents": [
        "56b9e1661ceb3dd059b145cc47b4302c2456ee68"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Thu Jul 30 11:09:02 2020 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Wed Aug 12 14:34:37 2020 -0700"
      },
      "message": "Encrypt AES: Don\u0027t assume nonce is 8 bytes\n\nFor AES encryption, the client can optionally pass a nonce to use as the\nbeginning of the IV.  The code assumed the nonce was exactly eight\nbytes, so it would always append eight zeros to form the 16-byte nonce.\n\nThe fix is to only append as many zeros are necessary for a 16-byte IV.\n"
    },
    {
      "commit": "1794f7972c3c6dba99dfe3bdc85354cfe0984e3d",
      "tree": "b7e9a6f9caf077d3899e55be71dfec43f397c5b5",
      "parents": [
        "56b9e1661ceb3dd059b145cc47b4302c2456ee68"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Thu Jun 04 14:15:14 2020 -0700"
      },
      "committer": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Jun 05 15:50:20 2020 -0700"
      },
      "message": "image: Function to convert image to a byte slice\n"
    },
    {
      "commit": "56b9e1661ceb3dd059b145cc47b4302c2456ee68",
      "tree": "064c7a59b4ecb233272aa3793eaa3e1324d8ac34",
      "parents": [
        "46c91b0331838f159570616e8c2320b0e9fb5cc9"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Wed Mar 04 17:59:41 2020 -0800"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Wed Mar 04 18:03:11 2020 -0800"
      },
      "message": "FindWithinFlashAreaDevOff: Fix bad compare\n\nThis function was broken due to a typo in a comparison.\n"
    },
    {
      "commit": "46c91b0331838f159570616e8c2320b0e9fb5cc9",
      "tree": "4dd867d8cea1edbd1f605fa1c43553d3bb546963",
      "parents": [
        "c1233d06be5faa00caff00a65ed97d6c9ac2331d"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Feb 28 16:06:15 2020 -0800"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Fri Feb 28 16:45:30 2020 -0800"
      },
      "message": "manifest: Add flash helper function\n\n// FindWithinFlashAreaDevOff searches an mfg manifest for a flash area\n// with the specified device that contains the given offset.\nfunc (m *MfgManifest) FindWithinFlashAreaDevOff(\n    device int, offset int) *flash.FlashArea {\n"
    },
    {
      "commit": "c1233d06be5faa00caff00a65ed97d6c9ac2331d",
      "tree": "da0ffe2e06a7ce668e74ee0306a93c483a11590a",
      "parents": [
        "dbcedfc3469cf41e6ab5f3fa1e27fd10d911e2d2"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Feb 21 16:49:05 2020 -0800"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Fri Feb 28 16:45:30 2020 -0800"
      },
      "message": "image: Functions to decrypt hw-encrypted images\n\n\"Hardware-encrypted images\" are images that run on devices capable of\non-the-fly decryption.  These images differ from regular encrypted\nimages in the following ways:\n    * Contain some extra TLVs (nonce, secret ID)\n    * The hash is of the *encrypted* image\n"
    },
    {
      "commit": "dbcedfc3469cf41e6ab5f3fa1e27fd10d911e2d2",
      "tree": "caf64ae66760957779837e3b19b39195a20b5d24",
      "parents": [
        "85abf951da1d708e6b6eb45f84743b79fdd0e384"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Feb 28 16:01:54 2020 -0800"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Fri Feb 28 16:45:30 2020 -0800"
      },
      "message": "image: Allow CalcHash to accept an initial hash\n\nThe initial hash is only used for split images.\n"
    },
    {
      "commit": "85abf951da1d708e6b6eb45f84743b79fdd0e384",
      "tree": "6696af14fb3d35cf262ced481ea0df5f660350ff",
      "parents": [
        "63f9d9413e1cbc26209d56ec07e187e2375c8cb2"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Wed Feb 12 15:41:21 2020 -0800"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Thu Feb 20 09:22:09 2020 -0800"
      },
      "message": "manifest: Add `MfgManifestTarget.Size` field\n\nThis field indicates the size of the target binary (either .bin or .img\nfile).  This is useful for splitting an mfgimage into its constituent\nparts.  Without this change, the only method of doing this is to use a\nheuristic: remove all 0xff bytes from the end of each part (this is what\n`imgmod mfg split` does).  However, this leads to problems if a target\nor raw entry happens to contain trailing 0xff bytes.\n"
    },
    {
      "commit": "63f9d9413e1cbc26209d56ec07e187e2375c8cb2",
      "tree": "3dd82d0d417a145fb9673ea5b74102d8c7688a56",
      "parents": [
        "17f5c27a372b00fc54a5c4c132a4ba6661524236"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Tue Feb 04 16:03:21 2020 -0800"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Tue Feb 04 16:33:17 2020 -0800"
      },
      "message": "image: calculate padding when parsing image\n\nWhen parsing an image file, if the image indicates an extra-long header,\nbuild a slice of bytes to hold the extra leading padding.  This is\nneeded to perform the image hash calculation correctly.\n"
    },
    {
      "commit": "17f5c27a372b00fc54a5c4c132a4ba6661524236",
      "tree": "7ce7bb6f390eaa2fb18ee0bd17d36e0f8555ba7f",
      "parents": [
        "8aa21637c590ab2ff09ff825e5c5a6cbf3a0a4e0"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Thu Jan 02 10:01:39 2020 -0800"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Mon Jan 06 11:01:20 2020 -0800"
      },
      "message": "image: Try ALL enc keys when verifying hash\n\nBefore this commit, the image verification procedure would fail early if\ndecryption failed.  The procedure is supposed to try all the keys and\nreport success if any of them works.\n"
    },
    {
      "commit": "8aa21637c590ab2ff09ff825e5c5a6cbf3a0a4e0",
      "tree": "36a3daad28d6759b521c06e01ef2296e202ef372",
      "parents": [
        "f511d8f23378139994073805f061f9d0ef80d886"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Dec 13 17:56:11 2019 -0800"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Mon Dec 16 11:28:13 2019 -0800"
      },
      "message": "image: During parsing, account for header padding\n\nThe ParseImage function was ignoring header padding.  For images with\nheader padding, this function truncated the image.\n"
    },
    {
      "commit": "f511d8f23378139994073805f061f9d0ef80d886",
      "tree": "d4190a1d9840609dd2c02d2a7204b9caddedf495",
      "parents": [
        "963b7da9315e73e2a6e4bd1b8c96f97038ba0082"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Thu Nov 07 17:36:31 2019 -0800"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Thu Nov 07 17:40:46 2019 -0800"
      },
      "message": "Fix FindProtTlv functions: were returning reg TLVs\n\nThe Image#FindProtTlv functions were returning TLVs from the regular\nlist, not the protected list!\n"
    },
    {
      "commit": "963b7da9315e73e2a6e4bd1b8c96f97038ba0082",
      "tree": "a28c6ff6bbb046ac2cb2ce0508ed38f3717b35e1",
      "parents": [
        "9320939f0dace14f8810e31a17320fb534c193f3"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Thu Nov 07 16:01:22 2019 -0800"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Thu Nov 07 17:38:07 2019 -0800"
      },
      "message": "mfg_manifest: Add list of flash device names\n\nAllow an mfgimage manifest to indicate the names of the BSP\u0027s flash\ndevices.\n"
    },
    {
      "commit": "9320939f0dace14f8810e31a17320fb534c193f3",
      "tree": "ad877fdb196e4ab2350abae1e779084a4987fa7f",
      "parents": [
        "3cfcc7e55adbb33b12e241a7399325eee2393da1"
      ],
      "author": {
        "name": "Fabio Utzig",
        "email": "utzig@apache.org",
        "time": "Wed Nov 06 18:27:10 2019 -0300"
      },
      "committer": {
        "name": "Fabio Utzig",
        "email": "utzig@utzig.org",
        "time": "Thu Nov 07 06:43:23 2019 -0300"
      },
      "message": "Add support for image encryption using ECIES-P256\n\nThis adds support for encrypting images using ECIES-P256. The MCUBoot\nimplementation was described here:\n\nhttps://github.com/JuulLabs-OSS/mcuboot/blob/master/docs/encrypted_images.md#ecies-p256-encryption\n\nSigned-off-by: Fabio Utzig \u003cutzig@apache.org\u003e\n"
    },
    {
      "commit": "3cfcc7e55adbb33b12e241a7399325eee2393da1",
      "tree": "67c0ae3be8bad8d1c49191c263878339df2e9f44",
      "parents": [
        "be2dbe26891291b5666f3b3507ef6df54d8ecc23"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Thu Oct 31 14:13:00 2019 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Wed Nov 06 16:06:22 2019 -0800"
      },
      "message": "image: Functions to search protected TLVs\n\nThis commit adds two sets of functions to the `image.Image` struct:\n\n    \u003cverb\u003eProtTlvs\u003c...\u003e: Operates on protected TLVs only.\n    \u003cverb\u003eAllTlvs\u003c...\u003e: Operates on regulare and protected TLVs.\n"
    },
    {
      "commit": "be2dbe26891291b5666f3b3507ef6df54d8ecc23",
      "tree": "fd0a57de3ce35c654a70b15aebac3f4a4c1ebdce",
      "parents": [
        "b8ee2516bf8bb36d1bb2c5d939dedd5966d90e57"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Wed Oct 30 16:12:09 2019 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Thu Oct 31 14:12:17 2019 -0700"
      },
      "message": "Parse protected TLVs when parsing an image\n\nPrior to this commit, when parsing an image that had protected TLVs:\n* The protected TLVs were interpreted as normal TLVs.\n* The normal TLVs were ignored.\n"
    },
    {
      "commit": "b8ee2516bf8bb36d1bb2c5d939dedd5966d90e57",
      "tree": "8dab5014cb137e41c6a1ce2853b12758b79202c8",
      "parents": [
        "03992ce9f73dbccfc7d1f9206b2035a79b0c124e"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Wed Oct 23 17:31:27 2019 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Thu Oct 24 09:45:08 2019 -0700"
      },
      "message": "Add `Size` field to MfgManifestRaw\n"
    },
    {
      "commit": "03992ce9f73dbccfc7d1f9206b2035a79b0c124e",
      "tree": "1ac77524149b09b171359a6835504b41d41e0587",
      "parents": [
        "6a0584f127bada7da36ac3f526139d899e39b0ec"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Wed Oct 23 14:59:09 2019 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Thu Oct 24 09:45:08 2019 -0700"
      },
      "message": "sec: function to get the hash from a signing key\n\nfunc (key *PubSignKey) Hash() ([]byte, error)\n\nThis is just a convenience function.\n"
    },
    {
      "commit": "6a0584f127bada7da36ac3f526139d899e39b0ec",
      "tree": "80ccce2188d221a12469a00d68d63be2ff95a5f9",
      "parents": [
        "267010c1118567257abd8e7f56db369f81907ebe"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Wed Oct 23 14:58:05 2019 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Thu Oct 24 09:45:08 2019 -0700"
      },
      "message": "sec: Make GenerateSig() return a Sig object\n\nBefore this commit, this function returned a []byte slice containing the\nraw signature.  Now the function returns a Sig object (which also\ncontains the sig type and key hash).\n"
    },
    {
      "commit": "267010c1118567257abd8e7f56db369f81907ebe",
      "tree": "b494b5c652c1f336195f64885064c3034d6b42d6",
      "parents": [
        "bd8b4b4e2a686da7253403eddf8e158a84e7a27b"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Wed Oct 23 14:57:37 2019 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Thu Oct 24 09:45:08 2019 -0700"
      },
      "message": "sec: Add `EncType` type\n\nEnumerate the list of encryption types and add the ability to query an\nencryption key for its type.\n"
    },
    {
      "commit": "bd8b4b4e2a686da7253403eddf8e158a84e7a27b",
      "tree": "c8f10eebe72308a2e6f79b9dc3bc0a0beed794e0",
      "parents": [
        "9d893f19ec48ada9c7f3b1210df54c873253387c"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Wed Oct 23 14:56:41 2019 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Thu Oct 24 09:45:08 2019 -0700"
      },
      "message": "sec: Add `Type` field to `Sig` type\n\nIt was not possible to determine the algorithm associated with a\nsignature.  This commit adds this information to the Sig type.\n"
    },
    {
      "commit": "9d893f19ec48ada9c7f3b1210df54c873253387c",
      "tree": "fedac72caf5b13bbf074ac90e7b6d9053d20ece0",
      "parents": [
        "8fa4247999900fdd35a1bb60e8105711af884ffd"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Wed Oct 23 12:48:13 2019 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Thu Oct 24 09:45:08 2019 -0700"
      },
      "message": "sec: Add function to get pub enc key from priv key\n\nfunc (key *PrivEncKey) PubEncKey() PubEncKey\n"
    },
    {
      "commit": "8fa4247999900fdd35a1bb60e8105711af884ffd",
      "tree": "4a63035d3400ca1adbaeff1224b9bc42186580bc",
      "parents": [
        "b688b2c0ae796ab1dade84e8a1d603ac71f64aa1"
      ],
      "author": {
        "name": "Fabio Utzig",
        "email": "utzig@apache.org",
        "time": "Tue Oct 15 10:57:11 2019 -0300"
      },
      "committer": {
        "name": "Fabio Utzig",
        "email": "utzig@utzig.org",
        "time": "Mon Oct 21 14:51:32 2019 -0300"
      },
      "message": "Add support for protected TLVs\n\nProtected TLVs is a new feature supported by MCUBoot beginning with\nversion 1.4.0. This allows the hash+signature to also include a few TLVs\nthat should be protected from modification by users. For more details:\n\nhttps://github.com/JuulLabs-OSS/mcuboot/blob/master/docs/design.md#protected-tlvs\n"
    },
    {
      "commit": "b688b2c0ae796ab1dade84e8a1d603ac71f64aa1",
      "tree": "bd0089c05ec6fc110f0cfa5cd1815de1adce478d",
      "parents": [
        "703f371e8a93e3edf50086a7db5572b792d0d6e7"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Oct 18 16:59:07 2019 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Mon Oct 21 09:37:39 2019 -0700"
      },
      "message": "New mfg manifest fields: target.extra, raw.extra\n\nAdd a new field to the `target` and `raw` mfg manifest items:\n`extra_manifest`.  This field is a generic map that gets passed through\nfrom the mfg definition.  This field is useful if the user needs to\nconvey additional information to some system that knows how to parse a\nmanufacturing manifest file.\n"
    },
    {
      "commit": "703f371e8a93e3edf50086a7db5572b792d0d6e7",
      "tree": "da789ae45be0b6fd88000600c55b5987b5c403ba",
      "parents": [
        "91a9bc9025e6a3b992f2033c1c427a03b7651dad"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Oct 18 14:32:00 2019 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Mon Oct 21 09:37:39 2019 -0700"
      },
      "message": "mfg_manifest: Include raw sections in manifest\n"
    },
    {
      "commit": "91a9bc9025e6a3b992f2033c1c427a03b7651dad",
      "tree": "66943027ad837ab9c9e6b304c8f646419a7d1716",
      "parents": [
        "35e0c0fb16e8cd2e5fed741c3db4c13f6e4c4748"
      ],
      "author": {
        "name": "Andy Gross",
        "email": "andy.gross@juul.com",
        "time": "Wed Oct 16 01:05:25 2019 -0500"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Thu Oct 17 13:19:39 2019 -0700"
      },
      "message": "Fix issues with hash calculation\n\nThis patch fixes the hash calculation to use the correct encrypted or\nunencrypted application image bytes.  This patch also fixes an\nincorrect padding if a header size \u003e 32 bytes is used.\n\nSigned-off-by: Andy Gross \u003candy.gross@juul.com\u003e\n"
    },
    {
      "commit": "35e0c0fb16e8cd2e5fed741c3db4c13f6e4c4748",
      "tree": "b754998c0d95a60e5e9ac9fa4591599cae8fcc60",
      "parents": [
        "a13c22c1c785ffc0aa2466d0a342bdeef1ef4d44"
      ],
      "author": {
        "name": "Andy Gross",
        "email": "andy.gross@juul.com",
        "time": "Thu Oct 10 15:50:07 2019 -0500"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Thu Oct 17 13:19:39 2019 -0700"
      },
      "message": "Add AES-256-CTR capabilities and dependencies\n\nThis patch adds the necessary changes to support AES-256-CTR and hw key\nencryption.  In addition, header and image padding have been added to\nsatisfy the hardware restrictions of being 1KB aligned for the encrypted\npayload.\n\nSigned-off-by: Andy Gross \u003candy.gross@juul.com\u003e\n"
    },
    {
      "commit": "a13c22c1c785ffc0aa2466d0a342bdeef1ef4d44",
      "tree": "9fdc9e3624f119f5ccb44aebf05e26d2084d9841",
      "parents": [
        "8a1fee9751c819fb0be947ca5310d55e524aec96"
      ],
      "author": {
        "name": "Fabio Utzig",
        "email": "utzig@apache.org",
        "time": "Thu Oct 10 18:16:42 2019 -0300"
      },
      "committer": {
        "name": "Fabio Utzig",
        "email": "utzig@utzig.org",
        "time": "Thu Oct 10 20:17:26 2019 -0300"
      },
      "message": "Fix signing with elliptic curves\n\n1) When using ec256 (aka secp256r1), passes the correct type to the\n   marshalling function.\n\n2) Update to use the standard library for parse the ed25519 PKCS#8 (must\n   upgrade to go 1.13 or higher)\n\nSigned-off-by: Fabio Utzig \u003cutzig@apache.org\u003e\n"
    },
    {
      "commit": "8a1fee9751c819fb0be947ca5310d55e524aec96",
      "tree": "2259383907997d7f84880020fda1fc08c3fa6757",
      "parents": [
        "a86ed83af5bab0eeea204b1d02f052b4ddfeef10"
      ],
      "author": {
        "name": "Alvaro Prieto",
        "email": "source@alvaroprieto.com",
        "time": "Thu Jul 04 12:25:24 2019 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Thu Jul 18 14:40:35 2019 -0700"
      },
      "message": "Fix IMAGE_F_NON_BOOTABLE definition to match mcuboot\n\nThe correct flag for IMAGE_F_NON_BOOTABLE should be 0x10 instead of 0x02\naccording to the mcuboot files:\nhttps://github.com/JuulLabs-OSS/mcuboot/blob/3c469bc698a9767859ed73cd0201c44161204d5c/boot/bootutil/include/bootutil/image.h#L46\n\nSigned-off-by: Alvaro Prieto \u003csource@alvaroprieto.com\u003e\n"
    },
    {
      "commit": "a86ed83af5bab0eeea204b1d02f052b4ddfeef10",
      "tree": "cc1af5ceac0022abf1177cf4efeda8ce49a73378",
      "parents": [
        "05cace2b3fab7b106f2eb6d644663fa92f3bfb62"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Mon Jul 01 14:29:42 2019 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Wed Jul 03 13:14:36 2019 -0700"
      },
      "message": "mfg: Verify embedded images separately\n\nPrior to this commit, the `\"mfg\".Mfg.VerifyManifest()` function\nattempted to verify all of an mfg\u0027s embedded images.  This resulted in a\nclunky and unfriendly API:\n\n* The caller was required to pass in a set of public signing keys and\nprivate encryption keys.\n* There was no way to verify the manifest without also checking the\nembedded images.  E.g., if the caller doesn\u0027t have access to encryption\nkeys, this function would fail even if the mfgimage is correct.\n\nNow `VerifyManifest()` does not verify the embedded images.  To verify\nthe embedded images, the caller should call `\"mfg\".Mfg.ExtractImages()`\nand call the image verification functions on each image separately.\n"
    },
    {
      "commit": "05cace2b3fab7b106f2eb6d644663fa92f3bfb62",
      "tree": "be8ffa170d7e15c3d03be4615a14d7e7da2660fd",
      "parents": [
        "49a78be1e9eb942a502d31d9af3a445d0d18e3eb"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Mon Jul 01 14:19:39 2019 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Wed Jul 03 13:14:36 2019 -0700"
      },
      "message": "image: return correct key index during sig verify\n\nThis commit fixes a bug involving image signature verification.  The\n`\"image\".Image.VerifySigs()` function is intended to return the index of\nthe key that successfully verified an image\u0027s signature.  The bug is:\nthis function was returning the index of the signature, not the index of\nthe key.\n"
    },
    {
      "commit": "49a78be1e9eb942a502d31d9af3a445d0d18e3eb",
      "tree": "35e6bf5c8c3811531108a76572ae8f1dd9122b12",
      "parents": [
        "d5de4c207ac0b32f733bedac0c595d5301047280"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Thu Jun 27 11:34:30 2019 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Thu Jun 27 13:06:36 2019 -0700"
      },
      "message": "Add support for ed25519 encrypted signing keys\n\nThis is almost a straight copy of code from the newt repo, written by\nutzig@apache.org.\n"
    },
    {
      "commit": "d5de4c207ac0b32f733bedac0c595d5301047280",
      "tree": "df35185d29368b796ebea61c5dbe7c502348d1d5",
      "parents": [
        "23225d42bed1c5df84896dd2f0315ebf3f906d72"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Tue Jun 25 17:58:46 2019 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Wed Jun 26 11:39:37 2019 -0700"
      },
      "message": "image: Add tests for encrypted images\n"
    },
    {
      "commit": "23225d42bed1c5df84896dd2f0315ebf3f906d72",
      "tree": "491998cf8ed01d094110ce29a45ac6f8c4752d2e",
      "parents": [
        "441a611715c43c6995b119d674f72869af829601"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Tue Jun 25 17:06:00 2019 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Wed Jun 26 11:39:37 2019 -0700"
      },
      "message": "Support verification of encrypted images\n\nAn image\u0027s hash cannot be verified while the image is encrypted.  To\nverify the hash of such an image, the image must be decrypted first\n(without clearing the encrypted flag in the header).  This complicates\nthe API, as the caller now needs to pass in a set of encryption keys.\n\nThe fix is to split the image.Verify() function into several pieces:\n    * VerifyStructure()\n    * VerifyHash()\n    * VerifySigs()\n    * VerifyManifest()\n"
    },
    {
      "commit": "441a611715c43c6995b119d674f72869af829601",
      "tree": "72275ad5a2e0f29e3111c4dc463e2328dfeb1cd4",
      "parents": [
        "b7033faf34a680cb87664975b0fb707901fa1fc7",
        "ced5960b82111b3a06060a678079b30cf5b3ae85"
      ],
      "author": {
        "name": "ccollins476ad",
        "email": "ccollins@apache.org",
        "time": "Fri Jun 21 14:25:20 2019 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 21 14:25:20 2019 -0700"
      },
      "message": "Merge pull request #1 from ccollins476ad/verify\n\nAdd \"verify\" functionality"
    },
    {
      "commit": "ced5960b82111b3a06060a678079b30cf5b3ae85",
      "tree": "72275ad5a2e0f29e3111c4dc463e2328dfeb1cd4",
      "parents": [
        "b9800595bc6593a50f005e70f3a5fbb6db22151a"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Jun 21 14:03:19 2019 -0700"
      },
      "committer": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Jun 21 14:03:19 2019 -0700"
      },
      "message": "Add README.md\n"
    },
    {
      "commit": "b9800595bc6593a50f005e70f3a5fbb6db22151a",
      "tree": "3357a713ee4dad697aebc92413923aeb922b083d",
      "parents": [
        "9515a56a55a5a3556403f39ee189a28fb4177881"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Jun 21 12:18:15 2019 -0700"
      },
      "committer": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Jun 21 12:44:24 2019 -0700"
      },
      "message": "Add NOTICE file\n"
    },
    {
      "commit": "9515a56a55a5a3556403f39ee189a28fb4177881",
      "tree": "61168e2d6bb0f457da1e5aad5f4a57359438d3c0",
      "parents": [
        "5b2c4f803ea2330ce8799c026fe4606a1ab679e6"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Jun 21 10:26:44 2019 -0700"
      },
      "committer": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Jun 21 12:44:24 2019 -0700"
      },
      "message": "Add .gitignore\n"
    },
    {
      "commit": "5b2c4f803ea2330ce8799c026fe4606a1ab679e6",
      "tree": "e7a484eef4cda0a114871f14bc78ca496c8bf3cd",
      "parents": [
        "fb24b39ed90f333627f0ccf885e0d4ab7ee04bbe"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Jun 21 11:53:27 2019 -0700"
      },
      "committer": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Jun 21 12:44:23 2019 -0700"
      },
      "message": "Add missing Apache licenses\n"
    },
    {
      "commit": "fb24b39ed90f333627f0ccf885e0d4ab7ee04bbe",
      "tree": "24263100f3ed7b43d764dbc1776eae9e06861f96",
      "parents": [
        "fea4ea7907034777a6cc9ccb0e2f0cfaccd69572"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Thu Jun 20 17:45:46 2019 -0700"
      },
      "committer": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Jun 21 12:44:03 2019 -0700"
      },
      "message": "Some code reorginazation and comments\n"
    },
    {
      "commit": "fea4ea7907034777a6cc9ccb0e2f0cfaccd69572",
      "tree": "726198556970256f812835a5fd6655c68d07238a",
      "parents": [
        "58017f7dc6efeeee8f900f2ec576550f45a4c04d"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Thu Jun 20 13:59:58 2019 -0700"
      },
      "committer": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Jun 21 10:26:54 2019 -0700"
      },
      "message": "Turn `artifact` into a Go module\n"
    },
    {
      "commit": "58017f7dc6efeeee8f900f2ec576550f45a4c04d",
      "tree": "07a3ae919846638cec375f3a24be3f90e126ff2c",
      "parents": [
        "c15c49efe5926ba4ad41fd902061ff23a1b76a06"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Thu Jun 20 14:00:25 2019 -0700"
      },
      "committer": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Jun 21 10:26:54 2019 -0700"
      },
      "message": "\"Verify\" unit tests\n"
    },
    {
      "commit": "c15c49efe5926ba4ad41fd902061ff23a1b76a06",
      "tree": "2da822b602d29b52edb44e63245da1face629b09",
      "parents": [
        "697ec59beded3decd59cd08f3f3a46b7573f418c"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Thu Jun 20 14:07:44 2019 -0700"
      },
      "committer": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Jun 21 10:26:54 2019 -0700"
      },
      "message": "Add \"verify\" functions to API\n\nAfter reading an image or mfgimage, the `Verify()` and\n`VerifyManifest()` functions can be used to check the object\u0027s\nintegrity.\n"
    },
    {
      "commit": "697ec59beded3decd59cd08f3f3a46b7573f418c",
      "tree": "e37430adf40e05510fda46e32f9b33f0e5a124d6",
      "parents": [
        "b7033faf34a680cb87664975b0fb707901fa1fc7"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Thu Jun 20 14:05:35 2019 -0700"
      },
      "committer": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Jun 21 10:26:54 2019 -0700"
      },
      "message": "Add \"errors\" package\n\nThis is a thin wrapper over the `pkg/errors` package.  It decorates the\nbase package with the following functionality:\n\n1. Wrap and Wrapf produce an error with exactly one stack trace.  If\nthe wrapped error already contains a stack trace, these functions just\nappend text to the message.\n\n2. WithStack produces an error with exactly one stack trace.  If the\nwrapped error already contains a stack trace, it is returned unmodified.\n\nAll of artifact\u0027s public APIs return errors produced with this package.\nThis allows us to remove the dependency on newt (`NewtError`) but still\nretain error stack traces.\n"
    },
    {
      "commit": "b7033faf34a680cb87664975b0fb707901fa1fc7",
      "tree": "16bb374a42720499e778c5ba22de3969080972f5",
      "parents": [
        "db596e7f6825de31b6f2091741c8841362d4a1f3"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Jun 21 10:21:33 2019 -0700"
      },
      "committer": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Jun 21 10:21:33 2019 -0700"
      },
      "message": "Add .travis.yml\n"
    },
    {
      "commit": "db596e7f6825de31b6f2091741c8841362d4a1f3",
      "tree": "ede1a7837d5bdb1f89db5e74d7b02aabcf554ed0",
      "parents": [
        "dc98b6ddc9af4a4cb4e69e36bb5b84fd6326b9ad"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri May 24 12:37:22 2019 -0700"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Wed May 29 10:03:35 2019 -0700"
      },
      "message": "artifact: add image.CalcHash() function\n\nPrior to this commit, the only way to calculate an image\u0027s hash was to\nuse image.calcHash() (in `artifact/image/create.go`).  This function is\nprivate to the `image` package, and it takes a set of parameters that\nare is not convenient for most cases.\n\nThis commit adds a new public function to the `image.Image` type:\n```\nfunc (i *Image) CalcHash() ([]byte, error)\n```\n"
    },
    {
      "commit": "dc98b6ddc9af4a4cb4e69e36bb5b84fd6326b9ad",
      "tree": "a1cb317bc308a2f7fe5826f3cdaec74205420c56",
      "parents": [
        "0351ab5812615bcaf4efe0e16ca5112d9a2cdda7"
      ],
      "author": {
        "name": "Fabio Utzig",
        "email": "utzig@apache.org",
        "time": "Wed May 08 12:18:39 2019 -0300"
      },
      "committer": {
        "name": "Fabio Utzig",
        "email": "utzig@utzig.org",
        "time": "Mon May 20 10:14:38 2019 -0700"
      },
      "message": "Add RSA3072 support\n"
    },
    {
      "commit": "0351ab5812615bcaf4efe0e16ca5112d9a2cdda7",
      "tree": "d47df074d414adbf0cd6f2fad4f46e86458ed719",
      "parents": [
        "846046a16d0c5c8d56e56179b90a2ed9fdf54c0b"
      ],
      "author": {
        "name": "Szymon Janc",
        "email": "szymon.janc@codecoup.pl",
        "time": "Tue Mar 26 21:40:12 2019 +0100"
      },
      "committer": {
        "name": "Szymon Janc",
        "email": "szymon.janc@codecoup.pl",
        "time": "Tue Mar 26 21:40:12 2019 +0100"
      },
      "message": "Update missing license headers and rat excludes\n"
    },
    {
      "commit": "846046a16d0c5c8d56e56179b90a2ed9fdf54c0b",
      "tree": "c5083bca8d34cb5c34f797e65eeb511ca361aced",
      "parents": [
        "8ba2a3d4a0ccd3c16fb4001ee157206bfdfb99f2"
      ],
      "author": {
        "name": "Miguel Azevedo",
        "email": "miguellazev@gmail.com",
        "time": "Sat Mar 23 22:51:30 2019 +0000"
      },
      "committer": {
        "name": "Miguel Azevedo",
        "email": "miguellazev@gmail.com",
        "time": "Sat Mar 23 22:51:30 2019 +0000"
      },
      "message": "Enabling mfg bin to hex image convertion.\n"
    },
    {
      "commit": "8ba2a3d4a0ccd3c16fb4001ee157206bfdfb99f2",
      "tree": "9cd6c7be2d4f4f3b2fdbe68d023fb5382758a8f2",
      "parents": [
        "40452e878381db8cf381dcd742a8d38259d56efa"
      ],
      "author": {
        "name": "Miguel Azevedo",
        "email": "miguellazev@gmail.com",
        "time": "Sat Mar 23 20:48:18 2019 +0000"
      },
      "committer": {
        "name": "Miguel Azevedo",
        "email": "miguellazev@gmail.com",
        "time": "Sat Mar 23 20:48:18 2019 +0000"
      },
      "message": "Enable production of hex mfgimg files.\n"
    },
    {
      "commit": "40452e878381db8cf381dcd742a8d38259d56efa",
      "tree": "0e58b9b4881d0641f87aba0081429733bb677114",
      "parents": [
        "1447da7b29f30f7909aa739ae455744d1d850a42"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Thu Jan 10 14:58:08 2019 -0800"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Wed Jan 16 10:46:05 2019 -0800"
      },
      "message": "newt: Allow mfgimages to be signed\n\nMfgimages are signed with the same keys as their constituent images.\n"
    },
    {
      "commit": "1447da7b29f30f7909aa739ae455744d1d850a42",
      "tree": "d5a8bc786b953816136151f7a660ea0910d81b22",
      "parents": [
        "353f34383c32b3c935cbe9c3e410527c4c26a184"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Thu Jan 10 13:08:51 2019 -0800"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Wed Jan 16 10:46:05 2019 -0800"
      },
      "message": "Create new package: artifact/sec\n\nThis package contains generic security functionality.\n\nSince mfgimages now require signatures (not just normal images), it\ndoesn\u0027t make sense to keep all the security functionality in the `image`\npackage.\n"
    },
    {
      "commit": "353f34383c32b3c935cbe9c3e410527c4c26a184",
      "tree": "7aa2408c2d7e2bc34dbcf8afe494ead1453f2c15",
      "parents": [
        "8a3bd09fcd14c25f6f41ffbbb7f3b67fbfbb5a48"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Wed Jan 02 13:15:38 2019 -0800"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Fri Jan 04 10:20:59 2019 -0800"
      },
      "message": "Fix int overflow on 32-bit platforms.\n"
    },
    {
      "commit": "8a3bd09fcd14c25f6f41ffbbb7f3b67fbfbb5a48",
      "tree": "0fc47e0bf4b917c88bf9d506d67481ac7f799cbc",
      "parents": [
        "0bac15238d4dd730c3f395e484811cdb2c0baff0"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Thu Dec 20 13:49:01 2018 -0800"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Fri Jan 04 10:20:59 2019 -0800"
      },
      "message": "Include BSP name in mfg manifest\n"
    },
    {
      "commit": "0bac15238d4dd730c3f395e484811cdb2c0baff0",
      "tree": "61620913b134a1e9b435e5990ba28987cd910a9c",
      "parents": [
        "9dd213a93f66442563a7b113edcc935fd6c9b710"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Tue Dec 18 18:20:18 2018 -0800"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Fri Jan 04 10:20:59 2019 -0800"
      },
      "message": "Artifact library update\n"
    },
    {
      "commit": "9dd213a93f66442563a7b113edcc935fd6c9b710",
      "tree": "73d80637969c30b8c024341ca9e0ba4152d617d0",
      "parents": [
        "3025a27accf1a7fc773c0d811c4f9fc4df5a4daa"
      ],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Fri Dec 14 14:19:57 2018 -0800"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Fri Jan 04 10:20:59 2019 -0800"
      },
      "message": "Support for the 2.0 mfgimage format\n"
    },
    {
      "commit": "3025a27accf1a7fc773c0d811c4f9fc4df5a4daa",
      "tree": "4c052bead490a3bac5845c50e368951b8a50a72b",
      "parents": [],
      "author": {
        "name": "Christopher Collins",
        "email": "ccollins@apache.org",
        "time": "Tue Nov 20 17:41:07 2018 -0800"
      },
      "committer": {
        "name": "ccollins476ad",
        "email": "ccollins476ad@gmail.com",
        "time": "Fri Jan 04 10:20:59 2019 -0800"
      },
      "message": "\"artifact\" library\n\nThis library subsumes functionality that is currently tied to the newt\ntool: Parsing, manipulation, and writing of artifacts that aren\u0027t\ndescribed by a Mynewt project.\n\nSpecifically:\n* `.img` file parsing and generation\n* Manifest file parsing\n"
    }
  ]
}
