EP
← All projectsElements Project

libwally-core

Cross-platform wallet primitives for keys, addresses, transactions, PSBT, and Elements.

BitcoinCryptographic librariesSoftware walletsNormal
Repository coverage

110 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

21security candidates29second-pass queue104AI analyses
6commits · 30 days
17commits · 60 days
76commits · 180 days
101commits · 365 days
Backfill bands
Aug 5 → Feb 622 seen3 candidatesComplete
Feb 6 → Jun 652 seen3 candidatesComplete
Jun 6 → Jul 67 seen0 candidatesComplete
Jul 6 → Aug 514 seen1 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

62/100 average clarity
15Strong · 80–100
48Adequate · 60–79
37Thin · 40–59
10Opaque · 0–39
1security candidate with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Jon Griffiths901886159
KY-U111075
Erick Cestari1110100
Ondřej Češka111050
dependabot[bot]707093
pythcoiner201069
Daniel Newton202055
odudex202062
longhutianjie101072
Bruno Garcia100083
Greg Sanders101068
Leonardo Comandini101060
Analysis record

Published AI watches

Last scanned 48 minutes ago

Informational 15 AI analysisMessage 93 · Strong
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

build(deps-dev): bump browserslist in /src/wasm_package

This is a routine automated update by Dependabot that bumps the version of a JavaScript build tool called browserslist, used only in the WebAssembly packaging part of the project. The change only updates version numbers and metadata in a l…

834987a8by dependabot[bot]+65−511 file
No security note in commit
Informational 14 AI analysisMessage 93 · Strong
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

build(deps-dev): bump fast-uri from 3.1.5 to 3.1.7 in /src/wasm_package

This is a routine automated update by Dependabot that bumps the JavaScript helper library fast-uri from version 3.1.5 to 3.1.7 inside the WebAssembly packaging directory. The commit itself only changes a package-lock.json file and does not…

Dependency update for a known URI-parsing libraryfast-uri 3.1.7 is associated with a fix for a malformed-URI parsing issue (CVE-2025-24035)Only package-lock.json changed; no application code modified
05843a61by dependabot[bot]+8−71 file
No security note in commit
Low 40 AI analysisMessage 73 · Adequate
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

psbt: return an error if fetching input_amount when not present

This commit changes a library function so that it now returns an error when a PSBT/PSET input amount is missing, instead of silently returning zero. It also adds a new 'has_input_amount' check so callers can ask whether the value exists be…

API behavior change: missing field now returns error instead of default zeroAdds presence-check accessor to prevent callers from reading unset valuesABI break noted by vendor
fa3a5859by Jon Griffiths+44−108 files
No security note in commit
Low 34 AI analysisMessage 50 · Thin
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

psbt: return an error if fetching output_amount when not present

This commit changes a library function so that it returns an error when asked for an output amount that is not actually present, instead of silently returning zero. This prevents callers from accidentally treating a missing amount as a rea…

API now distinguishes 'missing amount' from 'amount is zero' via explicit error codePresence check (has_amount) is enforced before returning sensitive numeric valueTest updated to assert exception when fetching amount on blinded output
07871406by Jon Griffiths+32−162 files
No security note in commit
Moderate 51 AI analysisMessage 75 · Adequate
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

psbt: reject trailing data when parsing if WALLY_PSBT_PARSE_FLAG_COMPLETE is used

This commit tightens how the library reads PSBT (Partially Signed Bitcoin Transaction) data. It adds a new parsing flag that requires the parser to consume the entire input, and turns that flag on automatically when reading base64-encoded …

New strict-input-consumption parse flag addedBase64 decoder now enforces complete input consumption automaticallyTrailing bytes after a valid PSBT now rejected in COMPLETE mode
3bf543cdby KY-U+26−55 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

build(deps-dev): bump fast-uri from 3.1.4 to 3.1.5 in /src/wasm_package

This is an automated dependency update by Dependabot that bumps the JavaScript package fast-uri from version 3.1.4 to 3.1.5 inside the WebAssembly packaging directory. The change only updates version numbers and package hashes in package-l…

