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 26 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 queuedbuild: remove distutils dependencyby Jon Griffiths · dbaa9393 · May 25, 2026 · 1 fileMessage 47 · ThinInformational 19Details
Commit message · Jon Griffiths

build: remove distutils dependency

47/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 19/100

This is a tiny build-maintenance change: it replaces the deprecated Python `distutils.sysconfig` module with the newer `sysconfig` module in the package setup script. There is no security vulnerability visible in the diff, no change to cryptographic code, and no disclosed incident. It is a routine compatibility cleanup.

AI review queuedbuild(deps-dev): bump fast-uri from 3.1.0 to 3.1.2 in /src/wasm_packageby dependabot[bot] · 32a17131 · May 9, 2026 · 1 fileMessage 93 · StrongInformational 13Details
Commit message · dependabot[bot]

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

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

---
updated-dependencies:
- dependency-name: fast-uri
dependency-version: 3.1.2
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 Dependabot update that bumps the JavaScript development dependency fast-uri from version 3.1.0 to 3.1.2 inside the WebAssembly (WASM) packaging directory. The change only updates a package-lock.json file. There is no direct evidence in the commit that this fixes a security issue, but version bumps of URI-parsing libraries can sometimes address security bugs. Because it is a devDependency used during build/packaging, any risk is likely limited to the build environment rather than end users of the compiled library.

Lower-prioritydescriptor: add elements wallet policy testsby Jon Griffiths · c7f5ec10 · May 6, 2026 · 2 filesMessage 55 · ThinInformational 14Details
Commit message · Jon Griffiths

descriptor: add elements wallet policy tests

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 14/100

This commit only adds new test cases for Elements/Liquid confidential wallet policies. It does not change any library code, only test files. There is no security fix or vulnerability introduced here.

Lower-prioritydescriptor: make test keys explicitby Jon Griffiths · 3243cec6 · May 6, 2026 · 1 fileMessage 55 · ThinInformational 15Details
Commit message · Jon Griffiths

descriptor: make test keys explicit

No functional changes.

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only changes test code. It makes the key maps used in descriptor tests explicit by adding an index field to each test case, instead of the test runner guessing which map to use based on counting '@' characters. The commit message says 'No functional changes' and the diff supports that: no library code is modified.

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.

Lower-prioritydescriptor: fix error code on OOMby Daniel Newton · 6d365ec0 · May 5, 2026 · 1 fileMessage 45 · ThinInformational 18Details
Commit message · Daniel Newton

descriptor: fix error code on OOM

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 18/100

This is a tiny one-line fix that changes the error code returned when memory allocation fails inside a Bitcoin descriptor policy-map validation function. Previously the code incorrectly reported a generic invalid-parameter error (WALLY_EINVAL) instead of an out-of-memory error (WALLY_ENOMEM). It does not fix a memory leak, crash, or code-execution bug; it only makes the reported error more accurate so callers can distinguish OOM from bad input.

Lower-prioritydescriptor: disallow leading zeros in descriptor numbersby Daniel Newton · daf02a88 · May 5, 2026 · 2 filesMessage 65 · AdequateLow 37Details
Commit message · Daniel Newton

descriptor: disallow leading zeros in descriptor numbers

Notably this restricts policy key placeholder expressions.

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

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Low 37/100

This commit tightens the rules for numbers used in Bitcoin-style output descriptors, specifically for policy key placeholders like @0, @1, etc. It now rejects numbers with leading zeros (for example @00 or @01) and negative numbers with leading zeros. Such lax parsing can, in some contexts, allow two different-looking strings to refer to the same numeric key or trick downstream code that compares keys as text. The change is defensive and reduces the chance of descriptor ambiguity or canonicalization bugs.

Lower-prioritybuild: bump dso version for 1.5.3by Jon Griffiths · 00013739 · Apr 15, 2026 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · Jon Griffiths

build: bump dso version for 1.5.3

Changes to the AES checking are technically an ABI change, although it
is not expected that any user will be affected.

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit only changes the shared library version numbers in the build file (Makefile.am) in preparation for a new release. It does not change any actual program code, cryptographic functions, or user-facing behavior. The commit message mentions that earlier AES-related changes were technically an ABI change, but this commit itself is purely a build/versioning adjustment.

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.

Lower-priorityjs: allow null buffers for bytes inputsby Jon Griffiths · 070c2139 · Apr 15, 2026 · 2 filesMessage 45 · ThinLow 28Details
Commit message · Jon Griffiths

js: allow null buffers for bytes inputs

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Low 28/100

