NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #478 most downloaded on crates.io
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.
Last release 3 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
Nothing published for this version
Nothing published for this version
Aliases for SEC1 compressed/uncompressed points ([#1067])
One column per quarter.
Bump crypto-bigint to v0.4.8 ([#1039])
crypto-bigint to v0.4.8 (#1039)impl_field_element! macro ([#1021])
ecdh::SharedSecret::extract HKDF helper ([#1007])
ecdh::SharedSecret::extract HKDF helper (#1007)digest dependency to v0.10 (#883, #904)NonZeroScalar::invert infallible (#894)ToCompactEncodedPoint now returns CtOption (#895)hash2field into hash2curve module (#903)ff and group dependencies to v0.12 (#994)serdect crate (#996)AlgorithmParameters with AssociatedOid (#1001)crypto-bigint dependency to v0.4 (#1005)der dependency to v0.6 (#1006)pkcs8 dependency to v0.9 (#1006)sec1 dependency to v0.3 (#1006)pem-rfc7468 dependency to v0.6 (#1009)Zeroize impl from ecdh::SharedSecret (#978)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Disable bits feature on docs.rs due to nightly breakage ([#927])
bits feature on docs.rs due to nightly breakage (#927)No changes; triggering a docs.rs rebuild
Revert [#884] to support a wider range of zeroize versions ([#923])
zeroize versions (#923)Activate bits, hash2curve, and voprf features on docs.rs ([#891])
bits, hash2curve, and voprf features on docs.rs (#891)Impl ZeroizeOnDrop on appropriate items ([#884])
Initial hash-to-field support ([#854], [#855], [#871], [#874])
Type conversions chart ([#852])
Revised LinearCombination trait ([#835])
LinearCombination trait (#835)LinearCombination trait ([#832])
LinearCombination trait (#832)[#827]: https://github.com/RustCrypto/traits/pull/827
ReduceNonZero trait (#827)Bump pem-rfc7468 dependency to v0.3 ([#825])
pem-rfc7468 dependency to v0.3 (#825)NonZeroScalar::from_uint ([#822])
NonZeroScalar::from_uint (#822)PrimeCurveArithmetic trait ([#739])
ScalarCore<C> type (#732)PrimeCurveArithmetic trait (#739)Reduce trait (#768)ff and PrimeField (#796)Encoding bound on Curve::UInt (#806)scalar::IsHigh trait (#814, #815)Neg impl for NonZeroScalar<C> (#816)AffineXCoordinate trait (#817)serde support for scalar and PublicKey types (#818)ff + group to v0.11 (#730)SecretKey::to_jwk_string self-zeroizing (#742)sec1 crate's EncodedPoint (#771)FromEncodedPoint return a CtOption (#782)crypto-bigint dependency to v0.3 (#807)sec1 crate for pkcs8 support (#809)spki dependency to v0.5 release (#810)NonZeroScalar is now bounded on ScalarArithmetic instead of
ProjectiveArithmetic (#812)Zeroize impl on NonZeroScalar (#785)Bump crypto-bigint dependency to v0.2.4 ([#710])
crypto-bigint dependency to v0.2.4 (#710)Pin zeroize dependency to v1.4 and subtle to v2.4 ([#689])
zeroize dependency to v1.4 and subtle to v2.4 (#689)[#683]: https://github.com/RustCrypto/traits/pull/683
rand_core (#683)Bump crypto-bigint to v0.2.1 ([#673])
crypto-bigint to v0.2.1 (#673)ConstantTimeEq impl for NonZeroScalar ([#669])
ConstantTimeEq impl for NonZeroScalar (#669)Explicit Copy bounds on PublicKey ([#667])
Copy bounds on PublicKey (#667)ScalarBytes::from_uint ([#651])
ScalarBytes::from_uint (#651)dev::ScalarBytes (#652)ScalarArithmetic trait (#654)AffineArithmetic trait (#658)PointCompaction trait and SEC1 tag support (#659)ff and group to v0.10; MSRV 1.51+ (#643)Curve and Order traits (#644)crypto-bigint to represent Curve::ORDER (#645)FieldSize<C> from C::UInt type (#646)ScalarBytes<C> using C::UInt (#647)ScalarBytes<C> the SecretKey<C> internal repr (#649)crypto-bigint to v0.2 (#662)pkcs8 to v0.7 (#662)util module (#648)Ord and PartialOrd impls on PublicKey ([#637])
Ord and PartialOrd impls on PublicKey (#637)Impl subtle traits on ScalarBytes ([#612])
[#610]: https://github.com/RustCrypto/traits/pull/610
ScalarBytes type (#610)Order::is_scalar_repr_in_range ([#608])
Order::is_scalar_repr_in_range (#608)Define Order for MockCurve ([#606])
Order for MockCurve (#606)Warnings from pkcs8 imports ([#604])
Bump pkcs8 dependency to v0.6 ([#585])
pkcs8 dependency to v0.6 (#585)Implement {to,char}_le_bits for MockCurve ([#565])
Breakage related to the pkcs8 v0.5.1 crate ([#556])
pkcs8 v0.5.1 crate (#556)Bump pkcs8 dependency to v0.5.0 ([#549])
Flatten weierstrass module ([#542])
weierstrass module (#542)[#540]: https://github.com/RustCrypto/traits/pull/540
BitView re-export (#540)sec1::ValidatePublicKey trait ([#485])
Workaround for bitvecto-rs/bitvec#105 ([#553])
Rust nightly regression ([#432])
nightly regression (#432)Regression in combination of pem+zeroize features ([#429])
pem+zeroize features (#429)Impl pkcs8::ToPrivateKey for SecretKey ([#423])
dev module (#419)pkcs8::ToPrivateKey for SecretKey<C> (#423)pkcs8::ToPublicKey for PublicKey<C> (#427)subtle dependency to 2.4.0 (#414)pkcs8 dependency to v0.3.3 (#425)der crate to parse SecretKey (#422)PublicKey::from_encoded_point go through PublicKey::from_affine (#416)Builds on Rust nightly compiler ([#412])
nightly compiler (#412)Impl subtle::ConditionallySelectable for sec1::EncodedPoint ([#409])
subtle::ConditionallySelectable for sec1::EncodedPoint (#409)sec1::EncodedPoint::identity() method (#408)sec1::Coordinates::tag method (#407)pkcs8 crate dependency to v0.3 (#405)PublicKey<C> is not the identity point (#404)SecretKey::secret_scalar return NonZeroScalar (#402)SecretKey::secret_value (#403)Nothing published for this version
Have SecretKey::secret_value always return NonZeroScalar ([#390])
SecretKey::secret_value always return NonZeroScalar (#390)Impl pkcs8::FromPublicKey for PublicKey ([#385])
pkcs8::FromPublicKey for PublicKey<C> (#385)pkcs8::FromPrivateKey trait for SecretKey<C> (#381, #383)SecretKey::secret_value() method (#375)PublicKey<C> type (#363, #366)PublicKey::from_bytes() to ::from_sec1_bytes() (#376)sec1::EncodedPoint uses Option instead of subtle::CtOption (#367)const-oid to v0.3; MSRV 1.46+ (#365, #381)ecdh rustdoc (#364)Derive Clone on SecretBytes ([#330])
Clone on SecretBytes ([#330])Work around nightly-2020-10-06 breakage ([#328])
nightly-2020-10-06 breakage (#328)Impl From > for FieldBytes ([#326])
From<SecretBytes<C>> for FieldBytes<C> (#326)[#324]: https://github.com/RustCrypto/traits/pull/324
SecretBytes newtype (#324)sec1::EncodedPoint::to_untagged_bytes() method ([#312])
sec1::EncodedPoint::to_untagged_bytes() method (#312)sec1::EncodedPoint::decompress ([#309])
sec1::EncodedPoint::decompress (#309)Generic curve/field arithmetic using the ff and group crates ([#287], [#291], [#292])
arithmetic feature (#293)ff and group crates
(#287, #291, #292)sec1::Coordinates (#286)weierstrass::point::Compression trait (#283, #300)digest feature and FromDigest trait (#279)Deref for NonZeroScalar (#278)Invert for NonZeroScalar (#277)NonZeroScalar::to_bytes (#276)EncodedPoint::decompress (#275)sec1::Tag (#270)weierstrass::point::Decompress trait (#266)alloc feature + EncodedPoint::to_bytes() (#265)Arithmetic trait to point::ProjectiveArithmetic (#300)Arithmetic::Scalar and Arithmetic::AffinePoint
with Scalar<C> and AffinePoint<C> (#300)SecretKey<C> inner type generic (#297)ElementBytes<C> to FieldBytes<C> (#296)subtle version now v2.3 (#290)Curve::ElementSize to ::FieldSize (#282)PublicKey into sec1::EncodedPoint (#264)Your coding agent can read these notes before it upgrades. Set up the MCP server →