Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.11.12 (2022-01-30)

Changed

  • Disable bits feature on docs.rs due to nightly breakage

0.11.11 (2022-01-30)

  • No changes; triggering a docs.rs rebuild

0.11.10 (2022-01-27)

Changed

  • Revert #884 to support a wider range of zeroize versions.

0.11.9 (2022-01-17)

Changed

  • Activate bits, hash2curve, and voprf features on docs.rs (#891)

0.11.8 (2022-01-15)

Added

  • Impl ZeroizeOnDrop on appropriate items (#884)

Changed

  • Use the base16ct crate for hex serialization (#886, #887, #888)

0.11.7 (2022-01-14)

Added

  • Initial hash-to-field support (#854, #855, #871, #874)
  • Initial hash-to-curve support (#865, #876)
  • Impl Mul for NonZeroScalar * NonZeroScalar (#857, #862)
  • Reduce::from_*e_digest_reduced (#869)
  • VoprfParameters trait (#878)

0.11.6 (2021-12-20)

Added

  • Type conversions chart (#852)

0.11.5 (2021-12-05)

Changed

  • Revised LinearCombination trait (#835)

0.11.4 (2021-12-04) [YANKED]

Added

  • LinearCombination trait (#832)

0.11.3 (2021-12-03) [YANKED]

Added

  • ReduceNonZero trait (#827)

0.11.2 (2021-12-03) [YANKED]

Changed

  • Bump pem-rfc7468 dependency to v0.3 (#825)

0.11.1 (2021-11-21) [YANKED]

Added

  • NonZeroScalar::from_uint (#822)

0.11.0 (2021-11-19) [YANKED]

Added

  • ScalarCore<C> type (#732)
  • PrimeCurveArithmetic trait (#739)
  • SEC1 private key support (#762)
  • Reduce trait (#768)
  • Re-export 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)

Changed

  • Bump ff + group to v0.11 (#730)
  • Make SecretKey::to_jwk_string self-zeroizing (#742)
  • Use sec1 crate's EncodedPoint (#771)
  • Make FromEncodedPoint return a CtOption (#782)
  • Rust 2021 edition upgrade; MSRV to 1.56 (#795)
  • Bump crypto-bigint dependency to v0.3 (#807)
  • Use sec1 crate for pkcs8 support (#809)
  • Bump spki dependency to v0.5 release (#810)
  • NonZeroScalar is now bounded on ScalarArithmetic instead of ProjectiveArithmetic (#812)

Fixed

  • Zeroize impl on NonZeroScalar (#785)

0.10.6 (2021-08-23)

Changed

  • Bump crypto-bigint dependency to v0.2.4 (#710)

0.10.5 (2021-07-20)

Changed

  • Pin zeroize dependency to v1.4 and subtle to v2.4 (#689)

0.10.4 (2021-07-12)

Added

  • Re-export rand_core (#683)

0.10.3 (2021-06-21)

Changed

  • Bump crypto-bigint to v0.2.1 (#673)

0.10.2 (2021-06-14) [YANKED]

Added

  • ConstantTimeEq impl for NonZeroScalar (#669)

0.10.1 (2021-06-09) [YANKED]

Added

  • Explicit Copy bounds on PublicKey (#667)

0.10.0 (2021-06-07) [YANKED]

Added

  • ScalarBytes::from_uint (#651)
  • dev::ScalarBytes (#652)
  • ScalarArithmetic trait (#654)
  • AffineArithmetic trait (#658)
  • PointCompaction trait and SEC1 tag support (#659)

Changed

  • Bump ff and group to v0.10; MSRV 1.51+ (#643)
  • Merge Curve and Order traits (#644)
  • Use crypto-bigint to represent Curve::ORDER (#645)
  • Source FieldSize<C> from C::UInt type (#646)
  • Impl ScalarBytes<C> using C::UInt (#647)
  • Make ScalarBytes<C> the SecretKey<C> internal repr (#649)
  • Bump crypto-bigint to v0.2 (#662)
  • Bump pkcs8 to v0.7 (#662)

Removed

0.9.12 (2021-05-18)

Added

  • Ord and PartialOrd impls on PublicKey (#637)

0.9.11 (2021-04-21)

Added

  • Impl subtle traits on ScalarBytes<C> (#612)

Fixed

  • Always re-export ScalarBytes (#613)

0.9.10 (2021-04-21)

Added

  • ScalarBytes type (#610)

0.9.9 (2021-04-21) [YANKED]

Added

  • Order::is_scalar_repr_in_range (#608)

0.9.8 (2021-04-21)

Added

  • Define Order for MockCurve (#606)

0.9.7 (2021-04-21)

Added

Fixed

  • Warnings from pkcs8 imports (#604)

0.9.6 (2021-03-22)

Changed

  • Bump pkcs8 dependency to v0.6 (#585)

0.9.5 (2021-03-17) [YANKED]

Added

  • Implement {to,char}_le_bits for MockCurve (#565)
  • Implement one() for mock Scalar (#566)

Changed

  • Use string-based OID constants (#561)
  • Bump base64ct dependency to v1.0 (#581)

0.9.4 (2021-02-18) [YANKED]

Fixed

  • Breakage related to the pkcs8 v0.5.1 crate (#556)

0.9.3 (2021-02-16) [YANKED]

Changed

  • Bump pkcs8 dependency to v0.5.0 (#549)

Fixed

  • Workaround for bitvecto-rs/bitvec#105 (#550)

0.9.2 (2021-02-12) [YANKED]

Changed

  • Flatten weierstrass module (#542)

0.9.1 (2021-02-11) [YANKED]

Removed

  • BitView re-export (#540)

0.9.0 (2021-02-10) [YANKED]

Added

  • JWK support (#483)
  • sec1::ValidatePublicKey trait (#485)
  • hazmat crate feature (#487)
  • Result alias (#534)

Changed

  • Bump ff and group crates to v0.9 (#452)
  • Simplify ECDH trait bounds (#475)
  • Flatten API (#487)
  • Bump pkcs8 crate dependency to v0.4 (#493)

Removed

  • Direct bitvec dependency (#484)
  • FromDigest trait (#532)

0.8.5 (2021-02-17)

Fixed

  • Workaround for bitvecto-rs/bitvec#105 (#553)

0.8.4 (2020-12-23)

Fixed

  • Rust nightly regression (#432)

0.8.3 (2020-12-22)

Fixed

  • Regression in combination of pem+zeroize features (#429)

0.8.2 (2020-12-22) [YANKED]

Added

  • Low-level ECDH API (#418)
  • dev module (#419)
  • Impl pkcs8::ToPrivateKey for SecretKey<C> (#423)
  • Impl pkcs8::ToPublicKey for PublicKey<C> (#427)

Changed

  • Bump subtle dependency to 2.4.0 (#414)
  • Bump pkcs8 dependency to v0.3.3 (#425)
  • Use der crate to parse SecretKey (#422)

Fixed

  • Make PublicKey::from_encoded_point go through PublicKey::from_affine (#416)

0.8.1 (2020-12-16) [YANKED]

Fixed

  • Builds on Rust nightly compiler (#412)

0.8.0 (2020-12-16) [YANKED]

Added

  • Impl subtle::ConditionallySelectable for sec1::EncodedPoint (#409)
  • sec1::EncodedPoint::identity() method (#408)
  • sec1::Coordinates::tag method (#407)
  • Support for SEC1 identity encoding (#401)

Changed

  • Bump pkcs8 crate dependency to v0.3 (#405)
  • Ensure PublicKey<C> is not the identity point (#404)
  • Have SecretKey::secret_scalar return NonZeroScalar (#402)

Removed

  • SecretKey::secret_value (#403)

0.7.1 (2020-12-07)

Changed

  • Have SecretKey::secret_value always return NonZeroScalar (#390)

0.7.0 (2020-12-06) [YANKED]

Added

  • Impl pkcs8::FromPublicKey for PublicKey<C> (#385)
  • Impl pkcs8::FromPrivateKey trait for SecretKey<C> (#381, #383)
  • PKCS#8 PEM support (#382)
  • SecretKey::secret_value() method (#375)
  • PublicKey<C> type (#363, #366)

Changed

  • Rename PublicKey::from_bytes() to ::from_sec1_bytes() (#376)
  • sec1::EncodedPoint uses Option instead of subtle::CtOption (#367)
  • Bump const-oid to v0.3; MSRV 1.46+ (#365, #381)

Fixed

0.6.6 (2020-10-08)

Added

  • Derive Clone on SecretBytes ([#330])

0.6.5 (2020-10-08)

Fixed

  • Work around nightly-2020-10-06 breakage (#328)

0.6.4 (2020-10-08)

Added

  • Impl From<SecretBytes<C>> for FieldBytes<C> (#326)

0.6.3 (2020-10-08)

Added

  • SecretBytes newtype (#324)

0.6.2 (2020-09-24)

Added

  • sec1::EncodedPoint::to_untagged_bytes() method (#312)

0.6.1 (2020-09-21)

Fixed

  • sec1::EncodedPoint::decompress (#309)

0.6.0 (2020-09-11) [YANKED]

Added

  • arithmetic feature (#293)
  • Generic curve/field arithmetic using the ff and group crates (#287, #291, #292)
  • sec1::Coordinates (#286)
  • weierstrass::point::Compression trait (#283, #300)
  • Arithmetic helper functions (#281)
  • digest feature and FromDigest trait (#279)
  • impl Deref for NonZeroScalar (#278)
  • Conditionally impl 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)

Changed

  • Renamed Arithmetic trait to point::ProjectiveArithmetic (#300)
  • Replaced Arithmetic::Scalar and Arithmetic::AffinePoint with Scalar<C> and AffinePoint<C> (#300)
  • Made SecretKey<C> inner type generic (#297)
  • Renamed ElementBytes<C> to FieldBytes<C> (#296)
  • MSRV 1.44 (#292)
  • Minimum subtle version now v2.3 (#290)
  • Renamed Curve::ElementSize to ::FieldSize (#282)
  • Refactor PublicKey into sec1::EncodedPoint (#264)

Removed

  • FromBytes trait (#300)
  • Generate trait (#295)

0.5.0 (2020-08-10)

Added

  • Arithmetic trait (#219)
  • Generate trait (#220, #226)
  • Toplevel Curve trait (#223)
  • Invert trait (#228)
  • FromPublicKey trait (#229, #248)
  • Re-export zeroize (#233)
  • OID support (#240, #245)
  • NonZeroScalar type (#241)
  • Generator trait (#241)
  • weierstrass::PublicKey::compress method (#243)
  • Derive Clone on SecretKey (#244)
  • Generic Elliptic Curve Diffie-Hellman support (#251)

Changed

0.4.0 (2020-06-04)

Changed

  • Bump generic-array dependency from v0.12 to v0.14

0.3.0 (2020-01-15)

Added

  • Scalar struct type

Changed

Removed

  • Curve definitions/arithmetic extracted out into per-curve crates

0.2.0 (2019-12-11)

Added

  • secp256r1 (P-256) point compression and decompression

Changed

  • Bump MSRV to 1.37

0.1.0 (2019-12-06)

  • Initial release