d3f6adf0by dependabot[bot]+6−61 file
No security note in commit
Low 47 AI analysisMessage 75 · Adequate
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

aes: add missing length check for multi-chunk encrypt/decrypt, with tests

This commit fixes a missing safety check in libwally-core's AES encryption/decryption function. Previously, callers could pass an output buffer smaller than the input data, which could lead to writing past the end of the buffer (a buffer o…

Missing length check enabling potential buffer overflowOut-of-bounds write risk in symmetric crypto routineReported by independent external researcher
e9fed8a4by Jon Griffiths+35−122 files
No security note in commit
Low 36 AI analysisMessage 60 · Adequate
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

java: fix output type for psbt_get_output_amount

This commit fixes a Java language binding bug where a function that reads a Bitcoin transaction output amount was incorrectly declared to return a 'size' type (a memory/length value) instead of an unsigned 64-bit integer. Output amounts in…

Incorrect JNI/SWIG return type for cryptographic/monetary valuePotential integer truncation of PSBT output amountType confusion between size_t and uint64_t in language bindings
aed82410by Jon Griffiths+1−11 file
No security note in commit
Informational 15 AI analysisMessage 73 · Adequate
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

crypto: add ec_public_key_compress to produce a compressed pubkey

This commit adds a new public-key compression function to a cryptographic library and updates the existing decompression function so both can accept already-compressed or already-uncompressed keys as input. It also adds tests and language …

03351cc9by Jon Griffiths+92−1610 files
No security note in commit
Informational 12 AI analysisMessage 55 · Thin
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

tests: add tests for parsing invalid der sigs

This commit only adds new test cases to check that the library correctly rejects malformed cryptographic signatures. It does not change any production code, so by itself it cannot introduce or fix a security vulnerability. It may be relate…

DER signature parsing validation is being exercisedTest vectors include R/S overflow and zero R/S casesNo functional code change in this commit
824e8a33by Jon Griffiths+11−01 file
No security note in commit
Moderate 62 AI analysisMessage 85 · Strong
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

sign: disallow overlong der encodings and zero r or s values

This commit tightens signature validation in a cryptographic library. It now rejects malformed DER-encoded signatures that are longer than allowed, or where one of the signature numbers (R or S) is zero. Previously, the underlying secp256k…

Cryptographic input validation hardeningRejection of overlong DER-encoded ECDSA signaturesRejection of zero R or S signature components
e7894ee6by Jon Griffiths+6−11 file
Vendor flagged security relevance
Low 33 AI analysisMessage 73 · Adequate
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

descriptor: add derive_bip32_key to derive a given descriptor key

This commit adds a new public API to libwally-core that lets users derive BIP32 keys directly from a parsed Bitcoin/Elements descriptor. It also fixes two consistency bugs in how descriptor keys are looked up: it now correctly routes reque…

New API exposes derivation of private BIP32 keys from descriptors; misuse by callers could leak private key materialSLIP77 blinding keys are returned in the private-key field of an ext_key, which may surprise callers and lead to incorrect handlingRefactoring of generate_script changes the public-key extraction offset logic from a conditional x-only offset to EC_PUBLIC_KEY_LEN - output_len; this is intended to be equivalent but is a sensitive crypto code path
00d26754by Jon Griffiths+234−4911 files
No security note in commit
Informational 13 AI analysisMessage 93 · Strong
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

build(deps-dev): bump fast-uri from 3.1.2 to 3.1.4 in /src/wasm_package

This is an automated update by Dependabot that bumps the JavaScript helper library fast-uri from version 3.1.2 to 3.1.4 inside the WebAssembly packaging directory. It only changes a package-lock.json file and is marked as a development dep…

Dependency version bump of fast-uri (indirect devDependency)No changes to libwally-core native/WASM cryptographic codeNo vendor security advisory or CVE referenced in commit message
c25fc5fdby dependabot[bot]+6−61 file
No security note in commit
Informational 15 AI analysisMessage 38 · Opaque
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

Bump version to 1.5.6

This commit is a routine version bump from 1.5.5 to 1.5.6. It only changes version numbers in build files, documentation, and package metadata. There are no code changes that affect security or functionality.

