Skip to content

chore(deps): bump the noble-scure-crypto group across 1 directory with 5 updates - #506

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/noble-scure-crypto-a7f1a2c58b
Open

chore(deps): bump the noble-scure-crypto group across 1 directory with 5 updates#506
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/noble-scure-crypto-a7f1a2c58b

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 17, 2026

Copy link
Copy Markdown
Contributor

Bumps the noble-scure-crypto group with 5 updates in the / directory:

Package From To
@noble/curves 2.2.0 2.4.0
@noble/hashes 2.2.0 2.4.0
@scure/base 2.2.0 2.3.0
@scure/bip32 2.2.0 2.3.0
@scure/bip39 2.2.0 2.3.0

Updates @noble/curves from 2.2.0 to 2.4.0

Release notes

Sourced from @​noble/curves's releases.

2.4.0

  • Harden FROST distributed key generation against round-one transcript substitution.
    • This is not a vulnerability; it's protection against those who don't follow the FROST spec. Spec wants user to preserve rounds.
  • FROST: Enforced RFC 9591 point validation for BLS and BN
  • POPRF: replace inversion with const-time version
  • Weierstrass: harden public-key boundaries & infinity handling
    • ECDH and ECDSA now reject the identity even for point types whose generic codec permits it
    • Curves that disallow infinity cannot encode it, while opted-in curves use the canonical SEC 1 0x00 encoding.
  • DER: Bounded ECDSA signature and INTEGER sizes before bigint conversion, preventing malformed inputs from causing disproportionate parsing and allocation work
  • Snapshot all security-sensitive state (passed arguments) to ensure it can't be mutated

Special thanks to Red Team (Rob Hamilton, CalleBTC, Omer Talip) and 1Password's Off-by-1 Labs.

Full Changelog: paulmillr/noble-curves@2.3.0...2.4.0

2.3.0

Security & constant-timeness

  • Hardened constant-time execution from best-effort to actual guarantees: no measurable timing behavior on 200K samples. Scalar multiplication now uses secret-scalar blinding via CSPRNG, un-precomputed points now use a constant-time fixed-window multiply instead of variable-time fallbacks, and modular arithmetic helpers were hardened. New CT benchmarks track timing behavior.
  • General hardening across all modules
  • Fixes from the Trail of Bits review: recovered ECDSA signatures are now bound to their recovery id, non-canonical BLS signature encodings are rejected, Edwards <-> Montgomery conversion helpers were corrected, and FROST DKG round-2 retry handling was hardened.

X25519 hardening

It was possible to execute a remote timing attack on X25519, across many samples, and learn up to 4.036 bits of long-term private key. Other 247 bits were NOT affected.

The impact: mainly fingerprinting (recognition of key across deployments), NOT key recovery, NOT X25519 breakage. Maintainer was also not able to escalate to co-residency (SMT).

Reported and found by:

  • George Stergiopoulos, Department of Informatics, Athens University of Economics and Business, Greece (geostergiop@aueb.gr)
  • Constantinos Patsakis, Department of Informatics, University of Piraeus, 80 Karaoli & Dimitriou str., 18534 Piraeus, Greece (kpatsak@unipi.gr)

Performance

  • ECDSA/EdDSA verification up to +32%, Weierstrass ECDH up to +19%, x25519 getPublicKey 2.7×
  • BLS signatures 2x
  • Init time (first getPublicKey or sign) reduced ~2x for ed25519, p256, p384, p521
  • Also faster verification of recovered signatures, pairing tower / FFT / Pippenger optimizations, and joint-MSM paths in FROST and OPRF
  • getPublicKey / sign got slower because we've decreased window size (W=8 => W=6) and hardened CT execution (see above). Long-running apps that prefer 2.2.0-level speed can restore it with one line: secp256k1.Point.BASE.precompute(8) (likewise for other curves).

Misc

  • Smaller bundles: improved tree-shaking across modules
  • Better error messages and type checks
  • Upgrade noble-hashes to 2.3.0, with performance boost
  • Reduce on-disk size 1831kb → 1548kb (-282kb) by disabling source maps (they became less relevant).

Full Changelog: paulmillr/noble-curves@2.2.0...2.3.0

Changelog

Sourced from @​noble/curves's changelog.

2.4.0 (2026-08-27)

  • Harden FROST distributed key generation against round-one transcript substitution.
    • This is not a vulnerability; it's protection against those who don't follow the FROST spec. Spec wants user to preserve rounds.
  • FROST: Enforced RFC 9591 point validation for BLS and BN
  • POPRF: replace inversion with const-time version
  • Weierstrass: harden public-key boundaries & infinity handling
    • ECDH and ECDSA now reject the identity even for point types whose generic codec permits it
    • Curves that disallow infinity cannot encode it, while opted-in curves use the canonical SEC 1 0x00 encoding.
  • DER: Bounded ECDSA signature and INTEGER sizes before bigint conversion, preventing malformed inputs from causing disproportionate parsing and allocation work
  • Snapshot all security-sensitive state (passed arguments) to ensure it can't be mutated

