Daira Hopwood
0009d0b444
Fix an overflow bug in the square root implementation on 32-bit platforms.
...
Co-authored-by: Greg Pfeil <greg@electriccoin.co>
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2023-03-02 16:20:45 +00:00
str4d
85e2664209
Merge pull request #55 from zcash/fieldext-finale
...
Remove `FieldExt` and `Group` traits
2022-12-05 18:53:55 +00:00
Volker Mische
67e5595702
Improve 64-bit to 32-bit limb conversion
...
The code base is now on Rust 1.56 and Rust edition 2021. As per
https://github.com/zcash/pasta_curves/pull/31#discussion_r824826344
the code can now be simplified. This commit is also adding a test
for the u64_to_u32 function.
2022-11-25 11:17:37 +01:00
Jack Grigg
825cb944de
Remove `FieldExt` trait
...
One, two! One, two! And through and through
The vorpal blade went snicker-snack!
He left it dead, and with its head
He went galumphing back.
Closes zcash/pasta_curves#42 .
2022-11-25 05:05:54 +00:00
Jack Grigg
56b73e32ce
Move `Ord` bound from `FieldExt` to `CurveAffine::{Base, Scalar}`
...
This helps with the `FieldExt` removal while deferring the decision on
whether to add an `Ord` bound to `ff::PrimeField`.
2022-11-25 05:05:54 +00:00
Jack Grigg
9862b247d2
Migrate remaining `FieldExt` constants and methods into `ff`
2022-11-25 05:05:54 +00:00
Jack Grigg
bedaa0055c
Remove unnecessary `FieldExt` bounds in `crate::hashtocurve`
2022-11-24 20:48:23 +00:00
Jack Grigg
fbce21598d
Remove `crate::arithmetic::Group` trait
...
It was only present to enable an FFT implementation in `halo2_proofs`
that is generic over fields and groups, but we can replace it with an
equivalent trait in `halo2_proofs` that can have a blanket impl.
2022-11-24 20:48:23 +00:00
Jack Grigg
4c86de5e10
Remove `FieldExt` bound from `SqrtHasher` generic argument
2022-11-24 11:37:41 +00:00
Jack Grigg
0559163953
Remove unused bounds and methods from `FieldExt`
2022-11-24 11:37:41 +00:00
str4d
1bd803d57b
Merge pull request #53 from lurk-lang/serde-ep-eq
...
Implement serde for Ep, Eq
2022-11-23 08:57:08 +00:00
Samuel Burnham
5e7d16b811
Implement serde for Ep, Eq
2022-11-20 14:17:08 -05:00
Jack Grigg
1c21a8944c
Migrate to `ff` revision with trait constants
2022-11-19 12:16:10 +00:00
Jack Grigg
6921efd8fd
Migrate to `ff` revision with square root backports
2022-11-19 12:03:54 +00:00
str4d
f8ba48de4e
Merge pull request #48 from filecoin-project/impl-serde
...
Implement Serde for fields and curves
2022-11-19 12:02:52 +00:00
str4d
191c416a76
Merge pull request #45 from filecoin-project/ec-gpu-020
...
Update to ec-gpu 0.2 release
2022-11-19 11:58:45 +00:00
Volker Mische
025362ad5a
Address code review
2022-10-17 10:18:09 +02:00
Volker Mische
52902e6fdf
Implement Serde for fields and curves
...
Currently Serde is only implemented for `Fp`, `Fq`, `EpAffine` and `EqAffine`.
Support can be enabled with the `serde` feature.
2022-10-14 15:32:57 +02:00
Tomas Krnak
b889295e31
fixup! Add `uninline-portable` feature
2022-10-13 11:07:19 +02:00
Tomas Krnak
52af8293a8
fixup! Add `uninline-portable` feature
2022-10-13 10:54:30 +02:00
Volker Mische
fb04f7ad99
Update to ec-gpu 0.2 release
...
The traits of ec-gpu changed a bit, there's now also a `GpuName`
trait that needs to be implemented.
BREAKING CHANGE: `ec-gpu` v0.2 traits are not compatible with v0.1
All dependencies that use `ec-gpu` need to be on v0.2.
2022-09-07 15:44:48 +02:00
Tomas Krnak
378f5cfd08
Add `uninline-portable` feature
2022-08-17 17:39:04 +02:00
Jack Grigg
0b8ed00c84
Migrate to Rust 2021
2022-05-04 23:22:15 +00:00
Jack Grigg
3329b4de85
Migrate to `ff 0.12`, `group 0.12`
...
MSRV is now 1.56.0.
2022-05-04 23:22:15 +00:00
ebfull
a80ed3e8aa
Merge pull request #30 from dot-asm/repr-c
...
Add 'repr-c' feature to facilitate FFI.
2022-04-19 08:04:29 -06:00
Andy Polyakov
ef39fba64c
Simplify $name_affine.ct_eq().
...
By @ebfull's suggestion.
2022-04-18 19:04:03 +02:00
Andy Polyakov
3507ba6ffe
Omit 'infinity' field from affine coordinates structure.
2022-04-13 22:23:23 +02:00
str4d
2796b6b65e
Merge pull request #31 from vmx/ec-gpu
...
Implement ec_gpu:GpuField for Fp/Fq
2022-03-24 17:08:37 +00:00
Volker Mische
678cd40419
chore: fix source formatting
2022-03-15 16:25:18 +01:00
David Nevado
8b101d67c4
Add `Coordinates` constructor
2022-03-12 15:46:43 +01:00
David Nevado
8a3643682f
Change `Coordinates` attrs back to `pub(crate)`
2022-03-12 15:44:46 +01:00
Volker Mische
b1f03fbc9c
Document helper function
2022-03-11 17:47:17 +01:00
Volker Mische
cc51340dc5
fix: less allocations
...
Co-authored-by: str4d <thestr4d@gmail.com>
2022-03-11 17:37:47 +01:00
David Nevado
8042906484
Change `Coordinates` fields to `pub`
2022-03-07 11:19:15 +01:00
Volker Mische
870939ab03
Implement ec_gpu:GpuField for Fp/Fq
...
This commit introduces a new feature called "gpu", which enables an
`ec_gpu:GpuField` implementation of `Fp` and `Fq`. This enables the
field arithmetics to be run on a GPU.
The code to convert from a u64 to a u32 vector was taken from
07a84f9727/src/lib.rs (L102-L108)
2022-03-02 14:44:11 +01:00
Andy Polyakov
872065c8a1
Add 'repr-c' feature to facilitate FFI.
2022-02-17 17:06:02 +01:00
Jack Grigg
53f65f7e6d
Changelog and comment cleanups
2022-01-03 13:56:07 +00:00
str4d
738fb60796
Merge pull request #28 from zcash/27-remove-std-feature-flag
...
Remove `std` feature flag
2021-12-25 12:36:29 +00:00
str4d
c10960351d
Fix typo in code comment
...
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-12-25 12:20:18 +00:00
Jack Grigg
21fd9e2c1b
Remove `std` feature flag
...
Closes zcash/pasta_curves#27 .
2021-12-22 05:41:04 +00:00
Jack Grigg
69cf8f5f77
Remove `CurveAffine::{read, write}`
...
This removes the last dependency on `std::io`.
2021-12-22 05:22:56 +00:00
Jack Grigg
f874d29238
Remove `FieldExt::rand`
...
This removes a dependency on the `getrandom` crate in no-std mode, which
doesn't work on some no-std targets that `getrandom` doesn't support.
2021-12-22 05:15:06 +00:00
Jack Grigg
ab03c3d5e1
Remove field traits from behind `std` feature flag
...
Now that we have a default implementation of `SqrtRatio::sqrt_ratio`, we
can use it and `FieldExt` in no-std environments.
We introduce an `alloc` feature flag to form a common feature dependency
between `std` and `sqrt-table`. It is currently unused directly, but
will be used after `CurveAffine` is refactored to remove the `std`
dependency.
Closes zcash/pasta_curves#25 .
2021-12-22 05:06:16 +00:00
Jack Grigg
314b1bcb94
Place `SqrtTables` behind a `sqrt-tables` feature flag
...
This enables the crate to be compiled without the tables, instead using
a simple fallback for `SqrtRatio::sqrt_ratio`.
2021-12-22 04:38:14 +00:00
Jack Grigg
96116e20e5
Annotate docs with required feature flags
2021-12-07 14:31:27 +00:00
Jack Grigg
a91e262235
Document that the generator in `SqrtRatio::sqrt_ratio` might change
2021-09-30 13:57:59 +01:00
Jack Grigg
32cc10db46
Move `FieldExt::get_lower_32` to `SqrtRatio` trait
...
It is only used internally by the table-based square root impl, and we
should probably refactor this further, but for now it can live in the
sqrt extension trait.
2021-09-30 13:57:59 +01:00
Jack Grigg
3a6f71d2f0
Remove `FieldExt::{from_bytes, read, to_bytes, write}`
...
- `ff::PrimeField::{from_repr, to_repr}` are direct replacements for
`FieldExt::{from_bytes, to_bytes}`.
- `FieldExt::{read, write}` were added for reading and writing `halo2`
proofs, but `halo2::transcript` now handles this internally.
2021-09-23 14:45:02 +01:00
Jack Grigg
ad0360bc1c
Remove `FieldExt::from_u64`
2021-09-23 14:45:02 +01:00
Jack Grigg
11c5ddbc02
Remove `FieldExt::{RESCUE_ALPHA, RESCUE_INVALPHA}`
2021-09-23 14:45:02 +01:00