Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
290 commits
Select commit Hold shift + click to select a range
f59183b
feat(taproot): BIP-340 signer, build wiring and official test vectors
BitHighlander Jul 31, 2026
958b41f
test(taproot): make the zero-on-failure checks non-vacuous
BitHighlander Jul 31, 2026
d5b2770
feat(taproot): P2TR addresses via GetAddress
BitHighlander Jul 31, 2026
1030ed4
test(taproot): pin python-keepkey at the BIP-86 GetAddress test
BitHighlander Jul 31, 2026
57757b0
feat: clear-sign x402 payments
BitHighlander Jul 31, 2026
2baa1bd
chore: pin canonical x402 python client
BitHighlander Jul 31, 2026
db50b88
feat(taproot): spend from P2TR inputs (BIP-341 key path)
BitHighlander Jul 31, 2026
a5c8924
fix(taproot): BIP-341 needs single-sha256 accumulators, not BIP-143's
BitHighlander Jul 31, 2026
c60e628
chore: align x402 protocol staging pins
BitHighlander Jul 31, 2026
4807bc6
fix(layout): show the whole address, not the first 42 characters
BitHighlander Aug 1, 2026
ac208f6
feat(taproot): report supports_taproot in GetFeatures
BitHighlander Aug 1, 2026
97ed1a7
docs(taproot): say why signing uses a zero aux_rand
BitHighlander Aug 1, 2026
e513bc8
style: clang-format the two taproot call sites
BitHighlander Aug 2, 2026
adba54d
style: clang-format the taproot and layout call sites
BitHighlander Aug 2, 2026
41afb48
test(report): fail CI on missing release evidence
BitHighlander Aug 2, 2026
1091873
fix(taproot): validate complete BIP-341 input commitments
BitHighlander Aug 2, 2026
74bbe50
chore(deps): pin canonical Taproot staging merges
BitHighlander Aug 2, 2026
2f9269f
feat(rng): make RNG-source selection unmissable, and auditable from a…
BitHighlander Aug 2, 2026
8661437
fix(layout): show the whole address, not the first 42 characters
BitHighlander Aug 1, 2026
aae0071
style(layout): apply canonical clang-format
BitHighlander Aug 2, 2026
686f701
fix(rng): require a press for entropy on a locked device
BitHighlander Aug 2, 2026
750e692
fix(ci): label dylib with tested head SHA
BitHighlander Aug 3, 2026
f88148f
ci(rng): gate entropy evidence in canonical suite
BitHighlander Aug 3, 2026
7318837
test(rng): pin canonical C27 entropy evidence
BitHighlander Aug 3, 2026
70857cd
fix(signing): reject BIP86 change output with a non-taproot script type
BitHighlander Aug 3, 2026
c55b319
style(signing): apply canonical formatter
BitHighlander Aug 3, 2026
5ee7b57
docs(security): plan next hardening waves
BitHighlander Aug 3, 2026
c377ce1
feat(storage): version PIN KDF hardening
BitHighlander Aug 3, 2026
06612aa
fix(reset): stop displaying internal entropy
BitHighlander Aug 3, 2026
441246e
fix(signing): fail closed before Taproot signature
BitHighlander Aug 3, 2026
749a9ce
Merge pull request #330 from BitHighlander/feature/taproot-signing
BitHighlander Aug 3, 2026
5ad1762
Merge develop into entropy release candidate
BitHighlander Aug 3, 2026
7b16796
Merge pull request #333 from BitHighlander/fix/taproot-change-script-…
BitHighlander Aug 3, 2026
740e65b
Merge pull request #332 from BitHighlander/fix/rng-build-guard-and-au…
BitHighlander Aug 3, 2026
92ebcfa
fix(taproot): send the witness and tx footer to the host
BitHighlander Aug 3, 2026
01b87a5
chore(deps): re-pin python-keepkey for the taproot serialized-tx gate
BitHighlander Aug 4, 2026
d1db691
Merge pull request #331 from BitHighlander/fix/long-bech32-address-tr…
BitHighlander Aug 4, 2026
0d949af
docs(evidence): Gate-3 OLED frames for the taproot witness and addres…
BitHighlander Aug 4, 2026
484892e
Merge pull request #337 from BitHighlander/fix/taproot-witness-presen…
BitHighlander Aug 4, 2026
be289bd
feat(rng): one press unlocks a bulk RNG audit on an uninitialized device
BitHighlander Aug 4, 2026
a1a031d
docs(rng): scope the audit to health testing, not entropy measurement
BitHighlander Aug 4, 2026
f166150
feat(rom): route device snprintf to the integer-only newlib engine
BitHighlander Aug 4, 2026
13b78fc
chore(crypto): repin trezor-firmware with the rolled blake2b rounds
BitHighlander Aug 4, 2026
b2a5041
feat(reset): on-device dice-roll entropy in the ResetDevice flow
BitHighlander Aug 4, 2026
a22220b
fix(reset): disarm EntropyAck on abort and harden the dice button path
BitHighlander Aug 4, 2026
dcb8ef3
fix(reset): drop the now-unused acked local in the dice loop
BitHighlander Aug 4, 2026
4695c6f
style: clang-format dice_input.c
BitHighlander Aug 4, 2026
7e20a99
fix(dice): apply a queued selector advance before a following hold
BitHighlander Aug 4, 2026
689221b
Merge pull request #339 from BitHighlander/feat/rom-printf-integer
BitHighlander Aug 4, 2026
1d3f9c2
Merge pull request #340 from BitHighlander/chore/crypto-blake2b-repin
BitHighlander Aug 4, 2026
fd8f081
Merge remote-tracking branch 'origin/develop' into feat/dice-entropy-…
BitHighlander Aug 4, 2026
8a8acdc
chore(deps): pin the canonical dice-entropy merges
BitHighlander Aug 4, 2026
23b2a71
Merge pull request #338 from BitHighlander/feat/rng-audit-unlock-preinit
BitHighlander Aug 5, 2026
5173271
chore(alpha): restore the local lint tooling and zcash docs
BitHighlander Aug 5, 2026
f021348
chore(alpha): point the active submodules at the BitHighlander forks
BitHighlander Aug 5, 2026
4bd9704
ci: run CI on alpha, for both pushes and PRs into it
BitHighlander Aug 5, 2026
e3f842b
Merge pull request #341 from BitHighlander/feat/dice-entropy-reset
BitHighlander Aug 5, 2026
865d73c
Merge pull request #334 from BitHighlander/agent/security-hardening-r…
BitHighlander Aug 5, 2026
70cf981
Merge pull request #335 from BitHighlander/agent/version-pin-kdf
BitHighlander Aug 5, 2026
83945d9
merge alpha into x402 clear-sign
BitHighlander Aug 5, 2026
337fb23
merge alpha into the internal-entropy removal, and repin pyk
BitHighlander Aug 5, 2026
913be8d
Merge pull request #329 from BitHighlander/agent/x402-solana-metadata
BitHighlander Aug 5, 2026
f1f99a5
Merge pull request #336 from BitHighlander/agent/remove-internal-entr…
BitHighlander Aug 5, 2026
5a40246
build(7.15): release infrastructure, CI gates and dependency pins
BitHighlander Aug 6, 2026
ea20eaa
ci: satisfy workflow shellcheck
BitHighlander Aug 6, 2026
6af73e9
fix(board): show whole addresses, and drop the float printf engine
BitHighlander Aug 6, 2026
7dc66f7
fix(transport): share one frame arena instead of a 12 KB stack frame
BitHighlander Aug 6, 2026
c74233f
docs: map release dependency review ranges
BitHighlander Aug 6, 2026
ef822cf
ci: gate the stacked release train, and don't assert a fix two PRs early
BitHighlander Aug 8, 2026
31cda98
feat(clearsign): verify signed transaction metadata on device
BitHighlander Aug 6, 2026
9f625f2
feat(solana): clear-sign v0 transactions with reusable instruction sc…
BitHighlander Aug 6, 2026
d54e8fc
feat(clearsign): describe EVM transactions the device can verify
BitHighlander Aug 6, 2026
9b9faac
feat(clearsign): KeepKey as the schema attestor
BitHighlander Aug 6, 2026
6c27e11
fix(eip712): reject overflow widths and wrong array sizes
BitHighlander Aug 6, 2026
e109404
feat(storage): PIN KDF hardening, seed lock, BIP-85 and recovery fixes
BitHighlander Aug 6, 2026
320f0eb
feat(rng): auditable entropy source, on-device dice, and no entropy d…
BitHighlander Aug 6, 2026
09c417f
fix: clear dice digest on PIN cancellation
BitHighlander Aug 6, 2026
39555bd
ci: assert the emulator RNG source alongside the change that provides it
BitHighlander Aug 8, 2026
9bf3d57
feat(zcash): Orchard shielded signing engine
BitHighlander Aug 6, 2026
161a38f
feat(zcash): shielded message handlers, tests and constant-time gates
BitHighlander Aug 6, 2026
5312b29
feat(chains): Tendermint-family signing policy and custom denoms
BitHighlander Aug 6, 2026
a42d01a
feat(tron,ton): sign-message support and honest TRON fees
BitHighlander Aug 6, 2026
8f091e8
feat(hive): SLIP-0048 keys and operation signing
BitHighlander Aug 6, 2026
be1e210
feat(taproot): hold and spend P2TR (BIP-340/341/86)
BitHighlander Aug 6, 2026
e0e9a9b
build(variants): gate the coin engines behind the bitcoin-only build
BitHighlander Aug 6, 2026
cc0f2ab
docs(security): record the 7.15 hardening waves and release shape
BitHighlander Aug 6, 2026
51f045d
build: pin release client for final integration
BitHighlander Aug 6, 2026
5544bef
fix(rng): enforce RAND_PLATFORM_INDEPENDENT instead of relying on it
BitHighlander Aug 8, 2026
27970b0
ci: stop qualifying the regular build as "-full"
BitHighlander Aug 8, 2026
4dd5ae5
ci(report): validate the catalog against the same evidence it renders
BitHighlander Aug 9, 2026
60e299a
ci(dylib): run the one confirm-flow test that cannot hang
BitHighlander Aug 9, 2026
5f848f9
fix(release): don't rename HASHES.txt onto itself for the regular var…
BitHighlander Aug 9, 2026
940b701
ci(sram): put the budget numbers where a reviewer will see them
BitHighlander Aug 9, 2026
56807a7
fix(zcash): show the shielded output amount, which never reached the …
BitHighlander Aug 9, 2026
9f31519
chore(deps): pin python-keepkey with the on-device shielded signing test
BitHighlander Aug 9, 2026
f37d24e
ci: keep the evidence when the tests fail, and validate against all o…
BitHighlander Aug 9, 2026
b21f52c
fix(zcash): bound the transparent input index before indexing with it
BitHighlander Aug 9, 2026
774b5ab
fix(solana): never sign a transaction the parser judged malformed
BitHighlander Aug 9, 2026
ab2c978
fix(clearsign): don't let the tx<->metadata binding be disarmed mid-s…
BitHighlander Aug 9, 2026
f1e3d7a
fix(taproot): initialise the BIP-341 hash contexts on the taproot con…
BitHighlander Aug 9, 2026
79b7a3c
fix: restore the shielded two-screen confirm, bound the outputs array…
BitHighlander Aug 9, 2026
b024f8b
fix(confirm): page confirm bodies instead of dropping their tails
BitHighlander Aug 9, 2026
6b6f331
test(memo): count the screens confirm() now pages, and fail fast when…
BitHighlander Aug 9, 2026
4a54ca5
Merge PR #365 (confirm-body paging + release/report fixes) into relea…
BitHighlander Aug 9, 2026
6ae3b96
Merge PR #364 (7.15 consolidated audit stack) into develop [rc]
BitHighlander Aug 9, 2026
d71a110
feat(rng): gate wallet creation on a seed-time RNG self-test
BitHighlander Aug 11, 2026
5226cf4
fix(release): say what each published hash is for
BitHighlander Aug 11, 2026
6bebde7
fix(storage): revert the flash format to V17 for the 7.15 release
BitHighlander Aug 11, 2026
42bd32b
docs(clearsign): roadmap to a KeepKey-held signing authority
BitHighlander Aug 11, 2026
c4d48cd
docs(clearsign): revocation is unenforceable offline; expire instead
BitHighlander Aug 11, 2026
23b74a2
docs(clearsign): correct the Ledger claim, scope certs, unify the epoch
BitHighlander Aug 11, 2026
5c81e04
docs(clearsign): domain-separate the ratchets; cert-anchored PoW fres…
BitHighlander Aug 11, 2026
cf20037
docs(clearsign): bitcoin-only carries none of this, and that is load-…
BitHighlander Aug 11, 2026
97617a1
docs(clearsign): absence == failure; policy model; validator budget
BitHighlander Aug 11, 2026
8b34e0f
fix(rng): correct the APT cutoff, compile, and drop the 1 KiB frame
BitHighlander Aug 11, 2026
280f3b6
fix(storage): gate setPin's KDF, close the CRC tail, green the suite
BitHighlander Aug 11, 2026
2f7f71e
fix(rng): RCT must not reset at the APT window boundary
BitHighlander Aug 11, 2026
750ef37
docs(security): RC28 open findings and handoff
BitHighlander Aug 11, 2026
36ae0b5
fix(release): hash the artifacts that actually get published
BitHighlander Aug 11, 2026
cd98440
fix(storage): make the emulator CRC match the peripheral, and cross t…
BitHighlander Aug 11, 2026
e733567
feat(rng): one checked-RNG verdict, consumed by every key-material draw
BitHighlander Aug 11, 2026
abb3b1e
docs(clearsign): name the eight blockers, and stop calling ROM the la…
BitHighlander Aug 11, 2026
8435618
docs(security): record the remediation pass, and what the suite never…
BitHighlander Aug 12, 2026
7c8e095
style(storage): satisfy clang-format-20, which is what CI runs
BitHighlander Aug 12, 2026
0394ded
style(u2f): pointer binds left, per .clang-format
BitHighlander Aug 12, 2026
88465b0
docs(security): clang-format-20 is already installed; the build recip…
BitHighlander Aug 12, 2026
866f264
style(storage): suppress the deliberate always-false PIN-KDF comparison
BitHighlander Aug 12, 2026
ecc2fdb
docs(security): #368 had never been built by CI
BitHighlander Aug 12, 2026
45ecfa3
fix(release): the quorum gate was passing unsigned images
BitHighlander Aug 12, 2026
0a20d5d
perf(storage): cut V19 PIN KDF to 70k iterations
BitHighlander Aug 12, 2026
0eb732e
feat(rng): invert the default — random32() is checked, raw draws are …
BitHighlander Aug 12, 2026
1770c61
docs(clearsign): the schema root is not the lighter case; blocker 8 i…
BitHighlander Aug 12, 2026
7f34a66
docs(security): correct the accounting after review reopened two find…
BitHighlander Aug 12, 2026
fc092c8
fix(release): bind the manifest to one named image, and stop overstat…
BitHighlander Aug 12, 2026
bee5b29
fix(storage): _Alignas broke both ARM builds; repin the catalog
BitHighlander Aug 12, 2026
53866b9
docs(clearsign): two more protocol blockers — bootstrap and work acco…
BitHighlander Aug 12, 2026
3246b5f
fix(rng): make it link, feed the continuous test, and keep memcmp_s raw
BitHighlander Aug 12, 2026
b988dcc
docs(security): #366 and #368 did not build; record why that was miss…
BitHighlander Aug 12, 2026
5487e26
docs(security): put the cross-compile step in the build recipe too
BitHighlander Aug 12, 2026
e514301
fix(rng): keep the gate out of the boot path, and out of the bootloader
BitHighlander Aug 12, 2026
3f617b6
docs(security): hard gate — do not ship a bootloader from this tree yet
BitHighlander Aug 12, 2026
72ea186
descope(rng): seed-time gate only, opt-in, no deps and no bootloader
BitHighlander Aug 12, 2026
af933a5
fix(release): publish firmware only — never a bootloader
BitHighlander Aug 12, 2026
440e8f8
docs(security): record the post-7.15 RNG project and why the crypto b…
BitHighlander Aug 12, 2026
f4a0900
Merge PR #368 into develop [rc28]
BitHighlander Aug 12, 2026
cb52485
Merge PR #367 into develop [rc28]
BitHighlander Aug 12, 2026
f31a743
Merge PR #366 into develop [rc28]
BitHighlander Aug 12, 2026
d4265d9
feat(storage): make a wiping upgrade a build failure
BitHighlander Aug 13, 2026
0a2a604
docs(dice): what the roll digest proves, and what it cannot
BitHighlander Aug 13, 2026
88fe777
fix(storage): assert every version entry, not just the last
BitHighlander Aug 13, 2026
a3bd19f
docs(anti-rollback): withdraw a guarantee the hardware cannot provide
BitHighlander Aug 13, 2026
8392b2d
docs(clearsign): lock all ten blockers, and record what each decision…
BitHighlander Aug 13, 2026
eb12165
feat(release): verify firmware signatures host-side, before publishing
BitHighlander Aug 13, 2026
5ddfcf8
fix(policy): AdvancedMode is session state, not a flash bit
BitHighlander Aug 13, 2026
aa25a0b
docs(gate3): OLED proof for the AdvancedMode confirm, and say both tr…
BitHighlander Aug 14, 2026
1d3d5ec
Merge pull request #374 from BitHighlander/feat/verify-signatures
BitHighlander Aug 14, 2026
8c271ab
Merge pull request #375 from BitHighlander/docs/anti-rollback-recover…
BitHighlander Aug 14, 2026
986faf1
Merge pull request #372 from BitHighlander/fix/storage-version-gate
BitHighlander Aug 14, 2026
dd38324
Merge pull request #373 from BitHighlander/feat/session-scoped-advanc…
BitHighlander Aug 14, 2026
5bb8b19
ci: ship the emulator libs with every release, both platforms or neither
BitHighlander Aug 14, 2026
afe5876
docs(security): measure the ERC-20 token table and phase its retirement
BitHighlander Aug 15, 2026
67ef34f
chore(deps): bump python-keepkey to the canonical branch head
BitHighlander Aug 15, 2026
69c45a4
chore(deps): point the release submodules at upstream, not the fork
BitHighlander Aug 15, 2026
deff341
docs(clearsign): name Phase 0 as a shippable provider tier
BitHighlander Aug 15, 2026
3b5382e
Merge pull request #369 from BitHighlander/docs/clearsign-delegation-…
BitHighlander Aug 15, 2026
a19d1c0
Merge pull request #376 from BitHighlander/docs/clearsign-decisions-l…
BitHighlander Aug 15, 2026
cf7b3a7
Merge pull request #381 from BitHighlander/docs/phase0-provider-tier
BitHighlander Aug 15, 2026
ca53161
Merge pull request #370 from BitHighlander/docs/rc28-handoff
BitHighlander Aug 15, 2026
bca93fc
Merge pull request #379 from BitHighlander/docs/token-table-retirement
BitHighlander Aug 15, 2026
8eed825
docs(clearsign): state the scope as rules, not a phase number
BitHighlander Aug 15, 2026
4895b81
Merge pull request #382 from BitHighlander/docs/clearsign-scope-invar…
BitHighlander Aug 15, 2026
fc9c59e
merge develop into alpha, taking develop's tree wholesale
BitHighlander Aug 15, 2026
a70d128
Merge pull request #380 from BitHighlander/chore/bump-pyk-to-canonica…
BitHighlander Aug 16, 2026
b46e718
Merge pull request #378 from BitHighlander/ci/emulator-libs-release
BitHighlander Aug 16, 2026
dc6bd37
Merge pull request #371 from BitHighlander/fix/pin-kdf-30pct-faster
BitHighlander Aug 16, 2026
681df4a
Revert "Merge pull request #371 from BitHighlander/fix/pin-kdf-30pct-…
BitHighlander Aug 16, 2026
05e7a14
WIP: alpha <- develop merge, 40 symbol regressions outstanding
BitHighlander Aug 20, 2026
0573495
docs: branch SOP and the alpha merge handoff
BitHighlander Aug 20, 2026
dc657b8
merge(board): restore alpha's board/confirm symbols onto develop's im…
BitHighlander Aug 20, 2026
41949ea
merge(evm,rng): restore the clearsign handlers and the emulator rando…
BitHighlander Aug 20, 2026
37c3c10
docs(handoff): record batch 1 and 2 progress, 40 -> 32
BitHighlander Aug 20, 2026
768ebae
merge(storage): take alpha's storage.c and replay develop's ceremony …
BitHighlander Aug 21, 2026
1caded7
merge(thorchain,maya): alpha's labelled parser, carrying develop's me…
BitHighlander Aug 21, 2026
e49cf15
merge(transaction): alpha's file, carrying develop's cancel-is-not-a-…
BitHighlander Aug 21, 2026
b897174
merge(osmosis): keep alpha's canonical-input validators and develop's…
BitHighlander Aug 21, 2026
7843eb4
merge(evm): alpha's THOR/Maya and Uniswap handlers, with develop's st…
BitHighlander Aug 21, 2026
384ff3a
merge(direction): restore alpha's work in 12 files taken wholesale fr…
BitHighlander Aug 21, 2026
96046dd
merge(reset,solana,evm): the last two symbol regressions, and the dic…
BitHighlander Aug 21, 2026
f054e41
build: make the merge compile, and fix what the compiler exposed
BitHighlander Aug 21, 2026
affa4d1
fix(thorchain): disclose a fee whose affiliate slot is empty; correct…
BitHighlander Aug 21, 2026
c5ab505
tools: keep both merge gates, and record what the symbol gate cannot see
BitHighlander Aug 21, 2026
0b49508
tools: record which direction-gate flags were adjudicated, and why
BitHighlander Aug 21, 2026
ef440cb
fix: three merge defects the tests caught, and a harness race that hi…
BitHighlander Aug 21, 2026
b2853d3
docs(handoff): the merge is green; what it does and does not prove
BitHighlander Aug 21, 2026
d838471
fix(evm): a Uniswap recipient screen the user approved is an approval
BitHighlander Aug 21, 2026
ba4324c
merge: carry alpha's handoff commit into the merged tree
BitHighlander Aug 21, 2026
56d5ff8
chore(deps): repin python-keepkey to 9f3b176 — the Uniswap tests now run
BitHighlander Aug 21, 2026
f2ab054
ci(secret-scan): one allowlist form, so the config loads and CI runs …
BitHighlander Aug 21, 2026
dabfdf9
fix(build): three merge defects that only the ARM and bitcoin-only bu…
BitHighlander Aug 21, 2026
8999917
style: clang-format-20 the two comments added by the build fixes
BitHighlander Aug 21, 2026
22cb37f
fix(btc): an OP_RETURN output must re-arm the duplicate-transaction hash
BitHighlander Aug 21, 2026
62b999f
fix(variant): the bitcoin-only emulator must report EmulatorBTC, not …
BitHighlander Aug 21, 2026
10a9615
fix(storage): stamp the magic before serialising, not after
BitHighlander Aug 21, 2026
3b29ea7
fix(sram): restore alpha's arena-shared permutation; the ARM link was…
BitHighlander Aug 21, 2026
b83b054
Merge pull request #495 from BitHighlander/fix/715-opreturn-dupe-and-…
BitHighlander Aug 21, 2026
3fe000a
Merge pull request #496 from BitHighlander/fix/715-storage-magic-orde…
BitHighlander Aug 21, 2026
b42af37
Merge pull request #497 from BitHighlander/fix/715-sram-recovery-cipher
BitHighlander Aug 21, 2026
dda5310
chore(deps): repin python-keepkey to 1ed34a70
BitHighlander Aug 21, 2026
add6085
feat(features): report supports_taproot, which the firmware already i…
BitHighlander Aug 21, 2026
6569434
Merge pull request #498 from BitHighlander/fix/715-report-taproot-cap…
BitHighlander Aug 21, 2026
3aaacac
chore(deps): repin python-keepkey to d5560b589 (report module-prefix …
BitHighlander Aug 21, 2026
78c819b
docs: SRS for 7.15/7.16/7.17, the defect register, and how to read th…
BitHighlander Aug 21, 2026
302aeee
Merge pull request #499 from BitHighlander/docs/715-srs-and-atlas
BitHighlander Aug 21, 2026
b905186
chore(deps): repin python-keepkey to cedad1c72 (power-cycle portability)
BitHighlander Aug 21, 2026
1d6e6e6
docs(srs): say where the CI-test-signed schemas actually live
BitHighlander Aug 21, 2026
e48beaf
feat(solana): KKSOLSW1 -- show provider-attested lookup-table accounts
BitHighlander Aug 21, 2026
217fadf
chore(deps): repin python-keepkey to ba05282f8 (power-cycle runs on p…
BitHighlander Aug 21, 2026
7062713
Merge remote-tracking branch 'origin/alpha' into feat/715-kksolsw1
BitHighlander Aug 21, 2026
6136437
chore(deps): repin python-keepkey to af148d89e (revert my pb2 regener…
BitHighlander Aug 21, 2026
4d299a5
chore(deps): repin python-keepkey to ef34f3564
BitHighlander Aug 21, 2026
629a4da
Merge remote-tracking branch 'origin/alpha' into feat/715-kksolsw1
BitHighlander Aug 21, 2026
492d5d1
docs: the 7.16 reductive design, and what the token budget cannot fix
BitHighlander Aug 21, 2026
60c35e9
ci: actually run the screen audit, and repin the report fixes
BitHighlander Aug 21, 2026
69d3b6d
docs(7.15): record KKSOLSW1 as built, and how the release lands
BitHighlander Aug 21, 2026
6595102
Merge pull request #500 from BitHighlander/feat/715-kksolsw1
BitHighlander Aug 21, 2026
d3bb005
chore: repin python-keepkey — KKSOLSW1 is catalogued now that it is m…
BitHighlander Aug 21, 2026
2a16831
fix(policy): disabling AdvancedMode revokes loaded clear-sign signers
BitHighlander Aug 21, 2026
f830808
docs: R-2.2 now includes the AdvancedMode disable, and 7.16 carries o…
BitHighlander Aug 21, 2026
5acbe3a
docs(atlas): the counts reconcile now, and empty means something
BitHighlander Aug 21, 2026
0dfe1fe
docs(7.15): measured budget numbers, including what KKSOLSW1 costs
BitHighlander Aug 21, 2026
c8dc70e
fix(rng): implement the entropy audit budget C27 has been asserting
BitHighlander Aug 21, 2026
5898d6b
Merge pull request #502 from BitHighlander/fix/entropy-audit-budget
BitHighlander Aug 21, 2026
f522fa4
feat(eip712): the encoder core for device-driven structured signing
BitHighlander Aug 21, 2026
d17a28d
feat(eip712): encodeType with the alphabetical closure sort
BitHighlander Aug 21, 2026
f93b7f2
fix(eip712): bound the new messages in the .options the BUILD reads
BitHighlander Aug 21, 2026
0e494d1
Merge pull request #501 from BitHighlander/fix/advanced-mode-revokes-…
BitHighlander Aug 21, 2026
4fb334b
test(eip712): the sort canary passed under a plain reversal
BitHighlander Aug 21, 2026
cc5addc
test(eip712): assert PUBLISHED digests, not ones this test derives
BitHighlander Aug 21, 2026
f37853d
feat(eip712): the walk, wired into the FSM and fitting in SRAM
BitHighlander Aug 21, 2026
c52a435
feat(eip712): arrays, paid for by a kilobyte of decode buffer
BitHighlander Aug 21, 2026
19720fe
chore: repin python-keepkey for the EIP-712 streaming client and its …
BitHighlander Aug 21, 2026
dde1473
fix(eip712): clear the cppcheck and clang-format gates
BitHighlander Aug 21, 2026
d5b9600
merge alpha: entropy audit budget and AdvancedMode revocation
BitHighlander Aug 21, 2026
aa8b1d7
chore: repin python-keepkey for atlas section TD
BitHighlander Aug 21, 2026
e0bea6a
style(eip712): fold_frame only reads its frame
BitHighlander Aug 22, 2026
a96f0ff
test(eip712): a canary that fits, plus the closure's real ceiling
BitHighlander Aug 22, 2026
6aef3c1
Merge pull request #503 from BitHighlander/feat/715-eip712-structured
BitHighlander Aug 22, 2026
ff7386b
Merge alpha into develop: stage the 7.15 release
BitHighlander Aug 22, 2026
9bafd99
chore: repin python-keepkey so the storage gate works on the 7.15 line
BitHighlander Aug 22, 2026
f58714f
docs: drop what belongs to 7.16 or to a working session, not to this …
BitHighlander Aug 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
507 changes: 425 additions & 82 deletions .github/workflows/ci.yml

Large diffs are not rendered by default.

282 changes: 242 additions & 40 deletions .github/workflows/release.yml

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ build
.DS_Store
.vscode/

build-btconly-check/
43 changes: 40 additions & 3 deletions .gitleaks.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,47 @@
title = "KeepKey firmware gitleaks configuration"
title = "KeepKey firmware Gitleaks configuration"

# Start from the upstream ruleset and only narrow it, never widen it.
[extend]
useDefault = true

[allowlist]
[[allowlists]]
description = "Published AES test vectors in current and historical trezor-crypto layouts"
targetRules = ["generic-api-key"]
condition = "AND"
regexTarget = "line"
paths = [
'''^deps/crypto/trezor-firmware/crypto/aes/aestst\.c$''',
'''^deps/crypto/trezor-crypto/aes/aestst\.c$''',
]
regexes = ['''(?i)^[[:space:]]*//[[:space:]]*key[[:space:]]*=[[:space:]]*[0-9a-f]+[[:space:]]*$''']

[[allowlists]]
description = "Ed25519 C type names in current and historical trezor-crypto layouts"
targetRules = ["generic-api-key"]
condition = "AND"
regexTarget = "line"
paths = [
'''^deps/crypto/trezor-firmware/crypto/ed25519-donna/ed25519-(blake2b|keccak|sha3)\.h$''',
'''^deps/crypto/trezor-firmware/crypto/ed25519-donna/ed25519\.[ch]$''',
'''^deps/crypto/trezor-crypto/ed25519-donna/ed25519-(blake2b|keccak|sha3)\.h$''',
'''^deps/crypto/trezor-crypto/ed25519-donna/ed25519\.[ch]$''',
]
regexes = ['''ed25519.*secret_key.*signature''']

[[allowlists]]
description = "RC21 release provenance names an exact public python-keepkey git commit"
targetRules = ["generic-api-key"]
condition = "AND"
regexTarget = "line"
paths = ['''^docs/security/7\.15\.0-rc21-clearsign-release-control\.md$''']
regexes = ['''^[[:space:]]*-[[:space:]]*python-keepkey:[[:space:]]*`c406a1ba9120da410c356dbff7f4d4bd1e1758fa`\.[[:space:]]*$''']

# Converted from the deprecated singular [allowlist] to a fourth [[allowlists]]
# entry. gitleaks refuses to load a config containing both forms ("[allowlist] is
# deprecated, it cannot be used alongside [[allowlists]]"), which is what the
# alpha<-develop merge produced: alpha carried three [[allowlists]] and develop
# carried this one [allowlist]. The merge kept both and the scan died at config
# load, taking the whole build graph with it. Content is unchanged.
[[allowlists]]
description = """
Two U2F attestation artifacts are public by design and must not fail the scan.

Expand Down
8 changes: 4 additions & 4 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
[submodule "deps/device-protocol"]
path = deps/device-protocol
url = https://github.com/keepkey/device-protocol.git
branch = master
url = https://github.com/keepkey/device-protocol.git
branch = up/release-protocol
[submodule "deps/trezor-firmware"]
path = deps/crypto/trezor-firmware
url = https://github.com/keepkey/trezor-firmware.git
url = https://github.com/BitHighlander/trezor-firmware.git
[submodule "googletest"]
path = deps/googletest
url = https://github.com/google/googletest.git
Expand All @@ -14,7 +14,7 @@ url = https://github.com/keepkey/code-signing-keys.git
[submodule "deps/python-keepkey"]
path = deps/python-keepkey
url = https://github.com/keepkey/python-keepkey.git
branch = master
branch = reconcile/upstream-sync
[submodule "deps/qrenc/QR-Code-generator"]
path = deps/qrenc/QR-Code-generator
url = https://github.com/keepkey/QR-Code-generator.git
Expand Down
79 changes: 75 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ endif()

project(
KeepKeyFirmware
VERSION 7.14.2
VERSION 7.15.0
LANGUAGES C CXX ASM)

set(BOOTLOADER_MAJOR_VERSION 2)
Expand All @@ -20,6 +20,17 @@ option(KK_EMULATOR "Build the emulator" OFF)
option(KK_BUILD_DYLIB "Build libkkemu shared library (.dylib/.so)" OFF)
option(KK_DEBUG_LINK "Build with debug-link enabled" OFF)
option(KK_BUILD_FUZZERS "Build the fuzzers?" OFF)
option(KK_BITCOIN_ONLY "Build Bitcoin-only firmware (strip all non-BTC coins)" OFF)
# Zcash shielded/Orchard support is part of the regular firmware. It is an
# internal compile selection, not a third release variant: bitcoin-only strips
# the Zcash coin and privacy engine; every regular device/emulator build ships
# both. The open constant-time Pallas audit finding remains a release gate for
# RC18, but it must not silently change the product being audited.
if(KK_BITCOIN_ONLY)
set(KK_ZCASH_PRIVACY OFF)
else()
set(KK_ZCASH_PRIVACY ON)
endif()

# When building the dylib, every static lib it links (kkfirmware, kkboard,
# trezorcrypto, kkrand, kktransport, qrcodegenerator, SecAESSTM32, ...) must
Expand Down Expand Up @@ -62,7 +73,7 @@ endif()
if(NOT EXISTS ${CMAKE_SOURCE_DIR}/deps/crypto/trezor-firmware/crypto/Makefile)
message(
FATAL_ERROR
" trezor-crypto missing. Need to 'git submodule update --init --recursive"
"trezor-crypto fork missing. Run 'git submodule update --init deps/crypto/trezor-firmware'"
)
endif()

Expand All @@ -84,6 +95,13 @@ endif()
if(${KK_EMULATOR})
add_definitions(-DEMULATOR)
add_definitions(-DCONFIDENTIAL=)
# macOS/BSD declare strlcpy/strlcat in <string.h>; glibc (Linux) and MinGW
# (Windows) do not. Force-include the prototypes so the ~20 call sites build
# without -Werror=implicit-function-declaration (definitions come from
# lib/board/strlcpy.c + strlcat.c). Apple already has them in <string.h>.
if(NOT APPLE)
add_compile_options(-include ${CMAKE_SOURCE_DIR}/include/keepkey/board/bsd_compat.h)
endif()
else()
add_definitions(-DCONFIDENTIAL=__attribute__\(\(section\("confidential"\)\)\))
endif()
Expand All @@ -97,14 +115,29 @@ add_definitions(-DED25519_FORCE_32BIT=1)

add_definitions(-DUSE_PRECOMPUTED_CP=0)

add_definitions(-DUSE_ETHEREUM=1)
if(${KK_BITCOIN_ONLY})
# Bitcoin-only: strip the coin-specific trezor-crypto primitives whose only
# callers (ethereum.c / nano.c) are compiled out below. KECCAK stays on --
# marginal size win, and it is a generic hash we don't want to risk.
add_definitions(-DUSE_ETHEREUM=0)
add_definitions(-DUSE_NANO=0)
else()
add_definitions(-DUSE_ETHEREUM=1)
add_definitions(-DUSE_NANO=1)
endif()
add_definitions(-DUSE_KECCAK=1)
add_definitions(-DUSE_GRAPHENE=0)
add_definitions(-DUSE_CARDANO=0)
add_definitions(-DUSE_MONERO=0)
add_definitions(-DUSE_NEM=0)
add_definitions(-DUSE_NANO=1)

# NOT a USE_* style on/off toggle despite sitting next to them: trezor-crypto's
# rand.c tests this macro with #ifndef, so only its *definedness* matters. The
# old -D...=0 spelling read as "off" while actually meaning "on", and the
# insecure LCG random32() stayed out of the build purely by that double
# negation. Define it bare, matching upstream trezor-core's SConscript.firmware,
# so a future cleanup of an apparent "=0 means unused" define cannot silently
# compile in the LCG. lib/rand/rng.c #errors if this ever goes missing.
# trezor-crypto's rand.c tests only whether this macro is defined. A value of
# zero therefore did not disable anything; it excluded the library's insecure
# test LCG by definedness. Use the upstream spelling so that intent is clear,
Expand All @@ -127,12 +160,34 @@ add_definitions(-DBIP39_WORDLIST_PADDED=1)

add_definitions(-DAES_128=1)

# NOTE: AES table size is selected per release product below. The regular
# image includes Zcash and its Pallas curve arithmetic, so it uses the smaller
# AES tables to preserve flash headroom. Bitcoin-only keeps FOUR_TABLES AES.

if(${KK_DEBUG_LINK})
add_definitions(-DDEBUG_LINK=1)
else()
add_definitions(-DDEBUG_LINK=0)
endif()

# Value macros (always defined 0/1) -- device builds use -Wundef -Werror, so an
# undefined identifier in `#if` is a hard error. Guard code with `#if FLAG`.
if(${KK_BITCOIN_ONLY})
add_definitions(-DBITCOIN_ONLY=1)
else()
add_definitions(-DBITCOIN_ONLY=0)
endif()

if(${KK_ZCASH_PRIVACY})
add_definitions(-DZCASH_PRIVACY=1)
# The Orchard engine leaves the regular image tightest on flash; shrink the
# Gladman AES lookup tables from 4KB to 1KB each (-15,360 bytes ROM,
# slightly slower AES). Bitcoin-only keeps the fast FOUR_TABLES.
add_definitions(-DAES_SMALL_TABLES)
else()
add_definitions(-DZCASH_PRIVACY=0)
endif()

if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
add_definitions(-DDEBUG_ON)
add_definitions(-DMEMORY_PROTECT=0)
Expand Down Expand Up @@ -165,6 +220,12 @@ if(NOT ${KK_EMULATOR})
link_directories(${LIBOPENCM3_PATH}/lib)
include_directories(${LIBOPENCM3_PATH}/include)

# Emit per-function stack-frame sizes (.su files) on device builds. CI's
# SRAM budget gate (tools/check_sram_budget.py) reports the largest frames
# and fails when the linker-asserted stack reserve minus the largest frame
# leaves less than the configured margin. See tools/firmware/keepkey.ld.
add_compile_options(-fstack-usage)

# Dummy empty libraries for stack smashing protection support, since we
# implement __stack_chk_guard and __stack_chk_fail ourselves.
file(WRITE ${CMAKE_BINARY_DIR}/ssp.c "")
Expand Down Expand Up @@ -193,6 +254,10 @@ if(${KK_EMULATOR})
add_test(test-firmware ${CMAKE_BINARY_DIR}/bin/firmware-unit)
add_test(test-board ${CMAKE_BINARY_DIR}/bin/board-unit)
add_test(test-crypto ${CMAKE_BINARY_DIR}/bin/crypto-unit)
if(${KK_ZCASH_PRIVACY})
add_test(test-pallas-ct ${CMAKE_BINARY_DIR}/bin/pallas-ct-unit)
add_test(test-zcash-crypto ${CMAKE_BINARY_DIR}/bin/zcash-crypto-unit)
endif()

add_custom_target(
xunit
Expand All @@ -203,4 +268,10 @@ if(${KK_EMULATOR})
COMMAND ${CMAKE_BINARY_DIR}/bin/crypto-unit
--gtest_output=xml:${CMAKE_BINARY_DIR}/unittests/crypto.xml)

if(${KK_ZCASH_PRIVACY})
add_custom_command(TARGET xunit POST_BUILD
COMMAND ${CMAKE_BINARY_DIR}/bin/pallas-ct-unit
--gtest_output=xml:${CMAKE_BINARY_DIR}/unittests/pallas-ct.xml)
endif()

endif()
42 changes: 42 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Convenience targets — mirrors CI jobs so failures are caught locally.
#
# CI pins clang-format-20. Use that version if available, otherwise fall back.
# To install: brew install llvm@20 or apt-get install clang-format-20
CLANG_FORMAT ?= $(shell command -v clang-format-20 2>/dev/null || echo clang-format)

# Directories and exclusions must match .github/workflows/ci.yml lint-format job.
LINT_DIRS := include/keepkey lib/firmware lib/board lib/transport/src
LINT_SOURCES := $(shell find $(LINT_DIRS) -name '*.c' -o -name '*.h' 2>/dev/null \
| grep -v generated | grep -v '\.pb\.')

.PHONY: lint format help

## lint: Check formatting (same rules as CI). Exits non-zero on any violation.
lint:
@echo "clang-format version: $$($(CLANG_FORMAT) --version)"
@FAILED=0; \
for f in $(LINT_SOURCES); do \
if ! $(CLANG_FORMAT) --style=file --dry-run --Werror "$$f" 2>/dev/null; then \
echo " NEEDS FORMAT: $$f"; \
FAILED=1; \
fi; \
done; \
if [ "$$FAILED" = "1" ]; then \
echo ""; \
echo "Run 'make format' to fix all files."; \
exit 1; \
else \
echo "All files pass clang-format check."; \
fi

## format: Auto-fix formatting in-place for all source files.
format:
@echo "Formatting $(LINT_DIRS)..."
@for f in $(LINT_SOURCES); do \
$(CLANG_FORMAT) --style=file -i "$$f"; \
done
@echo "Done. Review changes with: git diff"

## help: List available targets.
help:
@grep -E '^## ' $(MAKEFILE_LIST) | sed 's/^## / make /'
9 changes: 8 additions & 1 deletion cmake/caches/device.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,14 @@ set(WARN_FLAGS
-Werror")


set(KK_C_FLAGS "${ARCH_FLAGS} -std=gnu99 ${WARN_FLAGS}" CACHE STRING "")
# Newlib's snprintf unconditionally links the float engine (_svfprintf_r,
# _dtoa_r, soft-double libgcc, malloc) — ~22 KB of ROM with zero %f users in
# the firmware. Route all callers to the integer-only siprintf family instead.
# %lld/%llu still work (this toolchain's libc.a compiles the integer engine
# with long-long support). Device builds only; host/emulator keep libc printf.
set(PRINTF_FLAGS "-Dsnprintf=sniprintf -Dvsnprintf=vsniprintf")

set(KK_C_FLAGS "${ARCH_FLAGS} -std=gnu99 ${WARN_FLAGS} ${PRINTF_FLAGS}" CACHE STRING "")
set(KK_CXX_FLAGS "${ARCH_FLAGS} -std=gnu++11 ${WARN_FLAGS} \
-fno-exceptions \
-fno-rtti \
Expand Down
40 changes: 40 additions & 0 deletions cmake/toolchains/mingw-w64-x86_64.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# MinGW-w64 cross-compile toolchain for the Windows emulator DLL (libkkemu.dll,
# x86_64). Lets us cross-build the Windows DLL from the existing macOS/Linux
# emulator build host — no Windows runner required.
#
# Usage:
# cmake -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/mingw-w64-x86_64.cmake \
# -DKK_EMULATOR=ON -DKK_BUILD_DYLIB=ON -DKK_DEBUG_LINK=ON ...
# cmake --build <dir> --target kkemulator_dylib
#
# Install MinGW: `brew install mingw-w64` (macOS) / `apt-get install mingw-w64`.
#
# Only the kkemulator_dylib target is meant to cross-compile. The standalone
# UDP `kkemu` binary is gated out on Windows (tools/emulator/CMakeLists.txt).

set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_SYSTEM_PROCESSOR x86_64)

set(TOOLCHAIN_PREFIX x86_64-w64-mingw32)
find_program(CMAKE_C_COMPILER NAMES ${TOOLCHAIN_PREFIX}-gcc)
find_program(CMAKE_CXX_COMPILER NAMES ${TOOLCHAIN_PREFIX}-g++)
find_program(CMAKE_RC_COMPILER NAMES ${TOOLCHAIN_PREFIX}-windres)

if(NOT CMAKE_C_COMPILER)
message(FATAL_ERROR
"${TOOLCHAIN_PREFIX}-gcc not found. Install MinGW-w64 "
"(brew install mingw-w64 / apt-get install mingw-w64).")
endif()

# Derive the target sysroot from the compiler location so this works across
# Homebrew versions and Linux package layouts.
get_filename_component(_kk_cc "${CMAKE_C_COMPILER}" REALPATH)
get_filename_component(_kk_bin "${_kk_cc}" DIRECTORY)
get_filename_component(_kk_root "${_kk_bin}/.." ABSOLUTE)
set(CMAKE_FIND_ROOT_PATH "${_kk_root}/${TOOLCHAIN_PREFIX}")

# Find host programs on the host; libraries/headers in the target sysroot.
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
14 changes: 13 additions & 1 deletion deps/crypto/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ set(sources
#trezor-firmware/crypto/tests/test_openssl.c
#trezor-firmware/crypto/tests/test_speed.c
trezor-firmware/crypto/secp256k1.c
trezor-firmware/crypto/bip340.c
trezor-firmware/crypto/bignum.c
trezor-firmware/crypto/segwit_addr.c
trezor-firmware/crypto/ripemd160.c
Expand All @@ -57,6 +58,18 @@ set(sources
#trezor-firmware/crypto/aes/aestst.c
trezor-firmware/crypto/aes/aestab.c)

# Pallas/Orchard curve arithmetic (~2.4k LOC) -- only the Zcash shielded engine
# uses it. Excluded from the default and bitcoin-only images.
if(${KK_ZCASH_PRIVACY})
list(APPEND sources
trezor-firmware/crypto/pallas.c
trezor-firmware/crypto/pallas_ct.c
trezor-firmware/crypto/pallas_sinsemilla.c
trezor-firmware/crypto/pallas_swu.c
trezor-firmware/crypto/redpallas.c
trezor-firmware/crypto/zcash_zip316.c)
endif()

# Clang 5.0 in the docker image (kktech/firmware:v7) is missing
# <xmmintrin.h>, which breaks these. Until they're needed, we'll just elide
# them.
Expand All @@ -68,7 +81,6 @@ set(sources

include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/trezor-firmware/crypto
${CMAKE_CURRENT_SOURCE_DIR}/trezor-firmware/
${CMAKE_CURRENT_SOURCE_DIR}/trezor-firmware/crypto/ed25519-donna
${OPENSSL_INCLUDE_DIR})

Expand Down
2 changes: 1 addition & 1 deletion deps/crypto/trezor-firmware
Submodule trezor-firmware updated 57 files
+65 −0 .github/workflows/crypto.yml
+2 −2 .github/workflows/fixup_check.yml
+15 −7 .github/workflows/prebuild.yml
+72 −0 crypto/KEEPKEY_CRYPTO.md
+8 −1 crypto/Makefile
+81 −0 crypto/SECURITY_BACKPORTS.md
+13 −13 crypto/aes/aes_modes.c
+6 −6 crypto/aes/aescrypt.c
+12 −12 crypto/aes/aeskey.c
+20 −15 crypto/aes/aesopt.h
+2 −3 crypto/aes/aestab.c
+4 −2 crypto/bignum.c
+63 −26 crypto/bip32.c
+1 −0 crypto/bip32.h
+384 −0 crypto/bip340.c
+136 −0 crypto/bip340.h
+113 −75 crypto/bip39.c
+10 −0 crypto/bip39.h
+3 −12 crypto/blake2b.c
+35 −31 crypto/cash_addr.c
+30 −27 crypto/cash_addr.h
+0 −1 crypto/chacha20poly1305/poly1305-donna-32.h
+0 −1 crypto/chacha20poly1305/poly1305-donna.h
+111 −44 crypto/ecdsa.c
+8 −8 crypto/ecdsa.h
+2 −2 crypto/ed25519-donna/curve25519-donna-helpers.c
+1 −1 crypto/ed25519-donna/ed25519-blake2b.h
+51 −30 crypto/ed25519-donna/ed25519-donna-impl-base.c
+1 −1 crypto/ed25519-donna/ed25519-keccak.h
+1 −1 crypto/ed25519-donna/ed25519-sha3.h
+81 −19 crypto/ed25519-donna/ed25519.c
+4 −3 crypto/ed25519-donna/ed25519.h
+4 −0 crypto/groestl.c
+1 −2 crypto/nem.c
+809 −0 crypto/pallas.c
+112 −0 crypto/pallas.h
+601 −0 crypto/pallas_ct.c
+58 −0 crypto/pallas_ct.h
+351 −0 crypto/pallas_sinsemilla.c
+85 −0 crypto/pallas_sinsemilla.h
+1,026 −0 crypto/pallas_sinsemilla_table.inc
+712 −0 crypto/pallas_swu.c
+41 −0 crypto/pallas_swu.h
+501 −0 crypto/redpallas.c
+133 −0 crypto/redpallas.h
+19 −3 crypto/rfc6979.c
+2 −1 crypto/rfc6979.h
+3 −1 crypto/schnorr.c
+6 −6 crypto/sha2.c
+3 −1 crypto/sha3.c
+93 −8 crypto/tests/test_check.c
+1 −2 crypto/tests/test_check_cardano.h
+4 −15 crypto/tests/test_check_segwit.h
+119 −0 crypto/tests/test_pallas_ct.c
+2 −2 crypto/tests/test_speed.c
+271 −0 crypto/zcash_zip316.c
+37 −0 crypto/zcash_zip316.h
2 changes: 1 addition & 1 deletion deps/python-keepkey
Submodule python-keepkey updated 64 files
+140 −18 .github/workflows/ci.yml
+5 −1 .github/workflows/copilot-review.yml
+2 −2 .gitmodules
+1 −1 build_pb.sh
+1 −1 device-protocol
+81 −0 keepkeylib/clearsign_abi.py
+1,003 −0 keepkeylib/clearsign_catalog.py
+287 −38 keepkeylib/client.py
+11 −0 keepkeylib/debuglink.py
+297 −0 keepkeylib/eip712_stream.py
+20 −1 keepkeylib/eth/ethereum_tokens.py
+124 −0 keepkeylib/eth/token_policy.py
+19 −1 keepkeylib/eth/uniswap_tokens.py
+18 −0 keepkeylib/hive.py
+9 −0 keepkeylib/mapping.py
+460 −13 keepkeylib/messages_ethereum_pb2.py
+185 −1 keepkeylib/messages_hive_pb2.py
+652 −244 keepkeylib/messages_pb2.py
+1 −1 keepkeylib/messages_ripple_pb2.py
+77 −14 keepkeylib/messages_solana_pb2.py
+13 −6 keepkeylib/messages_thorchain_pb2.py
+247 −64 keepkeylib/messages_zcash_pb2.py
+148 −10 keepkeylib/signed_metadata.py
+28 −1 keepkeylib/transport_udp.py
+9 −4 keepkeylib/types_pb2.py
+2,111 −152 scripts/generate-test-report.py
+82 −0 tests/common.py
+6 −1 tests/config.py
+7 −0 tests/probe.py
+23 −0 tests/test_message_signing_protocol_bindings.py
+2 −3 tests/test_msg_bip85.py
+656 −0 tests/test_msg_bitcoin_only_variant.py
+2 −2 tests/test_msg_cosmos_signtx.py
+168 −0 tests/test_msg_eip712_streaming.py
+856 −22 tests/test_msg_ethereum_clear_signing.py
+363 −0 tests/test_msg_ethereum_clearsign_additive.py
+0 −6 tests/test_msg_ethereum_erc20_uniswap_liquidity.py
+5 −5 tests/test_msg_ethereum_signing_guards.py
+67 −4 tests/test_msg_ethereum_signtx.py
+72 −2 tests/test_msg_ethereum_thorchain_deposit.py
+76 −0 tests/test_msg_getaddress_taproot.py
+57 −19 tests/test_msg_getentropy.py
+770 −0 tests/test_msg_hive.py
+153 −201 tests/test_msg_mayachain_signtx.py
+236 −0 tests/test_msg_osmosis_signtx.py
+1 −1 tests/test_msg_recoverydevice_cipher.py
+167 −8 tests/test_msg_resetdevice.py
+500 −0 tests/test_msg_session_trust_lifetime.py
+365 −0 tests/test_msg_signtx_taproot.py
+215 −0 tests/test_msg_solana_lut_attestation.py
+353 −11 tests/test_msg_solana_signtx.py
+17 −11 tests/test_msg_thorchain_signtx.py
+12 −45 tests/test_msg_ton_signtx.py
+13 −1 tests/test_msg_tron_signtx.py
+13 −21 tests/test_msg_zcash_display_address.py
+3 −13 tests/test_msg_zcash_seed_fingerprint.py
+231 −183 tests/test_msg_zcash_sign_pczt.py
+315 −0 tests/test_msg_zcash_sign_pczt_device.py
+1 −0 tests/test_protection_levels.py
+111 −23 tests/test_sign_typed_data.py
+1,193 −0 tests/test_storage_version_gate.py
+43 −0 tests/test_taproot_screens.py
+29 −0 tests/txcache/insight_bitcoin_tx_3e1fdf082678a8a2f378995ffc0e4f853942c55c4ddbc2771b348413eeeca9a4.json
+24 −0 tests/txcache/insight_bitcoin_tx_6e32033911982f7550ab1d26232adfd08711293e15085f77cd27628be0a6ee37.json
Loading
Loading