0c41f38fby Jon Griffiths+12−129 files
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

update CHANGES.md for release 1.5.6

This commit only updates the project's changelog file (CHANGES.md) to document what is included in the upcoming 1.5.6 release. It does not change any source code, build scripts, tests, or documentation that affects how the software runs. T…

9947fc4eby Jon Griffiths+8−21 file
Vendor flagged security relevance
Moderate 53 AI analysisMessage 73 · Adequate
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

descriptor: reject nested expressions with unconsumed trailing input

This commit fixes a parsing bug in libwally-core's Bitcoin descriptor handling. Previously, if extra characters appeared after a valid nested expression inside parentheses, the parser silently ignored them. For example, 'wsh(pk(KEY)xyz)' w…

Input validation bypass: parser accepted malformed descriptors with trailing garbageSilent truncation/misinterpretation of user-supplied descriptor stringsPotential for consensus or policy mismatch between systems parsing the same descriptor
f23a1c97by odudex+17−02 files
No security note in commit
Moderate 59 AI analysisMessage 50 · Thin
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

descriptor: require type B for the top level miniscript in sh()/wsh()

This commit tightens validation for Bitcoin descriptors that wrap a miniscript inside sh() (pay-to-script-hash) or wsh() (pay-to-witness-script-hash). Previously, the library accepted any miniscript fragment as the top-level child, even fr…

Input-validation hardening for descriptor parsingRejection of non-top-level miniscript fragments in script wrappersNew negative test vectors for malformed descriptors
6f656241by odudex+33−22 files
No security note in commit
Low 44 AI analysisMessage 45 · Thin
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

update CHANGES.md for release 1.5.5

This commit is just a changelog update for libwally-core version 1.5.5. It mentions that the release 'de-optimizes some memcpy calls on x86 to prevent leaks via extended registers.' That wording suggests a security-sensitive fix, but the a…

Changelog entry describes a security-motivated fixMentions prevention of information leaks via CPU extended registersRelates to secure memory handling of cryptographic secrets
d0ac03baby Jon Griffiths+5−01 file
Vendor flagged security relevance
Informational 15 AI analysisMessage 38 · Opaque
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

Bump version to 1.5.5

This commit is a routine version bump from 1.5.4 to 1.5.5 across build files, documentation, and package metadata. It changes only version strings and the build version constant; no code logic is modified.

78499f00by Jon Griffiths+12−129 files
No security note in commit
Informational 15 AI analysisMessage 67 · Adequate
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

ci: re-enable clear tests

This commit only changes the project's continuous integration (CI) configuration. It re-enables a set of tests called 'clear tests' that were previously disabled in automated build pipelines, and adds a compiler warning suppression for an …

1009497bby Jon Griffiths+4−41 file
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

Lower-priorityswig: update c api calls removed in newer python versionsby Jon Griffiths · 374df231 · Sep 3, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · Jon Griffiths

swig: update c api calls removed in newer python versions

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityswig: fix apple python build by providing calloc()by Jon Griffiths · 255673e6 · Sep 3, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · Jon Griffiths

swig: fix apple python build by providing calloc()

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI review queuedbuild(deps-dev): bump browserslist in /src/wasm_packageby dependabot[bot] · 834987a8 · Sep 3, 2026 · 1 fileMessage 93 · StrongInformational 15Details
Commit message · dependabot[bot]

build(deps-dev): bump browserslist in /src/wasm_package

Bumps [browserslist](https://github.com/browserslist/browserslist) from 4.28.1 to 4.28.8.
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.28.1...4.28.8)

---
updated-dependencies:
- dependency-name: browserslist
dependency-version: 4.28.8
dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
automated dependency-update discountsecond-pass: broader security terminology
AI analysis · Informational 15/100

This is a routine automated update by Dependabot that bumps the version of a JavaScript build tool called browserslist, used only in the WebAssembly packaging part of the project. The change only updates version numbers and metadata in a lock file. There is no indication of a security fix or vulnerability.

