Skip to content

Commit

Permalink
handle case when encoded key is (p-1)/2
Browse files Browse the repository at this point in the history
  • Loading branch information
orignal committed Dec 10, 2019
1 parent 4d7b86c commit 36eaaa7
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 1 deletion.
2 changes: 1 addition & 1 deletion libi2pd/Elligator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ namespace crypto

BIGNUM * r = BN_CTX_get (ctx); BN_bin2bn (encoded1, 32, r);

if (BN_cmp (r, p12) < 0) // r < (p-1)/2
if (BN_cmp (r, p12) <= 0) // r < (p-1)/2
{
// v = -A/(1+u*r^2)
BIGNUM * v = BN_CTX_get (ctx); BN_mod_sqr (v, r, p, ctx);
Expand Down
13 changes: 13 additions & 0 deletions tests/test-elligator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,17 @@ const uint8_t key2[32] =
0xe5, 0x78, 0x2b, 0xe1, 0xe1, 0x14, 0x5c, 0xe2, 0xc3, 0xc6, 0xfd, 0xe1, 0x6d, 0xed, 0x53, 0x63
};

const uint8_t encoded3[32] =
{
0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f
};

const uint8_t key3[32] =
{
0x9c, 0xdb, 0x52, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55
};

int main ()
{
Expand All @@ -53,4 +64,6 @@ int main ()
assert(memcmp (buf, key1, 32) == 0);
el.Decode (encoded2, buf);
assert(memcmp (buf, key2, 32) == 0);
el.Decode (encoded3, buf);
assert(memcmp (buf, key3, 32) == 0);
}

0 comments on commit 36eaaa7

Please sign in to comment.