1# Changelog
2All notable changes to this project will be documented in this file.
3
4The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
7## 0.8.5 (2021-02-17)
8### Fixed
9- Workaround for bitvecto-rs/bitvec#105 ([#553])
10
11## 0.8.4 (2020-12-23)
12### Fixed
13- Rust `nightly` regression ([#432])
14
15[#432]: https://github.com/RustCrypto/traits/pull/432
16
17## 0.8.3 (2020-12-22)
18### Fixed
19- Regression in combination of `pem`+`zeroize` features ([#429])
20
21[#429]: https://github.com/RustCrypto/traits/pull/429
22
23## 0.8.2 (2020-12-22) [YANKED]
24### Added
25- Low-level ECDH API ([#418])
26- `dev` module ([#419])
27- Impl `pkcs8::ToPrivateKey` for `SecretKey<C>` ([#423])
28- Impl `pkcs8::ToPublicKey` for `PublicKey<C>` ([#427])
29
30### Changed
31- Bump `subtle` dependency to 2.4.0 ([#414])
32- Bump `pkcs8` dependency to v0.3.3 ([#425])
33- Use `der` crate to parse `SecretKey` ([#422])
34
35### Fixed
36- Make `PublicKey::from_encoded_point` go through `PublicKey::from_affine` ([#416])
37
38[#414]: https://github.com/RustCrypto/traits/pull/414
39[#416]: https://github.com/RustCrypto/traits/pull/416
40[#418]: https://github.com/RustCrypto/traits/pull/418
41[#419]: https://github.com/RustCrypto/traits/pull/419
42[#422]: https://github.com/RustCrypto/traits/pull/422
43[#423]: https://github.com/RustCrypto/traits/pull/423
44[#425]: https://github.com/RustCrypto/traits/pull/425
45[#427]: https://github.com/RustCrypto/traits/pull/427
46
47## 0.8.1 (2020-12-16) [YANKED]
48### Fixed
49- Builds on Rust `nightly` compiler ([#412])
50
51[#412]: https://github.com/RustCrypto/traits/pull/412
52
53## 0.8.0 (2020-12-16) [YANKED]
54### Added
55- Impl `subtle::ConditionallySelectable` for `sec1::EncodedPoint` ([#409])
56- `sec1::EncodedPoint::identity()` method ([#408])
57- `sec1::Coordinates::tag` method ([#407])
58- Support for SEC1 identity encoding ([#401])
59
60### Changed
61- Bump `pkcs8` crate dependency to v0.3 ([#405])
62- Ensure `PublicKey<C>` is not the identity point ([#404])
63- Have `SecretKey::secret_scalar` return `NonZeroScalar` ([#402])
64
65### Removed
66- `SecretKey::secret_value` ([#403])
67
68[#409]: https://github.com/RustCrypto/traits/pull/409
69[#408]: https://github.com/RustCrypto/traits/pull/408
70[#407]: https://github.com/RustCrypto/traits/pull/407
71[#405]: https://github.com/RustCrypto/traits/pull/405
72[#404]: https://github.com/RustCrypto/traits/pull/404
73[#403]: https://github.com/RustCrypto/traits/pull/403
74[#402]: https://github.com/RustCrypto/traits/pull/402
75[#401]: https://github.com/RustCrypto/traits/pull/401
76
77## 0.7.1 (2020-12-07)
78### Changed
79- Have `SecretKey::secret_value` always return `NonZeroScalar` ([#390])
80
81[#390]: https://github.com/RustCrypto/traits/pull/390
82
83## 0.7.0 (2020-12-06) [YANKED]
84### Added
85- Impl `pkcs8::FromPublicKey` for `PublicKey<C>` ([#385])
86- Impl `pkcs8::FromPrivateKey` trait for `SecretKey<C>` ([#381], [#383])
87- PKCS#8 PEM support ([#382])
88- `SecretKey::secret_value()` method ([#375])
89- `PublicKey<C>` type ([#363], [#366])
90
91### Changed
92- Rename `PublicKey::from_bytes()` to `::from_sec1_bytes()` ([#376])
93- `sec1::EncodedPoint` uses `Option` instead of `subtle::CtOption` ([#367])
94- Bump `const-oid` to v0.3; MSRV 1.46+ ([#365], [#381])
95
96### Fixed
97- `ecdh` rustdoc ([#364])
98
99[#385]: https://github.com/RustCrypto/traits/pull/385
100[#383]: https://github.com/RustCrypto/traits/pull/383
101[#382]: https://github.com/RustCrypto/traits/pull/382
102[#381]: https://github.com/RustCrypto/traits/pull/381
103[#376]: https://github.com/RustCrypto/traits/pull/376
104[#375]: https://github.com/RustCrypto/traits/pull/375
105[#367]: https://github.com/RustCrypto/traits/pull/367
106[#366]: https://github.com/RustCrypto/traits/pull/366
107[#365]: https://github.com/RustCrypto/traits/pull/365
108[#364]: https://github.com/RustCrypto/traits/pull/364
109[#363]: https://github.com/RustCrypto/traits/pull/363
110
111## 0.6.6 (2020-10-08)
112### Added
113- Derive `Clone` on `SecretBytes` ([#330])
114
115[#300]: https://github.com/RustCrypto/traits/pull/300
116
117## 0.6.5 (2020-10-08)
118### Fixed
119- Work around `nightly-2020-10-06` breakage ([#328])
120
121[#328]: https://github.com/RustCrypto/traits/pull/328
122
123## 0.6.4 (2020-10-08)
124### Added
125- Impl `From<SecretBytes<C>>` for `FieldBytes<C>` ([#326])
126
127[#326]: https://github.com/RustCrypto/traits/pull/326
128
129## 0.6.3 (2020-10-08)
130### Added
131- `SecretBytes` newtype ([#324])
132
133[#324]: https://github.com/RustCrypto/traits/pull/324
134
135## 0.6.2 (2020-09-24)
136### Added
137- `sec1::EncodedPoint::to_untagged_bytes()` method ([#312])
138
139[#312]: https://github.com/RustCrypto/traits/pull/312
140
141## 0.6.1 (2020-09-21)
142### Fixed
143- `sec1::EncodedPoint::decompress` ([#309])
144
145[#309]: https://github.com/RustCrypto/traits/pull/309
146
147## 0.6.0 (2020-09-11) [YANKED]
148### Added
149- `arithmetic` feature ([#293])
150- Generic curve/field arithmetic using the `ff` and `group` crates
151  ([#287], [#291], [#292])
152- `sec1::Coordinates` ([#286])
153- `weierstrass::point::Compression` trait ([#283], [#300])
154- Arithmetic helper functions ([#281])
155- `digest` feature and `FromDigest` trait ([#279])
156- impl `Deref` for `NonZeroScalar` ([#278])
157- Conditionally impl `Invert` for `NonZeroScalar` ([#277])
158- `NonZeroScalar::to_bytes` ([#276])
159- `EncodedPoint::decompress` ([#275])
160- `sec1::Tag` ([#270])
161- `weierstrass::point::Decompress` trait ([#266])
162- `alloc` feature + `EncodedPoint::to_bytes()` ([#265])
163
164### Changed
165- Renamed `Arithmetic` trait to `point::ProjectiveArithmetic` ([#300])
166- Replaced `Arithmetic::Scalar` and `Arithmetic::AffinePoint`
167  with `Scalar<C>` and `AffinePoint<C>` ([#300])
168- Made `SecretKey<C>` inner type generic ([#297])
169- Renamed `ElementBytes<C>` to `FieldBytes<C>` ([#296])
170- MSRV 1.44 ([#292])
171- Minimum `subtle` version now v2.3 ([#290])
172- Renamed `Curve::ElementSize` to `::FieldSize` ([#282])
173- Refactor `PublicKey` into `sec1::EncodedPoint` ([#264])
174
175### Removed
176- `FromBytes` trait ([#300])
177- `Generate` trait ([#295])
178
179[#300]: https://github.com/RustCrypto/traits/pull/300
180[#297]: https://github.com/RustCrypto/traits/pull/297
181[#296]: https://github.com/RustCrypto/traits/pull/296
182[#295]: https://github.com/RustCrypto/traits/pull/295
183[#293]: https://github.com/RustCrypto/traits/pull/293
184[#292]: https://github.com/RustCrypto/traits/pull/292
185[#291]: https://github.com/RustCrypto/traits/pull/291
186[#290]: https://github.com/RustCrypto/traits/pull/290
187[#287]: https://github.com/RustCrypto/traits/pull/293
188[#286]: https://github.com/RustCrypto/traits/pull/286
189[#283]: https://github.com/RustCrypto/traits/pull/283
190[#282]: https://github.com/RustCrypto/traits/pull/282
191[#281]: https://github.com/RustCrypto/traits/pull/281
192[#279]: https://github.com/RustCrypto/traits/pull/279
193[#278]: https://github.com/RustCrypto/traits/pull/278
194[#277]: https://github.com/RustCrypto/traits/pull/277
195[#276]: https://github.com/RustCrypto/traits/pull/276
196[#275]: https://github.com/RustCrypto/traits/pull/275
197[#270]: https://github.com/RustCrypto/traits/pull/270
198[#266]: https://github.com/RustCrypto/traits/pull/266
199[#265]: https://github.com/RustCrypto/traits/pull/265
200[#264]: https://github.com/RustCrypto/traits/pull/264
201
202## 0.5.0 (2020-08-10)
203### Added
204- `Arithmetic` trait ([#219])
205- `Generate` trait ([#220], [#226])
206- Toplevel `Curve` trait ([#223])
207- `Invert` trait ([#228])
208- `FromPublicKey` trait ([#229], [#248])
209- Re-export `zeroize` ([#233])
210- OID support ([#240], [#245])
211- `NonZeroScalar` type ([#241])
212- `Generator` trait ([#241])
213- `weierstrass::PublicKey::compress` method ([#243])
214- Derive `Clone` on `SecretKey` ([#244])
215- Generic Elliptic Curve Diffie-Hellman support ([#251])
216
217### Changed
218- Moved repo to https://github.com/RustCrypto/traits ([#213])
219- Rename `ScalarBytes` to `ElementBytes` ([#246])
220- Rename `CompressedCurvePoint`/`UncompressedCurvePoint` to
221  `CompressedPoint`/`UncompressedPoint`
222
223[#213]: https://github.com/RustCrypto/traits/pull/213
224[#219]: https://github.com/RustCrypto/traits/pull/219
225[#220]: https://github.com/RustCrypto/traits/pull/220
226[#223]: https://github.com/RustCrypto/traits/pull/223
227[#226]: https://github.com/RustCrypto/traits/pull/226
228[#228]: https://github.com/RustCrypto/traits/pull/228
229[#229]: https://github.com/RustCrypto/traits/pull/229
230[#233]: https://github.com/RustCrypto/traits/pull/233
231[#240]: https://github.com/RustCrypto/traits/pull/240
232[#241]: https://github.com/RustCrypto/traits/pull/241
233[#243]: https://github.com/RustCrypto/traits/pull/243
234[#244]: https://github.com/RustCrypto/traits/pull/244
235[#245]: https://github.com/RustCrypto/traits/pull/245
236[#246]: https://github.com/RustCrypto/traits/pull/246
237[#248]: https://github.com/RustCrypto/traits/pull/248
238[#251]: https://github.com/RustCrypto/traits/pull/251
239
240## 0.4.0 (2020-06-04)
241### Changed
242- Bump `generic-array` dependency from v0.12 to v0.14
243
244## 0.3.0 (2020-01-15)
245### Added
246- `Scalar` struct type
247
248### Changed
249- Repository moved to <https://github.com/RustCrypto/elliptic-curves>
250
251### Removed
252- Curve definitions/arithmetic extracted out into per-curve crates
253
254## 0.2.0 (2019-12-11)
255### Added
256- `secp256r1` (P-256) point compression and decompression
257
258### Changed
259- Bump MSRV to 1.37
260
261## 0.1.0 (2019-12-06)
262- Initial release
263