# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## 0.13.5 (2023-05-19) ### Changed - Faster `PublicKey::from_encoded_point` ([#1310]) ### Fixed - `alloc`+`arithmetic` features w/o `sec1` feature ([#1301]) [#1301]: https://github.com/RustCrypto/traits/pull/1301 [#1310]: https://github.com/RustCrypto/traits/pull/1310 ## 0.13.4 (2023-04-08) ### Changed - Bump `hex-literal` to v0.4 ([#1295]) ### Fixed - `NonZeroScalar::from_slice` ([#1296]) - `ScalarPrimitive::from_slice` ([#1296]) [#1295]: https://github.com/RustCrypto/traits/pull/1295 [#1296]: https://github.com/RustCrypto/traits/pull/1296 ## 0.13.3 (2023-04-04) ### Added - Impl `AssociatedAlgorithmIdentifier` for `SecretKey` and `PublicKey` ([#1286]) ### Changed - Update OSSWU code ([#1157]) - Bump `pkcs8` to v0.10.2 ([#1291]) ### Fixed - `FieldBytesEncoding` provided impl ([#1287]) [#1157]: https://github.com/RustCrypto/traits/pull/1157 [#1286]: https://github.com/RustCrypto/traits/pull/1286 [#1287]: https://github.com/RustCrypto/traits/pull/1287 [#1291]: https://github.com/RustCrypto/traits/pull/1291 ## 0.13.2 (2023-03-08) ### Added - Weakly activate `pkcs8?/std` ([#1263]) - More `PublicKey` <-> SEC1 conversions ([#1272]) [#1263]: https://github.com/RustCrypto/traits/pull/1263 [#1272]: https://github.com/RustCrypto/traits/pull/1272 ## 0.13.1 (2023-03-01) ### Added - `SecretKey::from_slice` short input support ([#1256]) [#1256]: https://github.com/RustCrypto/traits/pull/1256 ## 0.13.0 (2023-02-28) ### Added - `PublicKey::to_sec1_bytes` ([#1102]) - Forward `std` feature to `sec1` dependency ([#1131]) - `NonIdentity` wrapper type ([#1176]) - Impl `serde` traits for `NonZeroScalar` ([#1178]) - `MulByGenerator` trait ([#1198]) - `NonZeroScalar::invert_vartime` ([#1207]) - `BlindedScalar` type ([#1208]) - `point::Double` trait ([#1218]) - `FieldBytesEncoding` trait ([#1235]) - `Invert::invert_vartime` ([#1239]) ### Changed - Allow bigger `c1` constant in `OsswuMapParams` ([#1024]) - Rename `Curve::UInt` => `Curve::Uint` ([#1191]) - Use weak feature activation ([#1192], [#1194]) - Consolidate `CurveArithmetic` trait ([#1196]) - Rename `SecretKey::to_pem` => `::to_sec1_pem` ([#1202]) - Rename `ScalarCore` to `ScalarPrimitive` ([#1203]) - Use `CryptoRngCore` trait ([#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 `AffineCoordinates` trait ([#1237]) - Allow multiple `dst`s in the `hash2curve` API ([#1238]) - Have `serde` feature activate `pkcs8` ([#1245]) - Dependency upgrades: - `base16ct` ([#1254]) - `crypto-bigint` v0.5 ([#1251]) - `ff` and `group` v0.13 ([#1166]) - `pem-rfc7468` v0.7 ([#1251]) - `pkcs8` v0.10 ([#1251]) - `sec1` v0.7 ([#1251]) - `serdect` v0.2 ([#1251]) ### Removed - `impl_field_element!` macro ([#1165]) - Direct `der` crate dependency ([#1195]) - `AffineArithmetic`, `ProjectiveArithmetic`, `ScalarArithmetic` traits ([#1196]) - Toplevel re-exports except for `AffinePoint`, `ProjectivePoint`, and `Scalar` ([#1223]) - `Reduce` methods ([#1225]) - Blanket impl for `Invert` ([#1242]) [#1024]: https://github.com/RustCrypto/traits/pull/1024 [#1102]: https://github.com/RustCrypto/traits/pull/1102 [#1131]: https://github.com/RustCrypto/traits/pull/1131 [#1165]: https://github.com/RustCrypto/traits/pull/1165 [#1166]: https://github.com/RustCrypto/traits/pull/1166 [#1175]: https://github.com/RustCrypto/traits/pull/1175 [#1176]: https://github.com/RustCrypto/traits/pull/1176 [#1178]: https://github.com/RustCrypto/traits/pull/1178 [#1191]: https://github.com/RustCrypto/traits/pull/1191 [#1192]: https://github.com/RustCrypto/traits/pull/1192 [#1194]: https://github.com/RustCrypto/traits/pull/1194 [#1195]: https://github.com/RustCrypto/traits/pull/1195 [#1196]: https://github.com/RustCrypto/traits/pull/1196 [#1198]: https://github.com/RustCrypto/traits/pull/1198 [#1202]: https://github.com/RustCrypto/traits/pull/1202 [#1203]: https://github.com/RustCrypto/traits/pull/1203 [#1206]: https://github.com/RustCrypto/traits/pull/1206 [#1207]: https://github.com/RustCrypto/traits/pull/1207 [#1208]: https://github.com/RustCrypto/traits/pull/1208 [#1218]: https://github.com/RustCrypto/traits/pull/1218 [#1220]: https://github.com/RustCrypto/traits/pull/1220 [#1223]: https://github.com/RustCrypto/traits/pull/1223 [#1225]: https://github.com/RustCrypto/traits/pull/1225 [#1228]: https://github.com/RustCrypto/traits/pull/1228 [#1229]: https://github.com/RustCrypto/traits/pull/1229 [#1235]: https://github.com/RustCrypto/traits/pull/1235 [#1237]: https://github.com/RustCrypto/traits/pull/1237 [#1238]: https://github.com/RustCrypto/traits/pull/1238 [#1239]: https://github.com/RustCrypto/traits/pull/1239 [#1242]: https://github.com/RustCrypto/traits/pull/1242 [#1245]: https://github.com/RustCrypto/traits/pull/1245 [#1251]: https://github.com/RustCrypto/traits/pull/1251 [#1254]: https://github.com/RustCrypto/traits/pull/1254 ## 0.12.3 (2022-08-01) ### Added - Aliases for SEC1 compressed/uncompressed points ([#1067]) ### Fixed - `arithmetic` + `serde` feature combo ([#1066]) [#1066]: https://github.com/RustCrypto/traits/pull/1066 [#1067]: https://github.com/RustCrypto/traits/pull/1067 ## 0.12.2 (2022-07-01) ### Changed - Bump `crypto-bigint` to v0.4.8 ([#1039]) [#1039]: https://github.com/RustCrypto/traits/pull/1039 ## 0.12.1 (2022-06-12) ### Added - `impl_field_element!` macro ([#1021]) - Generic impl of complete prime order formulas ([#1022]) ### Changed - Bump `crypto-bigint` to v0.4.4 ([#1018], [#1020]) [#1018]: https://github.com/RustCrypto/traits/pull/1018 [#1020]: https://github.com/RustCrypto/traits/pull/1020 [#1021]: https://github.com/RustCrypto/traits/pull/1021 [#1022]: https://github.com/RustCrypto/traits/pull/1022 ## 0.12.0 (2022-05-08) ### Added - `ecdh::SharedSecret::extract` HKDF helper ([#1007]) ### Changed - Bump `digest` dependency to v0.10 ([#883], [#904]) - Make `NonZeroScalar::invert` infallible ([#894]) - `ToCompactEncodedPoint` now returns `CtOption` ([#895]) - Move `hash2field` into `hash2curve` module ([#903]) - Bump `ff` and `group` dependencies to v0.12 ([#994]) - Use `serdect` crate ([#996]) - Replace `AlgorithmParamters` with `AssociatedOid` ([#1001]) - Bump `crypto-bigint` dependency to v0.4 ([#1005]) - Bump `der` dependency to v0.6 ([#1006]) - Bump `pkcs8` dependency to v0.9 ([#1006]) - Bump `sec1` dependency to v0.3 ([#1006]) - Bump `pem-rfc7468` dependency to v0.6 ([#1009]) ### Removed - `Zeroize` impl from `ecdh::SharedSecret` ([#978]) [#883]: https://github.com/RustCrypto/traits/pull/883 [#894]: https://github.com/RustCrypto/traits/pull/894 [#895]: https://github.com/RustCrypto/traits/pull/895 [#903]: https://github.com/RustCrypto/traits/pull/903 [#904]: https://github.com/RustCrypto/traits/pull/904 [#978]: https://github.com/RustCrypto/traits/pull/978 [#994]: https://github.com/RustCrypto/traits/pull/994 [#996]: https://github.com/RustCrypto/traits/pull/996 [#1001]: https://github.com/RustCrypto/traits/pull/1001 [#1005]: https://github.com/RustCrypto/traits/pull/1005 [#1006]: https://github.com/RustCrypto/traits/pull/1006 [#1007]: https://github.com/RustCrypto/traits/pull/1007 [#1009]: https://github.com/RustCrypto/traits/pull/1009 ## 0.11.12 (2022-01-30) ### Changed - Disable `bits` feature on docs.rs due to nightly breakage ([#927]) [#927]: https://github.com/RustCrypto/traits/pull/927 ## 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 ([#923]) [#923]: https://github.com/RustCrypto/traits/pull/891 ## 0.11.9 (2022-01-17) [YANKED] ### Changed - Activate `bits`, `hash2curve`, and `voprf` features on docs.rs ([#891]) [#891]: https://github.com/RustCrypto/traits/pull/891 ## 0.11.8 (2022-01-15) [YANKED] ### Added - Impl `ZeroizeOnDrop` on appropriate items ([#884]) ### Changed - Use the `base16ct` crate for hex serialization ([#886], [#887], [#888]) [#884]: https://github.com/RustCrypto/traits/pull/884 [#886]: https://github.com/RustCrypto/traits/pull/886 [#887]: https://github.com/RustCrypto/traits/pull/887 [#888]: https://github.com/RustCrypto/traits/pull/888 ## 0.11.7 (2022-01-14) [YANKED] ### 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]) [#854]: https://github.com/RustCrypto/traits/pull/854 [#855]: https://github.com/RustCrypto/traits/pull/855 [#857]: https://github.com/RustCrypto/traits/pull/857 [#862]: https://github.com/RustCrypto/traits/pull/862 [#865]: https://github.com/RustCrypto/traits/pull/865 [#869]: https://github.com/RustCrypto/traits/pull/869 [#871]: https://github.com/RustCrypto/traits/pull/871 [#874]: https://github.com/RustCrypto/traits/pull/874 [#876]: https://github.com/RustCrypto/traits/pull/876 [#878]: https://github.com/RustCrypto/traits/pull/878 ## 0.11.6 (2021-12-20) ### Added - Type conversions chart ([#852]) [#852]: https://github.com/RustCrypto/traits/pull/852 ## 0.11.5 (2021-12-05) ### Changed - Revised `LinearCombination` trait ([#835]) [#835]: https://github.com/RustCrypto/traits/pull/835 ## 0.11.4 (2021-12-04) [YANKED] ### Added - `LinearCombination` trait ([#832]) [#832]: https://github.com/RustCrypto/traits/pull/832 ## 0.11.3 (2021-12-03) [YANKED] ### Added - `ReduceNonZero` trait ([#827]) [#827]: https://github.com/RustCrypto/traits/pull/827 ## 0.11.2 (2021-12-03) [YANKED] ### Changed - Bump `pem-rfc7468` dependency to v0.3 ([#825]) [#825]: https://github.com/RustCrypto/traits/pull/825 ## 0.11.1 (2021-11-21) [YANKED] ### Added - `NonZeroScalar::from_uint` ([#822]) [#822]: https://github.com/RustCrypto/traits/pull/822 ## 0.11.0 (2021-11-19) [YANKED] ### Added - `ScalarCore` 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` ([#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]) [#730]: https://github.com/RustCrypto/traits/pull/730 [#732]: https://github.com/RustCrypto/traits/pull/732 [#739]: https://github.com/RustCrypto/traits/pull/739 [#742]: https://github.com/RustCrypto/traits/pull/742 [#762]: https://github.com/RustCrypto/traits/pull/762 [#768]: https://github.com/RustCrypto/traits/pull/768 [#771]: https://github.com/RustCrypto/traits/pull/771 [#782]: https://github.com/RustCrypto/traits/pull/782 [#785]: https://github.com/RustCrypto/traits/pull/785 [#795]: https://github.com/RustCrypto/traits/pull/795 [#796]: https://github.com/RustCrypto/traits/pull/796 [#806]: https://github.com/RustCrypto/traits/pull/806 [#807]: https://github.com/RustCrypto/traits/pull/807 [#809]: https://github.com/RustCrypto/traits/pull/809 [#810]: https://github.com/RustCrypto/traits/pull/810 [#812]: https://github.com/RustCrypto/traits/pull/812 [#814]: https://github.com/RustCrypto/traits/pull/814 [#815]: https://github.com/RustCrypto/traits/pull/815 [#816]: https://github.com/RustCrypto/traits/pull/816 [#817]: https://github.com/RustCrypto/traits/pull/817 [#818]: https://github.com/RustCrypto/traits/pull/818 ## 0.10.6 (2021-08-23) ### Changed - Bump `crypto-bigint` dependency to v0.2.4 ([#710]) [#710]: https://github.com/RustCrypto/traits/pull/710 ## 0.10.5 (2021-07-20) ### Changed - Pin `zeroize` dependency to v1.4 and `subtle` to v2.4 ([#689]) [#689]: https://github.com/RustCrypto/traits/pull/689 ## 0.10.4 (2021-07-12) ### Added - Re-export `rand_core` ([#683]) [#683]: https://github.com/RustCrypto/traits/pull/683 ## 0.10.3 (2021-06-21) ### Changed - Bump `crypto-bigint` to v0.2.1 ([#673]) [#673]: https://github.com/RustCrypto/traits/pull/673 ## 0.10.2 (2021-06-14) [YANKED] ### Added - `ConstantTimeEq` impl for `NonZeroScalar` ([#669]) [#669]: https://github.com/RustCrypto/traits/pull/669 ## 0.10.1 (2021-06-09) [YANKED] ### Added - Explicit `Copy` bounds on `PublicKey` ([#667]) [#667]: https://github.com/RustCrypto/traits/pull/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` from `C::UInt` type ([#646]) - Impl `ScalarBytes` using `C::UInt` ([#647]) - Make `ScalarBytes` the `SecretKey` internal repr ([#649]) - Bump `crypto-bigint` to v0.2 ([#662]) - Bump `pkcs8` to v0.7 ([#662]) ### Removed - `util` module ([#648]) [#643]: https://github.com/RustCrypto/traits/pull/643 [#644]: https://github.com/RustCrypto/traits/pull/644 [#645]: https://github.com/RustCrypto/traits/pull/645 [#646]: https://github.com/RustCrypto/traits/pull/646 [#647]: https://github.com/RustCrypto/traits/pull/647 [#648]: https://github.com/RustCrypto/traits/pull/648 [#649]: https://github.com/RustCrypto/traits/pull/649 [#651]: https://github.com/RustCrypto/traits/pull/651 [#652]: https://github.com/RustCrypto/traits/pull/652 [#654]: https://github.com/RustCrypto/traits/pull/654 [#658]: https://github.com/RustCrypto/traits/pull/658 [#659]: https://github.com/RustCrypto/traits/pull/659 [#662]: https://github.com/RustCrypto/traits/pull/662 ## 0.9.12 (2021-05-18) ### Added - `Ord` and `PartialOrd` impls on `PublicKey` ([#637]) [#637]: https://github.com/RustCrypto/traits/pull/637 ## 0.9.11 (2021-04-21) ### Added - Impl `subtle` traits on `ScalarBytes` ([#612]) ### Fixed - Always re-export ScalarBytes ([#613]) [#612]: https://github.com/RustCrypto/traits/pull/612 [#613]: https://github.com/RustCrypto/traits/pull/613 ## 0.9.10 (2021-04-21) ### Added - `ScalarBytes` type ([#610]) [#610]: https://github.com/RustCrypto/traits/pull/610 ## 0.9.9 (2021-04-21) [YANKED] ### Added - `Order::is_scalar_repr_in_range` ([#608]) [#608]: https://github.com/RustCrypto/traits/pull/608 ## 0.9.8 (2021-04-21) ### Added - Define `Order` for `MockCurve` ([#606]) [#606]: https://github.com/RustCrypto/traits/pull/606 ## 0.9.7 (2021-04-21) ### Added - `Order` trait ([#603]) ### Fixed - Warnings from `pkcs8` imports ([#604]) [#603]: https://github.com/RustCrypto/traits/pull/603 [#604]: https://github.com/RustCrypto/traits/pull/604 ## 0.9.6 (2021-03-22) ### Changed - Bump `pkcs8` dependency to v0.6 ([#585]) [#585]: https://github.com/RustCrypto/traits/pull/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]) [#561]: https://github.com/RustCrypto/traits/pull/561 [#565]: https://github.com/RustCrypto/traits/pull/565 [#566]: https://github.com/RustCrypto/traits/pull/566 [#581]: https://github.com/RustCrypto/traits/pull/581 ## 0.9.4 (2021-02-18) [YANKED] ### Fixed - Breakage related to the `pkcs8` v0.5.1 crate ([#556]) [#556]: https://github.com/RustCrypto/traits/pull/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]) [#549]: https://github.com/RustCrypto/traits/pull/549 [#550]: https://github.com/RustCrypto/traits/pull/550 ## 0.9.2 (2021-02-12) [YANKED] ### Changed - Flatten `weierstrass` module ([#542]) [#542]: https://github.com/RustCrypto/traits/pull/542 ## 0.9.1 (2021-02-11) [YANKED] ### Removed - `BitView` re-export ([#540]) [#540]: https://github.com/RustCrypto/traits/pull/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]) [#452]: https://github.com/RustCrypto/traits/pull/452 [#475]: https://github.com/RustCrypto/traits/pull/475 [#483]: https://github.com/RustCrypto/traits/pull/483 [#484]: https://github.com/RustCrypto/traits/pull/484 [#485]: https://github.com/RustCrypto/traits/pull/485 [#487]: https://github.com/RustCrypto/traits/pull/487 [#493]: https://github.com/RustCrypto/traits/pull/493 [#432]: https://github.com/RustCrypto/traits/pull/432 [#532]: https://github.com/RustCrypto/traits/pull/532 [#534]: https://github.com/RustCrypto/traits/pull/534 ## 0.8.5 (2021-02-17) ### Fixed - Workaround for bitvecto-rs/bitvec#105 ([#553]) [#553]: https://github.com/RustCrypto/traits/pull/553 ## 0.8.4 (2020-12-23) ### Fixed - Rust `nightly` regression ([#432]) [#432]: https://github.com/RustCrypto/traits/pull/432 ## 0.8.3 (2020-12-22) ### Fixed - Regression in combination of `pem`+`zeroize` features ([#429]) [#429]: https://github.com/RustCrypto/traits/pull/429 ## 0.8.2 (2020-12-22) [YANKED] ### Added - Low-level ECDH API ([#418]) - `dev` module ([#419]) - Impl `pkcs8::ToPrivateKey` for `SecretKey` ([#423]) - Impl `pkcs8::ToPublicKey` for `PublicKey` ([#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]) [#414]: https://github.com/RustCrypto/traits/pull/414 [#416]: https://github.com/RustCrypto/traits/pull/416 [#418]: https://github.com/RustCrypto/traits/pull/418 [#419]: https://github.com/RustCrypto/traits/pull/419 [#422]: https://github.com/RustCrypto/traits/pull/422 [#423]: https://github.com/RustCrypto/traits/pull/423 [#425]: https://github.com/RustCrypto/traits/pull/425 [#427]: https://github.com/RustCrypto/traits/pull/427 ## 0.8.1 (2020-12-16) [YANKED] ### Fixed - Builds on Rust `nightly` compiler ([#412]) [#412]: https://github.com/RustCrypto/traits/pull/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` is not the identity point ([#404]) - Have `SecretKey::secret_scalar` return `NonZeroScalar` ([#402]) ### Removed - `SecretKey::secret_value` ([#403]) [#409]: https://github.com/RustCrypto/traits/pull/409 [#408]: https://github.com/RustCrypto/traits/pull/408 [#407]: https://github.com/RustCrypto/traits/pull/407 [#405]: https://github.com/RustCrypto/traits/pull/405 [#404]: https://github.com/RustCrypto/traits/pull/404 [#403]: https://github.com/RustCrypto/traits/pull/403 [#402]: https://github.com/RustCrypto/traits/pull/402 [#401]: https://github.com/RustCrypto/traits/pull/401 ## 0.7.1 (2020-12-07) ### Changed - Have `SecretKey::secret_value` always return `NonZeroScalar` ([#390]) [#390]: https://github.com/RustCrypto/traits/pull/390 ## 0.7.0 (2020-12-06) [YANKED] ### Added - Impl `pkcs8::FromPublicKey` for `PublicKey` ([#385]) - Impl `pkcs8::FromPrivateKey` trait for `SecretKey` ([#381], [#383]) - PKCS#8 PEM support ([#382]) - `SecretKey::secret_value()` method ([#375]) - `PublicKey` 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 - `ecdh` rustdoc ([#364]) [#385]: https://github.com/RustCrypto/traits/pull/385 [#383]: https://github.com/RustCrypto/traits/pull/383 [#382]: https://github.com/RustCrypto/traits/pull/382 [#381]: https://github.com/RustCrypto/traits/pull/381 [#376]: https://github.com/RustCrypto/traits/pull/376 [#375]: https://github.com/RustCrypto/traits/pull/375 [#367]: https://github.com/RustCrypto/traits/pull/367 [#366]: https://github.com/RustCrypto/traits/pull/366 [#365]: https://github.com/RustCrypto/traits/pull/365 [#364]: https://github.com/RustCrypto/traits/pull/364 [#363]: https://github.com/RustCrypto/traits/pull/363 ## 0.6.6 (2020-10-08) ### Added - Derive `Clone` on `SecretBytes` ([#330]) [#300]: https://github.com/RustCrypto/traits/pull/300 ## 0.6.5 (2020-10-08) ### Fixed - Work around `nightly-2020-10-06` breakage ([#328]) [#328]: https://github.com/RustCrypto/traits/pull/328 ## 0.6.4 (2020-10-08) ### Added - Impl `From>` for `FieldBytes` ([#326]) [#326]: https://github.com/RustCrypto/traits/pull/326 ## 0.6.3 (2020-10-08) ### Added - `SecretBytes` newtype ([#324]) [#324]: https://github.com/RustCrypto/traits/pull/324 ## 0.6.2 (2020-09-24) ### Added - `sec1::EncodedPoint::to_untagged_bytes()` method ([#312]) [#312]: https://github.com/RustCrypto/traits/pull/312 ## 0.6.1 (2020-09-21) ### Fixed - `sec1::EncodedPoint::decompress` ([#309]) [#309]: https://github.com/RustCrypto/traits/pull/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` and `AffinePoint` ([#300]) - Made `SecretKey` inner type generic ([#297]) - Renamed `ElementBytes` to `FieldBytes` ([#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]) [#300]: https://github.com/RustCrypto/traits/pull/300 [#297]: https://github.com/RustCrypto/traits/pull/297 [#296]: https://github.com/RustCrypto/traits/pull/296 [#295]: https://github.com/RustCrypto/traits/pull/295 [#293]: https://github.com/RustCrypto/traits/pull/293 [#292]: https://github.com/RustCrypto/traits/pull/292 [#291]: https://github.com/RustCrypto/traits/pull/291 [#290]: https://github.com/RustCrypto/traits/pull/290 [#287]: https://github.com/RustCrypto/traits/pull/293 [#286]: https://github.com/RustCrypto/traits/pull/286 [#283]: https://github.com/RustCrypto/traits/pull/283 [#282]: https://github.com/RustCrypto/traits/pull/282 [#281]: https://github.com/RustCrypto/traits/pull/281 [#279]: https://github.com/RustCrypto/traits/pull/279 [#278]: https://github.com/RustCrypto/traits/pull/278 [#277]: https://github.com/RustCrypto/traits/pull/277 [#276]: https://github.com/RustCrypto/traits/pull/276 [#275]: https://github.com/RustCrypto/traits/pull/275 [#270]: https://github.com/RustCrypto/traits/pull/270 [#266]: https://github.com/RustCrypto/traits/pull/266 [#265]: https://github.com/RustCrypto/traits/pull/265 [#264]: https://github.com/RustCrypto/traits/pull/264 ## 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 - Moved repo to https://github.com/RustCrypto/traits ([#213]) - Rename `ScalarBytes` to `ElementBytes` ([#246]) - Rename `CompressedCurvePoint`/`UncompressedCurvePoint` to `CompressedPoint`/`UncompressedPoint` [#213]: https://github.com/RustCrypto/traits/pull/213 [#219]: https://github.com/RustCrypto/traits/pull/219 [#220]: https://github.com/RustCrypto/traits/pull/220 [#223]: https://github.com/RustCrypto/traits/pull/223 [#226]: https://github.com/RustCrypto/traits/pull/226 [#228]: https://github.com/RustCrypto/traits/pull/228 [#229]: https://github.com/RustCrypto/traits/pull/229 [#233]: https://github.com/RustCrypto/traits/pull/233 [#240]: https://github.com/RustCrypto/traits/pull/240 [#241]: https://github.com/RustCrypto/traits/pull/241 [#243]: https://github.com/RustCrypto/traits/pull/243 [#244]: https://github.com/RustCrypto/traits/pull/244 [#245]: https://github.com/RustCrypto/traits/pull/245 [#246]: https://github.com/RustCrypto/traits/pull/246 [#248]: https://github.com/RustCrypto/traits/pull/248 [#251]: https://github.com/RustCrypto/traits/pull/251 ## 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 - Repository moved to ### 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