{"action":"created","issue":{"url":"https://api.github.com/repos/shazow/urllib3/issues/607","labels_url":"https://api.github.com/repos/shazow/urllib3/issues/607/labels{/name}","comments_url":"https://api.github.com/repos/shazow/urllib3/issues/607/comments","events_url":"https://api.github.com/repos/shazow/urllib3/issues/607/events","html_url":"https://github.com/shazow/urllib3/pull/607","id":72214372,"number":607,"title":"[RFC] HPKP","user":{"login":"Lukasa","id":1382556,"avatar_url":"https://avatars.githubusercontent.com/u/1382556?v=3","gravatar_id":"","url":"https://api.github.com/users/Lukasa","html_url":"https://github.com/Lukasa","followers_url":"https://api.github.com/users/Lukasa/followers","following_url":"https://api.github.com/users/Lukasa/following{/other_user}","gists_url":"https://api.github.com/users/Lukasa/gists{/gist_id}","starred_url":"https://api.github.com/users/Lukasa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Lukasa/subscriptions","organizations_url":"https://api.github.com/users/Lukasa/orgs","repos_url":"https://api.github.com/users/Lukasa/repos","events_url":"https://api.github.com/users/Lukasa/events{/privacy}","received_events_url":"https://api.github.com/users/Lukasa/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"Lukasa","id":1382556,"avatar_url":"https://avatars.githubusercontent.com/u/1382556?v=3","gravatar_id":"","url":"https://api.github.com/users/Lukasa","html_url":"https://github.com/Lukasa","followers_url":"https://api.github.com/users/Lukasa/followers","following_url":"https://api.github.com/users/Lukasa/following{/other_user}","gists_url":"https://api.github.com/users/Lukasa/gists{/gist_id}","starred_url":"https://api.github.com/users/Lukasa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Lukasa/subscriptions","organizations_url":"https://api.github.com/users/Lukasa/orgs","repos_url":"https://api.github.com/users/Lukasa/repos","events_url":"https://api.github.com/users/Lukasa/events{/privacy}","received_events_url":"https://api.github.com/users/Lukasa/received_events","type":"User","site_admin":false},"milestone":null,"comments":26,"created_at":"2015-04-30T16:32:41Z","updated_at":"2015-05-01T03:44:11Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/shazow/urllib3/pulls/607","html_url":"https://github.com/shazow/urllib3/pull/607","diff_url":"https://github.com/shazow/urllib3/pull/607.diff","patch_url":"https://github.com/shazow/urllib3/pull/607.patch"},"body":"HPKP is cool, and I think we should be able to do it.\r\n\r\nThis issue tracks us (me?) spiking out how best to do it. I believe we can do it, and continue to be Python HTTP security wizards.\r\n\r\nPeople who may want to watch this issue: @sigmavirus24 @reaperhulk @dstufft @tiran."},"comment":{"url":"https://api.github.com/repos/shazow/urllib3/issues/comments/98037005","html_url":"https://github.com/shazow/urllib3/pull/607#issuecomment-98037005","issue_url":"https://api.github.com/repos/shazow/urllib3/issues/607","id":98037005,"user":{"login":"shazow","id":6292,"avatar_url":"https://avatars.githubusercontent.com/u/6292?v=3","gravatar_id":"","url":"https://api.github.com/users/shazow","html_url":"https://github.com/shazow","followers_url":"https://api.github.com/users/shazow/followers","following_url":"https://api.github.com/users/shazow/following{/other_user}","gists_url":"https://api.github.com/users/shazow/gists{/gist_id}","starred_url":"https://api.github.com/users/shazow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shazow/subscriptions","organizations_url":"https://api.github.com/users/shazow/orgs","repos_url":"https://api.github.com/users/shazow/repos","events_url":"https://api.github.com/users/shazow/events{/privacy}","received_events_url":"https://api.github.com/users/shazow/received_events","type":"User","site_admin":false},"created_at":"2015-05-01T03:44:11Z","updated_at":"2015-05-01T03:44:11Z","body":"Some high-level thoughts before I fall asleep:\r\n\r\n- Not a big fan of adding more things to the Connection/ConnectionPool init and set_cert and such. Does it have to be specified during construction? Does it make sense for an HPKPManager to be at the PoolManager level or higher? (Maybe with the appropriate connection-level hooks added... Hrm my thoughts aren't clear here, need to think about this more.)\r\n- HPKP probably doesn't belong in util, those are more for generally-useful helpers that don't require any awareness of Connection/ConnectionPool/Request/Response objects/behaviour. Basically not specific to urllib3. Maybe a urllib3/hpkp/*.py subpackage would be better?\r\n- Can we think of a better name than HPKPStuff? KeyPinDatabase?\r\n- Would it make sense to separate the idea of the key pin database and the nuances of HPKP itself? (At least as far as semantics/naming/module homes go)\r\n- Would it be feasible to introduce this as an external or contrib module first, keeping the core code changes to a minimum?\r\n- s/EphemeralDatabase/MemoryDatabase/ (more standard terminology in this context I think)\r\n"}}