AI review queuedbuild(deps-dev): bump fast-uri from 3.1.5 to 3.1.7 in /src/wasm_packageby dependabot[bot] · 05843a61 · Sep 2, 2026 · 1 fileMessage 93 · StrongInformational 14Details
Commit message · dependabot[bot]

build(deps-dev): bump fast-uri from 3.1.5 to 3.1.7 in /src/wasm_package

Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.5 to 3.1.7.
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.5...v3.1.7)

---
updated-dependencies:
- dependency-name: fast-uri
dependency-version: 3.1.7
dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
automated dependency-update discountsecond-pass: broader security terminology
AI analysis · Informational 14/100

This is a routine automated update by Dependabot that bumps the JavaScript helper library fast-uri from version 3.1.5 to 3.1.7 inside the WebAssembly packaging directory. The commit itself only changes a package-lock.json file and does not alter any of libwally-core's cryptographic or wallet code. The newer fast-uri version is known to fix a URI-parsing bug that could, in some applications, cause a program to hang or behave unexpectedly when processing a malformed URI. Because this dependency is used only in the build/test tooling for the WASM package and is not part of the shipped cryptographic library, the practical security risk to libwally-core users is very low.

Lower-prioritybech32: fix encoding a maximum length segwit addressby Bruno Garcia · 2888dbac · Sep 2, 2026 · 2 filesMessage 83 · StrongTriage 5Details
Commit message · Bruno Garcia

bech32: fix encoding a maximum length segwit address

bech32_encode() allows an encoded address of up to 90 characters, as
BIP-173 specifies, but wally_addr_segwit_from_bytes() encodes into a
90 byte stack buffer. When the address is exactly 90 characters long the
NUL terminator is written one byte past the end of the buffer.

Any 30 character hrp with a 32 byte version 0 program hits the boundary,
as does any other combination whose encoded length is 90.

Size the buffer for the maximum length plus the terminator, matching
what the blech32 encoder already does, and add the boundary case to the
bech32 test vectors so it is exercised in both directions.

Found by bitcoinfuzz.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidence
Lower-prioritypython: add missing unsigned constant workaroundsby Jon Griffiths · 069441d9 · Aug 26, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Jon Griffiths

python: add missing unsigned constant workarounds

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Security candidatepsbt: return an error if fetching input_amount when not presentby Jon Griffiths · fa3a5859 · Aug 9, 2026 · 8 filesMessage 73 · AdequateLow 40Details
Commit message · Jon Griffiths

psbt: return an error if fetching input_amount when not present

Add has_input_amount to allow callers to determine field presence in the
same way as output_amount.

Also remove non-existent input_value accessors from the SWIG Java
wrapper.

Note this is an ABI change.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing boundarysigning or wallet path
AI analysis · Low 40/100

This commit changes a library function so that it now returns an error when a PSBT/PSET input amount is missing, instead of silently returning zero. It also adds a new 'has_input_amount' check so callers can ask whether the value exists before reading it. The change is an intentional fix to prevent callers from accidentally treating a missing amount as zero. It also cleans up some old, non-existent function names in the Java wrapper.

Security candidatepsbt: return an error if fetching output_amount when not presentby Jon Griffiths · 07871406 · Aug 9, 2026 · 2 filesMessage 50 · ThinLow 34Details
Commit message · Jon Griffiths

psbt: return an error if fetching output_amount when not present

Note this is an ABI change.

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Low 34/100

This commit changes a library function so that it returns an error when asked for an output amount that is not actually present, instead of silently returning zero. This prevents callers from accidentally treating a missing amount as a real zero-value output, which could lead to incorrect transaction handling in Bitcoin/Elements PSBT workflows.

Security candidatepsbt: reject trailing data when parsing if WALLY_PSBT_PARSE_FLAG_COMPLETE is usedby KY-U · 3bf543cd · Aug 6, 2026 · 5 filesMessage 75 · AdequateModerate 51Details
Commit message · KY-U

psbt: reject trailing data when parsing if WALLY_PSBT_PARSE_FLAG_COMPLETE is used

Set the flag unconditionally for base64 inputs.

Add PSBT v0 and v2 regression test cases with a trailing byte.

