EP
← All projectsElements Project

libwally-core

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

BitcoinCryptographic librariesSoftware walletsNormal
Repository coverage

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

15security candidates27second-pass queue9AI analyses
15commits · 30 days
22commits · 60 days
74commits · 180 days
96commits · 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.

61/100 average clarity
11Strong · 80–100
42Adequate · 60–79
33Thin · 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 Griffiths81137059
Ondřej Češka111050
Erick Cestari1110100
dependabot[bot]500093
odudex200062
Daniel Newton200055
pythcoiner100055
Greg Sanders100068
Leonardo Comandini100060
longhutianjie100072
Analysis record

Published AI watches

Last scanned 43 minutes ago

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
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 27 AI analysisMessage 78 · Adequate
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

descriptor: support elements confidential wallet policies

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 fe…

Descriptor/miniscript parsing code modifiedCryptographic key validation logic changedNew input validation rules added for '@B' blinding key
6bbe9eebby Jon Griffiths+90−331 file
No security note in commit
Moderate 59 AI analysisMessage 50 · Thin
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

bip32: add some of the new bip32 checks to bip32_key_unserialize

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…

New input-validation call (wally_ec_public_key_verify) added to deserialization pathRejection of invalid public-key bytes before key material is copied into output structAddition of BIP32 Test Vector 5 invalid-key test cases
2b74c8d7by Ondřej Češka+65−02 files
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

build: add fuzzing infrastructure for security testing

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 o…

c824172aby Erick Cestari+108−07 files
Vendor flagged security relevance
Low 44 AI analysisMessage 45 · Thin
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

psbt: handle allocation failures in set_global_tx

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 dat…

Allocation-failure handling added (NULL checks before array initialization)Resource cleanup improved (element-level free before array free)Potential use of uninitialized/freed memory path removed in OOM case
e45f553dby Jon Griffiths+26−141 file
No security note in commit
Moderate 59 AI analysisMessage 60 · Adequate
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

psbt: fix check for too many witnesses

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…

Out-of-bounds read / buffer over-read in a core deserialization routinePotential memory allocation failure or integer overflow from attacker-controlled witness countNew negative test case added for malformed PSBT with excessive witness count
a3fd0aa8by Jon Griffiths+11−03 files
Vendor flagged security relevance
Moderate 61 AI analysisMessage 60 · Adequate
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

psbt: fix check for short buffers

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-l…

Out-of-bounds read in variable-length integer parsingShort/truncated input buffer not validated before length inspectionNew negative test case added for short PSBT bytes
a1de7372by Jon Griffiths+9−13 files
No security note in commit
Low 35 AI analysisMessage 60 · Adequate
EP Elements Projectlibwally-core BitcoinCryptographic librariesSoftware wallets

psbt: use control block verification call internally

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 c…

Replaced length-only validation with a dedicated BIP341 control-block verification routineRemoved duplicated inline length check in favor of a centralized validation callParsing and serialization paths for Taproot leaf scripts now share the same validation logic
944f2660by Jon Griffiths+3−91 file
No security note in commit
Repository ledger

Explore captured commits

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

Lower-prioritybase64: fix -Wunterminated-string-initialization warningsby Jon Griffiths · cb95fe3f · May 28, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · Jon Griffiths

base64: fix -Wunterminated-string-initialization warnings

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-prioritybuild: add python 3.14 support, disable 3.15 while in betaby Jon Griffiths · 11c7da3e · May 28, 2026 · 1 fileMessage 62 · AdequateTriage 0Details
Commit message · Jon Griffiths

build: add python 3.14 support, disable 3.15 while in beta

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
Lower-prioritybuild: build wheel and sdist separatelyby Jon Griffiths · 05bfee5d · May 28, 2026 · 1 fileMessage 90 · StrongTriage 0Details
Commit message · Jon Griffiths

build: build wheel and sdist separately

Something in the secp aux macros breaks when building the sdist and
wheel at the same time. Build them separately to work around this.

Note that we only want the sdist artifact; the wheel is just used for
smoke testing before producing the sdist.

90/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
Lower-priorityjava: disable loadLibrary warning running testsby Jon Griffiths · 82275dd4 · May 28, 2026 · 1 fileMessage 70 · AdequateTriage 0Details
Commit message · Jon Griffiths

java: disable loadLibrary warning running tests

Note this means that java v20+ is now required for testing.

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Lower-priorityjava: update source and target version to 17by Jon Griffiths · 53d900a9 · May 28, 2026 · 1 fileMessage 60 · AdequateTriage 0Details
Commit message · Jon Griffiths

java: update source and target version to 17

Fixes the obsolete version warning when building.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Lower-priorityci: factor out common test config, rebuild wallycore docker imageby Jon Griffiths · d601cbd5 · May 28, 2026 · 1 fileMessage 72 · AdequateTriage 0Details
Commit message · Jon Griffiths

