PackageTrack
Sign in Get early access

secp256k1

Rust wrapper library for Pieter Wuille's `libsecp256k1`. Implements ECDSA and BIP 340 signatures for the SECG elliptic curve group secp256k1 and related utilities.

0.31.1 74M downloads/mo #969 most downloaded on crates.io rust-bitcoin/rust-secp256k1

What this package is like to depend on

Last release 9 months ago

30 Oct 2025

Release timing varies

gaps range from 2 weeks to 7 months

Some releases are documented

notes for 50 of 89 stable releases

6 versions withdrawn

withdrawn after publishing

11 years old

98 releases · first in 2015

3 releases in the last 12 months

see the full history below

Release timeline

98 releases · May 2015 to Oct 2025
2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 60 of 98
  1. 0.32.0-beta.2 30 Oct 2025 pre-release
    Release notes

    secp256k1-0.32.0-beta.2

    Open source →
  2. 0.32.0-beta.1 28 Oct 2025 pre-release
    Release notes

    secp256k1-0.32.0-beta.1

    Open source →
  3. 0.32.0-beta.0 14 Oct 2025 pre-release
    Release notes

    rust-secp 0.32.0-beta.0

    Open source →
  4. 0.31.1 23 Jun 2025
    Release notes
    • Update deprecation notes with since instead of TBD.
    Open source →
  5. 0.31.0 26 Apr 2025
    Release notes
    • Update rand to 0.9 #788
    • Create keys from owned array values instead of from references #781
    • Add from_u8_masked RecoveryId constructor #778
    • Update upstream to 0cdc758a56360bf58a851fe91085a327ec97685a (secp256k1-sys 0.6) #764
    • Add Keypair::sign_schnorr_no_aux_rand #762
    • Replace Message with Into<Message> in ECDSA signing API #755
    • Deprecate ElligatorSwiftParty in favor of Party #752
    Open source →
  6. 0.30.0 09 Oct 2024
    Release notes
    • Allow signing variable-length messages #706
    • Bump MSRV to 1.63 #709
    • Deprecate Message::from_digest_slice in favor of Message::from_digest #712
    • Truncate debug output of SecretKey; tighten bitcoin_hashes dependency version #722
    • Simplify and improve consistency of secret key types' debug output #726
    • Simplify and improve consistency of public key types' debug output #745
    • Feature-gate KeyPair::from_str on global-context or alloc #728
    • Add infallible constructors for schnorr::Signature from byteslices #730
    • Deprecate slice-parsing methods in favor of array-parsing ones #737
    • Make RecoveryId an enum rather than integer #743
    Open source →
  7. 0.29.1 06 Sep 2024

    Nothing published for this version

  8. 0.29.0 02 Apr 2024
    Release notes
    • Deprecate ThirtyTwoByteHash #686

      This trait turned out to be problematic during upgrade because we support a ranged dependency for bitcoin_hashes. Consider implementing From<T> for Message for your type iff your type is a 32 byte hash (ie, output from a hash algorithm that produces a 32 byte digest like sha256). When using the impl, consider using Message::from instead of hash.into() because we will be introducing generics in a future version and the compiler will not be able to work out the target type.

    • Bump MSRV to Rust v1.56.1 #693

    • Upgrade hashes using range dependency version = ">= 0.12, <= 0.14" #690

    • Depend on latest secp256k1-sys (vendors secp256k1 v0.4.1) #688

    Open source →
  9. 0.28.2 31 Jan 2024
    Release notes
    • Implement Hash for Scalar #674
    • Implement Ord and PartialOrd for RecoverableSignature #611
    • Add byte accessors to ElligatorSwiftSharedSecret #676
    Open source →
  10. 0.28.1 03 Jan 2024
    Release notes
    • Update secp265k1-sys to 0.9.2 (contains some fixes for WASM and a FFI binding fix)
    • Various improvements to the SerializedSignature type #658 #659
    Open source →
  11. 0.28.0 09 Oct 2023 withdrawn
    Release notes
    • Add bindings to the ElligatorSwift implementation #627
    • Depend on recent release of bitcoin_hashes v0.13.0 #621
    • Add a verify function to PublicKey #618
    • Add serialize function for schnorr::Signature #607
    • Bump MSRV to 1.48 #595
    • Remove implementations of PartialEq, Eq, PartialOrd, Ord, and Hash from the impl_array_newtype macro. Users will now need to derive these traits if they are wanted.
    Open source →
  12. 0.27.0 17 Mar 2023
    Release notes Open source →
  13. 0.26.0 15 Jan 2023
    Release notes
    • Update libsecp25k1 to v0.2.0
    Open source →
  14. 0.25.0 12 Dec 2022
    Release notes Open source →
  15. 0.24.3 13 Jan 2023

    Nothing published for this version

  16. 0.24.2 07 Dec 2022

    Nothing published for this version

  17. 0.24.1 25 Oct 2022 withdrawn
    Release notes
    Open source →
  18. 0.24.0 19 Jul 2022
    Release notes
    Open source →
  19. 0.23.5 07 Dec 2022

    Nothing published for this version

  20. 0.23.4 19 Jul 2022 withdrawn
    Release notes Open source →
  21. 0.23.3 29 Jun 2022
    Release notes Open source →
  22. 0.23.2 27 Jun 2022
    Release notes Open source →
  23. 0.23.1 24 Jun 2022
    Release notes

    Enable "rand/std_rng" feature when the crate's "rnd-std" feature is enabled.

    Open source →
  24. 0.23.0 22 Jun 2022
    Release notes

    The major change in this version is the increase of the Minimum Supported Rust Version (MSRV) from 1.29 to 1.41.1, this is a big change because it introduces Rust Edition 2018 to the codebase along with all the benefits that brings.

    Breaking changes

    New features/APIs

    Other improvements

    • global-context-less-secure feature now activates global-context.
    • githooks/ directory added for contributors
    • Clippy is now used in CI and the code is clippy-compliant
    • Various documentation improvements
    • Various CI/development improvements
    • Various code quality improvements/refactors
    Open source →
  25. 0.22.2 07 Dec 2022

    Nothing published for this version

  26. 0.22.1 11 Mar 2022 withdrawn
    Release notes
    • Reintroduce accidentally removed possibility to create SharedSecret from byte serialization
    Open source →
  27. 0.22.0 09 Mar 2022
    Release notes
    Open source →
  28. 0.21.3 23 Feb 2022
    Release notes
    Open source →
  29. 0.21.2 06 Jan 2022

    Nothing published for this version

  30. 0.21.1 06 Jan 2022

    Nothing published for this version

  31. 0.21.0 05 Jan 2022 withdrawn
    Release notes
    Open source →
  32. 0.20.3 18 Jun 2021
    Release notes
    Open source →
  33. 0.20.2 28 Apr 2021
    Release notes Open source →
  34. 0.20.1 15 Jan 2021

    Nothing published for this version

  35. 0.20.0 03 Jan 2021
    Release notes Open source →
  36. 0.19.0 27 Aug 2020
    Release notes
    • Update MSRV to 1.29.0
    Open source →
  37. 0.18.0 27 Aug 2020
    Release notes
    Open source →
  38. 0.17.2 09 Jan 2020
    Release notes
    • Fix linking in the fuzztarget feature.
    Open source →
  39. 0.17.1 11 Dec 2019
    Release notes
    • Correctly prefix the secp256k1-sys links field in Cargo.toml.
    Open source →
  40. 0.17.0 10 Dec 2019
    Release notes
    • Move FFI into secp256k1-sys crate.
    • Add external-symbols feature for not building upstream.
    • Add functions to create a context from a raw pointer.
    • Support passing custom hash functions to ECDH.
    • Wrap Secp256k1 from raw context in a ManuallyDrop.
    Open source →
  41. 0.16.0 05 Nov 2019

    Nothing published for this version

  42. 0.15.5 09 Sep 2019

    Nothing published for this version

  43. 0.15.4 06 Sep 2019 withdrawn
    Release notes
    • Add rand-std feature.
    • Pin the cc build-dep version to < 1.0.42 to remain compatible with rustc 1.22.0.
    • Changed all as_*ptr() to a new safer CPtr trait
    Open source →
  44. 0.15.3 19 Aug 2019

    Nothing published for this version

  45. 0.15.2 12 Aug 2019
    Release notes
    • Add feature lowmemory that reduces the EC mult window size to require significantly less memory for the validation context (~680B instead of ~520kB), at the cost of slower validation. It does not affect the speed of signing, nor the size of the signing context.
    Open source →
  46. 0.15.1 02 Aug 2019

    Nothing published for this version

  47. 0.15.0 26 Jul 2019
    Release notes
    • Implement hex human-readable serde for PublicKey
    • Implement fmt::LowerHex for SecretKey and PublicKey
    • Relax cc dependency requirements
    • Add links manifest key to prevent cross-version linkage
    Open source →
  48. 0.14.1 14 Jul 2019
    Release notes
    • Implemented FFI functions: secp256k1_context_create and secp256k1_context_destroy in rust.
    Open source →
  49. 0.14.0 08 Jul 2019
    Release notes
    • Feature-gate endormorphism optimization because of a lack of clarity with respect to patents
    • Got full no-std support including eliminating all use of libc in C bindings. PR 1 PR 2. This library should be usable in bare-metal environments and with rust-wasm. Thanks to Elichai Turkel for driving this forward!
    • Update upstream libsecp256k1 version to 143dc6e9ee31852a60321b23eea407d2006171da
    Open source →
  50. 0.13.0 21 May 2019
    Release notes
    • Update minimum supported rust compiler 1.22.
    • Replace serialize_der function with SerializedSignature struct.
    • Allow building without a standard library (no_std). std feature is on by default.
    • Add human readable serialization to Signatures and SecretKeys.
    • Stop displaying 0 bytes if a Signature is less than 72 bytes.
    • Only compile recovery module if feature recovery is set (non-default).
    • Update rand dependency from 0.4 to 0.6 and add rand_core 0.4 dependency.
    • Relax cc dependency requirements.
    Open source →
  51. 0.12.2 18 Jan 2019
    Release notes
    • Fuzzer bug fix
    Open source →
  52. 0.12.1 15 Jan 2019
    Release notes
    • Minor bug fixes
    • Fixed cc crate version to maintain minimum compiler version without breakage
    • Removed libc dependency as it our uses have been subsumed into stdlib
    Open source →
  53. 0.12.0 03 Dec 2018
    Release notes
    • Overhaul API to remove context object when no precomputation is needed
    • Add ThirtyTwoByteHash trait which allows infallible conversions to Messages
    • Disallow 0-valued Message objects since signatures on them are forgeable for all keys
    • Remove ops::Index implementations for Signature
    • Remove depecated constants and unsafe ZERO_KEY constant
    Open source →
  54. 0.11.6 19 Dec 2018

    Nothing published for this version

  55. 0.11.5 09 Nov 2018
    Release notes
    • Use pub extern crate to export dependencies whose types are exported
    Open source →
  56. 0.11.4 06 Nov 2018
    Release notes
    • Add FromStr and Display for Signature and both key types
    • Fix build.rs for Windows and rustfmt configuration for docs.rs
    • Correct endianness issue for Signature Debug output
    Open source →
  57. 0.11.3 28 Oct 2018
    Release notes
    • No changes, just fixed docs.rs configuration
    Open source →
  58. 0.11.2 11 Sep 2018
    Release notes
    • Correct endianness issue in RFC6979 nonce generation
    Open source →
  59. 0.11.1 22 Aug 2018
    Release notes
    • Put PublicKey::combine back because it is currently needed to implement Lightning BOLT 3
    Open source →
  60. 0.11.0 22 Aug 2018
    Release notes
    • Update rand to 0.4 and gcc 0.3 to cc 1.0. (rand 0.5 exists but has a lot of breaking changes and no longer compiles with 1.14.0.)
    • Remove PublicKey::combine from API since it cannot be used with anything else in the API
    • Detect whether 64-bit compilation is possible, and do it if we can (big performance improvement)
    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