mirror of
https://github.com/serai-dex/serai.git
synced 2024-12-22 11:39:35 +00:00
Remove potentially vartime (due to cache side-channel attacks) table access in dalek-ff-group and minimal-ed448
Some checks failed
Full Stack Tests / build (push) Has been cancelled
Coordinator Tests / build (push) Has been cancelled
crypto/ Tests / test-crypto (push) Has been cancelled
networks/ Tests / test-networks (push) Has been cancelled
Message Queue Tests / build (push) Has been cancelled
no-std build / build (push) Has been cancelled
Lint / clippy (macos-13) (push) Has been cancelled
Lint / clippy (macos-14) (push) Has been cancelled
Lint / clippy (ubuntu-latest) (push) Has been cancelled
Lint / clippy (windows-latest) (push) Has been cancelled
Lint / deny (push) Has been cancelled
Lint / fmt (push) Has been cancelled
Lint / machete (push) Has been cancelled
Deploy Rust docs and Jekyll site to Pages / build (push) Has been cancelled
Processor Tests / build (push) Has been cancelled
Reproducible Runtime / build (push) Has been cancelled
Tests / test-infra (push) Has been cancelled
Tests / test-substrate (push) Has been cancelled
Tests / test-serai-client (push) Has been cancelled
Deploy Rust docs and Jekyll site to Pages / deploy (push) Has been cancelled
Some checks failed
Full Stack Tests / build (push) Has been cancelled
Coordinator Tests / build (push) Has been cancelled
crypto/ Tests / test-crypto (push) Has been cancelled
networks/ Tests / test-networks (push) Has been cancelled
Message Queue Tests / build (push) Has been cancelled
no-std build / build (push) Has been cancelled
Lint / clippy (macos-13) (push) Has been cancelled
Lint / clippy (macos-14) (push) Has been cancelled
Lint / clippy (ubuntu-latest) (push) Has been cancelled
Lint / clippy (windows-latest) (push) Has been cancelled
Lint / deny (push) Has been cancelled
Lint / fmt (push) Has been cancelled
Lint / machete (push) Has been cancelled
Deploy Rust docs and Jekyll site to Pages / build (push) Has been cancelled
Processor Tests / build (push) Has been cancelled
Reproducible Runtime / build (push) Has been cancelled
Tests / test-infra (push) Has been cancelled
Tests / test-substrate (push) Has been cancelled
Tests / test-serai-client (push) Has been cancelled
Deploy Rust docs and Jekyll site to Pages / deploy (push) Has been cancelled
This commit is contained in:
parent
f3d20e60b3
commit
d0201cf2e5
5 changed files with 41 additions and 5 deletions
2
LICENSE
2
LICENSE
|
@ -5,4 +5,4 @@ a full copy of the AGPL-3.0 License is included in the root of this repository
|
||||||
as a reference text. This copy should be provided with any distribution of a
|
as a reference text. This copy should be provided with any distribution of a
|
||||||
crate licensed under the AGPL-3.0, as per its terms.
|
crate licensed under the AGPL-3.0, as per its terms.
|
||||||
|
|
||||||
The GitHub actions (`.github/actions`) are licensed under the MIT license.
|
The GitHub actions/workflows (`.github`) are licensed under the MIT license.
|
||||||
|
|
|
@ -244,7 +244,16 @@ impl FieldElement {
|
||||||
res *= res;
|
res *= res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
res *= table[usize::from(bits)];
|
|
||||||
|
let mut scale_by = FieldElement::ONE;
|
||||||
|
#[allow(clippy::needless_range_loop)]
|
||||||
|
for i in 0 .. 16 {
|
||||||
|
#[allow(clippy::cast_possible_truncation)] // Safe since 0 .. 16
|
||||||
|
{
|
||||||
|
scale_by = <_>::conditional_select(&scale_by, &table[i], bits.ct_eq(&(i as u8)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
res *= scale_by;
|
||||||
bits = 0;
|
bits = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -208,7 +208,16 @@ impl Scalar {
|
||||||
res *= res;
|
res *= res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
res *= table[usize::from(bits)];
|
|
||||||
|
let mut scale_by = Scalar::ONE;
|
||||||
|
#[allow(clippy::needless_range_loop)]
|
||||||
|
for i in 0 .. 16 {
|
||||||
|
#[allow(clippy::cast_possible_truncation)] // Safe since 0 .. 16
|
||||||
|
{
|
||||||
|
scale_by = <_>::conditional_select(&scale_by, &table[i], bits.ct_eq(&(i as u8)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
res *= scale_by;
|
||||||
bits = 0;
|
bits = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -161,7 +161,16 @@ macro_rules! field {
|
||||||
res *= res;
|
res *= res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
res *= table[usize::from(bits)];
|
|
||||||
|
let mut scale_by = $FieldName(Residue::ONE);
|
||||||
|
#[allow(clippy::needless_range_loop)]
|
||||||
|
for i in 0 .. 16 {
|
||||||
|
#[allow(clippy::cast_possible_truncation)] // Safe since 0 .. 16
|
||||||
|
{
|
||||||
|
scale_by = <_>::conditional_select(&scale_by, &table[i], bits.ct_eq(&(i as u8)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
res *= scale_by;
|
||||||
bits = 0;
|
bits = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -242,7 +242,16 @@ impl Mul<Scalar> for Point {
|
||||||
res = res.double();
|
res = res.double();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
res += table[usize::from(bits)];
|
|
||||||
|
let mut add_by = Point::identity();
|
||||||
|
#[allow(clippy::needless_range_loop)]
|
||||||
|
for i in 0 .. 16 {
|
||||||
|
#[allow(clippy::cast_possible_truncation)] // Safe since 0 .. 16
|
||||||
|
{
|
||||||
|
add_by = <_>::conditional_select(&add_by, &table[i], bits.ct_eq(&(i as u8)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
res += add_by;
|
||||||
bits = 0;
|
bits = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue