{"action":"created","issue":{"url":"https://api.github.com/repos/ssbc/ssb-keys/issues/14","labels_url":"https://api.github.com/repos/ssbc/ssb-keys/issues/14/labels{/name}","comments_url":"https://api.github.com/repos/ssbc/ssb-keys/issues/14/comments","events_url":"https://api.github.com/repos/ssbc/ssb-keys/issues/14/events","html_url":"https://github.com/ssbc/ssb-keys/pull/14","id":82111217,"number":14,"title":"tracking PR: add nacl crypto","user":{"login":"dominictarr","id":259374,"avatar_url":"https://avatars.githubusercontent.com/u/259374?v=3","gravatar_id":"","url":"https://api.github.com/users/dominictarr","html_url":"https://github.com/dominictarr","followers_url":"https://api.github.com/users/dominictarr/followers","following_url":"https://api.github.com/users/dominictarr/following{/other_user}","gists_url":"https://api.github.com/users/dominictarr/gists{/gist_id}","starred_url":"https://api.github.com/users/dominictarr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dominictarr/subscriptions","organizations_url":"https://api.github.com/users/dominictarr/orgs","repos_url":"https://api.github.com/users/dominictarr/repos","events_url":"https://api.github.com/users/dominictarr/events{/privacy}","received_events_url":"https://api.github.com/users/dominictarr/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2015-05-28T20:29:25Z","updated_at":"2015-05-29T16:31:35Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/ssbc/ssb-keys/pulls/14","html_url":"https://github.com/ssbc/ssb-keys/pull/14","diff_url":"https://github.com/ssbc/ssb-keys/pull/14.diff","patch_url":"https://github.com/ssbc/ssb-keys/pull/14.patch"},"body":"This adds [ed25519](http://ed25519.cr.yp.to/) via nacl.\r\nIt's at least twice as fast as k256 from sjcl, and doesn't have side-channel leaks...\r\n\r\nSide channels (when you gain information about the key by examining, eg, how other software runs on the same computer... is probably a big risk in JS crypto, because it would be pretty easy to get more js running on the same computer...)\r\n\r\nAlso, this makes https://github.com/ssbc/scuttlebot/pull/192 take only 5 seconds!!!\r\n\r\n\r\nAnother benefit is that the ed25519 public key is only 32 bytes long (same size as a blake2s hash) so we can just put it in every message instead of looking up, which could make the validation algorithm simpler too!"},"comment":{"url":"https://api.github.com/repos/ssbc/ssb-keys/issues/comments/106864959","html_url":"https://github.com/ssbc/ssb-keys/pull/14#issuecomment-106864959","issue_url":"https://api.github.com/repos/ssbc/ssb-keys/issues/14","id":106864959,"user":{"login":"pfraze","id":1270099,"avatar_url":"https://avatars.githubusercontent.com/u/1270099?v=3","gravatar_id":"","url":"https://api.github.com/users/pfraze","html_url":"https://github.com/pfraze","followers_url":"https://api.github.com/users/pfraze/followers","following_url":"https://api.github.com/users/pfraze/following{/other_user}","gists_url":"https://api.github.com/users/pfraze/gists{/gist_id}","starred_url":"https://api.github.com/users/pfraze/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pfraze/subscriptions","organizations_url":"https://api.github.com/users/pfraze/orgs","repos_url":"https://api.github.com/users/pfraze/repos","events_url":"https://api.github.com/users/pfraze/events{/privacy}","received_events_url":"https://api.github.com/users/pfraze/received_events","type":"User","site_admin":false},"created_at":"2015-05-29T16:31:35Z","updated_at":"2015-05-29T16:31:35Z","body":"Looking good so far!\r\n\r\nSo we're going to be changing curves -- is ssb going to continue supporting k256? If so, what'll the differences be for users of one vs the other? If not, maybe we should ditch legacy entirely.\r\n\r\n> it's literally the same code, because it is compiled from it.\r\n\r\nI don't totally agree. It's close, but the runtime is different, and I think that invites subtle differences which could cause bugs. But having API compat with libsodium gives us a quick escape hatch if the purejs version has a problem (\"quick, to the native bindings!\") so Im ok with not worrying, for now."}}