75/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
signing boundaryfuzzing or regression evidencesigning or wallet path
AI analysis · Moderate 51/100

This commit tightens how the library reads PSBT (Partially Signed Bitcoin Transaction) data. It adds a new parsing flag that requires the parser to consume the entire input, and turns that flag on automatically when reading base64-encoded PSBTs. Previously, extra bytes tacked onto the end of a PSBT could be silently ignored. The change is defensive: it helps prevent malformed or intentionally padded PSBTs from being accepted as valid.

AI review queuedbuild(deps-dev): bump fast-uri from 3.1.4 to 3.1.5 in /src/wasm_packageby dependabot[bot] · d3f6adf0 · Aug 5, 2026 · 1 fileMessage 93 · StrongInformational 15Details
Commit message · dependabot[bot]

build(deps-dev): bump fast-uri from 3.1.4 to 3.1.5 in /src/wasm_package

Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.4 to 3.1.5.
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.4...v3.1.5)

---
updated-dependencies:
- dependency-name: fast-uri
dependency-version: 3.1.5
dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
automated dependency-update discountsecond-pass: broader security terminology
AI analysis · Informational 15/100

This is an automated dependency update by Dependabot that bumps the JavaScript package fast-uri from version 3.1.4 to 3.1.5 inside the WebAssembly packaging directory. The change only updates version numbers and package hashes in package-lock.json. There is no indication in the commit itself that this fixes a security issue, and no security references were provided.

Lower-priorityjava: use len fn to allocate wrapper buffer for aes encrypt/decryptby Jon Griffiths · c68f6683 · Aug 3, 2026 · 1 fileMessage 65 · AdequateTriage 0Details
Commit message · Jon Griffiths

java: use len fn to allocate wrapper buffer for aes encrypt/decrypt

Reported-by: Efstratios Kaplanellis (@5tratan) of Almamater Technologies

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Security candidateaes: add missing length check for multi-chunk encrypt/decrypt, with testsby Jon Griffiths · e9fed8a4 · Aug 3, 2026 · 2 filesMessage 75 · AdequateLow 47Details
Commit message · Jon Griffiths

aes: add missing length check for multi-chunk encrypt/decrypt, with tests

Reported-by: Efstratios Kaplanellis (@5tratan) of Almamater Technologies

75/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
cryptography-sensitive path
AI analysis · Low 47/100

This commit fixes a missing safety check in libwally-core's AES encryption/decryption function. Previously, callers could pass an output buffer smaller than the input data, which could lead to writing past the end of the buffer (a buffer overflow). The patch now rejects such calls and adds tests for many invalid input combinations. The issue was reported by an outside security researcher.

Security candidatejava: fix output type for psbt_get_output_amountby Jon Griffiths · aed82410 · Aug 3, 2026 · 1 fileMessage 60 · AdequateLow 36Details
Commit message · Jon Griffiths

java: fix output type for psbt_get_output_amount

Reported-by: Efstratios Kaplanellis (@5tratan) of Almamater Technologies

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing boundary
AI analysis · Low 36/100

This commit fixes a Java language binding bug where a function that reads a Bitcoin transaction output amount was incorrectly declared to return a 'size' type (a memory/length value) instead of an unsigned 64-bit integer. Output amounts in Bitcoin are 64-bit integers, so the wrong return type could cause the returned value to be truncated, misinterpreted, or trigger type-conversion errors in Java applications using libwally-core. The fix is a one-line change in the SWIG interface file used to generate Java wrappers.

Security candidatecrypto: add ec_public_key_compress to produce a compressed pubkeyby Jon Griffiths · 03351cc9 · Jul 31, 2026 · 10 filesMessage 73 · AdequateInformational 15Details
Commit message · Jon Griffiths

crypto: add ec_public_key_compress to produce a compressed pubkey

Allow both compress and decompress to work (as a no-op) on already
compressed/decompressed pubkeys.

Co-authored-by: odudex <odudex@proton.me>

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 15/100

This commit adds a new public-key compression function to a cryptographic library and updates the existing decompression function so both can accept already-compressed or already-uncompressed keys as input. It also adds tests and language bindings. There is no security vulnerability here; it is a normal feature addition with defensive input validation.

