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 3 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.

AI review queuedtx: tidy up ensure_ checksby Jon Griffiths · 6c6ef504 · Feb 12, 2026 · 1 fileMessage 60 · AdequateInformational 12Details
Commit message · Jon Griffiths

tx: tidy up ensure_ checks

Don't take a dst parameter where not needed.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This is a small internal cleanup in transaction parsing code. The developer removed an unnecessary 'destination' parameter from several helper macros and made them use an existing pointer variable directly. There is no change to security behavior, no bug fix, and no new feature.

Security candidatebuild: add fuzzing infrastructure for security testingby Erick Cestari · c824172a · Feb 12, 2026 · 7 filesMessage 100 · StrongInformational 15Details
Commit message · Erick Cestari

build: add fuzzing infrastructure for security testing

Enable continuous security testing through libFuzzer integration.
Fuzzing helps discover memory corruption bugs, parsing edge cases,
and undefined behavior that traditional unit tests often miss.

Add --enable-fuzzing, --enable-address-sanitizer, and
--enable-ub-sanitizer options to both autotools and CMake.

Initial fuzz target covers PSBT parsing with round-trip verification
to catch serialization inconsistencies.

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarydefensive validationfuzzing or regression evidencesigning or wallet path
AI analysis · Informational 15/100

This commit only adds new build options and a test harness for fuzzing (automated security testing). It does not change any existing library code that handles PSBTs or other data, so it cannot by itself introduce a security vulnerability or fix one. It is purely an infrastructure addition to help future security testing.

Lower-prioritybuild: bump webpack in dev dependencies alsoby Jon Griffiths · 7717f1d3 · Feb 12, 2026 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · Jon Griffiths

build: bump webpack in dev dependencies also

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This commit simply updates the version of a build tool (webpack) used during development of the WebAssembly package. It does not change any runtime code that handles keys, transactions, or cryptography. There is no direct security issue visible in the change itself.

AI review queuedtx: fix check for short commitmentsby Jon Griffiths · 8ea4815a · Feb 12, 2026 · 1 fileMessage 60 · AdequateModerate 60Details
Commit message · Jon Griffiths

tx: fix check for short commitments

Thanks to @erickcestari for reporting and suggesting a fix.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Moderate 60/100

This commit fixes a bounds-check bug when reading confidential asset or value commitments in Bitcoin/Elements transactions. Before the fix, the code read the first byte of a commitment to decide its type without first confirming that at least one byte remained in the buffer. A malformed, truncated transaction could therefore read one byte past the end of the input data, potentially causing an out-of-bounds read. The patch adds a one-byte length check before that first read.

AI review queuedtx: prevent an asan false positiveby Jon Griffiths · 2583c931 · Feb 12, 2026 · 1 fileMessage 68 · AdequateInformational 20Details
Commit message · Jon Griffiths

tx: prevent an asan false positive

asan doesn't like math on NULL pointers, even when the result is unused.

This causes fuzzing to report false memory leaks when asan trips, so
trivially avoid it.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
fuzzing or regression evidencesigning or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 20/100

This is a tiny code cleanup change. The function previously calculated 'bytes + bytes_len' and assigned it to 'end' before checking whether 'bytes' was NULL. AddressSanitizer (a debugging tool) flags arithmetic on NULL pointers even when the result is never used, which made fuzzing tests falsely report memory leaks. The patch moves that calculation to after the NULL check so the debugging tool stays quiet. There is no user-facing bug or security vulnerability being fixed here.

Security candidatepsbt: handle allocation failures in set_global_txby Jon Griffiths · e45f553d · Feb 12, 2026 · 1 fileMessage 45 · ThinLow 44Details
Commit message · Jon Griffiths

psbt: handle allocation failures in set_global_tx

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Low 44/100

This commit fixes a memory-management bug in the library's Partially Signed Bitcoin Transaction (PSBT) handling. When the code failed to allocate memory for new transaction inputs or outputs, it could leave behind partially initialized data and might not clean up old input/output records properly. The patch makes sure initialization only happens if memory was actually allocated, and that any old or partially built data is fully freed before returning an error. In practice this is mainly a reliability/hardening fix against out-of-memory conditions rather than a directly exploitable attack path.