Special thanks to Red Team (Rob Hamilton, CalleBTC, Omer Talip) and 1Password's Off-by-1 Labs.

2.3.0 (2026-08-06)

Security and constant-timeness

  • Hardened constant-time execution from best-effort to actual guarantees, with no measurable timing behavior across 200,000 samples. Scalar multiplication now uses secret-scalar blinding via CSPRNG, unprecomputed points use a constant-time fixed-window multiply instead of variable-time fallbacks, and modular arithmetic helpers were hardened. New constant-time benchmarks track timing behavior.
  • General hardening across all modules.
  • Applied fixes from the Trail of Bits review: recovered ECDSA signatures are now bound to their recovery ID, non-canonical BLS signature encodings are rejected, Edwards-to-Montgomery conversion helpers were corrected, and FROST DKG round-two retry handling was hardened.

X25519 hardening

It was possible to execute a remote timing attack on X25519 across many samples and learn up to 4.036 bits of a long-term private key. The other 247 bits were not affected.

The impact is primarily fingerprinting—a key can be recognized across deployments—not key recovery or a break of X25519. The maintainer was also unable to escalate the attack to co-residency (SMT).

Reported and found by:

  • George Stergiopoulos, Department of Informatics, Athens University of Economics and Business, Greece (geostergiop@aueb.gr).
  • Constantinos Patsakis, Department of Informatics, University of Piraeus, 80 Karaoli & Dimitriou Street, 18534 Piraeus, Greece (kpatsak@unipi.gr).

Performance

  • Improved ECDSA and EdDSA verification by up to 32%, Weierstrass ECDH by up to 19%, and X25519 getPublicKey by 2.7×.
  • Improved BLS signature performance by 2×.
  • Reduced initialization time for the first getPublicKey or sign call by approximately 2× for Ed25519, P-256, P-384, and P-521.
  • Also improved verification of recovered signatures, pairing tower, FFT, and Pippenger performance, as well as joint-MSM paths in FROST and OPRF.
  • getPublicKey and sign became slower because the window size was decreased from 8 to 6 and constant-time execution was hardened. Long-running applications that prefer 2.2.0-level speed can restore it with secp256k1.Point.BASE.precompute(8), and likewise for other curves.

Miscellaneous

  • Improved tree-shaking for smaller bundles.
  • Improved error messages and type checks.
  • Upgraded noble-hashes to 2.3.0 for improved performance.
  • Reduced on-disk size from 1,831 KB to 1,548 KB by disabling source maps, which have become less relevant.
Commits

Updates @noble/hashes from 2.2.0 to 2.4.0

Release notes

Sourced from @​noble/hashes's releases.

2.4.0

Security and correctness

  • Protect passed options against mutation / pollution
  • keccakprg: fail until entropy is added
  • webcrypto: reject output sizes which crashed engine
  • blake3: fix tree merging for multi-terabyte streams
  • Improve zeroization

Misc

  • Speed-up Argon2 by 20%
  • Argon2 cost options are now optional. The defaults are t: 3, m: 1024 ** 2 KiB (1 GiB), p: 1, dkLen: 32, and a 1 GiB maxmem limit; larger-memory calls must set maxmem explicitly.
  • Corrected scrypt's default maxmem to work for N: 2 ** 20, r: 8, and p: 1
  • nextTick and asyncLoop now yield through scheduler.yield() when available or setTimeout otherwise, allowing timers, I/O, and rendering to progress. They also accept optional rejection cleanup; async Argon2, PBKDF2, and scrypt use it to wipe work state if scheduling is aborted.

Full Changelog: paulmillr/noble-hashes@2.3.0...2.4.0

2.3.0

Improve speed:

  • +10-45% 32b inputs across all hashes
  • +40% SHA-3 / SHAKE, +50% 1mb KT128 / KT256 / TurboSHAKE, +20% kmac
  • 2.2x argon
  • +20% pbkdf2 and hkdf