This commit updates the JavaScript/WebAssembly wrapper for libwally-core so that functions expecting a raw byte input (like a cryptographic key or transaction data) can now accept `null` in addition to a buffer. Previously, passing `null` would likely throw a type error. The change is small and appears intended to support C functions that treat a NULL pointer plus zero length as a valid 'no data' input. There is no direct evidence in the commit that this fixes a security vulnerability, but it could prevent application crashes or incorrect behavior when callers intentionally pass no data.

AI review queuedjs: regenerate wrappersby Jon Griffiths · 019385e5 · Apr 15, 2026 · 1 fileMessage 28 · OpaqueInformational 18Details
Commit message · Jon Griffiths

js: regenerate wrappers

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 18/100

This commit only updates the TypeScript type-declaration file for the JavaScript/WebAssembly wrapper. It widens many function parameters from 'Buffer|Uint8Array' to 'Buffer|Uint8Array|null', meaning callers are now allowed to pass null. The change is purely in type definitions; the actual C/WASM implementation is not modified here. It makes the API more permissive on paper, which could hide programming mistakes, but it does not by itself create a runtime vulnerability.

AI review queuedBump version to 1.5.3by Jon Griffiths · 43b97bed · Apr 13, 2026 · 9 filesMessage 38 · OpaqueInformational 15Details
Commit message · Jon Griffiths

Bump version to 1.5.3

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.2 to 1.5.3 across build files, documentation, and package metadata. No code logic, cryptographic functions, or security behavior changed.

Lower-priorityupdate CHANGES.md for release 1.5.3by Jon Griffiths · 096dc37f · Apr 13, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Jon Griffiths

update CHANGES.md for release 1.5.3

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 only a changelog update for libwally-core version 1.5.3. It does not change any source code, cryptographic logic, or build configuration. The diff adds release notes describing new features and bug fixes that were made in earlier commits. Because no code is modified, this commit itself cannot introduce or fix a security vulnerability.

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.

Lower-prioritymap: fix incorrect clear when reinserting an integer after removing bytesby Jon Griffiths · c93c0d8b · Apr 13, 2026 · 2 filesMessage 73 · AdequateModerate 61Details
Commit message · Jon Griffiths

map: fix incorrect clear when reinserting an integer after removing bytes

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

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
AI analysis · Moderate 61/100

This commit fixes a bug in a key-value map used by the libwally-core crypto library. When a caller removed a byte-keyed entry and then reinserted a new integer-keyed entry into the same slot, the code could mistakenly free or overwrite memory that was no longer valid. The fix ensures integer keys are explicitly set to 'no bytes' and null values are handled cleanly, preventing memory corruption.

AI review queuedtx: fix output clearing size on tx_input_init_alloc failureby Jon Griffiths · 2b5fc0ec · Apr 9, 2026 · 1 fileMessage 73 · AdequateLow 44Details
Commit message · Jon Griffiths

tx: fix output clearing size on tx_input_init_alloc failure

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

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 44/100

This commit fixes a small but real bug in a Bitcoin/Elements transaction library. When creating a new transaction input fails, the code was trying to securely wipe memory using the wrong size: it used the size of a transaction output instead of the size of a transaction input. On most systems this means the clearing is ineffective or incomplete, so secret data (like scripts or witness data) could remain in memory longer than intended. It is a memory-clearing bug, not a direct remote exploit, but it weakens a security safeguard.

Lower-priorityblech32: ensure buffers are cleared if encoding failsby Jon Griffiths · ccb26df0 · Apr 9, 2026 · 1 fileMessage 73 · AdequateLow 42Details
Commit message · Jon Griffiths

blech32: ensure buffers are cleared if encoding fails

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

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
AI analysis · Low 42/100

This commit fixes a small cleanup bug in the confidential address encoding function. Previously, if the final blech32 encoding step failed, the function returned an error immediately without jumping to the shared cleanup code. That meant temporary buffers holding sensitive data (like the public key and hash) might not be securely wiped from memory. The change makes sure cleanup always runs, even on failure, so secrets are cleared properly.

AI review queuedtx: add missing check for NULL written paramby Jon Griffiths · 53284275 · Apr 9, 2026 · 1 fileMessage 68 · AdequateLow 36Details
Commit message · Jon Griffiths

tx: add missing check for NULL written param

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

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 36/100

This commit fixes a simple but real bug in a transaction helper function. Before the fix, if a caller accidentally passed a null pointer as the output parameter, the library would crash by writing to address zero. The fix adds a standard null check and returns an error instead. It is a defensive hardening change rather than an active remote exploit, but it removes a reliable local crash path.

Lower-prioritytx: reject non-corresponding output as per bip341by Jon Griffiths · a86b8abc · Apr 9, 2026 · 1 fileMessage 68 · AdequateHigh 73Details
Commit message · Jon Griffiths

