## 0.3.0

- **secp256k1**: `PublicKey::verify` now enforces low-S signatures.
  High-S signatures that were previously accepted are now rejected
  (ecdsa 0.17 gates low-S normalization on `k256`'s `NORMALIZE_S`
  feature, set to `true` in k256 0.14). This aligns with go-libp2p
  and js-libp2p which already sign low-S and may reject high-S.
  See [PR 6559](https://github.com/libp2p/rust-libp2p/pull/6559).

- Raise MSRV to 1.88.0.
  See [PR 6559](https://github.com/libp2p/rust-libp2p/pull/6559).

- Revert migration to `quick-protobuf`, migrate back to `prost`.
  See [PR 6363](https://github.com/libp2p/rust-libp2p/pull/6363).

## 0.2.13

- Turn the `quick-protobuf` dependency optional to only the features which require it.
  See [PR 6226](https://github.com/libp2p/rust-libp2p/pull/6226)

## 0.2.12

- Avoid depending on the `rand_core` feature in `ed25519-dalek` crate.
  See [PR 6070](https://github.com/libp2p/rust-libp2p/pull/6070)

## 0.2.11

- Switch from `libsecp256` to `k256` for secp256k1 support.
  See [PR 5892](https://github.com/libp2p/rust-libp2p/pull/5892)

## 0.2.10

- Deprecate `void` crate.
  See [PR 5676](https://github.com/libp2p/rust-libp2p/pull/5676).

## 0.2.9

- Add `rand` feature gate to ecdsa methods requiring a random number generator.
  See [PR 5212](https://github.com/libp2p/rust-libp2p/pull/5212).

## 0.2.8

- Bump `ring` to `0.17.5`.
  See [PR 4779](https://github.com/libp2p/rust-libp2p/pull/4779).

## 0.2.7

- Add `rand` feature to gate methods requiring a random number generator, enabling use in restricted environments (e.g. smartcontracts).
  This feature is not enabled by default.
  See [PR 4349](https://github.com/libp2p/rust-libp2p/pull/4349).

## 0.2.6

- Make `PeerId::to_bytes` and `PeerId::to_base58` take `self` by value to follow Rust convention of `Copy` types.
  See [PR 4653](https://github.com/libp2p/rust-libp2p/pull/4653).

## 0.2.5

- Fix usage of HKDF within `Keypair::derive_secret`.
  See [PR 4554](https://github.com/libp2p/rust-libp2p/pull/4554).

## 0.2.4

- Implement `Keypair::derive_secret`, to deterministically derive a new secret from the embedded secret key.
  See [PR 4554].

[PR 4554]: https://github.com/libp2p/rust-libp2p/pull/4554

## 0.2.3

- Fix [RUSTSEC-2022-0093] by updating `ed25519-dalek` to `2.0`.
  See [PR 4337]

[RUSTSEC-2022-0093]: https://rustsec.org/advisories/RUSTSEC-2022-0093
[PR 4337]: https://github.com/libp2p/rust-libp2p/pull/4337

## 0.2.2

- Implement `from_protobuf_encoding` for RSA `Keypair`.
  See [PR 4193].

[PR 4193]: https://github.com/libp2p/rust-libp2p/pull/4193

## 0.2.1

- Expose `KeyType` for `PublicKey` and `Keypair`.
  See [PR 4107].

[PR 4107]: https://github.com/libp2p/rust-libp2p/pull/4107

## 0.2.0

- Raise MSRV to 1.65.
  See [PR 3715].
- Add support for exporting and importing ECDSA keys via the libp2p [protobuf format].
  See [PR 3863].

- Make `Keypair` and `PublicKey` opaque.
  See [PR 3866].

- Remove `identity::secp256k1::SecretKey::sign_hash` and make `identity::secp256k1::SecretKey::sign` infallible.
  See [PR 3850].

- Remove deprecated items. See [PR 3928].

- Remove `PeerId::try_from_multiaddr`.
  `multiaddr::Protocol::P2p` is now type-safe and contains a `PeerId` directly, rendering this function obsolete.
  See [PR 3656].

- Remove `PeerId::is_public_key` because it is unused and can be implemented externally.
  See [PR 3656].

[PR 3656]: https://github.com/libp2p/rust-libp2p/pull/3656
[PR 3850]: https://github.com/libp2p/rust-libp2p/pull/3850
[PR 3715]: https://github.com/libp2p/rust-libp2p/pull/3715
[PR 3863]: https://github.com/libp2p/rust-libp2p/pull/3863
[PR 3866]: https://github.com/libp2p/rust-libp2p/pull/3866
[PR 3928]: https://github.com/libp2p/rust-libp2p/pull/3928
[protobuf format]: https://github.com/libp2p/specs/blob/master/peer-ids/peer-ids.md#keys

## 0.1.2

- Add `impl From<ed25519::PublicKey> for PublicKey` so that `PublicKey::from(ed25519::PublicKey)` works.
  See [PR 3805].

[PR 3805]: https://github.com/libp2p/rust-libp2p/pull/3805

- Follow Rust naming conventions for conversion methods.
  See [PR 3775].

[PR 3775]: https://github.com/libp2p/rust-libp2p/pull/3775

## 0.1.1

- Add `From` impl for specific keypairs.
  See [PR 3626].

[PR 3626]: https://github.com/libp2p/rust-libp2p/pull/3626
