Skip to content

Latest commit

 

History

History
145 lines (86 loc) · 9.07 KB

File metadata and controls

145 lines (86 loc) · 9.07 KB

secp256k1-jdk Changes

A high-level view of the changes in each secp256k1-jdk binary release.

v0.3.1

See the instructions in the README for accessing the binary via the GitLab Maven repository. A future release of secp25k1-jdk will be in Maven Central.

API Changes

  • SecpXOnlyPubKeyImpl: implement equals() and hashCode() — PR #438

  • SecpKeyPair, SecpPoint: deprecate unused, unvalidated constructors — PR #448

  • secp-ffm: drop export of internal o.b.s.ffm.jextract package — PR #446

  • o.b.s.ffm package-info: reflect JDK 25+ requirement — PR #447

Validation and Hardening

  • SecpPrivKey, SecpFieldElement: add defensive copy of byte[] in of() — PR #437, PR #439

  • Secp256k1Foreign, Secp256k1Bouncy: validate ECDSA message hashes are 32 bytes — PR #440

  • Secp256k1Foreign: validate auxiliaryRandom is 32 bytes — PR #442

  • SecpPrivKeyImpl: prevent serialization by throwing NotSerializableException — PR #441

Bug fixes

  • SecpKeyPairImpl: fix isDestroyed() to query the underlying private key rather than always returning false — PR #443

  • Secp256k1Foreign: make close() idempotent — PR #445

  • ForeignRegistrationFeature: add missing downcall registration, fixing a native-image runtime failure in the ecdsa-example — PR #478

Bouncy Castle Implementation

  • Use Bouncy Castle’s BIP340Signer for Schnorr Signatures — PR #467

Schnorr / libsecp256k1 (FFM) Implementation

  • Secp256k1Foreign: optimize signLowR — PR #468

  • Secp256k1Foreign: use Arena.ofConfined() for all allocation, remove static globalArena — PR #479, PR #469

Testing Improvements

  • SchnorrTest: parameterize to test with both FFM and Bouncy Castle — PR #449

  • SecpPrivKeyTest: add integration test of construct, destroy — PR #483

Build and Test Improvements

  • GHA build.yml: add native build/run for the ecdsa-example, remove duplicate verify lifecycle phase, fix CI_REVISION using sed — PR #478, PR #477, PR #429

  • flake.nix: simplify forEachSystem with nixpkgs.lib.genAttrs — PR #435

  • maven-publish-release.sh: add --dry-run option, set JRELEASER_OUTPUT_DIRECTORY; output flattened pom to target — PR #431, PR #430

  • dependabot.yml: switch package-ecosystem to "maven", raise concurrent pull request limit to 10, only update org.graalvm.sdk on patch versions — PR #455, PR #475, PR #463

Dependency Updates

  • flake.nix: update Nixpkgs from 6b31628 to 8623c4c (multiple dependabot updates) — PR #432, PR #436, PR #444, PR #451, PR #465, PR #481

  • secp-bouncy: update Bouncy Castle to 1.85 — PR #456

  • Update Kotlin to 2.4.10 (kotlin-maven-plugin, kotlin-stdlib) — PR #458, PR #473

  • Update JUnit to 6.1.2 — PR #461

  • Update GraalVM nativeimage to 25.0.4, native-build-tools to 1.1.5 — PR #472, PR #459

  • Update maven-surefire-plugin and maven-surefire-report-plugin to 3.5.6 — PR #464, PR #462

  • Update maven-jar-plugin to 3.5.1 — PR #470

  • Update license-maven-plugin to 5.1.1 — PR #471

  • Update flatten-maven-plugin to 1.8.0 — PR #480

Warning
This is pre-alpha software and unaudited. Please use with extreme caution and do not use on Bitcoin MAINNET.

v0.3

Released: 2026-06-07

See the instructions in the README for accessing the binary via the GitLab Maven repository. A future release of secp25k1-jdk will be in Maven Central.

Build and Test Improvements

  • Convert build from Gradle to Maven — PR #424

  • Add jreleaser.toml configuration, use jreleaser to publish to GitLab Maven Repo — PR #424

  • Add jextract to Nix default devshell — PR #425

Dependency Updates

  • flake.nix: update to Nixpkgs nixos-26.05 — PR #420

  • Update to Kotlin 2.4.0

v0.2.3

Released: 2026-05-29

See the instructions in the README for accessing the binary via the GitLab Maven repository. A future release of secp25k1-jdk will be in Maven Central.

API Changes

  • EcdsaSignature: deprecate of() static factory methods — PR #404

Dependency Updates

  • flake.nix: update to Nixpkgs release-26.05 — PR #411

  • flake.nix: remove use of nixpkgs-unstable (The latest libsecp256k1 is now on release-26.05) — PR #417

Testing Improvements

  • Upgrade to JUnit 6.1.0 — PR #402

Warning
This is pre-alpha software and unaudited. Please use with extreme caution and do not use on Bitcoin MAINNET.

v0.2.2

Released: 2026-05-22

See the instructions in the README for accessing the binary via the GitLab Maven repository. A future release of secp25k1-jdk will be in Maven Central.

Bug fixes

  • Secp256k1Foreign: fix endianness in ecdsaSignatureParseCompact() — see PR #399.

Warning
This is pre-alpha software and unaudited. Please use with extreme caution and do not use on Bitcoin MAINNET.

v0.2.1

Released: 2026-05-07

This is the first release that is "feature-complete" for both the libsecp256k1 (FFM) implementation and the Bouncy Castle implementation. It should be considered pre-alpha, but is ready for integration testing with wallet applications, etc.

See the instructions in the README for accessing the binary via the GitLab Maven repository. A future release of secp25k1-jdk will be in Maven Central.

Warning
This is pre-alpha software and unaudited. Please use with extreme caution and do not use on Bitcoin MAINNET.

New Features

  • Schnorr Signatures are implemented for Bouncy Castle. See Issue 21.

  • Grinding for Low-R signatures is implemented for both libsecp256k1 and Bouncy Castle. See Issue 136 and Issue 325

API changes and bug fixes

  • Secp256k1Foreign, BouncySecp256k1: serialization and canonicalization fixes — see PR 348.

  • There have been many changes for better ECC field and point validation.

  • There have been numerous, but relatively minor API changes.

Major Dependency Updates

  • secp-bouncy: Update to Bouncy Castle 1.84. See PR 343.

  • secp-ffm: libsecp256k1 FFM module now requires JDK 25 or later. See Issue 281.

For the closed GitHub milestone with a detailed list of PRs and Issues see Milestone: Version 0.2.1