PackageTrack
Sign in Get early access

curve25519-dalek

A pure-Rust implementation of group operations on ristretto255 and Curve25519

5.0.0 236M downloads/mo #440 most downloaded on crates.io dalek-cryptography/curve25519-dalek

What this package is like to depend on

Last release 1 months ago

06 Jul 2026

Ships unpredictably

gaps range from 1 weeks to 13 months

Nearly every release is documented

notes for 27 of 29 stable releases

55 versions withdrawn

withdrawn after publishing

10 years old

104 releases · first in 2016

9 releases in the last 12 months

see the full history below

Release timeline

104 releases · Dec 2016 to Jul 2026
2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 60 of 104
  1. 5.0.0 06 Jul 2026
    Release notes

    Breaking Changes

    • Update edition to 2024
    • Update the MSRV from 1.60 to 1.85
    • Remove group-bits feature due to soundness issues with underlying trait (#909)
    • Re-export rand_core (#908)
    • Rename unstable_avx512 backend to avx512, and no longer require nightly for it (#913)
    • Rename Scalar::batch_invert -> Scalar::invert_batch for consistency. Also make it no-alloc. (#789)
    • Remove deprecated functions FieldElement::as_bytes() and EdwardsPoint::nonspec_map_to_curve() (#778)
    • Upgrade rand_core dependency to v0.10.0
    • Upgrade digest and sha2 deps

    Other Changes

    • Perf: Use maximum available NAF window size in VartimePrecomputedStraus (#848)
    • Perf: Skip checking 8 candidate points in RistrettoPoint::lizard_decode (#882)
    • Add Lizard bytes-to-point injection for Ristretto. Gated under lizard feature. (#826)
    • Add an allocating batch inversion called Scalar::invert_batch_alloc (#789)
    • Add Scalar::div_by_2 (#805)
    • Add EdwardsPoint::hash_to_curve (#786)
    • Undeprecate Scalar::from_bits() (#780)
    • Use constant-time equality testing for compressed Ristretto and Edwards points, rather than autoderived equality

    4.x series

    Open source →
    Release notes

    Breaking Changes

    • Update edition to 2024
    • Update the MSRV from 1.60 to 1.85
    • Remove group-bits feature due to soundness issues with underlying trait (#909)
    • Re-export rand_core (#908)
    • Rename Scalar::batch_invert -> Scalar::invert_batch for consistency. Also make it no-alloc. (#789)
    • Remove deprecated functions FieldElement::as_bytes() and EdwardsPoint::nonspec_map_to_curve() (#778)
    • Upgrade rand_core dependency to v0.10.0
    • Upgrade digest and sha2 deps

    Other Changes

    • Perf: Use maximum available NAF window size in VartimePrecomputedStraus (#848)
    • Perf: Skip checking 8 candidate points in RistrettoPoint::lizard_decode (#882)
    • Add Lizard bytes-to-point injection for Ristretto. Gated under lizard feature. (#826)
    • Add an allocating batch inversion called Scalar::invert_batch_alloc (#789)
    • Add Scalar::div_by_2 (#805)
    • Add EdwardsPoint::hash_to_curve (#786)
    • Undeprecate Scalar::from_bits() (#780)
    • Use constant-time equality testing for compressed Ristretto and Edwards points, rather than autoderived equality

    4.x series

    Open source →
  2. 5.0.0-rc.1 18 Jun 2026 pre-release

    Nothing published for this version

  3. 5.0.0-rc.0 28 May 2026 pre-release

    Nothing published for this version

  4. 5.0.0-pre.6 04 Feb 2026 pre-release

    Nothing published for this version

  5. 5.0.0-pre.5 25 Jan 2026 pre-release

    Nothing published for this version

  6. 5.0.0-pre.4 03 Jan 2026 pre-release

    Nothing published for this version

  7. 5.0.0-pre.3 05 Dec 2025 pre-release

    Nothing published for this version

  8. 5.0.0-pre.2 22 Nov 2025 pre-release

    Nothing published for this version

  9. 5.0.0-pre.1 04 Sep 2025 pre-release

    Nothing published for this version

  10. 5.0.0-pre.0 09 Jul 2025 pre-release

    Nothing published for this version

  11. 4.2.0 09 Jul 2025 withdrawn
    Release notes

    NOTE: yanked because hash_to_curve was improperly implemented (#785)

    • Move AVX-512 backend selection logic to a separate CFG flag that requires nightly
    • Add Elligator2 hashing methods EdwardsPoint::hash_to_curve() and FieldElement::hash_to_field()
    • Deprecate FieldElement::as_bytes in favor of FieldElement::to_bytes
    • Remove deprecated FieldElement::as_bytes
    • Add batch conversion function EdwardsPoint::to_montgomery_batch()
    • Make VartimePrecomputedStraus::optional_mixed_multiscalar_mul() and VartimeRistrettoPrecomputation::vartime_mixed_multiscalar_mul() accept more points than static scalars
    Open source →
  12. 4.1.3 18 Jun 2024
    Release notes
    • Security: Fix timing leak in Scalar subtraction on u32, u64, fiat_u32, and fiat_u64 backends
    • Fix assorted new warnings and lints from rustc and clippy
    Open source →
  13. 4.1.2 07 Feb 2024
    Release notes
    • Fix nightly SIMD build
    Open source →
  14. 4.1.1 20 Sep 2023
    Release notes
    • Mark constants::BASEPOINT_ORDER deprecated from pub API
    • Add implementation for PrimeFieldBits, behind the group-bits feature flag.
    Open source →
  15. 4.1.0 06 Sep 2023
    Release notes
    • Add arbitrary integer multiplication with MontgomeryPoint::mul_bits_be
    • Add implementations of the ff and group traits, behind the group feature flag
    • Adapt to new types introduced in fiat-crypto 0.2 in fiat backend
    • Fix no_std for fiat backend
    • Mark Scalar::clamp_integer as #[must_use]
    • Various documentation fixes
    Open source →
  16. 4.0.0 22 Jul 2023
    Release notes

    Breaking changes

    • Update the MSRV from 1.41 to 1.60
    • Provide SemVer policy
    • Make digest an optional feature
    • Make rand_core an optional feature
    • Remove std feature flag
    • Remove nightly feature flag
    • Automatic serial backend selection between u32 and u64 over the default u32
    • Backend simd is now automatically selected over serial when a supported CPU is detected
    • Backend override is now via cfg(curve25519_dalek_backend) over additive features
    • Provide override to select u32 or u64 backend via cfg(curve25519_dalek_bits)
    • Replace methods Scalar::{zero, one} with constants Scalar::{ZERO, ONE}
    • Deprecate EdwardsPoint::hash_from_bytes and rename it EdwardsPoint::nonspec_map_to_curve
    • Require including a new trait, use curve25519_dalek::traits::BasepointTable whenever using EdwardsBasepointTable or RistrettoBasepointTable
    • Scalar::from_canonical_bytes now returns CtOption
    • Scalar::is_canonical now returns Choice
    • Remove Scalar::from_bytes_clamped and Scalar::reduce
    • Deprecate and feature-gate Scalar::from_bits behind legacy_compatibility

    Other changes

    • Add EdwardsPoint::{mul_base, mul_base_clamped}, MontgomeryPoint::{mul_base, mul_base_clamped}, and BasepointTable::mul_base_clamped
    • Add precomputed-tables feature
    • Update Maintenance Policies for SemVer
    • Migrate documentation to docs.rs hosted
    • Fix backend documentation generation
    • Fix panic when Ristretto::double_and_compress_batch receives the identity point
    • Remove byteorder dependency
    • Update the criterion dependency to 0.4.0
    • Include README.md into crate Documentation
    • Update the rand_core dependency version and the rand dev-dependency version.
    • Relax the zeroize dependency to ^1
    • Update the edition from 2015 to 2021

    3.x series

    Open source →
  17. 4.0.0-rc.3 24 Jun 2023 pre-release

    Nothing published for this version

  18. 4.0.0-rc.2 26 Mar 2023 pre-release

    Nothing published for this version

  19. 4.0.0-rc.1 02 Feb 2023 pre-release

    Nothing published for this version

  20. 4.0.0-rc.0 28 Jan 2023 pre-release

    Nothing published for this version

  21. 4.0.0-pre.5 14 Dec 2022 pre-release

    Nothing published for this version

  22. 4.0.0-pre.4 13 Dec 2022 pre-release

    Nothing published for this version

  23. 4.0.0-pre.3 13 Dec 2022 pre-release

    Nothing published for this version

  24. 4.0.0-pre.2 16 Feb 2022 pre-release

    Nothing published for this version

  25. 4.0.0-pre.1 17 Aug 2021 pre-release

    Nothing published for this version

  26. 4.0.0-pre.0 14 Apr 2021 pre-release

    Nothing published for this version

  27. 3.2.1 16 Feb 2022

    Nothing published for this version

  28. 3.2.0 04 Aug 2021
    Release notes
    • Add support for getting the identity element for the Montgomery form of curve25519, which is useful in certain protocols for checking contributory behaviour in derivation of shared secrets.
    Open source →
  29. 3.1.3 16 Feb 2022

    Nothing published for this version

  30. 3.1.2 04 Aug 2021
    Release notes
    • Revert a commit which mistakenly removed support for zeroize traits for some point types, as well as elligator2 support for Edwards points.
    Open source →
  31. 3.1.1 03 Aug 2021
    Release notes
    • Fix documentation builds on nightly due to syntax changes to #![cfg_attr(feature = "nightly", doc = include_str!("../README.md"))].
    Open source →
  32. 3.1.0 14 Apr 2021
    Release notes
    • Add support for the Elligator2 encoding for Edwards points.
    • Add two optional formally-verified field arithmetic backends which use the Fiat Crypto project's Rust code, which is generated from proofs of functional correctness checked by the Coq theorem proving system.
    • Add support for additional sizes of precomputed tables for basepoint scalar multiplication.
    • Fix an unused import.
    • Add support for using the zeroize traits with all point types. Note that points are not automatically zeroized on Drop, but that consumers of curve25519-dalek should call these methods manually when needed.
    Open source →
  33. 3.0.3 20 Jul 2021
    Release notes
    • Fix documentation builds on nightly due to syntax changes to #![cfg_attr(feature = "nightly", doc = include_str!("../README.md"))].
    Open source →
  34. 3.0.2 08 Jan 2021
    Release notes
    • Multiple documentation typo fixes.
    • Fixes to make using alloc+no_std possible for stable Rust.
    Open source →
  35. 3.0.1 07 Jan 2021
    Release notes
    • Update the optional packed-simd dependency to rely on a newer, maintained version of the packed-simd-2 crate.
    Open source →
  36. 3.0.0 18 Aug 2020
    Release notes

    Breaking changes

    • Update the digest dependency to 0.9. This requires a major version because the digest traits are part of the public API, but there are otherwise no changes to the API.

    2.x series

    Open source →
  37. 2.1.3 13 Jul 2021
    Release notes
    • Fix documentation builds on nightly due to syntax changes to #![fg_attr(feature = "nightly", doc = include_str!("../README.md"))].
    Open source →
  38. 2.1.2 08 Jan 2021
    Release notes
    • Multiple documentation typo fixes.
    • Fix alloc feature working with stable rust.
    Open source →
  39. 2.1.1 07 Jan 2021
    Release notes
    • Update the optional packed-simd dependency to rely on a newer, maintained version of the packed-simd-2 crate.
    Open source →
  40. 2.1.0 29 May 2020
    Release notes
    • Make Scalar::from_bits a const fn, allowing its use in const contexts.
    Open source →
  41. 2.0.0 22 Nov 2019
    Release notes

    The only significant change is the data model change to the serde feature; besides the rand_core version bump, there are no other user-visible changes.

    Breaking changes

    • Fix a data modeling error in the serde feature pointed out by Trevor Perrin which caused points and scalars to be serialized with length fields rather than as fixed-size 32-byte arrays. This is a breaking change, but it fixes compatibility with serde-json and ensures that the serde-bincode encoding matches the conventional encoding for X/Ed25519.
    • Update rand_core to 0.5, allowing use with new rand versions.

    Other changes

    • Switch from clear_on_drop to zeroize (by Tony Arcieri).
    • Require subtle = ^2.2.1 and remove the note advising nightly Rust, which is no longer required as of that version of subtle. See the subtle changelog for more details.
    • Update README.md for 2.x series.
    • Remove the build.rs hack which loaded the entire crate into its own build.rs to generate constants, and keep the constants in the source code.

    1.x series

    Open source →
  42. 2.0.0-alpha.2 15 Nov 2019 pre-release

    Nothing published for this version

  43. 2.0.0-alpha.1 25 Oct 2019 pre-release withdrawn

    Nothing published for this version

  44. 2.0.0-alpha.0 24 Oct 2019 pre-release withdrawn

    Nothing published for this version

  45. 1.2.6 08 Jan 2021
    Release notes
    • Fixes to make using alloc+no_std possible for stable Rust.
    Open source →
  46. 1.2.5 07 Jan 2021
    Release notes
    • Update the optional packed-simd dependency to rely on a newer, maintained version of the packed-simd-2 crate.
    Open source →
  47. 1.2.4 02 Jul 2020
    Release notes
    • Specify a semver bound for clear_on_drop rather than an exact version, addressing an issue where changes to inline assembly in rustc prevented clear_on_drop from working without an update.
    Open source →
  48. 1.2.3 07 Aug 2019
    Release notes
    • Fix an issue identified by a Quarkslab audit (and Jack Grigg), where manually constructing unreduced Scalar values, as needed for X/Ed25519, and then performing scalar/scalar arithmetic could compute incorrect results.
    • Switch to upstream Rust intrinsics for the IFMA backend now that they exist in Rust and don't need to be defined locally.
    • Ensure that the NAF computation works correctly, even for parameters never used elsewhere in the codebase.
    • Minor refactoring to EdwardsPoint decompression.
    • Fix broken links in documentation.
    • Fix compilation on nightly broken due to changes to the #[doc(include)] path root (not quite correctly done in 1.2.2).
    Open source →
  49. 1.2.2 31 Jul 2019
    Release notes
    • Fix a typo in an internal doc-comment.
    • Add the "crypto" tag to crate metadata.
    • Fix compilation on nightly broken due to changes to the #[doc(include)] path root.
    Open source →
  50. 1.2.1 06 Jun 2019
    Release notes
    • Fix a bug in bucket index calculations in the Pippenger multiscalar algorithm for very large input sizes.
    • Add a more extensive randomized multiscalar multiplication consistency check to the test suite to prevent regressions.
    • Ensure that multiscalar and NAF computations work correctly on extremal Scalar values constructed via from_bits.
    Open source →
  51. 1.2.0 04 Jun 2019 withdrawn
    Release notes
    • New multiscalar multiplication algorithm with better performance for large problem sizes. The backend algorithm is selected transparently using the size hints of the input iterators, so no changes are required for client crates to start using it.
    • Equality of Edwards points is now checked in projective coordinates.
    • Serde can now be used with no_std.
    Open source →
  52. 1.1.4 07 May 2019 withdrawn
    Release notes
    • Fix typos in documentation comments.
    • Remove unnecessary Default bound on Scalar::from_hash.
    Open source →
  53. 1.1.3 15 Feb 2019
    Release notes
    • Reverts the change in 1.1.0 to allow owned and borrowed RNGs, which caused a breakage due to a subtle interaction with ownership rules. (The RngCore change is retained).
    Open source →
  54. 1.1.2 15 Feb 2019 withdrawn
    Release notes
    Open source →
  55. 1.1.1 15 Feb 2019 withdrawn
    Release notes
    • Fixed an issue related to #[cfg(rustdoc)] which prevented documenting multiple backends.
    Open source →
  56. 1.1.0 15 Feb 2019 withdrawn
    Release notes
    • Adds support for precomputation for multiscalar multiplication.
    • Restructures the internal source tree into serial and vector backends (no change to external API).
    • Adds a new IFMA backend which sets speed records.
    • The avx2_backend feature is now an alias for the simd_backend feature, which autoselects an appropriate vector backend (currently AVX2 or IFMA).
    • Replaces the rand dependency with rand_core.
    • Generalizes trait bounds on RistrettoPoint::random() and Scalar::random() to allow owned and borrowed RNGs and to allow RngCore instead of Rng.
    Open source →
  57. 1.1.0-pre.0 14 Feb 2019 pre-release withdrawn

    Nothing published for this version

  58. 1.0.3 28 Jan 2019
    Release notes
    • Adds ConstantTimeEq implementation for compressed points.
    Open source →
  59. 1.0.2 18 Jan 2019 withdrawn
    Release notes
    • Fixes a typo in the naming of variables in Ristretto formulas (no change to functionality).
    Open source →
  60. 1.0.1 13 Dec 2018 withdrawn
    Release notes
    • Depends on the stable 2.0 version of subtle instead of 2.0.0-pre.0.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive