payload: {"action":"created","comment":{"url":"https://api.github.com/repos/keybase/client/pulls/comments/331212891","pull_request_review_id":297098938,"id":331212891,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDMzMTIxMjg5MQ==","diff_hunk":"@@ -565,6 +566,59 @@ func OpenWhole(sealed []byte, encKey SecretboxKey, verifyKey VerifyKey, signatur\n \treturn append(output, moreOutput...), nil\n }\n \n+// include verification of associated data. see\n+// https://en.wikipedia.org/wiki/Authenticated_encryption#Authenticated_encryption_with_associated_data_(AEAD)\n+\n+type AEADMessage struct {\n+\tV int               `codec:\"v\" json:\"v\"`\n+\tA [sha512.Size]byte `codec:\"a\" json:\"a\"`\n+\tM []byte            `codec:\"m\" json:\"m\"`\n+}","path":"go/chat/signencrypt/codec.go","position":19,"original_position":19,"commit_id":"b6b9f1e3d1652c34bd916e154a1931cd816c6e9f","original_commit_id":"b6b9f1e3d1652c34bd916e154a1931cd816c6e9f","user":{"login":"xgess","id":1275828,"node_id":"MDQ6VXNlcjEyNzU4Mjg=","avatar_url":"https://avatars2.githubusercontent.com/u/1275828?v=4","gravatar_id":"","url":"https://api.github.com/users/xgess","html_url":"https://github.com/xgess","followers_url":"https://api.github.com/users/xgess/followers","following_url":"https://api.github.com/users/xgess/following{/other_user}","gists_url":"https://api.github.com/users/xgess/gists{/gist_id}","starred_url":"https://api.github.com/users/xgess/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xgess/subscriptions","organizations_url":"https://api.github.com/users/xgess/orgs","repos_url":"https://api.github.com/users/xgess/repos","events_url":"https://api.github.com/users/xgess/events{/privacy}","received_events_url":"https://api.github.com/users/xgess/received_events","type":"User","site_admin":false},"body":"was thinking that was obvious from `[sha512.Size]` but you're right. just a second...","created_at":"2019-10-03T19:28:22Z","updated_at":"2019-10-03T19:28:22Z","html_url":"https://github.com/keybase/client/pull/19800#discussion_r331212891","pull_request_url":"https://api.github.com/repos/keybase/client/pulls/19800","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/keybase/client/pulls/comments/331212891"},"html":{"href":"https://github.com/keybase/client/pull/19800#discussion_r331212891"},"pull_request":{"href":"https://api.github.com/repos/keybase/client/pulls/19800"}},"in_reply_to_id":331211697},"pull_request":{"url":"https://api.github.com/repos/keybase/client/pulls/19800","id":319414453,"node_id":"MDExOlB1bGxSZXF1ZXN0MzE5NDE0NDUz","html_url":"https://github.com/keybase/client/pull/19800","diff_url":"https://github.com/keybase/client/pull/19800.diff","patch_url":"https://github.com/keybase/client/pull/19800.patch","issue_url":"https://api.github.com/repos/keybase/client/issues/19800","number":19800,"state":"open","locked":false,"title":"first pass put-get","user":{"login":"xgess","id":1275828,"node_id":"MDQ6VXNlcjEyNzU4Mjg=","avatar_url":"https://avatars2.githubusercontent.com/u/1275828?v=4","gravatar_id":"","url":"https://api.github.com/users/xgess","html_url":"https://github.com/xgess","followers_url":"https://api.github.com/users/xgess/followers","following_url":"https://api.github.com/users/xgess/following{/other_user}","gists_url":"https://api.github.com/users/xgess/gists{/gist_id}","starred_url":"https://api.github.com/users/xgess/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xgess/subscriptions","organizations_url":"https://api.github.com/users/xgess/orgs","repos_url":"https://api.github.com/users/xgess/repos","events_url":"https://api.github.com/users/xgess/events{/privacy}","received_events_url":"https://api.github.com/users/xgess/received_events","type":"User","site_admin":false},"body":"adds commands for GETting and PUTting into the team storage\r\nrelies on https://github.com/keybase/keybase/pull/4408\r\n\r\n```\r\n$ keybase kvstore api -m '{\"method\": \"put\", \"params\": {\"options\": {\"team\": \"nessy32,nessy32\", \"namespace\": \"personal-apps\", \"entryKey\": \"geocities2\", \"entryValue\": \"my geocities secretz\"}}}'\r\n\r\n{\"result\":{\"teamName\":\"nessy32,nessy32\",\"namespace\":\"personal-apps\",\"entryKey\":\"geocities2\",\"revision\":1}}\r\n```\r\n```\r\n$ keybase kvstore api -m '{\"method\": \"get\", \"params\": {\"options\": {\"team\": \"nessy32,nessy32\", \"namespace\": \"personal-apps\", \"entryKey\": \"geocities2\"}}}'\r\n\r\n{\"result\":{\"teamName\":\"nessy32,nessy32\",\"namespace\":\"personal-apps\",\"entryKey\":\"geocities2\",\"entryValue\":\"my geocities secretz\",\"revision\":1}}\r\n```\r\n\r\nbasic idea here is that there's new commands to the CLI for kvstore get and put. `go/service/kvstore.go` is where the main logic is. it calls into a revision cache (which hangs off G) to verify that the server can't lie, and a boxer to delegate encryption/signing and decryption/verifying. tests are pretty behavioral, i think, so it might make sense to start there. \r\n\r\ni was initially hoping this could be reviewed commit-by-commit. i'm not 100% sure anymore that it can. maybe. maybe not. ","created_at":"2019-09-19T18:48:08Z","updated_at":"2019-10-03T19:28:22Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c9cb971a413efb08b24ed16ae33e54c54892552f","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/keybase/client/pulls/19800/commits","review_comments_url":"https://api.github.com/repos/keybase/client/pulls/19800/comments","review_comment_url":"https://api.github.com/repos/keybase/client/pulls/comments{/number}","comments_url":"https://api.github.com/repos/keybase/client/issues/19800/comments","statuses_url":"https://api.github.com/repos/keybase/client/statuses/b6b9f1e3d1652c34bd916e154a1931cd816c6e9f","head":{"label":"keybase:xgess/PICNIC-430-first-put-get","ref":"xgess/PICNIC-430-first-put-get","sha":"b6b9f1e3d1652c34bd916e154a1931cd816c6e9f","user":{"login":"keybase","id":5400834,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0MDA4MzQ=","avatar_url":"https://avatars2.githubusercontent.com/u/5400834?v=4","gravatar_id":"","url":"https://api.github.com/users/keybase","html_url":"https://github.com/keybase","followers_url":"https://api.github.com/users/keybase/followers","following_url":"https://api.github.com/users/keybase/following{/other_user}","gists_url":"https://api.github.com/users/keybase/gists{/gist_id}","starred_url":"https://api.github.com/users/keybase/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/keybase/subscriptions","organizations_url":"https://api.github.com/users/keybase/orgs","repos_url":"https://api.github.com/users/keybase/repos","events_url":"https://api.github.com/users/keybase/events{/privacy}","received_events_url":"https://api.github.com/users/keybase/received_events","type":"Organization","site_admin":false},"repo":{"id":29099181,"node_id":"MDEwOlJlcG9zaXRvcnkyOTA5OTE4MQ==","name":"client","full_name":"keybase/client","private":false,"owner":{"login":"keybase","id":5400834,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0MDA4MzQ=","avatar_url":"https://avatars2.githubusercontent.com/u/5400834?v=4","gravatar_id":"","url":"https://api.github.com/users/keybase","html_url":"https://github.com/keybase","followers_url":"https://api.github.com/users/keybase/followers","following_url":"https://api.github.com/users/keybase/following{/other_user}","gists_url":"https://api.github.com/users/keybase/gists{/gist_id}","starred_url":"https://api.github.com/users/keybase/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/keybase/subscriptions","organizations_url":"https://api.github.com/users/keybase/orgs","repos_url":"https://api.github.com/users/keybase/repos","events_url":"https://api.github.com/users/keybase/events{/privacy}","received_events_url":"https://api.github.com/users/keybase/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/keybase/client","description":"Keybase Go Library, Client, Service, OS X, iOS, Android, Electron","fork":false,"url":"https://api.github.com/repos/keybase/client","forks_url":"https://api.github.com/repos/keybase/client/forks","keys_url":"https://api.github.com/repos/keybase/client/keys{/key_id}","collaborators_url":"https://api.github.com/repos/keybase/client/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/keybase/client/teams","hooks_url":"https://api.github.com/repos/keybase/client/hooks","issue_events_url":"https://api.github.com/repos/keybase/client/issues/events{/number}","events_url":"https://api.github.com/repos/keybase/client/events","assignees_url":"https://api.github.com/repos/keybase/client/assignees{/user}","branches_url":"https://api.github.com/repos/keybase/client/branches{/branch}","tags_url":"https://api.github.com/repos/keybase/client/tags","blobs_url":"https://api.github.com/repos/keybase/client/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/keybase/client/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/keybase/client/git/refs{/sha}","trees_url":"https://api.github.com/repos/keybase/client/git/trees{/sha}","statuses_url":"https://api.github.com/repos/keybase/client/statuses/{sha}","languages_url":"https://api.github.com/repos/keybase/client/languages","stargazers_url":"https://api.github.com/repos/keybase/client/stargazers","contributors_url":"https://api.github.com/repos/keybase/client/contributors","subscribers_url":"https://api.github.com/repos/keybase/client/subscribers","subscription_url":"https://api.github.com/repos/keybase/client/subscription","commits_url":"https://api.github.com/repos/keybase/client/commits{/sha}","git_commits_url":"https://api.github.com/repos/keybase/client/git/commits{/sha}","comments_url":"https://api.github.com/repos/keybase/client/comments{/number}","issue_comment_url":"https://api.github.com/repos/keybase/client/issues/comments{/number}","contents_url":"https://api.github.com/repos/keybase/client/contents/{+path}","compare_url":"https://api.github.com/repos/keybase/client/compare/{base}...{head}","merges_url":"https://api.github.com/repos/keybase/client/merges","archive_url":"https://api.github.com/repos/keybase/client/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/keybase/client/downloads","issues_url":"https://api.github.com/repos/keybase/client/issues{/number}","pulls_url":"https://api.github.com/repos/keybase/client/pulls{/number}","milestones_url":"https://api.github.com/repos/keybase/client/milestones{/number}","notifications_url":"https://api.github.com/repos/keybase/client/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/keybase/client/labels{/name}","releases_url":"https://api.github.com/repos/keybase/client/releases{/id}","deployments_url":"https://api.github.com/repos/keybase/client/deployments","created_at":"2015-01-11T17:17:12Z","updated_at":"2019-10-03T19:24:08Z","pushed_at":"2019-10-03T19:24:30Z","git_url":"git://github.com/keybase/client.git","ssh_url":"git@github.com:keybase/client.git","clone_url":"https://github.com/keybase/client.git","svn_url":"https://github.com/keybase/client","homepage":"","size":483040,"stargazers_count":5931,"watchers_count":5931,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":715,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":3077,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":715,"open_issues":3077,"watchers":5931,"default_branch":"master"}},"base":{"label":"keybase:master","ref":"master","sha":"6926088190ef654ca5a09adf38691d8fff6f7f92","user":{"login":"keybase","id":5400834,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0MDA4MzQ=","avatar_url":"https://avatars2.githubusercontent.com/u/5400834?v=4","gravatar_id":"","url":"https://api.github.com/users/keybase","html_url":"https://github.com/keybase","followers_url":"https://api.github.com/users/keybase/followers","following_url":"https://api.github.com/users/keybase/following{/other_user}","gists_url":"https://api.github.com/users/keybase/gists{/gist_id}","starred_url":"https://api.github.com/users/keybase/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/keybase/subscriptions","organizations_url":"https://api.github.com/users/keybase/orgs","repos_url":"https://api.github.com/users/keybase/repos","events_url":"https://api.github.com/users/keybase/events{/privacy}","received_events_url":"https://api.github.com/users/keybase/received_events","type":"Organization","site_admin":false},"repo":{"id":29099181,"node_id":"MDEwOlJlcG9zaXRvcnkyOTA5OTE4MQ==","name":"client","full_name":"keybase/client","private":false,"owner":{"login":"keybase","id":5400834,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0MDA4MzQ=","avatar_url":"https://avatars2.githubusercontent.com/u/5400834?v=4","gravatar_id":"","url":"https://api.github.com/users/keybase","html_url":"https://github.com/keybase","followers_url":"https://api.github.com/users/keybase/followers","following_url":"https://api.github.com/users/keybase/following{/other_user}","gists_url":"https://api.github.com/users/keybase/gists{/gist_id}","starred_url":"https://api.github.com/users/keybase/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/keybase/subscriptions","organizations_url":"https://api.github.com/users/keybase/orgs","repos_url":"https://api.github.com/users/keybase/repos","events_url":"https://api.github.com/users/keybase/events{/privacy}","received_events_url":"https://api.github.com/users/keybase/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/keybase/client","description":"Keybase Go Library, Client, Service, OS X, iOS, Android, Electron","fork":false,"url":"https://api.github.com/repos/keybase/client","forks_url":"https://api.github.com/repos/keybase/client/forks","keys_url":"https://api.github.com/repos/keybase/client/keys{/key_id}","collaborators_url":"https://api.github.com/repos/keybase/client/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/keybase/client/teams","hooks_url":"https://api.github.com/repos/keybase/client/hooks","issue_events_url":"https://api.github.com/repos/keybase/client/issues/events{/number}","events_url":"https://api.github.com/repos/keybase/client/events","assignees_url":"https://api.github.com/repos/keybase/client/assignees{/user}","branches_url":"https://api.github.com/repos/keybase/client/branches{/branch}","tags_url":"https://api.github.com/repos/keybase/client/tags","blobs_url":"https://api.github.com/repos/keybase/client/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/keybase/client/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/keybase/client/git/refs{/sha}","trees_url":"https://api.github.com/repos/keybase/client/git/trees{/sha}","statuses_url":"https://api.github.com/repos/keybase/client/statuses/{sha}","languages_url":"https://api.github.com/repos/keybase/client/languages","stargazers_url":"https://api.github.com/repos/keybase/client/stargazers","contributors_url":"https://api.github.com/repos/keybase/client/contributors","subscribers_url":"https://api.github.com/repos/keybase/client/subscribers","subscription_url":"https://api.github.com/repos/keybase/client/subscription","commits_url":"https://api.github.com/repos/keybase/client/commits{/sha}","git_commits_url":"https://api.github.com/repos/keybase/client/git/commits{/sha}","comments_url":"https://api.github.com/repos/keybase/client/comments{/number}","issue_comment_url":"https://api.github.com/repos/keybase/client/issues/comments{/number}","contents_url":"https://api.github.com/repos/keybase/client/contents/{+path}","compare_url":"https://api.github.com/repos/keybase/client/compare/{base}...{head}","merges_url":"https://api.github.com/repos/keybase/client/merges","archive_url":"https://api.github.com/repos/keybase/client/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/keybase/client/downloads","issues_url":"https://api.github.com/repos/keybase/client/issues{/number}","pulls_url":"https://api.github.com/repos/keybase/client/pulls{/number}","milestones_url":"https://api.github.com/repos/keybase/client/milestones{/number}","notifications_url":"https://api.github.com/repos/keybase/client/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/keybase/client/labels{/name}","releases_url":"https://api.github.com/repos/keybase/client/releases{/id}","deployments_url":"https://api.github.com/repos/keybase/client/deployments","created_at":"2015-01-11T17:17:12Z","updated_at":"2019-10-03T19:24:08Z","pushed_at":"2019-10-03T19:24:30Z","git_url":"git://github.com/keybase/client.git","ssh_url":"git@github.com:keybase/client.git","clone_url":"https://github.com/keybase/client.git","svn_url":"https://github.com/keybase/client","homepage":"","size":483040,"stargazers_count":5931,"watchers_count":5931,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":715,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":3077,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":715,"open_issues":3077,"watchers":5931,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/keybase/client/pulls/19800"},"html":{"href":"https://github.com/keybase/client/pull/19800"},"issue":{"href":"https://api.github.com/repos/keybase/client/issues/19800"},"comments":{"href":"https://api.github.com/repos/keybase/client/issues/19800/comments"},"review_comments":{"href":"https://api.github.com/repos/keybase/client/pulls/19800/comments"},"review_comment":{"href":"https://api.github.com/repos/keybase/client/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/keybase/client/pulls/19800/commits"},"statuses":{"href":"https://api.github.com/repos/keybase/client/statuses/b6b9f1e3d1652c34bd916e154a1931cd816c6e9f"}},"author_association":"CONTRIBUTOR"}}
other: {"actor":{"display_login":"xgess"}}