)]}'
{
  "log": [
    {
      "commit": "a435ced0836439f048636a51312ca4ec39112f1c",
      "tree": "0936f256071e5e9c6f8e9540edad4f889922cf19",
      "parents": [
        "ecb14d835fe70751b9336897c4cc2a8018a55b1e"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Wed Oct 14 02:34:39 2020 -0500"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Wed Oct 14 02:34:39 2020 -0500"
      },
      "message": "Add a feature to print out a URL for a QR code for the give TOTP\nseed/name. Copy/pasting that into a browser will provide a QR code to\nscan into a phone\u0027s OTP app.\n"
    },
    {
      "commit": "ecb14d835fe70751b9336897c4cc2a8018a55b1e",
      "tree": "230f93be607630f95095236e376c690cd703b497",
      "parents": [
        "7fad18cdf8fa8b6a5d7d23d2b9f2edcd4a697f2d"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Wed Oct 14 00:49:45 2020 -0500"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Wed Oct 14 00:49:45 2020 -0500"
      },
      "message": "Add support for TOTP.\n\nIt is a little wonky since SEQUENCE is not needed, and SEED really\nmeans a name/alias for the stored secret.\n\n* allow totp as an algorithm name in ~/.otp and on cmdline.\n* pass algo to the password creation so that we use the special TOTP\n  password construction function.\n* adjust the command line parser for TOTP and the algo processor call\n"
    },
    {
      "commit": "7fad18cdf8fa8b6a5d7d23d2b9f2edcd4a697f2d",
      "tree": "dbc4114149f098c4445f2ded513aceba680de892",
      "parents": [
        "b865516930ae32ce87d3d29b095ba01cbc5c04eb"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Jun 19 12:53:03 2020 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 12:53:03 2020 -0500"
      },
      "message": "remove unused imports"
    },
    {
      "commit": "b865516930ae32ce87d3d29b095ba01cbc5c04eb",
      "tree": "ee77d82fd6e2a279d558a86225a798d589e461c4",
      "parents": [
        "0e09dd220f51dd79b08b90d1f8986336709b472f"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Jun 19 12:41:56 2020 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 12:41:56 2020 -0500"
      },
      "message": "expand info on .otp\n\nAdd information about the .otp format, manually editing the file, and converting from SKeyCalc"
    },
    {
      "commit": "0e09dd220f51dd79b08b90d1f8986336709b472f",
      "tree": "6416dedd197c66c09adecb0741f646e8d2fe8836",
      "parents": [
        "5583be11cf48acc0914cddc6de95571724885e99"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Jan 17 06:19:18 2020 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 17 06:19:18 2020 -0600"
      },
      "message": "Update README.md\n\nthe algorithm is now optional in most cases"
    },
    {
      "commit": "5583be11cf48acc0914cddc6de95571724885e99",
      "tree": "63bf8948033678d07b1e2ab4536fa49ca518a01b",
      "parents": [
        "24a6ebe5b861550d27302f2a16c53bfd8c0663a3"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Jan 17 05:47:17 2020 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Jan 17 05:47:17 2020 -0600"
      },
      "message": "* store the algorithm used into .otp\n* allow algo to be optional on cmdline or the challenge input\n* override specified algorithm based on .otp seed\u0027s data\n"
    },
    {
      "commit": "24a6ebe5b861550d27302f2a16c53bfd8c0663a3",
      "tree": "74c792a75bc0615d3b280427f3f70a952bd84f90",
      "parents": [
        "7b27d077c163b06f4e9071f583b10db86c1c73b4"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Jan 17 05:00:49 2020 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Jan 17 05:00:49 2020 -0600"
      },
      "message": "clarify the unknown algorithm\n"
    },
    {
      "commit": "7b27d077c163b06f4e9071f583b10db86c1c73b4",
      "tree": "dd796544995f54fe604feab79c847ac62d49ea94",
      "parents": [
        "c11d4592cd84df3e6835f360b846a3dff72758a6",
        "796d0133596c57c5bef5bd1acfdde08860be65b5"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Wed Dec 11 04:03:29 2019 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 11 04:03:29 2019 -0600"
      },
      "message": "Merge pull request #3 from apache/macOSandArgs\n\nAdd macOS pbcopy and allow args for generic app"
    },
    {
      "commit": "796d0133596c57c5bef5bd1acfdde08860be65b5",
      "tree": "b680c40bdcf7577cd9fd935daf111870ddeac8bf",
      "parents": [
        "2ab19d8aae7f7aeec74fc92b621980182c86bc51"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Wed Dec 11 08:45:00 2019 +0000"
      },
      "committer": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Wed Dec 11 08:45:00 2019 +0000"
      },
      "message": "Allow for additional ignored args\n"
    },
    {
      "commit": "c11d4592cd84df3e6835f360b846a3dff72758a6",
      "tree": "416324282ae6c67cd1fd84d814b653303739ae7d",
      "parents": [
        "e02ebe4212e2e2ea575db82cc28919e9522d0d4e"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Mon Dec 09 01:16:23 2019 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 09 01:16:23 2019 -0600"
      },
      "message": "oops. trim the LICENSE file.\n\nI copied this from svn, and forgot to trim the included third-party licenses."
    },
    {
      "commit": "2ab19d8aae7f7aeec74fc92b621980182c86bc51",
      "tree": "8cb97fc4ddfda528304d0dac10d8ed4fc5caa21a",
      "parents": [
        "91acab816b283a9bbc14541628a690ddf9b5d82a"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Fri Dec 06 22:19:12 2019 +0000"
      },
      "committer": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Fri Dec 06 22:19:12 2019 +0000"
      },
      "message": "Accidental commit\n"
    },
    {
      "commit": "91acab816b283a9bbc14541628a690ddf9b5d82a",
      "tree": "f964895179b46784aa7bd3fdfa7072a646093d4c",
      "parents": [
        "6d60745270be63bc2ae28f7a0530c90f6484232e"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Fri Dec 06 22:17:23 2019 +0000"
      },
      "committer": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Fri Dec 06 22:17:23 2019 +0000"
      },
      "message": "Add macOS pbcopy and allow args for generic app\n"
    },
    {
      "commit": "e02ebe4212e2e2ea575db82cc28919e9522d0d4e",
      "tree": "788632b9e51d23e774433742f38b164e3ce12339",
      "parents": [
        "092da2fee6ea4daeb5b8d3ad7b9e0b341e902504"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Dec 06 15:31:18 2019 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 06 15:31:18 2019 -0600"
      },
      "message": "add info about alternative invocation\n\nh/t @rubys for the inventive invocation"
    },
    {
      "commit": "092da2fee6ea4daeb5b8d3ad7b9e0b341e902504",
      "tree": "a7cba9611fbf6e952263b66e199bc446489da5d8",
      "parents": [
        "6d60745270be63bc2ae28f7a0530c90f6484232e"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Dec 06 15:26:07 2019 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 06 15:26:07 2019 -0600"
      },
      "message": "tweak wording"
    },
    {
      "commit": "6d60745270be63bc2ae28f7a0530c90f6484232e",
      "tree": "b4eb4dd3b8d2c1aa321adb4b0dcb5240a5901ef0",
      "parents": [
        "46e5bc8e9eac7a3fee1f8c95ddb8cea81e507614",
        "d8d5aabb5ce34a16aaecbd729254aca74cf1f9c2"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Dec 06 03:51:21 2019 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Dec 06 03:51:21 2019 -0600"
      },
      "message": "Merge branch \u0027master\u0027 of https://github.com/apache/infrastructure-otp\n"
    },
    {
      "commit": "46e5bc8e9eac7a3fee1f8c95ddb8cea81e507614",
      "tree": "8dd3405d1a1e6c8d3927d52f5cdd5e9b48e74931",
      "parents": [
        "501782aa851f8d5c01ba9d3a33e51f50d29490cc"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Dec 06 03:48:24 2019 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Dec 06 03:48:24 2019 -0600"
      },
      "message": "randint(a,b) includes b within the range. chr(127) is not\nprintable, and should not be included in generated passwords.\n\nFound by: sebb\n"
    },
    {
      "commit": "d8d5aabb5ce34a16aaecbd729254aca74cf1f9c2",
      "tree": "36cbb2b5586409a978f405a453a97e1a85e53f86",
      "parents": [
        "501782aa851f8d5c01ba9d3a33e51f50d29490cc"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Dec 06 03:44:50 2019 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 06 03:44:50 2019 -0600"
      },
      "message": "link to RFC 2289"
    },
    {
      "commit": "501782aa851f8d5c01ba9d3a33e51f50d29490cc",
      "tree": "6634f6448ad526ed59d3cb88f6a80acab45be674",
      "parents": [
        "14a758f593219cdac2d0a295c3bed97d6346bb18"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Dec 06 00:26:39 2019 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Dec 06 00:26:39 2019 -0600"
      },
      "message": "Support \"ALGO\" being the command name. For example:\n  $ otp-md5 10 seedname\n\nThis allows for a copy/paste from the remote challenge directly to\nthe local shell prompt (rather than a challenge prompt).\n\nAdded a little of code to support multiple algorithms, but bail out\nif the specified algorithm is not supported.\n\nSuggested by: rubys\nCloses: issue #1\n"
    },
    {
      "commit": "14a758f593219cdac2d0a295c3bed97d6346bb18",
      "tree": "c2c0faee64f482e8e5b8e60d9666a4402844cd0d",
      "parents": [
        "6a73b0f803228b1a02eddc8e06dfd553595d5bed"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Dec 05 18:43:12 2019 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Dec 05 18:43:12 2019 -0600"
      },
      "message": "add/clarify license\n"
    },
    {
      "commit": "6a73b0f803228b1a02eddc8e06dfd553595d5bed",
      "tree": "4c6a02433ab5a45bc70868aa07948cc095eb3924",
      "parents": [
        "d10232a9b00ce5281a67e8d040927167dcf023ba"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Dec 05 18:36:30 2019 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 05 18:36:30 2019 -0600"
      },
      "message": "Update README.md\n\nWrite an initial README"
    },
    {
      "commit": "d10232a9b00ce5281a67e8d040927167dcf023ba",
      "tree": "359b1a63cd8505b9663fd86db1ca5cd3ff01ca42",
      "parents": [
        "21c66a239ddb802570a197fc43e232cfa4cb8ab6"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Dec 05 17:24:45 2019 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Dec 05 17:24:45 2019 -0600"
      },
      "message": "Copied from internal svn: infrastructure/trunk/tools/otp.py@1053637\n"
    },
    {
      "commit": "21c66a239ddb802570a197fc43e232cfa4cb8ab6",
      "tree": "ecbd8d66030f6c10053115f0f8f1114a1e6aaa1e",
      "parents": [],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Dec 05 15:18:34 2019 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 05 15:18:34 2019 -0600"
      },
      "message": "Initial commit"
    }
  ]
}
