Skip to content

Commit d6aa975

Browse files
committed
Add support for 448-bit integers and fields.
These are needed for the Pluto and Eris curves (https://github.com/daira/pluto-eris). Signed-off-by: Daira Hopwood <[email protected]>
1 parent e504bda commit d6aa975

File tree

4 files changed

+12
-2
lines changed

4 files changed

+12
-2
lines changed

ff/src/biginteger/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ bigint_impl!(BigInteger128, 2);
3434
bigint_impl!(BigInteger256, 4);
3535
bigint_impl!(BigInteger320, 5);
3636
bigint_impl!(BigInteger384, 6);
37+
bigint_impl!(BigInteger448, 7);
3738
bigint_impl!(BigInteger768, 12);
3839
bigint_impl!(BigInteger832, 13);
3940

ff/src/biginteger/tests.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,12 @@ fn test_biginteger384() {
8989
test_biginteger(B::new([0u64; 6]));
9090
}
9191

92+
#[test]
93+
fn test_biginteger448() {
94+
use crate::biginteger::BigInteger448 as B;
95+
test_biginteger(B::new([0u64; 7]));
96+
}
97+
9298
#[test]
9399
fn test_biginteger768() {
94100
use crate::biginteger::BigInteger768 as B;

ff/src/fields/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -545,13 +545,15 @@ impl<Slice: AsRef<[u64]>> Iterator for BitIteratorLE<Slice> {
545545
}
546546

547547
use crate::biginteger::{
548-
BigInteger256, BigInteger320, BigInteger384, BigInteger64, BigInteger768, BigInteger832,
548+
BigInteger256, BigInteger320, BigInteger384, BigInteger448, BigInteger64, BigInteger768,
549+
BigInteger832,
549550
};
550551

551552
impl_field_bigint_conv!(Fp64, BigInteger64, Fp64Parameters);
552553
impl_field_bigint_conv!(Fp256, BigInteger256, Fp256Parameters);
553554
impl_field_bigint_conv!(Fp320, BigInteger320, Fp320Parameters);
554555
impl_field_bigint_conv!(Fp384, BigInteger384, Fp384Parameters);
556+
impl_field_bigint_conv!(Fp448, BigInteger448, Fp448Parameters);
555557
impl_field_bigint_conv!(Fp768, BigInteger768, Fp768Parameters);
556558
impl_field_bigint_conv!(Fp832, BigInteger832, Fp832Parameters);
557559

ff/src/fields/models/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use num_traits::{One, Zero};
1111
use crate::{
1212
biginteger::{
1313
arithmetic as fa, BigInteger as _BigInteger, BigInteger256, BigInteger320, BigInteger384,
14-
BigInteger64, BigInteger768, BigInteger832,
14+
BigInteger448, BigInteger64, BigInteger768, BigInteger832,
1515
},
1616
bytes::{FromBytes, ToBytes},
1717
fields::{FftField, Field, FpParameters, LegendreSymbol, PrimeField, SquareRootField},
@@ -22,6 +22,7 @@ impl_Fp!(Fp64, Fp64Parameters, BigInteger64, BigInteger64, 1);
2222
impl_Fp!(Fp256, Fp256Parameters, BigInteger256, BigInteger256, 4);
2323
impl_Fp!(Fp320, Fp320Parameters, BigInteger320, BigInteger320, 5);
2424
impl_Fp!(Fp384, Fp384Parameters, BigInteger384, BigInteger384, 6);
25+
impl_Fp!(Fp448, Fp448Parameters, BigInteger448, BigInteger448, 7);
2526
impl_Fp!(Fp768, Fp768Parameters, BigInteger768, BigInteger768, 12);
2627
impl_Fp!(Fp832, Fp832Parameters, BigInteger832, BigInteger832, 13);
2728

0 commit comments

Comments
 (0)