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 1 hour, 2 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.

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.

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.

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.

Security candidateinternal: avoid potential info leaks via sse/avx registersby Jon Griffiths · 91b3b6d6 · Jul 9, 2026 · 10 filesMessage 73 · AdequateModerate 68Details
Commit message · Jon Griffiths

internal: avoid potential info leaks via sse/avx registers

In particular when built as a shared library, calls through the PLT
spill these registers onto the stack.

Thanks to @pythcoiner <pythcoiner@proton.me> for identifying the
leak cause and suggesting a fix.

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

This commit fixes a potential information leak in a cryptocurrency wallet library. When the library is built as a shared library on x86/x86_64 systems, optimized memory-copy functions can leave secret data (private keys, seed phrases, chain codes) inside special CPU registers (SSE/AVX). If the program then makes a call through the dynamic linker before those registers are reused, the CPU spills the register contents onto the stack, where they may remain uncleared. The patch replaces many ordinary memory copies with a simple, unoptimized byte-by-byte copy function for sensitive data, preventing the data from being left in those registers. The commit message explicitly calls this an 'info leak' and thanks an external contributor for finding the cause and suggesting the fix.

Security candidatesecp: update to latest zkp-masterby Jon Griffiths · b23895f1 · May 25, 2026 · 1 fileMessage 45 · ThinInformational 0Details
Commit message · Jon Griffiths

secp: update to latest zkp-master

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Informational 0/100

This commit is described as updating a bundled cryptographic library (secp256k1) to a newer version, but the actual code changes are not available for review. Without the diff, we cannot determine whether the update fixes security bugs, introduces new ones, or is purely routine maintenance.

Security candidatedescriptor: support elements confidential wallet policiesby Jon Griffiths · 6bbe9eeb · May 6, 2026 · 1 fileMessage 78 · AdequateLow 27Details
Commit message · Jon Griffiths

descriptor: support elements confidential wallet policies

These are the same as existing wallet policies except that the blinding
key placeholder must be '@B`, which must be given first in the policy
key map when parsing.

This allows the blinding scheme and key to be presented separately from
the rest of the policy which will then be identical (modulo el-prefixes)
between elements and bitcoin for the same wallet structure.

This also allows the distinction between blinding keys and policy keys
to remain intact. Blinding keys are qualitatively different from
derivation keys; they may for example be a real pubkey, raw entropy,
and/or/in addition to an algorithm that operates on the result of the
policy for given derivation indices (in the case of deterministic
blinding). For these reasons blinding keys remain outside standard key
iteration in a parsed descriptor.

78/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
entropy or randomness
AI analysis · Low 27/100

This commit adds support in libwally-core for a new Elements/Liquid confidential-wallet policy format. It lets wallet policies include a special '@B' blinding key placeholder, kept separate from ordinary derivation keys. The change is a feature addition with embedded validation rules; it does not appear to fix a known vulnerability, but it does touch sensitive descriptor-parsing code that handles cryptographic keys. There is no vendor statement that this is a security fix, and no independent researcher is credited.

Security candidatejs: update aes testby Jon Griffiths · dac66cfe · Apr 15, 2026 · 1 fileMessage 38 · OpaqueInformational 15Details
Commit message · Jon Griffiths

js: update aes test

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Mentions testing or verification! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit only updates a JavaScript test file for AES encryption in the WebAssembly package. It changes how empty plaintext or ciphertext test vectors are handled (treating zero-length buffers as null) and adds a debug console.log statement. There is no change to the actual cryptographic library code, only to test expectations.

Security candidateaes: ensure output buffer is valid, share validation code, add testsby Jon Griffiths · d9460a64 · Apr 13, 2026 · 2 filesMessage 83 · StrongLow 46Details
Commit message · Jon Griffiths

aes: ensure output buffer is valid, share validation code, add tests

Reported-by: Jordan Mecom (@jmecom) via https://github.com/jmecom/odo

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive path
AI analysis · Low 46/100

This commit tightens input validation in libwally-core's AES encryption helpers. It makes sure callers pass a valid output buffer and length, and it centralizes the checks so all AES functions behave consistently. The change also adds tests for bad inputs such as missing keys, missing IVs, and NULL output buffers. It appears to fix a bug where a caller could pass an invalid output buffer and not get a clear error.

Security candidatebip32: add some of the new bip32 checks to bip32_key_unserializeby Ondřej Češka · 2b74c8d7 · Mar 18, 2026 · 2 filesMessage 50 · ThinModerate 59Details
Commit message · Ondřej Češka

bip32: add some of the new bip32 checks to bip32_key_unserialize

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
secret or key materialcryptography-sensitive path
AI analysis · Moderate 59/100

This commit adds a safety check when loading BIP32 extended keys. Before, the code accepted any 33-byte public key bytes without verifying they form a valid public key. Now it calls a public-key validation function and rejects invalid keys. The change is defensive: it prevents malformed or attacker-chosen public keys from being treated as legitimate BIP32 keys later. The commit also adds test vectors for many other invalid key types, though only the public-key validation is newly enforced in this patch.

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.

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.

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.

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.

Security candidatejava: allow non-const maps to be passed as nullby Jon Griffiths · 2eb1742c · Aug 13, 2025 · 2 filesMessage 65 · AdequateInformational 19Details
Commit message · Jon Griffiths

java: allow non-const maps to be passed as null

This allows e.g. skipping caching on the new signature hash call.

65/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Names security-relevant behavior explicitly
Why it was queued
signing boundary
AI analysis · Informational 19/100

This is a small Java language-binding change that lets callers pass Java null for one specific type of object (a non-const wally_map) instead of requiring a real object. It is used to skip an internal caching map when computing a Bitcoin/Elements transaction signature hash. The change is a convenience/API improvement, not a fix for a memory corruption or cryptographic bug.

Security candidatejava: add a test for tx_get_input_signature_hashby Jon Griffiths · 349236ec · Aug 12, 2025 · 2 filesMessage 55 · ThinInformational 15Details
Commit message · Jon Griffiths

java: add a test for tx_get_input_signature_hash

Co-authored-by: @araspitzu

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 boundary
AI analysis · Informational 15/100

This commit only adds a new Java test file that checks a transaction signature hash function works correctly for Elements/Liquid taproot transactions. It does not change any library code, fix any bug, or alter behavior. There is no security issue here.