Skip to content

Commit 4b90da6

Browse files
authored
Implement From<NonIdentity> for Projective/AffinePoint (#1190)
1 parent a440202 commit 4b90da6

File tree

4 files changed

+34
-4
lines changed

4 files changed

+34
-4
lines changed

k256/src/arithmetic/affine.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use core::ops::{Mul, Neg};
88
use elliptic_curve::{
99
Error, Result,
1010
group::{GroupEncoding, prime::PrimeCurveAffine},
11-
point::{AffineCoordinates, DecompactPoint, DecompressPoint},
11+
point::{AffineCoordinates, DecompactPoint, DecompressPoint, NonIdentity},
1212
sec1::{self, FromEncodedPoint, ToEncodedPoint},
1313
subtle::{Choice, ConditionallySelectable, ConstantTimeEq, CtOption},
1414
zeroize::DefaultIsZeroes,
@@ -311,6 +311,12 @@ impl From<&AffinePoint> for EncodedPoint {
311311
}
312312
}
313313

314+
impl From<NonIdentity<AffinePoint>> for AffinePoint {
315+
fn from(affine_point: NonIdentity<AffinePoint>) -> Self {
316+
affine_point.to_point()
317+
}
318+
}
319+
314320
impl From<PublicKey> for AffinePoint {
315321
fn from(public_key: PublicKey) -> AffinePoint {
316322
*public_key.as_affine()

k256/src/arithmetic/projective.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ use core::{
88
iter::Sum,
99
ops::{Add, AddAssign, Neg, Sub, SubAssign},
1010
};
11-
use elliptic_curve::ops::BatchInvert;
1211
use elliptic_curve::{
1312
BatchNormalize, Error, Result,
1413
group::{
@@ -21,6 +20,7 @@ use elliptic_curve::{
2120
subtle::{Choice, ConditionallySelectable, ConstantTimeEq, CtOption},
2221
zeroize::DefaultIsZeroes,
2322
};
23+
use elliptic_curve::{ops::BatchInvert, point::NonIdentity};
2424

2525
#[cfg(feature = "alloc")]
2626
use alloc::vec::Vec;
@@ -318,6 +318,12 @@ impl From<&AffinePoint> for ProjectivePoint {
318318
}
319319
}
320320

321+
impl From<NonIdentity<ProjectivePoint>> for ProjectivePoint {
322+
fn from(p: NonIdentity<ProjectivePoint>) -> Self {
323+
p.to_point()
324+
}
325+
}
326+
321327
impl From<ProjectivePoint> for AffinePoint {
322328
fn from(p: ProjectivePoint) -> AffinePoint {
323329
p.to_affine()

primeorder/src/affine.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use elliptic_curve::{
1212
array::ArraySize,
1313
ff::{Field, PrimeField},
1414
group::{GroupEncoding, prime::PrimeCurveAffine},
15-
point::{AffineCoordinates, DecompactPoint, DecompressPoint, Double},
15+
point::{AffineCoordinates, DecompactPoint, DecompressPoint, Double, NonIdentity},
1616
sec1::{
1717
self, CompressedPoint, EncodedPoint, FromEncodedPoint, ModulusSize, ToCompactEncodedPoint,
1818
ToEncodedPoint, UncompressedPointSize,
@@ -194,6 +194,15 @@ where
194194
}
195195
}
196196

197+
impl<C> From<NonIdentity<AffinePoint<C>>> for AffinePoint<C>
198+
where
199+
C: PrimeCurveParams,
200+
{
201+
fn from(affine: NonIdentity<AffinePoint<C>>) -> Self {
202+
affine.to_point()
203+
}
204+
}
205+
197206
impl<C> From<ProjectivePoint<C>> for AffinePoint<C>
198207
where
199208
C: PrimeCurveParams,

primeorder/src/projective.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use elliptic_curve::{
1818
prime::{PrimeCurve, PrimeGroup},
1919
},
2020
ops::{BatchInvert, LinearCombination},
21-
point::Double,
21+
point::{Double, NonIdentity},
2222
rand_core::TryRngCore,
2323
sec1::{
2424
CompressedPoint, EncodedPoint, FromEncodedPoint, ModulusSize, ToEncodedPoint,
@@ -238,6 +238,15 @@ where
238238
}
239239
}
240240

241+
impl<C> From<NonIdentity<ProjectivePoint<C>>> for ProjectivePoint<C>
242+
where
243+
C: PrimeCurveParams,
244+
{
245+
fn from(p: NonIdentity<ProjectivePoint<C>>) -> Self {
246+
p.to_point()
247+
}
248+
}
249+
241250
impl<C> From<PublicKey<C>> for ProjectivePoint<C>
242251
where
243252
C: PrimeCurveParams,

0 commit comments

Comments
 (0)