AI review queuedbuild(deps-dev): bump webpack in /src/wasm_packageby dependabot[bot] · 8f1d9c34 · Feb 10, 2026 · 1 fileMessage 93 · StrongInformational 16Details
Commit message · dependabot[bot]

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

Bumps [webpack](https://github.com/webpack/webpack) from 5.94.0 to 5.105.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack/compare/v5.94.0...v5.105.0)

---
updated-dependencies:
- dependency-name: webpack
dependency-version: 5.105.0
dependency-type: direct:development
...

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 16/100

This is a routine automated update by Dependabot that bumps the webpack JavaScript build tool from version 5.94.0 to 5.105.0 inside the WebAssembly package directory. It only changes the package-lock.json lockfile and does not alter any of the project's own cryptographic or wallet code. The update is a development dependency, so it only affects how the package is built, not what end users run in production. There is no indication in the commit that this fixes a specific security vulnerability.

AI review queuedBump version to 1.5.2by Jon Griffiths · 6439e6ef · Feb 1, 2026 · 10 filesMessage 38 · OpaqueInformational 15Details
Commit message · Jon Griffiths

Bump version to 1.5.2

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.1 to 1.5.2 across build files, documentation, and package metadata. It changes only version numbers and the library compatibility age/current values; no source code logic is modified. There is no security-relevant change in the diff itself.

Lower-priorityupdate CHANGES.md for release 1.5.2by Jon Griffiths · 1809a021 · Feb 1, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Jon Griffiths

update CHANGES.md for release 1.5.2

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 CHANGES.md release notes file. It documents what was added, changed, and fixed in version 1.5.2, but it does not modify any source code, build scripts, or cryptographic logic. The actual security-relevant fixes were made in earlier commits that are merely summarized here.

Security candidatepsbt: fix check for too many witnessesby Jon Griffiths · a3fd0aa8 · Feb 1, 2026 · 3 filesMessage 60 · AdequateModerate 59Details
Commit message · Jon Griffiths

psbt: fix check for too many witnesses

Thanks to @erickcestari for reporting and suggesting a fix.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Moderate 59/100

This commit fixes a parsing bug in how the library reads Bitcoin-style witness data from a transaction or PSBT. Before the fix, a malformed input could claim there were millions of witnesses while only providing a few bytes. The code would then try to read far beyond the available data, likely causing a crash or memory corruption. The fix adds a simple size check so the parser rejects obviously impossible inputs early.

Security candidatepsbt: fix check for short buffersby Jon Griffiths · a1de7372 · Feb 1, 2026 · 3 filesMessage 60 · AdequateModerate 61Details
Commit message · Jon Griffiths

psbt: fix check for short buffers

Thanks to @erickcestari for reporting and suggesting a fix.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Moderate 61/100

This commit fixes a bug in how the library reads compact size numbers from PSBT (Partially Signed Bitcoin Transaction) data. Before the fix, the code could read past the end of a short input buffer when checking how many bytes a variable-length integer needs. The fix adds a check that at least one byte is available before asking how long the integer is. This is a memory-safety bug that could cause crashes or undefined behavior when parsing malformed PSBT data.

AI review queuedtests: transaction: deserialize ELIP203 test vectorsby Leonardo Comandini · 833d2cc5 · Jan 21, 2026 · 2 filesMessage 60 · AdequateLow 28Details
Commit message · Leonardo Comandini

tests: transaction: deserialize ELIP203 test vectors

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
fuzzing or regression evidencesigning or wallet pathsecond-pass: broader security terminologysecond-pass: security-sensitive path
AI analysis · Low 28/100

This commit adds new test data and a test case to check that the library can correctly read and write two special Elements transactions. The transactions involve asset issuance or reissuance token amounts larger than normally allowed. There is no code change to the library itself—only new tests—so this is a defensive test addition rather than a fix for an active vulnerability.

Lower-prioritytx: Fix BIP118 ANYPREVOUTANYSCRIPT sighashby Greg Sanders · fb75bae7 · Jan 21, 2026 · 1 fileMessage 68 · AdequateModerate 66Details
Commit message · Greg Sanders

tx: Fix BIP118 ANYPREVOUTANYSCRIPT sighash

In the current code anytime sh_anyprevout_anyscript is true,
sh_anyonecanpay will also be true. Therefore it will fall
through and hash the prevout erroneously. Fix this by
checking for APOAS first.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Moderate 66/100

This commit fixes a bug in how a special Bitcoin/Elements signature hash flag (BIP118 ANYPREVOUTANYSCRIPT) is processed. Because of the order of checks, the code was accidentally treating ANYPREVOUTANYSCRIPT as if it also needed to include the previous transaction output in the hash, which it should not. This could cause signatures created or verified with this flag to be incorrect, potentially leading to invalid transactions or, in the worst case, a signature that could be reused in unexpected ways.

Security candidatepsbt: use control block verification call internallyby Jon Griffiths · 944f2660 · Nov 13, 2025 · 1 fileMessage 60 · AdequateLow 35Details
Commit message · Jon Griffiths

psbt: use control block verification call internally

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing boundarydefensive validationsigning or wallet path
AI analysis · Low 35/100

This commit replaces a simple length check on Taproot control blocks with a dedicated verification function. The change is likely a hardening or correctness improvement rather than a clear-cut security fix. The old check only ensured the control block had a valid-looking size; the new function may also validate internal structure, such as the parity bit and merkle proof path. Without the implementation of the new verification function, we cannot confirm whether it closes a real vulnerability or just reduces duplicated logic.

AI review queuedtaproot: add bip341_control_block_verifyby Jon Griffiths · 7ecf1fa4 · Nov 13, 2025 · 9 filesMessage 35 · OpaqueInformational 17Details
Commit message · Jon Griffiths

taproot: add bip341_control_block_verify

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 17/100

This commit adds a new public helper function that checks whether a chunk of taproot-related data (a BIP-341 control block) is well-formed. It is purely a validation/verification addition and does not change existing behavior or fix a bug. There is no indication in the commit that it addresses a security vulnerability.

Lower-prioritytaproot: fix merkle path length checkby Jon Griffiths · 54eaca22 · Nov 13, 2025 · 1 fileMessage 60 · AdequateModerate 58Details
Commit message · Jon Griffiths

taproot: fix merkle path length check

Per BIP-0341 path lengths are limited to 128 or less.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Moderate 58/100

This commit fixes a validation check in a Bitcoin-related cryptographic library (libwally-core). Specifically, it corrects how the code verifies the length of a 'merkle path' used in Taproot transactions. Before the fix, the code only checked that the path length was a multiple of 32 bytes, but did not enforce the BIP-0341 rule that a Taproot merkle path can have at most 128 such 32-byte elements. The new check also incorrectly tries to limit the length, but contains a bug: it checks `val_len % SHA256_LEN > 128u`, which compares a remainder (always 0 to 31) against 128, so it never triggers. This means the intended 128-element limit is still not actually enforced, making the fix partial or ineffective.

Lower-prioritymap_merkle_path_add: ignore duplicates as per the other _add functionsby Jon Griffiths · 7e483c04 · Nov 13, 2025 · 1 fileMessage 50 · ThinLow 32Details
Commit message · Jon Griffiths

map_merkle_path_add: ignore duplicates as per the other _add functions

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

This commit changes a single function call argument so that adding a duplicate merkle path to a map is ignored rather than rejected with an error. The change aligns this function with other similar 'add' functions in the same file. It is best understood as a consistency/robustness fix, but the commit message does not frame it as a security fix and no exploit path is demonstrated.

AI review queuedbuild: fix clear sizes and index typeby Jon Griffiths · 1c482b85 · Nov 13, 2025 · 2 filesMessage 57 · ThinLow 35Details
Commit message · Jon Griffiths

build: fix clear sizes and index type

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 35/100

This commit fixes two small but meaningful memory-handling bugs in a Bitcoin/Elements cryptographic library. One fix changes a memory-clearing call so it actually wipes the intended structure instead of just a pointer variable. The other changes an index variable from a signed to an unsigned type, preventing a subtle type-related bug when handling special transaction issuance flags. The commit message does not describe these as security fixes, but the memory-clearing fix in particular is the kind of issue that can leave secret key material or sensitive data in memory longer than intended.

Lower-priorityci: add an enable-elements-abi=no build to prevent future breakageby Jon Griffiths · ed29507a · Sep 29, 2025 · 1 fileMessage 74 · AdequateInformational 15Details
Commit message · Jon Griffiths

ci: add an enable-elements-abi=no build to prevent future breakage

74/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Explains rationale or failure mode! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only adds a new automated build test to the project's continuous integration (CI) configuration. It ensures the software can be compiled with a specific optional feature turned off. There are no code changes that affect how the library behaves, and nothing in the commit suggests a security problem or fix.

AI review queuedelements: fix enable-elements-abi=no buildby Jon Griffiths · 05c3903d · Sep 28, 2025 · 2 filesMessage 45 · ThinInformational 19Details
Commit message · Jon Griffiths

elements: fix enable-elements-abi=no build

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

This commit fixes compilation errors that occur when libwally-core is built with Elements/Liquid sidechain support disabled (enable-elements-abi=no). It wraps Elements-only code in preprocessor guards and removes an unused variable warning. There is no direct evidence this is a security vulnerability; it is a build-configuration bug fix.

Lower-prioritypython: run swig python tests from a virtualenvby Jon Griffiths · 2abe289d · Aug 20, 2025 · 1 fileMessage 70 · AdequateInformational 15Details
Commit message · Jon Griffiths

python: run swig python tests from a virtualenv

This ensures that we are testing the built wallycore wheel.

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit changes how Python tests are run during the build process. Instead of running Python test scripts directly against the built library files, it now creates a temporary Python virtual environment, installs the built 'wallycore' package as a wheel into that environment, and runs the tests from there. This is purely a testing/CI infrastructure change and does not alter any cryptographic or security-sensitive code.

AI review queuedBump version to 1.5.1by Jon Griffiths · a445157d · Aug 20, 2025 · 9 filesMessage 38 · OpaqueInformational 15Details
Commit message · Jon Griffiths

Bump version to 1.5.1

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.0 to 1.5.1. It only changes version numbers in build files, documentation, and package metadata. There are no code changes that affect security or functionality.

Lower-prioritypython: allow source building for newer pip versionsby Jon Griffiths · 1403b66b · Aug 20, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Jon Griffiths

python: allow source building for newer pip versions

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

This commit adds a standard Python packaging configuration file (pyproject.toml) that tells newer versions of pip how to build the project from source. It is a routine build-system change with no apparent security relevance.

Lower-priorityupdate CHANGES.md for release 1.5.1by Jon Griffiths · 82125553 · Aug 20, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Jon Griffiths

update CHANGES.md for release 1.5.1

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 is just a changelog update for a new software release. It edits a text file describing what changed in version 1.5.1, including routine fixes like supporting newer Python versions and correcting a Java function's caching behavior. There is no code change here, and nothing in the commit itself indicates a security problem.

Lower-prioritybuild: update cibuildwheel to v3.1.4, remove python 3.8 supportby Jon Griffiths · 38ff315b · Aug 20, 2025 · 1 fileMessage 77 · AdequateInformational 15Details
Commit message · Jon Griffiths

build: update cibuildwheel to v3.1.4, remove python 3.8 support

Update list of skipped python builds, skip 3.14 as it is still
pre-release.

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This is a routine build-system update. It upgrades the tool used to compile Python wheel packages and adjusts which Python versions and platforms are built. There is no change to the library's actual code, cryptography, or security behavior.