{"action":"closed","number":6250,"pull_request":{"url":"https://api.github.com/repos/esp8266/Arduino/pulls/6250","id":294272641,"node_id":"MDExOlB1bGxSZXF1ZXN0Mjk0MjcyNjQx","html_url":"https://github.com/esp8266/Arduino/pull/6250","diff_url":"https://github.com/esp8266/Arduino/pull/6250.diff","patch_url":"https://github.com/esp8266/Arduino/pull/6250.patch","issue_url":"https://api.github.com/repos/esp8266/Arduino/issues/6250","number":6250,"state":"closed","locked":false,"title":"Updater signature validation - format incompatible w/RFC8017","user":{"login":"qistoph","id":678500,"node_id":"MDQ6VXNlcjY3ODUwMA==","avatar_url":"https://avatars3.githubusercontent.com/u/678500?v=4","gravatar_id":"","url":"https://api.github.com/users/qistoph","html_url":"https://github.com/qistoph","followers_url":"https://api.github.com/users/qistoph/followers","following_url":"https://api.github.com/users/qistoph/following{/other_user}","gists_url":"https://api.github.com/users/qistoph/gists{/gist_id}","starred_url":"https://api.github.com/users/qistoph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qistoph/subscriptions","organizations_url":"https://api.github.com/users/qistoph/orgs","repos_url":"https://api.github.com/users/qistoph/repos","events_url":"https://api.github.com/users/qistoph/events{/privacy}","received_events_url":"https://api.github.com/users/qistoph/received_events","type":"User","site_admin":false},"body":"The signed updates code (#5213) does not correctly implement PKCS#1. This makes it harder to verify the updates in other applications, like a [python script](https://gist.github.com/qistoph/43e2311a9c2de1aee1a6fd39c239df6a).\r\n\r\nAccording to the [RFC 8017](https://tools.ietf.org/html/rfc8017) section [9.2](https://tools.ietf.org/html/rfc8017#section-9.2) step 2:\r\n\r\n> Encode the algorithm ID for the hash function and the hash value into an ASN.1 value of type DigestInfo with the DER.\r\n\r\nCurrently the signed data looks like this:\r\n```\r\n00000000  00 01 ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n00000010  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n00000020  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n00000030  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n00000040  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n00000050  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n00000060  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n00000070  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n00000080  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n00000090  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n000000a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n000000b0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n000000c0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n000000d0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff 00  |................|\r\n000000e0  3c 10 ae 9a e8 d3 e6 42  bf c2 a9 c5 71 3f d3 2d  |<......B....q?.-|\r\n000000f0  a5 d3 1d 12 b5 bb dd 86  1b 0a 30 60 4a 2e a2 bd  |..........0`J...|\r\n```\r\n\r\nRFC 8017 step 5 says the encoded message is a concatenation of:\r\n`EM = 0x00 || 0x01 || PS || 0x00 || T`\r\n\r\n`T` should be the DER of DigestInfo. In this case the DigestInfo should look like:\r\n```\r\n    0:d=0  hl=2 l=  49 cons: SEQUENCE          \r\n    2:d=1  hl=2 l=  13 cons:  SEQUENCE          \r\n    4:d=2  hl=2 l=   9 prim:   OBJECT            :sha256\r\n   15:d=2  hl=2 l=   0 prim:   NULL              \r\n   17:d=1  hl=2 l=  32 prim:  OCTET STRING      [HEX DUMP]:3C10AE9AE8D3E642BFC2A9C5713FD32DA5D31D12B5BBDD861B0A30604A2EA2BD\r\n```\r\n\r\nThat would encode to `EM`:\r\n```\r\n00000000  00 01 ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n00000010  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n00000020  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n00000030  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n00000040  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n00000050  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n00000060  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n00000070  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n00000080  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n00000090  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n000000a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n000000b0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\r\n000000c0  ff ff ff ff ff ff ff ff  ff ff ff ff 00 30 31 30  |.............010|\r\n000000d0  0d 06 09 60 86 48 01 65  03 04 02 01 05 00 04 20  |...`.H.e....... |\r\n000000e0  3c 10 ae 9a e8 d3 e6 42  bf c2 a9 c5 71 3f d3 2d  |<......B....q?.-|\r\n000000f0  a5 d3 1d 12 b5 bb dd 86  1b 0a 30 60 4a 2e a2 bd  |..........0`J...|\r\n```\r\n\r\nThe currently used version of BearSSL supports proper [PKCS#1 signatures, with an OID](https://github.com/earlephilhower/bearssl-esp8266/blob/6b9587f4ac63f0ec62a7c5884b1b70496713acb3/src/rsa/rsa_pkcs1_sig_unpad.c#L89).\r\n\r\nThe [signing.py](https://github.com/esp8266/Arduino/blob/master/tools/signing.py#L55) is executing:\r\n`openssl rsautl -sign -inkey <privatekey>` on a pre-computed hash.\r\nTo create a signature with a valid PKCS#1 padded signature it should use `openssl dgst -sha256 -sign <privatekey>` on the raw binary.\r\n\r\nThis PR includes, changes to:\r\n- the core to verify signatures with DigestInfo\r\n- the signing.py to create signatures with DigestInfo\r\n- the docs to explain usage of legacy and new signature\r\n\r\nA few more details are in the issue that I initially created https://github.com/esp8266/Arduino/issues/6201.","created_at":"2019-07-03T17:54:44Z","updated_at":"2019-07-04T10:17:31Z","closed_at":"2019-07-04T10:17:31Z","merged_at":"2019-07-04T10:17:30Z","merge_commit_sha":"6272b49406bfa1033231561b3e283d68aa48077f","assignee":{"login":"earlephilhower","id":11875,"node_id":"MDQ6VXNlcjExODc1","avatar_url":"https://avatars0.githubusercontent.com/u/11875?v=4","gravatar_id":"","url":"https://api.github.com/users/earlephilhower","html_url":"https://github.com/earlephilhower","followers_url":"https://api.github.com/users/earlephilhower/followers","following_url":"https://api.github.com/users/earlephilhower/following{/other_user}","gists_url":"https://api.github.com/users/earlephilhower/gists{/gist_id}","starred_url":"https://api.github.com/users/earlephilhower/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/earlephilhower/subscriptions","organizations_url":"https://api.github.com/users/earlephilhower/orgs","repos_url":"https://api.github.com/users/earlephilhower/repos","events_url":"https://api.github.com/users/earlephilhower/events{/privacy}","received_events_url":"https://api.github.com/users/earlephilhower/received_events","type":"User","site_admin":false},"assignees":[{"login":"earlephilhower","id":11875,"node_id":"MDQ6VXNlcjExODc1","avatar_url":"https://avatars0.githubusercontent.com/u/11875?v=4","gravatar_id":"","url":"https://api.github.com/users/earlephilhower","html_url":"https://github.com/earlephilhower","followers_url":"https://api.github.com/users/earlephilhower/followers","following_url":"https://api.github.com/users/earlephilhower/following{/other_user}","gists_url":"https://api.github.com/users/earlephilhower/gists{/gist_id}","starred_url":"https://api.github.com/users/earlephilhower/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/earlephilhower/subscriptions","organizations_url":"https://api.github.com/users/earlephilhower/orgs","repos_url":"https://api.github.com/users/earlephilhower/repos","events_url":"https://api.github.com/users/earlephilhower/events{/privacy}","received_events_url":"https://api.github.com/users/earlephilhower/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/esp8266/Arduino/pulls/6250/commits","review_comments_url":"https://api.github.com/repos/esp8266/Arduino/pulls/6250/comments","review_comment_url":"https://api.github.com/repos/esp8266/Arduino/pulls/comments{/number}","comments_url":"https://api.github.com/repos/esp8266/Arduino/issues/6250/comments","statuses_url":"https://api.github.com/repos/esp8266/Arduino/statuses/3012e084a4d61f58c8619812f469fc9abbadeb62","head":{"label":"qistoph:pkcs1_fix","ref":"pkcs1_fix","sha":"3012e084a4d61f58c8619812f469fc9abbadeb62","user":{"login":"qistoph","id":678500,"node_id":"MDQ6VXNlcjY3ODUwMA==","avatar_url":"https://avatars3.githubusercontent.com/u/678500?v=4","gravatar_id":"","url":"https://api.github.com/users/qistoph","html_url":"https://github.com/qistoph","followers_url":"https://api.github.com/users/qistoph/followers","following_url":"https://api.github.com/users/qistoph/following{/other_user}","gists_url":"https://api.github.com/users/qistoph/gists{/gist_id}","starred_url":"https://api.github.com/users/qistoph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qistoph/subscriptions","organizations_url":"https://api.github.com/users/qistoph/orgs","repos_url":"https://api.github.com/users/qistoph/repos","events_url":"https://api.github.com/users/qistoph/events{/privacy}","received_events_url":"https://api.github.com/users/qistoph/received_events","type":"User","site_admin":false},"repo":{"id":191973480,"node_id":"MDEwOlJlcG9zaXRvcnkxOTE5NzM0ODA=","name":"Arduino","full_name":"qistoph/Arduino","private":false,"owner":{"login":"qistoph","id":678500,"node_id":"MDQ6VXNlcjY3ODUwMA==","avatar_url":"https://avatars3.githubusercontent.com/u/678500?v=4","gravatar_id":"","url":"https://api.github.com/users/qistoph","html_url":"https://github.com/qistoph","followers_url":"https://api.github.com/users/qistoph/followers","following_url":"https://api.github.com/users/qistoph/following{/other_user}","gists_url":"https://api.github.com/users/qistoph/gists{/gist_id}","starred_url":"https://api.github.com/users/qistoph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qistoph/subscriptions","organizations_url":"https://api.github.com/users/qistoph/orgs","repos_url":"https://api.github.com/users/qistoph/repos","events_url":"https://api.github.com/users/qistoph/events{/privacy}","received_events_url":"https://api.github.com/users/qistoph/received_events","type":"User","site_admin":false},"html_url":"https://github.com/qistoph/Arduino","description":"ESP8266 core for Arduino","fork":true,"url":"https://api.github.com/repos/qistoph/Arduino","forks_url":"https://api.github.com/repos/qistoph/Arduino/forks","keys_url":"https://api.github.com/repos/qistoph/Arduino/keys{/key_id}","collaborators_url":"https://api.github.com/repos/qistoph/Arduino/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/qistoph/Arduino/teams","hooks_url":"https://api.github.com/repos/qistoph/Arduino/hooks","issue_events_url":"https://api.github.com/repos/qistoph/Arduino/issues/events{/number}","events_url":"https://api.github.com/repos/qistoph/Arduino/events","assignees_url":"https://api.github.com/repos/qistoph/Arduino/assignees{/user}","branches_url":"https://api.github.com/repos/qistoph/Arduino/branches{/branch}","tags_url":"https://api.github.com/repos/qistoph/Arduino/tags","blobs_url":"https://api.github.com/repos/qistoph/Arduino/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/qistoph/Arduino/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/qistoph/Arduino/git/refs{/sha}","trees_url":"https://api.github.com/repos/qistoph/Arduino/git/trees{/sha}","statuses_url":"https://api.github.com/repos/qistoph/Arduino/statuses/{sha}","languages_url":"https://api.github.com/repos/qistoph/Arduino/languages","stargazers_url":"https://api.github.com/repos/qistoph/Arduino/stargazers","contributors_url":"https://api.github.com/repos/qistoph/Arduino/contributors","subscribers_url":"https://api.github.com/repos/qistoph/Arduino/subscribers","subscription_url":"https://api.github.com/repos/qistoph/Arduino/subscription","commits_url":"https://api.github.com/repos/qistoph/Arduino/commits{/sha}","git_commits_url":"https://api.github.com/repos/qistoph/Arduino/git/commits{/sha}","comments_url":"https://api.github.com/repos/qistoph/Arduino/comments{/number}","issue_comment_url":"https://api.github.com/repos/qistoph/Arduino/issues/comments{/number}","contents_url":"https://api.github.com/repos/qistoph/Arduino/contents/{+path}","compare_url":"https://api.github.com/repos/qistoph/Arduino/compare/{base}...{head}","merges_url":"https://api.github.com/repos/qistoph/Arduino/merges","archive_url":"https://api.github.com/repos/qistoph/Arduino/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/qistoph/Arduino/downloads","issues_url":"https://api.github.com/repos/qistoph/Arduino/issues{/number}","pulls_url":"https://api.github.com/repos/qistoph/Arduino/pulls{/number}","milestones_url":"https://api.github.com/repos/qistoph/Arduino/milestones{/number}","notifications_url":"https://api.github.com/repos/qistoph/Arduino/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/qistoph/Arduino/labels{/name}","releases_url":"https://api.github.com/repos/qistoph/Arduino/releases{/id}","deployments_url":"https://api.github.com/repos/qistoph/Arduino/deployments","created_at":"2019-06-14T16:17:02Z","updated_at":"2019-06-14T16:17:09Z","pushed_at":"2019-07-04T08:59:52Z","git_url":"git://github.com/qistoph/Arduino.git","ssh_url":"git@github.com:qistoph/Arduino.git","clone_url":"https://github.com/qistoph/Arduino.git","svn_url":"https://github.com/qistoph/Arduino","homepage":"","size":74533,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"lgpl-2.1","name":"GNU Lesser General Public License v2.1","spdx_id":"LGPL-2.1","url":"https://api.github.com/licenses/lgpl-2.1","node_id":"MDc6TGljZW5zZTEx"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"esp8266:master","ref":"master","sha":"7036297920934979fd5c3cd00b2527d52037d9af","user":{"login":"esp8266","id":8943775,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg5NDM3NzU=","avatar_url":"https://avatars1.githubusercontent.com/u/8943775?v=4","gravatar_id":"","url":"https://api.github.com/users/esp8266","html_url":"https://github.com/esp8266","followers_url":"https://api.github.com/users/esp8266/followers","following_url":"https://api.github.com/users/esp8266/following{/other_user}","gists_url":"https://api.github.com/users/esp8266/gists{/gist_id}","starred_url":"https://api.github.com/users/esp8266/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/esp8266/subscriptions","organizations_url":"https://api.github.com/users/esp8266/orgs","repos_url":"https://api.github.com/users/esp8266/repos","events_url":"https://api.github.com/users/esp8266/events{/privacy}","received_events_url":"https://api.github.com/users/esp8266/received_events","type":"Organization","site_admin":false},"repo":{"id":32969220,"node_id":"MDEwOlJlcG9zaXRvcnkzMjk2OTIyMA==","name":"Arduino","full_name":"esp8266/Arduino","private":false,"owner":{"login":"esp8266","id":8943775,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg5NDM3NzU=","avatar_url":"https://avatars1.githubusercontent.com/u/8943775?v=4","gravatar_id":"","url":"https://api.github.com/users/esp8266","html_url":"https://github.com/esp8266","followers_url":"https://api.github.com/users/esp8266/followers","following_url":"https://api.github.com/users/esp8266/following{/other_user}","gists_url":"https://api.github.com/users/esp8266/gists{/gist_id}","starred_url":"https://api.github.com/users/esp8266/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/esp8266/subscriptions","organizations_url":"https://api.github.com/users/esp8266/orgs","repos_url":"https://api.github.com/users/esp8266/repos","events_url":"https://api.github.com/users/esp8266/events{/privacy}","received_events_url":"https://api.github.com/users/esp8266/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/esp8266/Arduino","description":"ESP8266 core for Arduino","fork":false,"url":"https://api.github.com/repos/esp8266/Arduino","forks_url":"https://api.github.com/repos/esp8266/Arduino/forks","keys_url":"https://api.github.com/repos/esp8266/Arduino/keys{/key_id}","collaborators_url":"https://api.github.com/repos/esp8266/Arduino/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/esp8266/Arduino/teams","hooks_url":"https://api.github.com/repos/esp8266/Arduino/hooks","issue_events_url":"https://api.github.com/repos/esp8266/Arduino/issues/events{/number}","events_url":"https://api.github.com/repos/esp8266/Arduino/events","assignees_url":"https://api.github.com/repos/esp8266/Arduino/assignees{/user}","branches_url":"https://api.github.com/repos/esp8266/Arduino/branches{/branch}","tags_url":"https://api.github.com/repos/esp8266/Arduino/tags","blobs_url":"https://api.github.com/repos/esp8266/Arduino/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/esp8266/Arduino/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/esp8266/Arduino/git/refs{/sha}","trees_url":"https://api.github.com/repos/esp8266/Arduino/git/trees{/sha}","statuses_url":"https://api.github.com/repos/esp8266/Arduino/statuses/{sha}","languages_url":"https://api.github.com/repos/esp8266/Arduino/languages","stargazers_url":"https://api.github.com/repos/esp8266/Arduino/stargazers","contributors_url":"https://api.github.com/repos/esp8266/Arduino/contributors","subscribers_url":"https://api.github.com/repos/esp8266/Arduino/subscribers","subscription_url":"https://api.github.com/repos/esp8266/Arduino/subscription","commits_url":"https://api.github.com/repos/esp8266/Arduino/commits{/sha}","git_commits_url":"https://api.github.com/repos/esp8266/Arduino/git/commits{/sha}","comments_url":"https://api.github.com/repos/esp8266/Arduino/comments{/number}","issue_comment_url":"https://api.github.com/repos/esp8266/Arduino/issues/comments{/number}","contents_url":"https://api.github.com/repos/esp8266/Arduino/contents/{+path}","compare_url":"https://api.github.com/repos/esp8266/Arduino/compare/{base}...{head}","merges_url":"https://api.github.com/repos/esp8266/Arduino/merges","archive_url":"https://api.github.com/repos/esp8266/Arduino/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/esp8266/Arduino/downloads","issues_url":"https://api.github.com/repos/esp8266/Arduino/issues{/number}","pulls_url":"https://api.github.com/repos/esp8266/Arduino/pulls{/number}","milestones_url":"https://api.github.com/repos/esp8266/Arduino/milestones{/number}","notifications_url":"https://api.github.com/repos/esp8266/Arduino/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/esp8266/Arduino/labels{/name}","releases_url":"https://api.github.com/repos/esp8266/Arduino/releases{/id}","deployments_url":"https://api.github.com/repos/esp8266/Arduino/deployments","created_at":"2015-03-27T05:22:06Z","updated_at":"2019-07-04T08:58:51Z","pushed_at":"2019-07-04T10:17:30Z","git_url":"git://github.com/esp8266/Arduino.git","ssh_url":"git@github.com:esp8266/Arduino.git","clone_url":"https://github.com/esp8266/Arduino.git","svn_url":"https://github.com/esp8266/Arduino","homepage":"","size":74531,"stargazers_count":9654,"watchers_count":9654,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":7479,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":445,"license":{"key":"lgpl-2.1","name":"GNU Lesser General Public License v2.1","spdx_id":"LGPL-2.1","url":"https://api.github.com/licenses/lgpl-2.1","node_id":"MDc6TGljZW5zZTEx"},"forks":7479,"open_issues":445,"watchers":9654,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/esp8266/Arduino/pulls/6250"},"html":{"href":"https://github.com/esp8266/Arduino/pull/6250"},"issue":{"href":"https://api.github.com/repos/esp8266/Arduino/issues/6250"},"comments":{"href":"https://api.github.com/repos/esp8266/Arduino/issues/6250/comments"},"review_comments":{"href":"https://api.github.com/repos/esp8266/Arduino/pulls/6250/comments"},"review_comment":{"href":"https://api.github.com/repos/esp8266/Arduino/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/esp8266/Arduino/pulls/6250/commits"},"statuses":{"href":"https://api.github.com/repos/esp8266/Arduino/statuses/3012e084a4d61f58c8619812f469fc9abbadeb62"}},"author_association":"NONE","merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"d-a-v","id":4800356,"node_id":"MDQ6VXNlcjQ4MDAzNTY=","avatar_url":"https://avatars3.githubusercontent.com/u/4800356?v=4","gravatar_id":"","url":"https://api.github.com/users/d-a-v","html_url":"https://github.com/d-a-v","followers_url":"https://api.github.com/users/d-a-v/followers","following_url":"https://api.github.com/users/d-a-v/following{/other_user}","gists_url":"https://api.github.com/users/d-a-v/gists{/gist_id}","starred_url":"https://api.github.com/users/d-a-v/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/d-a-v/subscriptions","organizations_url":"https://api.github.com/users/d-a-v/orgs","repos_url":"https://api.github.com/users/d-a-v/repos","events_url":"https://api.github.com/users/d-a-v/events{/privacy}","received_events_url":"https://api.github.com/users/d-a-v/received_events","type":"User","site_admin":false},"comments":1,"review_comments":0,"maintainer_can_modify":false,"commits":4,"additions":60,"deletions":15,"changed_files":6}}
{"actor":{"display_login":"d-a-v"}}