tx: reject non-corresponding output as per bip341

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

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
AI analysis · High 73/100

This commit fixes a bug in how Bitcoin taproot-style transaction signatures (BIP341) are computed. Under a special signature mode called SIGHASH_SINGLE, the code previously did not check whether the requested transaction output actually exists. BIP341 says such signatures must be rejected. Without this check, a wallet or signer could produce an invalid or ambiguous signature that other software might accept differently, potentially leading to unexpected transaction behavior or security issues in multi-party signing.

Lower-prioritydocs: update reporting PGP key to github which is always up-to-dateby Jon Griffiths · 01a50459 · Apr 8, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · Jon Griffiths

docs: update reporting PGP key to github which is always up-to-date

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

This commit only updates the project's security documentation. It removes a long embedded PGP public key block and replaces it with a link to the same key hosted on GitHub. There are no code changes and no security vulnerability is introduced or fixed.

AI review queuedbuild(deps): bump serialize-javascript and terser-webpack-pluginby dependabot[bot] · a24d8fcd · Mar 19, 2026 · 1 fileMessage 93 · StrongInformational 17Details
Commit message · dependabot[bot]

build(deps): bump serialize-javascript and terser-webpack-plugin

Removes [serialize-javascript](https://github.com/yahoo/serialize-javascript). It's no longer used after updating ancestor dependency [terser-webpack-plugin](https://github.com/webpack/terser-webpack-plugin). These dependencies need to be updated together.


Removes `serialize-javascript`

Updates `terser-webpack-plugin` from 5.3.16 to 5.4.0
- [Release notes](https://github.com/webpack/terser-webpack-plugin/releases)
- [Changelog](https://github.com/webpack/terser-webpack-plugin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/terser-webpack-plugin/compare/v5.3.16...v5.4.0)

---
updated-dependencies:
- dependency-name: serialize-javascript
dependency-version:
dependency-type: indirect
- dependency-name: terser-webpack-plugin
dependency-version: 5.4.0
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 17/100

This is an automated dependency update that removes an old JavaScript helper package called serialize-javascript and upgrades a build tool called terser-webpack-plugin. The change only affects the build-time tooling for the WebAssembly package, not the core cryptographic library. It is a routine maintenance patch with no direct evidence of an active security flaw being fixed in the project's own code.

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.

AI review queuedtx: pre-allocate the full number of witnesses when deserializingby Jon Griffiths · 455ec5b0 · Mar 5, 2026 · 3 filesMessage 73 · AdequateModerate 50Details
Commit message · Jon Griffiths

tx: pre-allocate the full number of witnesses when deserializing

Prevents quadratic resizing for deserializing non-standard txs with
many witnesses. Note in the transaction.c case, analyze_tx has already
run and validated that the number of witnesses is sane.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
defensive validationsigning or wallet pathsecond-pass: near security thresholdsecond-pass: broader security terminologysecond-pass: security-sensitive path
AI analysis · Moderate 50/100

This change fixes a performance problem when reading Bitcoin-style transactions that contain an unusually large number of 'witness' data pieces. Previously the code started with a small buffer and repeatedly grew it, which made processing time balloon (a 'quadratic' slowdown). The patch pre-allocates the exact needed size during deserialization, so large-but-valid transactions no longer cause severe delays. It is a denial-of-service/performance fix rather than a memory-corruption bug.

AI review queuedfuzz: add support for fuzzing tx parsingby Jon Griffiths · 9e8f9459 · Feb 12, 2026 · 4 filesMessage 55 · ThinInformational 15Details
Commit message · Jon Griffiths

fuzz: add support for fuzzing tx parsing

55/100 · ThinMessage clarity
✓ 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: security-sensitive path
AI analysis · Informational 15/100

This commit only adds new software testing tools (fuzzing harnesses) for parsing Bitcoin-style transactions and PSBTs. It does not change the actual transaction/PSBT parsing library code, so it cannot by itself introduce a security vulnerability or fix one. It is a test-infrastructure change.

Lower-prioritybuild: disable unaligned access under ubsanby Jon Griffiths · b56a0b68 · Feb 12, 2026 · 2 filesMessage 72 · AdequateInformational 12Details
Commit message · Jon Griffiths

build: disable unaligned access under ubsan

Avoids false positives on e.g. x86 platforms.

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
AI analysis · Informational 12/100

This commit changes the build configuration so that when the Undefined Behavior Sanitizer (UBSan) is enabled, the project pretends the CPU cannot do unaligned memory reads/writes. This is done to silence UBSan warnings that are technically false alarms on x86 CPUs. It is a build/test-hygiene change, not a fix for an exploitable bug.