@@ -6,7 +6,7 @@ use core::ops::{Add, AddAssign, Mul, MulAssign, Neg, Sub, SubAssign};
6
6
use elliptic_curve:: CurveGroup ;
7
7
use elliptic_curve:: bigint:: U448 ;
8
8
9
- use super :: { MontgomeryPoint , MontgomeryScalar , MontgomeryXpoint , ProjectiveMontgomeryPoint } ;
9
+ use super :: { AffineMontgomeryPoint , MontgomeryScalar , MontgomeryXpoint , ProjectiveMontgomeryPoint } ;
10
10
11
11
impl Add < & ProjectiveMontgomeryPoint > for & ProjectiveMontgomeryPoint {
12
12
type Output = ProjectiveMontgomeryPoint ;
@@ -52,12 +52,12 @@ define_add_variants!(
52
52
Output = ProjectiveMontgomeryPoint
53
53
) ;
54
54
55
- impl Add < & MontgomeryPoint > for & ProjectiveMontgomeryPoint {
55
+ impl Add < & AffineMontgomeryPoint > for & ProjectiveMontgomeryPoint {
56
56
type Output = ProjectiveMontgomeryPoint ;
57
57
58
58
// See Complete Addition Law for Montgomery Curves - Algorithm 2.
59
59
// With "Trade-Off Technique".
60
- fn add ( self , rhs : & MontgomeryPoint ) -> ProjectiveMontgomeryPoint {
60
+ fn add ( self , rhs : & AffineMontgomeryPoint ) -> ProjectiveMontgomeryPoint {
61
61
let ( x1, y1, z1) = ( self . U , self . V , self . W ) ;
62
62
let ( x2, y2) = ( rhs. U , rhs. V ) ;
63
63
@@ -92,11 +92,11 @@ impl Add<&MontgomeryPoint> for &ProjectiveMontgomeryPoint {
92
92
93
93
define_add_variants ! (
94
94
LHS = ProjectiveMontgomeryPoint ,
95
- RHS = MontgomeryPoint ,
95
+ RHS = AffineMontgomeryPoint ,
96
96
Output = ProjectiveMontgomeryPoint
97
97
) ;
98
98
99
- impl Add < & ProjectiveMontgomeryPoint > for & MontgomeryPoint {
99
+ impl Add < & ProjectiveMontgomeryPoint > for & AffineMontgomeryPoint {
100
100
type Output = ProjectiveMontgomeryPoint ;
101
101
102
102
fn add ( self , other : & ProjectiveMontgomeryPoint ) -> ProjectiveMontgomeryPoint {
@@ -105,7 +105,7 @@ impl Add<&ProjectiveMontgomeryPoint> for &MontgomeryPoint {
105
105
}
106
106
107
107
define_add_variants ! (
108
- LHS = MontgomeryPoint ,
108
+ LHS = AffineMontgomeryPoint ,
109
109
RHS = ProjectiveMontgomeryPoint ,
110
110
Output = ProjectiveMontgomeryPoint
111
111
) ;
@@ -121,21 +121,21 @@ define_add_assign_variants!(
121
121
RHS = ProjectiveMontgomeryPoint
122
122
) ;
123
123
124
- impl AddAssign < & MontgomeryPoint > for ProjectiveMontgomeryPoint {
125
- fn add_assign ( & mut self , rhs : & MontgomeryPoint ) {
124
+ impl AddAssign < & AffineMontgomeryPoint > for ProjectiveMontgomeryPoint {
125
+ fn add_assign ( & mut self , rhs : & AffineMontgomeryPoint ) {
126
126
* self += Self :: from ( * rhs) ;
127
127
}
128
128
}
129
129
130
- define_add_assign_variants ! ( LHS = ProjectiveMontgomeryPoint , RHS = MontgomeryPoint ) ;
130
+ define_add_assign_variants ! ( LHS = ProjectiveMontgomeryPoint , RHS = AffineMontgomeryPoint ) ;
131
131
132
- impl AddAssign < & ProjectiveMontgomeryPoint > for MontgomeryPoint {
132
+ impl AddAssign < & ProjectiveMontgomeryPoint > for AffineMontgomeryPoint {
133
133
fn add_assign ( & mut self , rhs : & ProjectiveMontgomeryPoint ) {
134
134
* self = ( ProjectiveMontgomeryPoint :: from ( * self ) + rhs) . into ( ) ;
135
135
}
136
136
}
137
137
138
- define_add_assign_variants ! ( LHS = MontgomeryPoint , RHS = ProjectiveMontgomeryPoint ) ;
138
+ define_add_assign_variants ! ( LHS = AffineMontgomeryPoint , RHS = ProjectiveMontgomeryPoint ) ;
139
139
140
140
impl Mul < & MontgomeryScalar > for & ProjectiveMontgomeryPoint {
141
141
type Output = ProjectiveMontgomeryPoint ;
@@ -152,15 +152,15 @@ define_mul_variants!(
152
152
Output = ProjectiveMontgomeryPoint
153
153
) ;
154
154
155
- impl Mul < & MontgomeryScalar > for & MontgomeryPoint {
155
+ impl Mul < & MontgomeryScalar > for & AffineMontgomeryPoint {
156
156
type Output = ProjectiveMontgomeryPoint ;
157
157
158
158
// Montgomery curves and their arithmetic - Algorithm 6
159
159
// https://eprint.iacr.org/2017/212.pdf
160
160
fn mul ( self , rhs : & MontgomeryScalar ) -> ProjectiveMontgomeryPoint {
161
161
pub const A2 : FieldElement = FieldElement ( ConstMontyType :: new ( & U448 :: from_u64 ( 312652 ) ) ) ;
162
162
163
- let MontgomeryPoint { U : xP, V : yP } = self ;
163
+ let AffineMontgomeryPoint { U : xP, V : yP } = self ;
164
164
let (
165
165
ProjectiveMontgomeryXpoint { U : xQ, W : zQ } ,
166
166
ProjectiveMontgomeryXpoint { U : xD, W : zD } ,
@@ -191,7 +191,7 @@ impl Mul<&MontgomeryScalar> for &MontgomeryPoint {
191
191
}
192
192
193
193
define_mul_variants ! (
194
- LHS = MontgomeryPoint ,
194
+ LHS = AffineMontgomeryPoint ,
195
195
RHS = MontgomeryScalar ,
196
196
Output = ProjectiveMontgomeryPoint
197
197
) ;
@@ -239,21 +239,21 @@ define_sub_variants!(
239
239
Output = ProjectiveMontgomeryPoint
240
240
) ;
241
241
242
- impl Sub < & MontgomeryPoint > for & ProjectiveMontgomeryPoint {
242
+ impl Sub < & AffineMontgomeryPoint > for & ProjectiveMontgomeryPoint {
243
243
type Output = ProjectiveMontgomeryPoint ;
244
244
245
- fn sub ( self , other : & MontgomeryPoint ) -> ProjectiveMontgomeryPoint {
245
+ fn sub ( self , other : & AffineMontgomeryPoint ) -> ProjectiveMontgomeryPoint {
246
246
* self - ProjectiveMontgomeryPoint :: from ( * other)
247
247
}
248
248
}
249
249
250
250
define_sub_variants ! (
251
251
LHS = ProjectiveMontgomeryPoint ,
252
- RHS = MontgomeryPoint ,
252
+ RHS = AffineMontgomeryPoint ,
253
253
Output = ProjectiveMontgomeryPoint
254
254
) ;
255
255
256
- impl Sub < & ProjectiveMontgomeryPoint > for & MontgomeryPoint {
256
+ impl Sub < & ProjectiveMontgomeryPoint > for & AffineMontgomeryPoint {
257
257
type Output = ProjectiveMontgomeryPoint ;
258
258
259
259
fn sub ( self , other : & ProjectiveMontgomeryPoint ) -> ProjectiveMontgomeryPoint {
@@ -262,7 +262,7 @@ impl Sub<&ProjectiveMontgomeryPoint> for &MontgomeryPoint {
262
262
}
263
263
264
264
define_sub_variants ! (
265
- LHS = MontgomeryPoint ,
265
+ LHS = AffineMontgomeryPoint ,
266
266
RHS = ProjectiveMontgomeryPoint ,
267
267
Output = ProjectiveMontgomeryPoint
268
268
) ;
@@ -278,21 +278,21 @@ define_sub_assign_variants!(
278
278
RHS = ProjectiveMontgomeryPoint
279
279
) ;
280
280
281
- impl SubAssign < & MontgomeryPoint > for ProjectiveMontgomeryPoint {
282
- fn sub_assign ( & mut self , rhs : & MontgomeryPoint ) {
281
+ impl SubAssign < & AffineMontgomeryPoint > for ProjectiveMontgomeryPoint {
282
+ fn sub_assign ( & mut self , rhs : & AffineMontgomeryPoint ) {
283
283
* self -= ProjectiveMontgomeryPoint :: from ( * rhs) ;
284
284
}
285
285
}
286
286
287
- define_sub_assign_variants ! ( LHS = ProjectiveMontgomeryPoint , RHS = MontgomeryPoint ) ;
287
+ define_sub_assign_variants ! ( LHS = ProjectiveMontgomeryPoint , RHS = AffineMontgomeryPoint ) ;
288
288
289
- impl SubAssign < & ProjectiveMontgomeryPoint > for MontgomeryPoint {
289
+ impl SubAssign < & ProjectiveMontgomeryPoint > for AffineMontgomeryPoint {
290
290
fn sub_assign ( & mut self , rhs : & ProjectiveMontgomeryPoint ) {
291
291
* self = ( ProjectiveMontgomeryPoint :: from ( * self ) - rhs) . into ( ) ;
292
292
}
293
293
}
294
294
295
- define_sub_assign_variants ! ( LHS = MontgomeryPoint , RHS = ProjectiveMontgomeryPoint ) ;
295
+ define_sub_assign_variants ! ( LHS = AffineMontgomeryPoint , RHS = ProjectiveMontgomeryPoint ) ;
296
296
297
297
impl < T > Sum < T > for ProjectiveMontgomeryPoint
298
298
where
0 commit comments