Other changes:

  • Better error messages and stricter type checks everywhere
  • Bugfix: HMAC _cloneInto now preserves canXOF (#134, ChALkeR); Argon2d typo rename (#135).
  • blake2.compress renamed to _compress (marked internal).
  • Reduce on-disk unpacked size 869kb → 665kb (-204kb) by disabling source maps (they became less relevant).

Full Changelog: paulmillr/noble-hashes@2.2.0...2.3.0

Changelog

Sourced from @​noble/hashes's changelog.

2.4.0 (2026-08-27)

Security and correctness

  • Protect passed options against mutation / pollution
  • keccakprg: fail until entropy is added
  • webcrypto: reject output sizes which crashed engine
  • blake3: fix tree merging for multi-terabyte streams
  • Improve zeroization

Misc

  • Speed-up Argon2 by 20%
  • Argon2 cost options are now optional. The defaults are t: 3, m: 1024 ** 2 KiB (1 GiB), p: 1, dkLen: 32, and a 1 GiB maxmem limit; larger-memory calls must set maxmem explicitly.
  • Corrected scrypt's default maxmem to work for N: 2 ** 20, r: 8, and p: 1
  • nextTick and asyncLoop now yield through scheduler.yield() when available or setTimeout otherwise, allowing timers, I/O, and rendering to progress. They also accept optional rejection cleanup; async Argon2, PBKDF2, and scrypt use it to wipe work state if scheduling is aborted.

2.3.0 (2026-08-06)

Performance

  • Improved 32-byte input performance across all hashes by 10–45%.
  • Improved SHA-3 and SHAKE by 40%, one-megabyte KangarooTwelve, MarsupilamiFourteen, and TurboSHAKE by 50%, and KMAC by 20%.
  • Improved Argon2 performance by 2.2×.
  • Improved PBKDF2 and HKDF performance by 20%.

Other changes

  • Added better error messages and stricter type checks throughout the package.
  • Fixed HMAC._cloneInto so it preserves canXOF in issue #134, reported by @​ChALkeR, and corrected an Argon2d typo in issue #135.
  • Renamed blake2.compress to the internal _compress method.
  • Reduced unpacked on-disk size from 869 KB to 665 KB by disabling less-relevant source maps.
Commits

Updates @scure/base from 2.2.0 to 2.3.0

Release notes

Sourced from @​scure/base's releases.

2.3.0

  • Massive speed-up of all algorithms. 1 MB speed:
    • base64 encode: 18x, 22mb/s => 395 mb/s
    • base32 encode: 23x, 16mb/s => 367 mb/s
    • base16 encode: 20x, 15mb/s => 294 mb/s
    • bech32 toWords: 8x, 38mb/s => 296 mb/s
    • base58 decode: 8x, 8mb/s => 67.2 mb/s
  • -3.4% reduce of minified bundle size.
  • Reduce on-disk package size: 163kb → 136kb (-27.4kb), by disabling source maps (they became less relevant).
  • Better error messages and stricter type checks
  • Breaking: we've removed internal utils: utils, bytesToString / str, stringToBytes / bytes, and the SomeCoders type. Those were always internal. The coders (base16, base64, …) are unaffected.

Full Changelog: paulmillr/scure-base@2.2.0...2.3.0

Changelog

Sourced from @​scure/base's changelog.

2.3.0 (2026-08-08)

  • Massive speed-up of all algorithms. 1 MB speed:
    • base64 encode: 18x, 22mb/s => 395 mb/s
    • base32 encode: 23x, 16mb/s => 367 mb/s
    • base16 encode: 20x, 15mb/s => 294 mb/s
    • bech32 toWords: 8x, 38mb/s => 296 mb/s
    • base58 decode: 8x, 8mb/s => 67.2 mb/s
  • -3.4% reduce of minified bundle size.
  • Reduce on-disk package size: 163kb → 136kb (-27.4kb), by disabling source maps (they became less relevant).
  • Better error messages and stricter type checks
  • Breaking: we've removed internal utils: utils, bytesToString / str, stringToBytes / bytes, and the SomeCoders type. Those were always internal. The coders (base16, base64, …) are unaffected.
Commits
  • 5b846f5 Release 2.3.0.
  • 27c9e1a Update jsbt
  • 5e98800 test: use new syntax
  • 655728b base58: limit decode to 64kb
  • ff17fbe Small fixes
  • e480812 Speed-up base58 15x. Speed-up bech32 2x. Remove utils, bytes, str, bytesToStr...
  • 3b06771 Massive speed-up. Up to: 15x base16, 14x base32, 14x base64, 6x bech32.toWords.
  • b009c91 Move benchmark directory
  • acab2cb Update jsbt
  • cc09895 Update jsbt. Improve error messages and type checks.
  • See full diff in compare view

Updates @scure/bip32 from 2.2.0 to 2.3.0

Release notes

Sourced from @​scure/bip32's releases.

2.3.0

  • Improve validation and error messages.
  • Upgrade deps: noble-hashes, noble-curves and scure-base to 2.3.0.
  • Reduce on-disk package size: 47.5kb → 35.7kb (-11.8kb), by disabling source maps (they became less relevant).
  • Reduce npm package size: 13.3kb → 8.63kb (-4.68kb)

Full Changelog: paulmillr/scure-bip32@2.2.0...2.3.0

Changelog

Sourced from @​scure/bip32's changelog.

2.3.0 (2026-08-08)

  • Improve validation and error messages.
  • Upgrade deps: noble-hashes, noble-curves and scure-base to 2.3.0.
  • Reduce on-disk package size: 47.5kb → 35.7kb (-11.8kb), by disabling source maps (they became less relevant).
  • Reduce npm package size: 13.3kb → 8.63kb (-4.68kb)
Commits

Updates @scure/bip39 from 2.2.0 to 2.3.0

Release notes

Sourced from @​scure/bip39's releases.

2.3.0

  • Rewrite package: the logic is now declared in scure-bip39 instead of @scure/base dependency, which was removed.
  • Upgrade noble-hashes to 2.3.0.

Full Changelog: paulmillr/scure-bip39@2.2.0...2.3.0

Changelog

Sourced from @​scure/bip39's changelog.

2.3.0 (2026-08-08)

  • Rewrite package: the logic is now declared in scure-bip39 instead of @scure/base dependency, which was removed.
  • Upgrade noble-hashes to 2.3.0.
Commits

@dependabot dependabot Bot added the dependencies Pull requests that update a dependency file label Aug 17, 2026
@dependabot
dependabot Bot requested a review from solidsnakedev as a code owner August 17, 2026 09:19
@dependabot dependabot Bot added the dependencies Pull requests that update a dependency file label Aug 17, 2026
@dependabot
dependabot Bot force-pushed the dependabot/npm_and_yarn/noble-scure-crypto-a7f1a2c58b branch from fc3b0bf to bcf8f76 Compare August 24, 2026 09:19
…h 5 updates

Bumps the noble-scure-crypto group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@noble/curves](https://github.com/paulmillr/noble-curves) | `2.2.0` | `2.4.0` |
| [@noble/hashes](https://github.com/paulmillr/noble-hashes) | `2.2.0` | `2.4.0` |
| [@scure/base](https://github.com/paulmillr/scure-base) | `2.2.0` | `2.3.0` |
| [@scure/bip32](https://github.com/paulmillr/scure-bip32) | `2.2.0` | `2.3.0` |
| [@scure/bip39](https://github.com/paulmillr/scure-bip39) | `2.2.0` | `2.3.0` |



Updates `@noble/curves` from 2.2.0 to 2.4.0
- [Release notes](https://github.com/paulmillr/noble-curves/releases)
- [Changelog](https://github.com/paulmillr/noble-curves/blob/main/CHANGELOG.md)
- [Commits](paulmillr/noble-curves@2.2.0...2.4.0)

Updates `@noble/hashes` from 2.2.0 to 2.4.0
- [Release notes](https://github.com/paulmillr/noble-hashes/releases)
- [Changelog](https://github.com/paulmillr/noble-hashes/blob/main/CHANGELOG.md)
- [Commits](paulmillr/noble-hashes@2.2.0...2.4.0)

Updates `@scure/base` from 2.2.0 to 2.3.0
- [Release notes](https://github.com/paulmillr/scure-base/releases)
- [Changelog](https://github.com/paulmillr/scure-base/blob/main/CHANGELOG.md)
- [Commits](paulmillr/scure-base@2.2.0...2.3.0)

Updates `@scure/bip32` from 2.2.0 to 2.3.0
- [Release notes](https://github.com/paulmillr/scure-bip32/releases)
- [Changelog](https://github.com/paulmillr/scure-bip32/blob/main/CHANGELOG.md)
- [Commits](paulmillr/scure-bip32@2.2.0...2.3.0)

Updates `@scure/bip39` from 2.2.0 to 2.3.0
- [Release notes](https://github.com/paulmillr/scure-bip39/releases)
- [Changelog](https://github.com/paulmillr/scure-bip39/blob/main/CHANGELOG.md)
- [Commits](paulmillr/scure-bip39@2.2.0...2.3.0)

---
updated-dependencies:
- dependency-name: "@noble/curves"
  dependency-version: 2.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: noble-scure-crypto
- dependency-name: "@noble/hashes"
  dependency-version: 2.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: noble-scure-crypto
- dependency-name: "@scure/base"
  dependency-version: 2.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: noble-scure-crypto
- dependency-name: "@scure/bip32"
  dependency-version: 2.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: noble-scure-crypto
- dependency-name: "@scure/bip39"
  dependency-version: 2.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: noble-scure-crypto
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot force-pushed the dependabot/npm_and_yarn/noble-scure-crypto-a7f1a2c58b branch from bcf8f76 to a238252 Compare August 31, 2026 09:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants