Implement BatchNormalize for NonIdentity#1896
Conversation
1c8e9df to
e2c3a8f
Compare
|
I completely removed any usage of One notably change: instead of |
225884b to
e3e5f8f
Compare
e3e5f8f to
0a351c7
Compare
21d93b8 to
ced7993
Compare
ced7993 to
6edc705
Compare
|
@daxpedda can you also add It would also be good to find a way to exercise this code with tests somewhere in this repo, possibly leveraging |
tarcieri
left a comment
There was a problem hiding this comment.
Looks good now. I can handle the CI changes as a followup.
Already on it. Trying to add a test right now. |
|
|
||
| #[allow(unsafe_code)] | ||
| // SAFETY: `NonIdentity` is `repr(transparent)`. | ||
| let points: &[P; N] = unsafe { &*points.as_ptr().cast() }; |
There was a problem hiding this comment.
Curious if you could extract an AsRef impl here, but perhaps I can experiment with that myself
There was a problem hiding this comment.
Apparently not, because array is a foreign type. Same applies to slices.
I guess we could add it as a method?
* Update to changes in `BatchNormalize` (RustCrypto/traits#1896) * Update to hash2curve changes (RustCrypto/traits#1901)
## Added - Implement `PartialEq + Eq` for `NonIdentity` and `NonZeroScalar` (#1834) - Implement `Zeroize` for `NonIdentity` (#1832) - `NonIdentity::mul_by_generator()` (#1833) - Implement `Mul<&NonZeroScalar>` for `NonIdentity` (#1852) - Implement `Mul<NonIdentity>` for `NonZeroScalar` (#1855) - Expose `AffineCoordinates::y` (#1891) - Scalar macros originall from `primeorder` (#1894) - Implement `BatchNormalize` for `NonIdentity` (#1896) - Re-export `group::Curve` as `CurveGroup` (#1902) - `NonIdentity`/`NonZeroScalar` casting methods (#1903) - `AffineCoordinates::from_coordinates` (#1996) - `getrandom` feature (#2085) - `ctutils` traits to `arithmetic` bounds (#2166) - `Retrieve` bound for `C::Scalar` (#2169) - `crypto_common::Generate` support (#2173, #2208) - Implement `crypto_common::TryKeyInit` for `SecretKey<C>` (#2174) - `dev::bench_projective!` macro (#2177) - Provide `Sec1Point::from/to_sec1_bytes` (#2221) - Implement `From<SecretKey<C>>` for `PublicKey<C>` (#2247) - `SecretKey::diffie_hellman` (#2248) - `LinearCombination::lincomb_vartime` method (#2286) - `ops::MulVartime` trait and bound `Scalar` (#2379) - `ops::MulByGeneratorVartime` trait ([#2381]) - `SecretKey::from_pem` (#2387) - `SecretKey::from_der` (#2408) - `hazmat` module with `FieldArithmetic` trait (#2458) - `Double::double_in_place` (#2464) ## Changed - Migrate from `generic-array` to `hybrid-array` (#1462) - Rename `LinearCombinationExt` => `LinearCombination`; replacing old trait (#1501) - Edition changed to 2024 and MSRV bumped to 1.85 (#1759) - Make `SecretKey::new` fallible (#1804) - Replace `ops::Invert` trait with `crypto_bigint::Invert` (#1839) - Rename `SecretKey::new` => `::from_scalar` (#1893) - Replace `Reduce` trait with `crypto_bigint::Reduce` (#1949) - Bump `serdect` dependency to v0.4 (#1978) - Use `crypto_bigint::Odd` to represent `Curve::ORDER` (#2006) - Bound `Curve::Uint` on `Unsigned` (#2007) - Rename `ScalarPrimitive` => `ScalarValue` (#2008) - Accept mixed-case hex-encoded strings in `FromStr` impl for `ScalarValue` (#2037) - Deprecate `SecretKey::random` (#2086) - Move `MockCurve` to `dev::mock_curve` (#2176) - Bump `rand_core` to v0.10 (#2250) - Rename `EncodedPoint` => `Sec1Point` (#2264) - Bump `crypto-bigint` to v0.7 (#2330) - Bump `digest` to v0.11 (#2331) - Bump `sec1` to v0.8 (#2339) - Bump `hkdf` dependency to v0.13 (#2349) - Use `*Vartime` as a suffix in names (#2378) - Bump `pkcs8` to v0.11 (#2397) - Bump `ff` and `group` to v0.14 (#2430, #2431) - Simplify `BatchInvert` trait (#2455) - Replace `FieldBytesEncoding` trait with `C::FIELD_ENDIANNESS` (#2457) - Move `Double` to `ops` module (#2465) ## Removed - `hazmat` feature (#1599) - `hash2curve` and `oprf` modules: moved to same-name crates (#1929) - PKCS#8 blanket impls for SEC1 private key traits (#1930) - `ShrAssign` bound on `Scalar`s (#1938) - JWK support: migrated to `jose-jwk` crate (#1963) - `weierstrass` module (#2005) - `bits` feature (#2417) ## Fixed - Include curve OID in SEC1 private keys (#1707, #1933)
As discussed in #1889. I will add some tests in
elliptic-curvesas well.Resolves #1889.
Companion PR: RustCrypto/elliptic-curves#1248.