elliptic-curve
General purpose Elliptic Curve Cryptography (ECC) support, including traits and generic types for representing various elliptic curve forms, scalars, points, and public/secret keys composed thereof.
0.14.1
210M downloads/mo
#486 most downloaded on crates.io
RustCrypto/traits
What this package is like to depend on
Last release 1 months ago
29 Jun 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 36 of 36 stable releases
33 versions withdrawn
withdrawn after publishing
7 years old
126 releases · first in 2019
26 releases in the last 12 months
see the full history below
Release timeline
126 releases · Dec 2019 to Jun 2026Releases
latest 60 of 126-
0.14.129 Jun 2026 -
0.14.023 Jun 2026Release notes
Open source →Added
- Implement
PartialEq + EqforNonIdentityandNonZeroScalar(#1834) - Implement
ZeroizeforNonIdentity(#1832) NonIdentity::mul_by_generator()(#1833)- Implement
Mul<&NonZeroScalar>forNonIdentity(#1852) - Implement
Mul<NonIdentity>forNonZeroScalar(#1855) - Expose
AffineCoordinates::y(#1891) - Scalar macros originall from
primeorder(#1894) - Implement
BatchNormalizeforNonIdentity(#1896) - Re-export
group::CurveasCurveGroup(#1902) NonIdentity/NonZeroScalarcasting methods (#1903)AffineCoordinates::from_coordinates(#1996)getrandomfeature (#2085)ctutilstraits toarithmeticbounds (#2166)Retrievebound forC::Scalar(#2169)crypto_common::Generatesupport (#2173, #2208)- Implement
crypto_common::TryKeyInitforSecretKey<C>(#2174) dev::bench_projective!macro (#2177)- Provide
Sec1Point::from/to_sec1_bytes(#2221) - Implement
From<SecretKey<C>>forPublicKey<C>(#2247) SecretKey::diffie_hellman(#2248)LinearCombination::lincomb_vartimemethod (#2286)ops::MulVartimetrait and boundScalar(#2379)ops::MulByGeneratorVartimetrait ([#2381])SecretKey::from_pem(#2387)SecretKey::from_der(#2408)hazmatmodule withFieldArithmetictrait (#2458)Double::double_in_place(#2464)
Changed
- Migrate from
generic-arraytohybrid-array(#1462) - Rename
LinearCombinationExt=>LinearCombination; replacing old
trait (#1501) - Edition changed to 2024 and MSRV bumped to 1.85 (#1759)
- Make
SecretKey::newfallible (#1804) - Replace
ops::Inverttrait withcrypto_bigint::Invert(#1839) - Rename
SecretKey::new=>::from_scalar(#1893) - Replace
Reducetrait withcrypto_bigint::Reduce(#1949) - Bump
serdectdependency to v0.4 (#1978) - Use
crypto_bigint::Oddto representCurve::ORDER(#2006) - Bound
Curve::UintonUnsigned(#2007) - Rename
ScalarPrimitive=>ScalarValue(#2008) - Accept mixed-case hex-encoded strings in
FromStrimpl for
ScalarValue(#2037) - Deprecate
SecretKey::random(#2086) - Move
MockCurvetodev::mock_curve(#2176) - Bump
rand_coreto v0.10 (#2250) - Rename
EncodedPoint=>Sec1Point(#2264) - Bump
crypto-bigintto v0.7 (#2330) - Bump
digestto v0.11 (#2331) - Bump
sec1to v0.8 (#2339) - Bump
hkdfdependency to v0.13 (#2349) - Use
*Vartimeas a suffix in names (#2378) - Bump
pkcs8to v0.11 (#2397) - Bump
ffandgroupto v0.14 (#2430, #2431) - Simplify
BatchInverttrait (#2455) - Replace
FieldBytesEncodingtrait withC::FIELD_ENDIANNESS(#2457) - Move
Doubletoopsmodule (#2465)
Removed
hazmatfeature (#1599)hash2curveandoprfmodules: moved to same-name crates (#1929)- PKCS#8 blanket impls for SEC1 private key traits (#1930)
ShrAssignbound onScalars (#1938)- JWK support: migrated to
jose-jwkcrate (#1963) weierstrassmodule (#2005)bitsfeature (#2417)
Fixed
Release notes
Open source →Added
- Implement
PartialEq + EqforNonIdentityandNonZeroScalar(#1834) - Implement
ZeroizeforNonIdentity(#1832) NonIdentity::mul_by_generator()(#1833)- Implement
Mul<&NonZeroScalar>forNonIdentity(#1852) - Implement
Mul<NonIdentity>forNonZeroScalar(#1855) - Expose
AffineCoordinates::y(#1891) - Scalar macros originally from
primeorder(#1894) - Implement
BatchNormalizeforNonIdentity(#1896) - Re-export
group::CurveasCurveGroup(#1902) NonIdentity/NonZeroScalarcasting methods (#1903)AffineCoordinates::from_coordinates(#1996)getrandomfeature (#2085)ctutilstraits toarithmeticbounds (#2166)Retrievebound forC::Scalar(#2169)crypto_common::Generatesupport (#2173, #2208)- Implement
crypto_common::TryKeyInitforSecretKey<C>(#2174) dev::bench_projective!macro (#2177)- Provide
Sec1Point::from/to_sec1_bytes(#2221) - Implement
From<SecretKey<C>>forPublicKey<C>(#2247) SecretKey::diffie_hellman(#2248)LinearCombination::lincomb_vartimemethod (#2286)ops::MulVartimetrait and boundScalar(#2379)ops::MulByGeneratorVartimetrait (#2381)SecretKey::from_pem(#2387)SecretKey::from_der(#2408)hazmatmodule withFieldArithmetictrait (#2458)Double::double_in_place(#2464)
Changed
- Migrate from
generic-arraytohybrid-array(#1462) - Rename
LinearCombinationExt=>LinearCombination; replacing old trait (#1501) - Edition changed to 2024 and MSRV bumped to 1.85 (#1759)
- Make
SecretKey::newfallible (#1804) - Replace
ops::Inverttrait withcrypto_bigint::Invert(#1839) - Rename
SecretKey::new=>::from_scalar(#1893) - Replace
Reducetrait withcrypto_bigint::Reduce(#1949) - Bump
serdectdependency to v0.4 (#1978) - Use
crypto_bigint::Oddto representCurve::ORDER(#2006) - Bound
Curve::UintonUnsigned(#2007) - Rename
ScalarPrimitive=>ScalarValue(#2008) - Accept mixed-case hex-encoded strings in
FromStrimpl forScalarValue(#2037) - Deprecate
SecretKey::random(#2086) - Move
MockCurvetodev::mock_curve(#2176) - Bump
rand_coreto v0.10 (#2250) - Rename
EncodedPoint=>Sec1Point(#2264) - Bump
crypto-bigintto v0.7 (#2330) - Bump
digestto v0.11 (#2331) - Bump
sec1to v0.8 (#2339) - Bump
hkdfdependency to v0.13 (#2349) - Use
*Vartimeas a suffix in names (#2378) - Bump
pkcs8to v0.11 (#2397) - Bump
ffandgroupto v0.14 (#2430, #2431) - Simplify
BatchInverttrait (#2455) - Replace
FieldBytesEncodingtrait withC::FIELD_ENDIANNESSconstant (#2457) - Move
Doubletoops(#2465)
Removed
hazmatfeature (#1599)hash2curveandoprfmodules: these are now their own crates (#1929)- PKCS#8 blanket impls for SEC1 private key traits (#1930)
ShrAssignbound onScalars (#1938)- JWK support - migrated to
jose-jwkcrate (#1963) weierstrassmodule (#2005)bitsfeature (#2417)
Fixed
- Implement
-
0.14.0-rc.3622 Jun 2026 pre-releaseRelease notes
Open source →May it be the one that is truly a "release candidate", after thirty some
other failed attempts -
0.14.0-rc.3517 Jun 2026 pre-releaseRelease notes
Open source →This removes the
basepoint-tableandwnaffeatures, shrinking the
API surface, and ideally getting us to a true release candidate (I'd
hope so after 35 "release candidates"!) -
0.14.0-rc.3410 Jun 2026 pre-release -
0.14.0-rc.3304 Jun 2026 pre-release -
0.14.0-rc.3228 Apr 2026 pre-releaseNothing published for this version
-
0.14.0-rc.3115 Apr 2026 pre-releaseNothing published for this version
-
0.14.0-rc.3008 Apr 2026 pre-releaseNothing published for this version
-
0.14.0-rc.2910 Mar 2026 pre-releaseNothing published for this version
-
0.14.0-rc.2802 Feb 2026 pre-releaseNothing published for this version
-
0.14.0-rc.2702 Feb 2026 pre-releaseNothing published for this version
-
0.14.0-rc.2601 Feb 2026 pre-releaseNothing published for this version
-
0.14.0-rc.2531 Jan 2026 pre-releaseNothing published for this version
-
0.14.0-rc.2424 Jan 2026 pre-releaseNothing published for this version
-
0.14.0-rc.2320 Jan 2026 pre-releaseNothing published for this version
-
0.14.0-rc.2220 Jan 2026 pre-releaseNothing published for this version
-
0.14.0-rc.2108 Jan 2026 pre-releaseNothing published for this version
-
0.14.0-rc.2005 Jan 2026 pre-releaseNothing published for this version
-
0.14.0-rc.1904 Jan 2026 pre-releaseNothing published for this version
-
0.14.0-rc.1829 Dec 2025 pre-releaseNothing published for this version
-
0.14.0-rc.1722 Nov 2025 pre-releaseNothing published for this version
-
0.14.0-rc.1620 Oct 2025 pre-releaseNothing published for this version
-
0.14.0-rc.1529 Sep 2025 pre-releaseNothing published for this version
-
0.14.0-rc.1413 Sep 2025 pre-releaseNothing published for this version
-
0.14.0-rc.1303 Sep 2025 pre-releaseNothing published for this version
-
0.14.0-rc.1206 Aug 2025 pre-releaseNothing published for this version
-
0.14.0-rc.1105 Aug 2025 pre-releaseNothing published for this version
-
0.14.0-rc.1010 Jul 2025 pre-releaseNothing published for this version
-
0.14.0-rc.910 Jul 2025 pre-releaseNothing published for this version
-
0.14.0-rc.803 Jul 2025 pre-releaseNothing published for this version
-
0.14.0-rc.716 Jun 2025 pre-releaseNothing published for this version
-
0.14.0-rc.614 Jun 2025 pre-releaseNothing published for this version
-
0.14.0-rc.507 Jun 2025 pre-releaseNothing published for this version
-
0.14.0-rc.405 Jun 2025 pre-releaseNothing published for this version
-
0.14.0-rc.331 May 2025 pre-releaseNothing published for this version
-
0.14.0-rc.229 May 2025 pre-releaseNothing published for this version
-
0.14.0-rc.120 Sep 2024 pre-releaseNothing published for this version
-
0.14.0-rc.006 Sep 2024 pre-releaseNothing published for this version
-
0.14.0-pre.626 Jul 2024 pre-releaseNothing published for this version
-
0.14.0-pre.502 Feb 2024 pre-releaseNothing published for this version
-
0.14.0-pre.401 Feb 2024 pre-releaseNothing published for this version
-
0.14.0-pre.317 Jan 2024 pre-releaseNothing published for this version
-
0.14.0-pre.211 Jan 2024 pre-releaseNothing published for this version
-
0.14.0-pre.110 Jan 2024 pre-releaseNothing published for this version
-
0.14.0-pre.009 Jan 2024 pre-releaseNothing published for this version
-
0.13.819 Nov 2023 -
0.13.715 Nov 2023Release notes
Open source → -
0.13.602 Oct 2023 -
0.13.519 May 2023 withdrawnRelease notes
Open source →Changed
- Faster
PublicKey::from_encoded_point(#1310)
Fixed
alloc+arithmeticfeatures w/osec1feature (#1301)
- Faster
-
0.13.409 Apr 2023 withdrawn -
0.13.305 Apr 2023 withdrawnRelease notes
Open source →Added
- Impl
AssociatedAlgorithmIdentifierforSecretKeyandPublicKey(#1286)
Changed
Fixed
FieldBytesEncodingprovided impl (#1287)
- Impl
-
0.13.208 Mar 2023 withdrawnRelease notes
Open source → -
0.13.101 Mar 2023 withdrawn -
0.13.001 Mar 2023 withdrawnRelease notes
Open source →Added
PublicKey::to_sec1_bytes(#1102)- Forward
stdfeature tosec1dependency (#1131) NonIdentitywrapper type (#1176)- Impl
serdetraits forNonZeroScalar(#1178) MulByGeneratortrait (#1198)NonZeroScalar::invert_vartime(#1207)BlindedScalartype (#1208)point::Doubletrait (#1218)FieldBytesEncodingtrait (#1235)Invert::invert_vartime(#1239)
Changed
- Allow bigger
c1constant inOsswuMapParams(#1024) - Rename
Curve::UInt=>Curve::Uint(#1191) - Use weak feature activation (#1192, #1194)
- Consolidate
CurveArithmetictrait (#1196) - Rename
SecretKey::to_pem=>::to_sec1_pem(#1202) - Rename
ScalarCoretoScalarPrimitive(#1203) - Use
CryptoRngCoretrait (#1206) - Refactor field element decoding/encoding (#1220)
- Update VOPRF identifier type (#1175)
- Rename
SecretKey::as_scalar_core=>::as_scalar_primitive(#1228) - Rename
Reduce::from_bytes_reduced=>::reduce_bytes(#1225, #1229) - Consolidate
AffineCoordinatestrait (#1237) - Allow multiple
dsts in thehash2curveAPI (#1238) - Have
serdefeature activatepkcs8(#1245) - Dependency upgrades:
Removed
-
0.13.0-rc.028 Feb 2023 pre-releaseNothing published for this version
-
0.13.0-pre.503 Feb 2023 pre-releaseNothing published for this version
-
0.13.0-pre.403 Feb 2023 pre-releaseNothing published for this version
-
0.13.0-pre.301 Feb 2023 pre-releaseNothing published for this version
-
0.13.0-pre.231 Jan 2023 pre-releaseNothing published for this version