Versions of ed25519-dalek prior to v2.0 model private and public keys as separate types which can be assembled into a Keypair, and also provide APIs for serializing and deserializing 64-byte private/public keypairs.
Such APIs and serializations are inherently unsafe as the public key is one of the inputs used in the deterministic computation of the S part of the signature, but not in the R value. An adversary could somehow use the signing function as an oracle that allows arbitrary public keys as input can obtain two signatures for the same message sharing the same R and only differ on the S part.
Unfortunately, when this happens, one can easily extract the private key.
Revised public APIs in v2.0 of ed25519-dalek do NOT allow a decoupled private/public keypair as signing input, except as part of specially labeled "hazmat" APIs which are clearly labeled as being dangerous if misused.
Release Notes
dalek-cryptography/ed25519-dalek (ed25519-dalek)
### [`v2.0.0`](https://togithub.com/dalek-cryptography/ed25519-dalek/blob/HEAD/CHANGELOG.md#200)
##### Breaking changes
- Bump MSRV from 1.41 to 1.60.0
- Bump Rust edition
- Bump `signature` dependency to 2.0
- Make `digest` an optional dependency
- Make `zeroize` an optional dependency
- Make `rand_core` an optional dependency
- [curve25519 backends] are now automatically selected
- [curve25519 backends] are now overridable via cfg instead of using additive features
- Make all batch verification deterministic remove `batch_deterministic` (PR [#256](https://togithub.com/dalek-cryptography/ed25519-dalek/pull/256))
- Rename `Keypair` → `SigningKey` and `PublicKey` → `VerifyingKey`
- Remove default-public `ExpandedSecretKey` API (PR [#205](https://togithub.com/dalek-cryptography/ed25519-dalek/pull/205))
- Make `hazmat` feature to expose `ExpandedSecretKey`, `raw_sign()`, `raw_sign_prehashed()`, `raw_verify()`, and `raw_verify_prehashed()`
[curve25519 backends]: https://togithub.com/dalek-cryptography/curve25519-dalek/#backends
##### Other changes
- Add `Context` type for prehashed signing
- Add `VerifyingKey::{verify_prehash_strict, is_weak}`
- Add `pkcs` feature to support PKCS [#8](https://togithub.com/dalek-cryptography/ed25519-dalek/issues/8) (de)serialization of `SigningKey` and `VerifyingKey`
- Add `fast` feature to include basepoint tables
- Add tests for validation criteria
- Impl `DigestSigner`/`DigestVerifier` for `SigningKey`/`VerifyingKey`, respectively
- Impl `Hash` for `VerifyingKey`
- Impl `Clone`, `Drop`, and `ZeroizeOnDrop` for `SigningKey`
- Remove `rand` dependency
- Improve key deserialization diagnostics
### [`v2.0.0-rc.3`](https://togithub.com/dalek-cryptography/ed25519-dalek/compare/2.0.0-rc.2...2.0.0-rc.3)
[Compare Source](https://togithub.com/dalek-cryptography/ed25519-dalek/compare/2.0.0-rc.2...2.0.0-rc.3)
Configuration
📅 Schedule: Branch creation - "" in timezone America/Los_Angeles, Automerge - "after 8pm,before 6am" in timezone America/Los_Angeles.
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
2.0.0-rc.2
->2.0.0
GitHub Vulnerability Alerts
GHSA-w5vr-6qhr-36cc
Versions of
ed25519-dalek
prior to v2.0 model private and public keys as separate types which can be assembled into aKeypair
, and also provide APIs for serializing and deserializing 64-byte private/public keypairs.Such APIs and serializations are inherently unsafe as the public key is one of the inputs used in the deterministic computation of the
S
part of the signature, but not in theR
value. An adversary could somehow use the signing function as an oracle that allows arbitrary public keys as input can obtain two signatures for the same message sharing the sameR
and only differ on theS
part.Unfortunately, when this happens, one can easily extract the private key.
Revised public APIs in v2.0 of
ed25519-dalek
do NOT allow a decoupled private/public keypair as signing input, except as part of specially labeled "hazmat" APIs which are clearly labeled as being dangerous if misused.Release Notes
dalek-cryptography/ed25519-dalek (ed25519-dalek)
### [`v2.0.0`](https://togithub.com/dalek-cryptography/ed25519-dalek/blob/HEAD/CHANGELOG.md#200) ##### Breaking changes - Bump MSRV from 1.41 to 1.60.0 - Bump Rust edition - Bump `signature` dependency to 2.0 - Make `digest` an optional dependency - Make `zeroize` an optional dependency - Make `rand_core` an optional dependency - [curve25519 backends] are now automatically selected - [curve25519 backends] are now overridable via cfg instead of using additive features - Make all batch verification deterministic remove `batch_deterministic` (PR [#256](https://togithub.com/dalek-cryptography/ed25519-dalek/pull/256)) - Rename `Keypair` → `SigningKey` and `PublicKey` → `VerifyingKey` - Remove default-public `ExpandedSecretKey` API (PR [#205](https://togithub.com/dalek-cryptography/ed25519-dalek/pull/205)) - Make `hazmat` feature to expose `ExpandedSecretKey`, `raw_sign()`, `raw_sign_prehashed()`, `raw_verify()`, and `raw_verify_prehashed()` [curve25519 backends]: https://togithub.com/dalek-cryptography/curve25519-dalek/#backends ##### Other changes - Add `Context` type for prehashed signing - Add `VerifyingKey::{verify_prehash_strict, is_weak}` - Add `pkcs` feature to support PKCS [#8](https://togithub.com/dalek-cryptography/ed25519-dalek/issues/8) (de)serialization of `SigningKey` and `VerifyingKey` - Add `fast` feature to include basepoint tables - Add tests for validation criteria - Impl `DigestSigner`/`DigestVerifier` for `SigningKey`/`VerifyingKey`, respectively - Impl `Hash` for `VerifyingKey` - Impl `Clone`, `Drop`, and `ZeroizeOnDrop` for `SigningKey` - Remove `rand` dependency - Improve key deserialization diagnostics ### [`v2.0.0-rc.3`](https://togithub.com/dalek-cryptography/ed25519-dalek/compare/2.0.0-rc.2...2.0.0-rc.3) [Compare Source](https://togithub.com/dalek-cryptography/ed25519-dalek/compare/2.0.0-rc.2...2.0.0-rc.3)Configuration
📅 Schedule: Branch creation - "" in timezone America/Los_Angeles, Automerge - "after 8pm,before 6am" in timezone America/Los_Angeles.
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.