{"action":"created","comment":{"url":"https://api.github.com/repos/google/certificate-transparency/pulls/comments/77864073","id":77864073,"diff_hunk":"@@ -497,12 +530,27 @@ type Certificate struct {\n \t// field is not populated when parsing certificates, see Extensions.\n \tExtraExtensions []pkix.Extension\n \n+\t// UnhandledCriticalExtensions contains a list of extension IDs that","path":"go/x509/x509.go","position":162,"original_position":162,"commit_id":"ee7dd8c126463c2930e445414f0e26dbe7e685d1","original_commit_id":"ee7dd8c126463c2930e445414f0e26dbe7e685d1","user":{"login":"AlCutter","id":7648032,"avatar_url":"https://avatars.githubusercontent.com/u/7648032?v=3","gravatar_id":"","url":"https://api.github.com/users/AlCutter","html_url":"https://github.com/AlCutter","followers_url":"https://api.github.com/users/AlCutter/followers","following_url":"https://api.github.com/users/AlCutter/following{/other_user}","gists_url":"https://api.github.com/users/AlCutter/gists{/gist_id}","starred_url":"https://api.github.com/users/AlCutter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AlCutter/subscriptions","organizations_url":"https://api.github.com/users/AlCutter/orgs","repos_url":"https://api.github.com/users/AlCutter/repos","events_url":"https://api.github.com/users/AlCutter/events{/privacy}","received_events_url":"https://api.github.com/users/AlCutter/received_events","type":"User","site_admin":false},"body":"Ah, sorry","created_at":"2016-09-07T17:03:57Z","updated_at":"2016-09-07T17:03:57Z","html_url":"https://github.com/google/certificate-transparency/pull/1306#discussion_r77864073","pull_request_url":"https://api.github.com/repos/google/certificate-transparency/pulls/1306","_links":{"self":{"href":"https://api.github.com/repos/google/certificate-transparency/pulls/comments/77864073"},"html":{"href":"https://github.com/google/certificate-transparency/pull/1306#discussion_r77864073"},"pull_request":{"href":"https://api.github.com/repos/google/certificate-transparency/pulls/1306"}}},"pull_request":{"url":"https://api.github.com/repos/google/certificate-transparency/pulls/1306","id":84327259,"html_url":"https://github.com/google/certificate-transparency/pull/1306","diff_url":"https://github.com/google/certificate-transparency/pull/1306.diff","patch_url":"https://github.com/google/certificate-transparency/pull/1306.patch","issue_url":"https://api.github.com/repos/google/certificate-transparency/issues/1306","number":1306,"state":"open","locked":false,"title":"[RFC] Pull in updates to upstream Go library code (x509/asn1)","user":{"login":"daviddrysdale","id":457208,"avatar_url":"https://avatars.githubusercontent.com/u/457208?v=3","gravatar_id":"","url":"https://api.github.com/users/daviddrysdale","html_url":"https://github.com/daviddrysdale","followers_url":"https://api.github.com/users/daviddrysdale/followers","following_url":"https://api.github.com/users/daviddrysdale/following{/other_user}","gists_url":"https://api.github.com/users/daviddrysdale/gists{/gist_id}","starred_url":"https://api.github.com/users/daviddrysdale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/daviddrysdale/subscriptions","organizations_url":"https://api.github.com/users/daviddrysdale/orgs","repos_url":"https://api.github.com/users/daviddrysdale/repos","events_url":"https://api.github.com/users/daviddrysdale/events{/privacy}","received_events_url":"https://api.github.com/users/daviddrysdale/received_events","type":"User","site_admin":false},"body":"This pulls in the changes from Go 1.2 (where the CT code branched from) up to Go 1.7.\r\n\r\nThese changes include some additional checks of the ASN.1 encoding, particularly for:\r\n \r\n - integer values being minimally encoded, as required for DER\r\n - trailing data in X.509 extensions.\r\n\r\nRunning old-vs-new code over the Pilot log using the Go scanner tool, this looks to cause an increase in unparseable certs (from 45 to 113, out of 28 million); diff attached below.\r\n\r\nThe `NonFatalErrors` handling also changes somewhat, resulting in (~350) fewer warnings when running over the Pilot database:\r\n\r\n - On `Parse`, the Go code now stores unhandled critical extensions in the `Certificate` rather than generating errors for them; instead, the `Verify` code now emits the errors if `Certificate.UnhandledCriticalExtensions` is non-empty.\r\n      - I think the Go scanner code only does `Parse`, not `Verify`, hence the reduction in non-fatal errors (which are mostly for extensions that are actually in RFC 5280, e.g. `CertificatePolicies`, `PolicyConstraints` and `InhibitAnyPolicy`).\r\n      - The `Parse` code does still emit errors for critical `NameConstraints` extensions that contain non-empty excluded trees, or empty names.\r\n - Negative serial numbers are now ignored.\r\n\r\nFinally, I'm not sure that I've correctly merged the CT-local [change](https://github.com/google/certificate-transparency/commit/f2f4c0b30c197bcf343bcb2e40e775ba1a635a40) to `x509/root_darwin.go` -- I'm not sure what that does or how to test it.\r\n\r\n```\r\n< 45 unparsable entries, 539 non-fatal errors\r\n< Completed 28639474 certs in 1 hours 25 minutes 50 seconds \r\n< Failed to parse in X509LogEntryType at index 12530741 : asn1: syntax error: PrintableString contains invalid character\r\n< Failed to parse in X509LogEntryType at index 12587185 : asn1: syntax error: sequence truncated\r\n< Failed to parse in X509LogEntryType at index 12594834 : asn1: syntax error: sequence truncated\r\n< Failed to parse in X509LogEntryType at index 12595275 : asn1: syntax error: sequence truncated\r\n< Failed to parse in X509LogEntryType at index 12596130 : asn1: syntax error: sequence truncated\r\n< Failed to parse in X509LogEntryType at index 1529813 : asn1: syntax error: sequence truncated\r\n< Failed to parse in X509LogEntryType at index 1738545 : asn1: syntax error: sequence truncated\r\n\r\n\r\n> 113 unparsable entries, 196 non-fatal errors\r\n> Completed 28627210 certs in 1 hours 35 minutes 17 seconds \r\n> Failed to parse in X509LogEntryType at index 1003713 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1141219 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1162605 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1172055 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1177864 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1204688 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1219377 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1227701 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1262095 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 12655246 : x509: trailing data after X.509 certificate policies\r\n> Failed to parse in X509LogEntryType at index 1273297 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1283431 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1320058 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1337663 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1367405 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1384780 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1418585 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1460223 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1580429 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1592537 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1640177 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1713211 : x509: trailing data after X.509 certificate policies\r\n> Failed to parse in X509LogEntryType at index 1723095 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 18659331 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 18659429 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 18659464 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 18659556 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 18659574 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 18659636 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 18659706 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 1912815 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 1951180 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 2070536 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 2076781 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 2262776 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 323852 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 3302473 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 4204251 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 4401235 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 4775572 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 4879855 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 4964022 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 5034667 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 5259645 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 5291357 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 5479021 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 5638716 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 5775318 : asn1: structure error: base 128 integer too large\r\n> Failed to parse in X509LogEntryType at index 6155959 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 6161602 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 6241804 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 6315575 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 6330611 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 6368816 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 6404331 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 6422701 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 6423213 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 6432917 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 6662141 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 6687490 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 6884330 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 7592524 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 7609757 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 7968083 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 8414874 : x509: trailing data after X.509 extension\r\n> Failed to parse in X509LogEntryType at index 865539 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 871323 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 875515 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 877772 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 900730 : x509: trailing data after X.509 certificate policies\r\n> Failed to parse in X509LogEntryType at index 935379 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 970170 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 9765797 : asn1: structure error: integer not minimally-encoded\r\n> Failed to parse in X509LogEntryType at index 976685 : asn1: invalid UTF-8 string\r\n> Failed to parse in X509LogEntryType at index 9790935 : asn1: structure error: integer not minimally-encoded\r\n\r\n```","created_at":"2016-09-07T15:54:17Z","updated_at":"2016-09-07T17:03:57Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f068d9f0b30a39e2c522890d9ec39170fe65cf0d","assignee":{"login":"AlCutter","id":7648032,"avatar_url":"https://avatars.githubusercontent.com/u/7648032?v=3","gravatar_id":"","url":"https://api.github.com/users/AlCutter","html_url":"https://github.com/AlCutter","followers_url":"https://api.github.com/users/AlCutter/followers","following_url":"https://api.github.com/users/AlCutter/following{/other_user}","gists_url":"https://api.github.com/users/AlCutter/gists{/gist_id}","starred_url":"https://api.github.com/users/AlCutter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AlCutter/subscriptions","organizations_url":"https://api.github.com/users/AlCutter/orgs","repos_url":"https://api.github.com/users/AlCutter/repos","events_url":"https://api.github.com/users/AlCutter/events{/privacy}","received_events_url":"https://api.github.com/users/AlCutter/received_events","type":"User","site_admin":false},"assignees":[{"login":"AlCutter","id":7648032,"avatar_url":"https://avatars.githubusercontent.com/u/7648032?v=3","gravatar_id":"","url":"https://api.github.com/users/AlCutter","html_url":"https://github.com/AlCutter","followers_url":"https://api.github.com/users/AlCutter/followers","following_url":"https://api.github.com/users/AlCutter/following{/other_user}","gists_url":"https://api.github.com/users/AlCutter/gists{/gist_id}","starred_url":"https://api.github.com/users/AlCutter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AlCutter/subscriptions","organizations_url":"https://api.github.com/users/AlCutter/orgs","repos_url":"https://api.github.com/users/AlCutter/repos","events_url":"https://api.github.com/users/AlCutter/events{/privacy}","received_events_url":"https://api.github.com/users/AlCutter/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/google/certificate-transparency/pulls/1306/commits","review_comments_url":"https://api.github.com/repos/google/certificate-transparency/pulls/1306/comments","review_comment_url":"https://api.github.com/repos/google/certificate-transparency/pulls/comments{/number}","comments_url":"https://api.github.com/repos/google/certificate-transparency/issues/1306/comments","statuses_url":"https://api.github.com/repos/google/certificate-transparency/statuses/ee7dd8c126463c2930e445414f0e26dbe7e685d1","head":{"label":"daviddrysdale:go-update","ref":"go-update","sha":"ee7dd8c126463c2930e445414f0e26dbe7e685d1","user":{"login":"daviddrysdale","id":457208,"avatar_url":"https://avatars.githubusercontent.com/u/457208?v=3","gravatar_id":"","url":"https://api.github.com/users/daviddrysdale","html_url":"https://github.com/daviddrysdale","followers_url":"https://api.github.com/users/daviddrysdale/followers","following_url":"https://api.github.com/users/daviddrysdale/following{/other_user}","gists_url":"https://api.github.com/users/daviddrysdale/gists{/gist_id}","starred_url":"https://api.github.com/users/daviddrysdale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/daviddrysdale/subscriptions","organizations_url":"https://api.github.com/users/daviddrysdale/orgs","repos_url":"https://api.github.com/users/daviddrysdale/repos","events_url":"https://api.github.com/users/daviddrysdale/events{/privacy}","received_events_url":"https://api.github.com/users/daviddrysdale/received_events","type":"User","site_admin":false},"repo":{"id":59221416,"name":"certificate-transparency","full_name":"daviddrysdale/certificate-transparency","owner":{"login":"daviddrysdale","id":457208,"avatar_url":"https://avatars.githubusercontent.com/u/457208?v=3","gravatar_id":"","url":"https://api.github.com/users/daviddrysdale","html_url":"https://github.com/daviddrysdale","followers_url":"https://api.github.com/users/daviddrysdale/followers","following_url":"https://api.github.com/users/daviddrysdale/following{/other_user}","gists_url":"https://api.github.com/users/daviddrysdale/gists{/gist_id}","starred_url":"https://api.github.com/users/daviddrysdale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/daviddrysdale/subscriptions","organizations_url":"https://api.github.com/users/daviddrysdale/orgs","repos_url":"https://api.github.com/users/daviddrysdale/repos","events_url":"https://api.github.com/users/daviddrysdale/events{/privacy}","received_events_url":"https://api.github.com/users/daviddrysdale/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/daviddrysdale/certificate-transparency","description":"Auditing for TLS certificates.","fork":true,"url":"https://api.github.com/repos/daviddrysdale/certificate-transparency","forks_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/forks","keys_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/keys{/key_id}","collaborators_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/teams","hooks_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/hooks","issue_events_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/issues/events{/number}","events_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/events","assignees_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/assignees{/user}","branches_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/branches{/branch}","tags_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/tags","blobs_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/git/refs{/sha}","trees_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/git/trees{/sha}","statuses_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/statuses/{sha}","languages_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/languages","stargazers_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/stargazers","contributors_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/contributors","subscribers_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/subscribers","subscription_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/subscription","commits_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/commits{/sha}","git_commits_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/git/commits{/sha}","comments_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/comments{/number}","issue_comment_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/issues/comments{/number}","contents_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/contents/{+path}","compare_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/compare/{base}...{head}","merges_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/merges","archive_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/downloads","issues_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/issues{/number}","pulls_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/pulls{/number}","milestones_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/milestones{/number}","notifications_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/labels{/name}","releases_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/releases{/id}","deployments_url":"https://api.github.com/repos/daviddrysdale/certificate-transparency/deployments","created_at":"2016-05-19T15:57:02Z","updated_at":"2016-05-19T15:57:04Z","pushed_at":"2016-09-07T09:11:08Z","git_url":"git://github.com/daviddrysdale/certificate-transparency.git","ssh_url":"git@github.com:daviddrysdale/certificate-transparency.git","clone_url":"https://github.com/daviddrysdale/certificate-transparency.git","svn_url":"https://github.com/daviddrysdale/certificate-transparency","homepage":"http://www.certificate-transparency.org/","size":27312,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"google:master","ref":"master","sha":"8e97b0e19f81538aba5439f86010c7621f67761b","user":{"login":"google","id":1342004,"avatar_url":"https://avatars.githubusercontent.com/u/1342004?v=3","gravatar_id":"","url":"https://api.github.com/users/google","html_url":"https://github.com/google","followers_url":"https://api.github.com/users/google/followers","following_url":"https://api.github.com/users/google/following{/other_user}","gists_url":"https://api.github.com/users/google/gists{/gist_id}","starred_url":"https://api.github.com/users/google/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/google/subscriptions","organizations_url":"https://api.github.com/users/google/orgs","repos_url":"https://api.github.com/users/google/repos","events_url":"https://api.github.com/users/google/events{/privacy}","received_events_url":"https://api.github.com/users/google/received_events","type":"Organization","site_admin":false},"repo":{"id":19989605,"name":"certificate-transparency","full_name":"google/certificate-transparency","owner":{"login":"google","id":1342004,"avatar_url":"https://avatars.githubusercontent.com/u/1342004?v=3","gravatar_id":"","url":"https://api.github.com/users/google","html_url":"https://github.com/google","followers_url":"https://api.github.com/users/google/followers","following_url":"https://api.github.com/users/google/following{/other_user}","gists_url":"https://api.github.com/users/google/gists{/gist_id}","starred_url":"https://api.github.com/users/google/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/google/subscriptions","organizations_url":"https://api.github.com/users/google/orgs","repos_url":"https://api.github.com/users/google/repos","events_url":"https://api.github.com/users/google/events{/privacy}","received_events_url":"https://api.github.com/users/google/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/google/certificate-transparency","description":"Auditing for TLS certificates.","fork":false,"url":"https://api.github.com/repos/google/certificate-transparency","forks_url":"https://api.github.com/repos/google/certificate-transparency/forks","keys_url":"https://api.github.com/repos/google/certificate-transparency/keys{/key_id}","collaborators_url":"https://api.github.com/repos/google/certificate-transparency/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/google/certificate-transparency/teams","hooks_url":"https://api.github.com/repos/google/certificate-transparency/hooks","issue_events_url":"https://api.github.com/repos/google/certificate-transparency/issues/events{/number}","events_url":"https://api.github.com/repos/google/certificate-transparency/events","assignees_url":"https://api.github.com/repos/google/certificate-transparency/assignees{/user}","branches_url":"https://api.github.com/repos/google/certificate-transparency/branches{/branch}","tags_url":"https://api.github.com/repos/google/certificate-transparency/tags","blobs_url":"https://api.github.com/repos/google/certificate-transparency/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/google/certificate-transparency/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/google/certificate-transparency/git/refs{/sha}","trees_url":"https://api.github.com/repos/google/certificate-transparency/git/trees{/sha}","statuses_url":"https://api.github.com/repos/google/certificate-transparency/statuses/{sha}","languages_url":"https://api.github.com/repos/google/certificate-transparency/languages","stargazers_url":"https://api.github.com/repos/google/certificate-transparency/stargazers","contributors_url":"https://api.github.com/repos/google/certificate-transparency/contributors","subscribers_url":"https://api.github.com/repos/google/certificate-transparency/subscribers","subscription_url":"https://api.github.com/repos/google/certificate-transparency/subscription","commits_url":"https://api.github.com/repos/google/certificate-transparency/commits{/sha}","git_commits_url":"https://api.github.com/repos/google/certificate-transparency/git/commits{/sha}","comments_url":"https://api.github.com/repos/google/certificate-transparency/comments{/number}","issue_comment_url":"https://api.github.com/repos/google/certificate-transparency/issues/comments{/number}","contents_url":"https://api.github.com/repos/google/certificate-transparency/contents/{+path}","compare_url":"https://api.github.com/repos/google/certificate-transparency/compare/{base}...{head}","merges_url":"https://api.github.com/repos/google/certificate-transparency/merges","archive_url":"https://api.github.com/repos/google/certificate-transparency/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/google/certificate-transparency/downloads","issues_url":"https://api.github.com/repos/google/certificate-transparency/issues{/number}","pulls_url":"https://api.github.com/repos/google/certificate-transparency/pulls{/number}","milestones_url":"https://api.github.com/repos/google/certificate-transparency/milestones{/number}","notifications_url":"https://api.github.com/repos/google/certificate-transparency/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/google/certificate-transparency/labels{/name}","releases_url":"https://api.github.com/repos/google/certificate-transparency/releases{/id}","deployments_url":"https://api.github.com/repos/google/certificate-transparency/deployments","created_at":"2014-05-20T17:03:47Z","updated_at":"2016-09-07T09:12:30Z","pushed_at":"2016-09-07T15:54:17Z","git_url":"git://github.com/google/certificate-transparency.git","ssh_url":"git@github.com:google/certificate-transparency.git","clone_url":"https://github.com/google/certificate-transparency.git","svn_url":"https://github.com/google/certificate-transparency","homepage":"http://www.certificate-transparency.org/","size":29343,"stargazers_count":287,"watchers_count":287,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":107,"mirror_url":null,"open_issues_count":95,"forks":107,"open_issues":95,"watchers":287,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/google/certificate-transparency/pulls/1306"},"html":{"href":"https://github.com/google/certificate-transparency/pull/1306"},"issue":{"href":"https://api.github.com/repos/google/certificate-transparency/issues/1306"},"comments":{"href":"https://api.github.com/repos/google/certificate-transparency/issues/1306/comments"},"review_comments":{"href":"https://api.github.com/repos/google/certificate-transparency/pulls/1306/comments"},"review_comment":{"href":"https://api.github.com/repos/google/certificate-transparency/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/google/certificate-transparency/pulls/1306/commits"},"statuses":{"href":"https://api.github.com/repos/google/certificate-transparency/statuses/ee7dd8c126463c2930e445414f0e26dbe7e685d1"}}}}
{"actor":{"display_login":"AlCutter"}}