Merge pull request #4097

61caab8 crypto: remove slight bias in key generation due to modulo (moneromooo-monero)
This commit is contained in:
luigi1111 2018-07-27 14:23:54 -05:00
commit 3fde902394
No known key found for this signature in database
GPG key ID: F4ACA0183641E010
5 changed files with 77 additions and 10 deletions

View file

@ -62,14 +62,13 @@ namespace rct {
//generates a random scalar which can be used as a secret key or mask
void skGen(key &sk) {
sk = crypto::rand<key>();
sc_reduce32(sk.bytes);
random32_unbiased(sk.bytes);
}
//generates a random scalar which can be used as a secret key or mask
key skGen() {
key sk = crypto::rand<key>();
sc_reduce32(sk.bytes);
key sk;
skGen(sk);
return sk;
}
@ -79,9 +78,8 @@ namespace rct {
CHECK_AND_ASSERT_THROW_MES(rows > 0, "0 keys requested");
keyV rv(rows);
size_t i = 0;
crypto::rand(rows * sizeof(key), (uint8_t*)&rv[0]);
for (i = 0 ; i < rows ; i++) {
sc_reduce32(rv[i].bytes);
skGen(rv[i]);
}
return rv;
}