AI review queuedtests: add tests for parsing invalid der sigsby Jon Griffiths · 824e8a33 · Jul 31, 2026 · 1 fileMessage 55 · ThinInformational 12Details
Commit message · Jon Griffiths

tests: add tests for parsing invalid der sigs

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This commit only adds new test cases to check that the library correctly rejects malformed cryptographic signatures. It does not change any production code, so by itself it cannot introduce or fix a security vulnerability. It may be related to earlier work that hardened signature parsing, but the diff only contains tests.

Security candidatesign: disallow overlong der encodings and zero r or s valuesby Jon Griffiths · e7894ee6 · Jul 31, 2026 · 1 fileMessage 85 · StrongModerate 62Details
Commit message · Jon Griffiths

sign: disallow overlong der encodings and zero r or s values

libsecp will happily parse and return such signatures without error,
however they can never be valid (in the overlong case, because libsecp
internally sets R to zero). Reject them up-front when parsing rather
than failing when attempting to use them later.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
signing boundarysigning or wallet path
AI analysis · Moderate 62/100

This commit tightens signature validation in a cryptographic library. It now rejects malformed DER-encoded signatures that are longer than allowed, or where one of the signature numbers (R or S) is zero. Previously, the underlying secp256k1 library would accept these invalid forms silently, which could lead to later failures or unexpected behavior when the signatures are used in Bitcoin/Elements transactions.

Security candidatedescriptor: add derive_bip32_key to derive a given descriptor keyby Jon Griffiths · 00d26754 · Jul 26, 2026 · 11 filesMessage 73 · AdequateLow 33Details
Commit message · Jon Griffiths

descriptor: add derive_bip32_key to derive a given descriptor key

Make key fetching consistent by handling blinding keys in the key
lookup.

Mark slip77 node flags correctly so their key features are returned
correctly.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
secret or key material
AI analysis · Low 33/100

This commit adds a new public API to libwally-core that lets users derive BIP32 keys directly from a parsed Bitcoin/Elements descriptor. It also fixes two consistency bugs in how descriptor keys are looked up: it now correctly routes requests for the special 'blinding key' index, and it correctly marks SLIP77 blinding key nodes so callers can tell what kind of key they are getting. There is no direct evidence in the commit that these changes fix an exploitable vulnerability; they appear to be correctness and API-completeness improvements.

AI review queuedbuild(deps-dev): bump fast-uri from 3.1.2 to 3.1.4 in /src/wasm_packageby dependabot[bot] · c25fc5fd · Jul 25, 2026 · 1 fileMessage 93 · StrongInformational 13Details
Commit message · dependabot[bot]

build(deps-dev): bump fast-uri from 3.1.2 to 3.1.4 in /src/wasm_package

Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.2 to 3.1.4.
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.2...v3.1.4)

---
updated-dependencies:
- dependency-name: fast-uri
dependency-version: 3.1.4
dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
automated dependency-update discountsecond-pass: broader security terminology
AI analysis · Informational 13/100

This is an automated update by Dependabot that bumps the JavaScript helper library fast-uri from version 3.1.2 to 3.1.4 inside the WebAssembly packaging directory. It only changes a package-lock.json file and is marked as a development dependency, meaning it is not part of the core cryptographic library shipped to users. There is no direct evidence in the commit that this fixes a security problem in libwally-core itself, but dependency updates can sometimes address bugs or vulnerabilities in the helper library.

Lower-prioritydescriptor: add taproot (tapscript) descriptor supportby pythcoiner · 0d983134 · Jul 17, 2026 · 17 filesMessage 83 · StrongTriage 0Details
Commit message · pythcoiner

descriptor: add taproot (tapscript) descriptor support

Adds tr() descriptors with script paths: the WALLY_LEAF_VERSION_TAPSCRIPT
constant, multi_a/sortedmulti_a tapscript fragments, taptree parsing with
BIP-341 merkle-root/leaf hashing, tr() address derivation including the
key-path tweak, and the taproot tree/leaf/control-block/key-enumeration
accessor APIs. Includes the C and Python descriptor test suites.

