Skip to content

Add NonIdentity::mul_by_generator()#1833

Merged
tarcieri merged 3 commits into
RustCrypto:masterfrom
khonsulabs:non-identity-mul-by-generator
Apr 29, 2025
Merged

Add NonIdentity::mul_by_generator()#1833
tarcieri merged 3 commits into
RustCrypto:masterfrom
khonsulabs:non-identity-mul-by-generator

Conversation

@daxpedda

@daxpedda daxpedda commented Apr 24, 2025

Copy link
Copy Markdown
Contributor

This PR adds NonIdentity::mul_by_generator(), which is similar to the MulByGenerator trait, but returns a NonIdentity instead of a ProjectivePoint. This is quite useful for getting the public key from a NonZeroScalar without having to go through the whole conversion dance.

@tarcieri

Copy link
Copy Markdown
Member

FYI: MulByGenerator is gone as the functionality has been moved to Group

Comment thread elliptic-curve/src/point/non_identity.rs Outdated
@daxpedda daxpedda requested a review from tarcieri April 26, 2025 07:34
Comment thread elliptic-curve/src/point/non_identity.rs Outdated
@daxpedda daxpedda force-pushed the non-identity-mul-by-generator branch from a39fc3a to 17a41e6 Compare April 29, 2025 07:45
@daxpedda daxpedda force-pushed the non-identity-mul-by-generator branch from 17a41e6 to 1f59f37 Compare April 29, 2025 07:46
@daxpedda daxpedda force-pushed the non-identity-mul-by-generator branch from 1f59f37 to 2d5cfc0 Compare April 29, 2025 07:48
@tarcieri tarcieri merged commit f44963a into RustCrypto:master Apr 29, 2025
daxpedda added a commit to khonsulabs/traits that referenced this pull request May 15, 2025
This PR adds `NonIdentity::mul_by_generator()`, which is similar to the
`MulByGenerator` trait, but returns a `NonIdentity` instead of a
`ProjectivePoint`. This is quite useful for getting the public key from
a `NonZeroScalar` without having to go through the whole conversion
dance.
@tarcieri tarcieri mentioned this pull request Jun 23, 2026
tarcieri added a commit that referenced this pull request Jun 23, 2026
## 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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants