Skip to content

Commit ae844c3

Browse files
authored
Propagate BaseField bounds in Pairing (#955)
1 parent 3a842e5 commit ae844c3

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

ec/src/pairing.rs

+16-7
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,16 @@ pub trait Pairing: Sized + 'static + Copy + Debug + Sync + Send + Eq {
2929
type ScalarField: PrimeField;
3030

3131
/// An element in G1.
32-
type G1: CurveGroup<ScalarField = Self::ScalarField, Affine = Self::G1Affine>
33-
+ From<Self::G1Affine>
32+
type G1: CurveGroup<
33+
BaseField = Self::BaseField,
34+
ScalarField = Self::ScalarField,
35+
Affine = Self::G1Affine,
36+
> + From<Self::G1Affine>
3437
+ Into<Self::G1Affine>
3538
// needed due to https://github.com/rust-lang/rust/issues/69640
3639
+ MulAssign<Self::ScalarField>;
3740

38-
type G1Affine: AffineRepr<Group = Self::G1, ScalarField = Self::ScalarField>
41+
type G1Affine: AffineRepr<Group = Self::G1, BaseField = Self::BaseField, ScalarField = Self::ScalarField>
3942
+ From<Self::G1>
4043
+ Into<Self::G1>
4144
+ Into<Self::G1Prepared>;
@@ -54,15 +57,21 @@ pub trait Pairing: Sized + 'static + Copy + Debug + Sync + Send + Eq {
5457
+ From<Self::G1Affine>;
5558

5659
/// An element of G2.
57-
type G2: CurveGroup<ScalarField = Self::ScalarField, Affine = Self::G2Affine>
58-
+ From<Self::G2Affine>
60+
type G2: CurveGroup<
61+
ScalarField = Self::ScalarField,
62+
Affine = Self::G2Affine,
63+
BaseField: Field<BasePrimeField = Self::BaseField>,
64+
> + From<Self::G2Affine>
5965
+ Into<Self::G2Affine>
6066
// needed due to https://github.com/rust-lang/rust/issues/69640
6167
+ MulAssign<Self::ScalarField>;
6268

6369
/// The affine representation of an element in G2.
64-
type G2Affine: AffineRepr<Group = Self::G2, ScalarField = Self::ScalarField>
65-
+ From<Self::G2>
70+
type G2Affine: AffineRepr<
71+
Group = Self::G2,
72+
ScalarField = Self::ScalarField,
73+
BaseField: Field<BasePrimeField = Self::BaseField>,
74+
> + From<Self::G2>
6675
+ Into<Self::G2>
6776
+ Into<Self::G2Prepared>;
6877

0 commit comments

Comments
 (0)