Co-authored-by: odudex <odudex@proton.me>
Co-authored-by: Jon Griffiths <jon_p_griffiths@yahoo.com>

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI review queuedBump version to 1.5.6by Jon Griffiths · 0c41f38f · Jul 11, 2026 · 9 filesMessage 38 · OpaqueInformational 15Details
Commit message · Jon Griffiths

Bump version to 1.5.6

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit is a routine version bump from 1.5.5 to 1.5.6. It only changes version numbers in build files, documentation, and package metadata. There are no code changes that affect security or functionality.

Lower-priorityupdate CHANGES.md for release 1.5.6by Jon Griffiths · 9947fc4e · Jul 11, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Jon Griffiths

update CHANGES.md for release 1.5.6

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only updates the project's changelog file (CHANGES.md) to document what is included in the upcoming 1.5.6 release. It does not change any source code, build scripts, tests, or documentation that affects how the software runs. The changelog entries describe fixes that were already made in earlier commits, including a security-relevant fix about preventing memory leaks via extended CPU registers on x86. Because this commit itself only edits the changelog, it introduces no new security risk and requires no action.

Lower-prioritydescriptor: reject nested expressions with unconsumed trailing inputby odudex · f23a1c97 · Jul 11, 2026 · 2 filesMessage 73 · AdequateModerate 53Details
Commit message · odudex

descriptor: reject nested expressions with unconsumed trailing input

A nested expression was delimited only by its enclosing brackets and
commas, so trailing characters after it were silently ignored, e.g.
wsh(pk(KEY)xyz) parsed as wsh(pk(KEY)).

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Moderate 53/100

This commit fixes a parsing bug in libwally-core's Bitcoin descriptor handling. Previously, if extra characters appeared after a valid nested expression inside parentheses, the parser silently ignored them. For example, 'wsh(pk(KEY)xyz)' was accepted as if it were just 'wsh(pk(KEY))'. This could let malformed or attacker-crafted descriptors be misinterpreted, potentially causing two users or programs to disagree about what a wallet script actually is. The fix makes the parser reject such trailing garbage.

Lower-prioritydescriptor: require type B for the top level miniscript in sh()/wsh()by odudex · 6f656241 · Jul 11, 2026 · 2 filesMessage 50 · ThinModerate 59Details
Commit message · odudex

descriptor: require type B for the top level miniscript in sh()/wsh()

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Moderate 59/100

This commit tightens validation for Bitcoin descriptors that wrap a miniscript inside sh() (pay-to-script-hash) or wsh() (pay-to-witness-script-hash). Previously, the library accepted any miniscript fragment as the top-level child, even fragments that are not valid standalone scripts (for example, a fragment that only pushes a public key or verifies a signature but leaves a value on the stack). The change now rejects those malformed descriptors before they can be used to create addresses or transactions. The risk is that an attacker or buggy wallet could trick a user into accepting a descriptor whose script does not behave as expected, potentially making funds unspendable or enabling unexpected spending conditions.

AI review queuedBump version to 1.5.5by Jon Griffiths · 78499f00 · Jul 9, 2026 · 9 filesMessage 38 · OpaqueInformational 15Details
Commit message · Jon Griffiths

Bump version to 1.5.5

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit is a routine version bump from 1.5.4 to 1.5.5 across build files, documentation, and package metadata. It changes only version strings and the build version constant; no code logic is modified.

Lower-priorityupdate CHANGES.md for release 1.5.5by Jon Griffiths · d0ac03ba · Jul 9, 2026 · 1 fileMessage 45 · ThinLow 44Details
Commit message · Jon Griffiths

update CHANGES.md for release 1.5.5

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Low 44/100

This commit is just a changelog update for libwally-core version 1.5.5. It mentions that the release 'de-optimizes some memcpy calls on x86 to prevent leaks via extended registers.' That wording suggests a security-sensitive fix, but the actual code change is not shown in this commit—only the release note is. So we can flag the topic as potentially security-relevant, but we cannot verify the fix from this commit alone.