{"action":"created","comment":{"url":"https://api.github.com/repos/Ristretto/website/pulls/comments/213082630","pull_request_review_id":149844263,"id":213082630,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMzA4MjYzMA==","diff_hunk":"@@ -1 +1,39 @@\n # Decoding to Extended Coordinates\n+\n+Given 32 octets of data, `s_bytes`, representing a compressed\n+Ristretto point, the implementation must:\n+\n+1. Check that `s_bytes` is in fact 32 octets.  (In typed languages the\n+   implementor should guarantee this through the type system, otherwise\n+   there should be an explicit check.)\n+2. Decode `s_bytes` into a field element, `s`, then re-encode `s` into\n+   another array of 32 octets, `s_bytes_check`.  Check that the two\n+   arrays `s_bytes` and `s_bytes_check` are equal in constant time.\n+   This is done to ensure that the field element `s` satisfies\n+   \\\\( s < p : p \\in (2^{255}, 2^{255}-19] \\\\) (for the case of\n+   Ristretto255).  The implementor must\n+   ensure that the field element decoding routine ignores the high\n+   bit.\n+3. Check that `s` is non-negative.\n+\n+If any of the above conditions are not met, the decoding routine must abort.\n+\n+Otherwise, the decoding routine is as follows:\n+\n+4. Compute two field elements, `u_1` as \\\\( 1 - a s^{2} \\\\),\n+   and `u_2` as \\\\( 1 + a s^{2} \\\\),\n+   where in the case of Ristretto255 \\\\( a = -1 \\\\).\n+5. Compute `v` as \\\\( ad(1 - a s^{2}) - (1 + a s^{2}) \\\\), where\n+   the Edwards curve constants \\\\( a = -1 \\\\) and\n+   \\\\( d = \\frac{-121665}{121666} \\mod p\\\\) for the\n+   case of Ristretto255.\n+6. Compute `I` as \\\\( \\frac{1}{\\sqrt{ v u_1^{2}}} \\\\).\n+7. Compute `D_x` as \\\\( I u_2 == \\frac{1}{\\sqrt{v}}).","path":"site/formulas/decoding.md","position":null,"original_position":31,"commit_id":"839b992e468b33ebb52d827737903cf6c19f4d18","original_commit_id":"de72502443c4bd562548a552f5416c472483290c","user":{"login":"isislovecruft","id":907241,"node_id":"MDQ6VXNlcjkwNzI0MQ==","avatar_url":"https://avatars3.githubusercontent.com/u/907241?v=4","gravatar_id":"","url":"https://api.github.com/users/isislovecruft","html_url":"https://github.com/isislovecruft","followers_url":"https://api.github.com/users/isislovecruft/followers","following_url":"https://api.github.com/users/isislovecruft/following{/other_user}","gists_url":"https://api.github.com/users/isislovecruft/gists{/gist_id}","starred_url":"https://api.github.com/users/isislovecruft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/isislovecruft/subscriptions","organizations_url":"https://api.github.com/users/isislovecruft/orgs","repos_url":"https://api.github.com/users/isislovecruft/repos","events_url":"https://api.github.com/users/isislovecruft/events{/privacy}","received_events_url":"https://api.github.com/users/isislovecruft/received_events","type":"User","site_admin":false},"body":"Fixed in 839b992","created_at":"2018-08-27T19:11:22Z","updated_at":"2018-08-27T19:11:22Z","html_url":"https://github.com/Ristretto/website/pull/23#discussion_r213082630","pull_request_url":"https://api.github.com/repos/Ristretto/website/pulls/23","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/Ristretto/website/pulls/comments/213082630"},"html":{"href":"https://github.com/Ristretto/website/pull/23#discussion_r213082630"},"pull_request":{"href":"https://api.github.com/repos/Ristretto/website/pulls/23"}},"in_reply_to_id":211424824},"pull_request":{"url":"https://api.github.com/repos/Ristretto/website/pulls/23","id":208712905,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA4NzEyOTA1","html_url":"https://github.com/Ristretto/website/pull/23","diff_url":"https://github.com/Ristretto/website/pull/23.diff","patch_url":"https://github.com/Ristretto/website/pull/23.patch","issue_url":"https://api.github.com/repos/Ristretto/website/issues/23","number":23,"state":"open","locked":false,"title":"Document explicit decoding routine for developers","user":{"login":"isislovecruft","id":907241,"node_id":"MDQ6VXNlcjkwNzI0MQ==","avatar_url":"https://avatars3.githubusercontent.com/u/907241?v=4","gravatar_id":"","url":"https://api.github.com/users/isislovecruft","html_url":"https://github.com/isislovecruft","followers_url":"https://api.github.com/users/isislovecruft/followers","following_url":"https://api.github.com/users/isislovecruft/following{/other_user}","gists_url":"https://api.github.com/users/isislovecruft/gists{/gist_id}","starred_url":"https://api.github.com/users/isislovecruft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/isislovecruft/subscriptions","organizations_url":"https://api.github.com/users/isislovecruft/orgs","repos_url":"https://api.github.com/users/isislovecruft/repos","events_url":"https://api.github.com/users/isislovecruft/events{/privacy}","received_events_url":"https://api.github.com/users/isislovecruft/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-08-16T00:00:48Z","updated_at":"2018-08-27T19:11:22Z","closed_at":null,"merged_at":null,"merge_commit_sha":"661b2670c6e0a4f2efb43f814cbe8f678a6aeee7","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/Ristretto/website/pulls/23/commits","review_comments_url":"https://api.github.com/repos/Ristretto/website/pulls/23/comments","review_comment_url":"https://api.github.com/repos/Ristretto/website/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Ristretto/website/issues/23/comments","statuses_url":"https://api.github.com/repos/Ristretto/website/statuses/839b992e468b33ebb52d827737903cf6c19f4d18","head":{"label":"isislovecruft:feature/explicit-decoding","ref":"feature/explicit-decoding","sha":"839b992e468b33ebb52d827737903cf6c19f4d18","user":{"login":"isislovecruft","id":907241,"node_id":"MDQ6VXNlcjkwNzI0MQ==","avatar_url":"https://avatars3.githubusercontent.com/u/907241?v=4","gravatar_id":"","url":"https://api.github.com/users/isislovecruft","html_url":"https://github.com/isislovecruft","followers_url":"https://api.github.com/users/isislovecruft/followers","following_url":"https://api.github.com/users/isislovecruft/following{/other_user}","gists_url":"https://api.github.com/users/isislovecruft/gists{/gist_id}","starred_url":"https://api.github.com/users/isislovecruft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/isislovecruft/subscriptions","organizations_url":"https://api.github.com/users/isislovecruft/orgs","repos_url":"https://api.github.com/users/isislovecruft/repos","events_url":"https://api.github.com/users/isislovecruft/events{/privacy}","received_events_url":"https://api.github.com/users/isislovecruft/received_events","type":"User","site_admin":false},"repo":{"id":144914834,"node_id":"MDEwOlJlcG9zaXRvcnkxNDQ5MTQ4MzQ=","name":"ristretto.group","full_name":"isislovecruft/ristretto.group","owner":{"login":"isislovecruft","id":907241,"node_id":"MDQ6VXNlcjkwNzI0MQ==","avatar_url":"https://avatars3.githubusercontent.com/u/907241?v=4","gravatar_id":"","url":"https://api.github.com/users/isislovecruft","html_url":"https://github.com/isislovecruft","followers_url":"https://api.github.com/users/isislovecruft/followers","following_url":"https://api.github.com/users/isislovecruft/following{/other_user}","gists_url":"https://api.github.com/users/isislovecruft/gists{/gist_id}","starred_url":"https://api.github.com/users/isislovecruft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/isislovecruft/subscriptions","organizations_url":"https://api.github.com/users/isislovecruft/orgs","repos_url":"https://api.github.com/users/isislovecruft/repos","events_url":"https://api.github.com/users/isislovecruft/events{/privacy}","received_events_url":"https://api.github.com/users/isislovecruft/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/isislovecruft/ristretto.group","description":"The Ristretto Group Website","fork":true,"url":"https://api.github.com/repos/isislovecruft/ristretto.group","forks_url":"https://api.github.com/repos/isislovecruft/ristretto.group/forks","keys_url":"https://api.github.com/repos/isislovecruft/ristretto.group/keys{/key_id}","collaborators_url":"https://api.github.com/repos/isislovecruft/ristretto.group/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/isislovecruft/ristretto.group/teams","hooks_url":"https://api.github.com/repos/isislovecruft/ristretto.group/hooks","issue_events_url":"https://api.github.com/repos/isislovecruft/ristretto.group/issues/events{/number}","events_url":"https://api.github.com/repos/isislovecruft/ristretto.group/events","assignees_url":"https://api.github.com/repos/isislovecruft/ristretto.group/assignees{/user}","branches_url":"https://api.github.com/repos/isislovecruft/ristretto.group/branches{/branch}","tags_url":"https://api.github.com/repos/isislovecruft/ristretto.group/tags","blobs_url":"https://api.github.com/repos/isislovecruft/ristretto.group/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/isislovecruft/ristretto.group/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/isislovecruft/ristretto.group/git/refs{/sha}","trees_url":"https://api.github.com/repos/isislovecruft/ristretto.group/git/trees{/sha}","statuses_url":"https://api.github.com/repos/isislovecruft/ristretto.group/statuses/{sha}","languages_url":"https://api.github.com/repos/isislovecruft/ristretto.group/languages","stargazers_url":"https://api.github.com/repos/isislovecruft/ristretto.group/stargazers","contributors_url":"https://api.github.com/repos/isislovecruft/ristretto.group/contributors","subscribers_url":"https://api.github.com/repos/isislovecruft/ristretto.group/subscribers","subscription_url":"https://api.github.com/repos/isislovecruft/ristretto.group/subscription","commits_url":"https://api.github.com/repos/isislovecruft/ristretto.group/commits{/sha}","git_commits_url":"https://api.github.com/repos/isislovecruft/ristretto.group/git/commits{/sha}","comments_url":"https://api.github.com/repos/isislovecruft/ristretto.group/comments{/number}","issue_comment_url":"https://api.github.com/repos/isislovecruft/ristretto.group/issues/comments{/number}","contents_url":"https://api.github.com/repos/isislovecruft/ristretto.group/contents/{+path}","compare_url":"https://api.github.com/repos/isislovecruft/ristretto.group/compare/{base}...{head}","merges_url":"https://api.github.com/repos/isislovecruft/ristretto.group/merges","archive_url":"https://api.github.com/repos/isislovecruft/ristretto.group/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/isislovecruft/ristretto.group/downloads","issues_url":"https://api.github.com/repos/isislovecruft/ristretto.group/issues{/number}","pulls_url":"https://api.github.com/repos/isislovecruft/ristretto.group/pulls{/number}","milestones_url":"https://api.github.com/repos/isislovecruft/ristretto.group/milestones{/number}","notifications_url":"https://api.github.com/repos/isislovecruft/ristretto.group/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/isislovecruft/ristretto.group/labels{/name}","releases_url":"https://api.github.com/repos/isislovecruft/ristretto.group/releases{/id}","deployments_url":"https://api.github.com/repos/isislovecruft/ristretto.group/deployments","created_at":"2018-08-15T23:58:42Z","updated_at":"2018-08-15T23:59:10Z","pushed_at":"2018-08-27T19:10:37Z","git_url":"git://github.com/isislovecruft/ristretto.group.git","ssh_url":"git@github.com:isislovecruft/ristretto.group.git","clone_url":"https://github.com/isislovecruft/ristretto.group.git","svn_url":"https://github.com/isislovecruft/ristretto.group","homepage":"https://ristretto.group","size":1329,"stargazers_count":0,"watchers_count":0,"language":"CSS","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Ristretto:master","ref":"master","sha":"a6940aca996a4fb8568424bfb128fbec707bdbfa","user":{"login":"Ristretto","id":29664861,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI5NjY0ODYx","avatar_url":"https://avatars3.githubusercontent.com/u/29664861?v=4","gravatar_id":"","url":"https://api.github.com/users/Ristretto","html_url":"https://github.com/Ristretto","followers_url":"https://api.github.com/users/Ristretto/followers","following_url":"https://api.github.com/users/Ristretto/following{/other_user}","gists_url":"https://api.github.com/users/Ristretto/gists{/gist_id}","starred_url":"https://api.github.com/users/Ristretto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ristretto/subscriptions","organizations_url":"https://api.github.com/users/Ristretto/orgs","repos_url":"https://api.github.com/users/Ristretto/repos","events_url":"https://api.github.com/users/Ristretto/events{/privacy}","received_events_url":"https://api.github.com/users/Ristretto/received_events","type":"Organization","site_admin":false},"repo":{"id":95263868,"node_id":"MDEwOlJlcG9zaXRvcnk5NTI2Mzg2OA==","name":"website","full_name":"Ristretto/website","owner":{"login":"Ristretto","id":29664861,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI5NjY0ODYx","avatar_url":"https://avatars3.githubusercontent.com/u/29664861?v=4","gravatar_id":"","url":"https://api.github.com/users/Ristretto","html_url":"https://github.com/Ristretto","followers_url":"https://api.github.com/users/Ristretto/followers","following_url":"https://api.github.com/users/Ristretto/following{/other_user}","gists_url":"https://api.github.com/users/Ristretto/gists{/gist_id}","starred_url":"https://api.github.com/users/Ristretto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ristretto/subscriptions","organizations_url":"https://api.github.com/users/Ristretto/orgs","repos_url":"https://api.github.com/users/Ristretto/repos","events_url":"https://api.github.com/users/Ristretto/events{/privacy}","received_events_url":"https://api.github.com/users/Ristretto/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Ristretto/website","description":"The Ristretto Group Website","fork":false,"url":"https://api.github.com/repos/Ristretto/website","forks_url":"https://api.github.com/repos/Ristretto/website/forks","keys_url":"https://api.github.com/repos/Ristretto/website/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Ristretto/website/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Ristretto/website/teams","hooks_url":"https://api.github.com/repos/Ristretto/website/hooks","issue_events_url":"https://api.github.com/repos/Ristretto/website/issues/events{/number}","events_url":"https://api.github.com/repos/Ristretto/website/events","assignees_url":"https://api.github.com/repos/Ristretto/website/assignees{/user}","branches_url":"https://api.github.com/repos/Ristretto/website/branches{/branch}","tags_url":"https://api.github.com/repos/Ristretto/website/tags","blobs_url":"https://api.github.com/repos/Ristretto/website/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Ristretto/website/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Ristretto/website/git/refs{/sha}","trees_url":"https://api.github.com/repos/Ristretto/website/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Ristretto/website/statuses/{sha}","languages_url":"https://api.github.com/repos/Ristretto/website/languages","stargazers_url":"https://api.github.com/repos/Ristretto/website/stargazers","contributors_url":"https://api.github.com/repos/Ristretto/website/contributors","subscribers_url":"https://api.github.com/repos/Ristretto/website/subscribers","subscription_url":"https://api.github.com/repos/Ristretto/website/subscription","commits_url":"https://api.github.com/repos/Ristretto/website/commits{/sha}","git_commits_url":"https://api.github.com/repos/Ristretto/website/git/commits{/sha}","comments_url":"https://api.github.com/repos/Ristretto/website/comments{/number}","issue_comment_url":"https://api.github.com/repos/Ristretto/website/issues/comments{/number}","contents_url":"https://api.github.com/repos/Ristretto/website/contents/{+path}","compare_url":"https://api.github.com/repos/Ristretto/website/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Ristretto/website/merges","archive_url":"https://api.github.com/repos/Ristretto/website/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Ristretto/website/downloads","issues_url":"https://api.github.com/repos/Ristretto/website/issues{/number}","pulls_url":"https://api.github.com/repos/Ristretto/website/pulls{/number}","milestones_url":"https://api.github.com/repos/Ristretto/website/milestones{/number}","notifications_url":"https://api.github.com/repos/Ristretto/website/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Ristretto/website/labels{/name}","releases_url":"https://api.github.com/repos/Ristretto/website/releases{/id}","deployments_url":"https://api.github.com/repos/Ristretto/website/deployments","created_at":"2017-06-23T23:40:23Z","updated_at":"2018-08-16T08:35:15Z","pushed_at":"2018-08-27T19:10:38Z","git_url":"git://github.com/Ristretto/website.git","ssh_url":"git@github.com:Ristretto/website.git","clone_url":"https://github.com/Ristretto/website.git","svn_url":"https://github.com/Ristretto/website","homepage":"https://ristretto.group","size":1323,"stargazers_count":5,"watchers_count":5,"language":"CSS","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":12,"license":null,"forks":1,"open_issues":12,"watchers":5,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Ristretto/website/pulls/23"},"html":{"href":"https://github.com/Ristretto/website/pull/23"},"issue":{"href":"https://api.github.com/repos/Ristretto/website/issues/23"},"comments":{"href":"https://api.github.com/repos/Ristretto/website/issues/23/comments"},"review_comments":{"href":"https://api.github.com/repos/Ristretto/website/pulls/23/comments"},"review_comment":{"href":"https://api.github.com/repos/Ristretto/website/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Ristretto/website/pulls/23/commits"},"statuses":{"href":"https://api.github.com/repos/Ristretto/website/statuses/839b992e468b33ebb52d827737903cf6c19f4d18"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"isislovecruft"}}