ci: factor out common test config, rebuild wallycore docker image

72/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
Lower-prioritytests: use the (now) already-installed gcovr binaryby Jon Griffiths · c153347c · May 27, 2026 · 1 fileMessage 60 · AdequateTriage 0Details
Commit message · Jon Griffiths

tests: use the (now) already-installed gcovr binary

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI review queuedcmake: add missing definesby Jon Griffiths · be278177 · May 27, 2026 · 2 filesMessage 35 · OpaqueTriage 0Details
Commit message · Jon Griffiths

cmake: add missing defines

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
Lower-priorityci: update scan-build, asan and valgrind for trixieby Jon Griffiths · 5adb8acc · May 27, 2026 · 1 fileMessage 87 · StrongTriage 0Details
Commit message · Jon Griffiths

ci: update scan-build, asan and valgrind for trixie

Run valgrind tests on the test binaries not the libtool wrapper scripts.

87/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Mentions testing or verification
Lower-prioritybuild: run swig python tests lastby Jon Griffiths · a2804b36 · May 27, 2026 · 1 fileMessage 100 · StrongTriage 0Details
Commit message · Jon Griffiths

build: run swig python tests last

Since the swig python tests were updated to build the python wheel using
setup.py, 'make check' has issues due to the wheel build reconfiguring
the source tree when being built while the other tests are running.

Change this to run all other tests before the swig python tests; This
fixes 'make check' including for parallel builds.

100/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Lower-prioritybuild: re-apply: don't require linking to work for manylinux buildsby Jon Griffiths · 5d9149b1 · May 27, 2026 · 1 fileMessage 62 · AdequateTriage 0Details
Commit message · Jon Griffiths

build: re-apply: don't require linking to work for manylinux builds

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Lower-prioritybuild: require python 3.9 or later. use new optionality and python checkby Jon Griffiths · f512c79c · May 27, 2026 · 1 fileMessage 77 · AdequateTriage 0Details
Commit message · Jon Griffiths

build: require python 3.9 or later. use new optionality and python check

Optionality means we don't need our previous hack from commit
d6b1fe21d070134bad11ffd6f091927201dfa856.

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Lower-priorityci: update ci refs to run on trixieby Jon Griffiths · 4fbdb23e · May 27, 2026 · 1 fileMessage 57 · ThinTriage 0Details
Commit message · Jon Griffiths

ci: update ci refs to run on trixie

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Lower-prioritybuild: update ax_python_devel.m4 to latest upstream revisionby Jon Griffiths · 3d6529b0 · May 27, 2026 · 1 fileMessage 62 · AdequateTriage 0Details
Commit message · Jon Griffiths

build: update ax_python_devel.m4 to latest upstream revision

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Lower-prioritydocker: add a multi-arch docker build stage to the ciby Jon Griffiths · 84a444f8 · May 27, 2026 · 1 fileMessage 73 · AdequateTriage 0Details
Commit message · Jon Griffiths

docker: add a multi-arch docker build stage to the ci

This builds amd64 and arm64 images for the same commit ref.

Note the location of the docker image has changed from "greenaddress/"
to "blockstream/".

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-prioritydocker: add a trixie docker image, update node and emsdkby Jon Griffiths · e982b2d6 · May 27, 2026 · 4 filesMessage 73 · AdequateTriage 0Details
Commit message · Jon Griffiths

docker: add a trixie docker image, update node and emsdk

Node v20 is EOL; move to v24. The latest emsdk is now available on both
amd64 and arm64, so update that too.

update-java-alternatives is unneeded (and broken) on trixie, so don't
run it. Fix JAVA_HOME to work on amd64 and arm64.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Security candidatesecp: update to latest zkp-masterby Jon Griffiths · b23895f1 · May 25, 2026 · 1 fileMessage 45 · ThinTriage 15Details
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 review queuedbuild: remove distutils dependencyby Jon Griffiths · dbaa9393 · May 25, 2026 · 1 fileMessage 47 · ThinTriage 0Details
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 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 · StrongTriage 0Details
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
Lower-prioritydescriptor: add elements wallet policy testsby Jon Griffiths · c7f5ec10 · May 6, 2026 · 2 filesMessage 55 · ThinTriage 0Details
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
Lower-prioritydescriptor: make test keys explicitby Jon Griffiths · 3243cec6 · May 6, 2026 · 1 fileMessage 55 · ThinTriage 0Details
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
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 · ThinTriage 0Details
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
Lower-prioritydescriptor: disallow leading zeros in descriptor numbersby Daniel Newton · daf02a88 · May 5, 2026 · 2 filesMessage 65 · AdequateTriage 0Details
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
Lower-prioritybuild: bump dso version for 1.5.3by Jon Griffiths · 00013739 · Apr 15, 2026 · 1 fileMessage 72 · AdequateTriage 0Details
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