Amber nodes are monitored by CommitWatch. Gray nodes are sampled from authenticated GitHub public commit search and may not represent complete contribution history.
This commit is a code-quality cleanup that changes many function parameters from signed integers (`int`) to unsigned size types (`size_t`) where only non-negative lengths or sizes make sense. It also removes some now-unnecessary negative-v…
Defensive type narrowing from signed `int` to unsigned `size_t` for buffer lengths and sizesRemoval of negative-length checks that become logically unnecessary with `size_t`Assertion added in `bn_format` to guard pointer/length arithmetic
This is a code cleanup and type-safety refactor for the Monero parts of the Trezor firmware. It adds stricter type hints, asserts that certain values are not missing, and fixes a minor return-value bug in a helper that encrypts data. There…
assert guards added to prevent use of None values in Monero address and transaction handlingchacha_poly.encrypt return signature corrected from 3-tuple to 2-tuple, with caller updatedtype annotations tightened across Monero signing, key image sync, and bulletproof code
This commit hardens how Trezor compares secret values (passwords, PINs, cryptographic tags, and checksums) so that an attacker cannot learn information by measuring how long the comparison takes. It also adds a fault-injection check: if a …
Replaces non-constant-time memcmp with constant-time consteq in cryptographic tag verification paths (AES-GCM, Poly1305, base58 checksums, ed25519 signature verification, SLIP25 MAC)Adds volatile loop counter and loop-completion fault check in consteq to mitigate fault-injection skipping of the comparisonIntroduces tc_fault_handler() abstraction; production builds map it to a fatal error, while a no-op fallback is provided for tests/unconfigured builds
This commit replaces internal programming assertions (which crash the device if they fail) with proper error handling for Ethereum transaction signing when a payment request is involved. It ensures that if someone supplies a payment reques…
assert replaced with explicit exceptioninput validation added for payment request pathEthereum transaction signing hardening
This commit only changes how long hexadecimal fingerprints and hashes are displayed to users. It inserts spaces every four characters so the strings are easier to read and compare visually. There is no change to security logic, cryptograph…
This commit fixes how Trezor's Python library validates signatures for a new bootloader image format (BootloaderV2). Before the fix, the code ignored the signature bitmask and simply checked every signature against every public key in orde…
Signature verification logic corrected to enforce bitmask alignmentAdded length/popcount validation for signature arraysMissing signature status reporting added for BootloaderV2Image header output
This commit only changes test files so that ten unit tests are skipped when running against the Bitcoin-only firmware variant. It does not modify the actual Trezor firmware code that users run, so it cannot directly affect device security …
This commit adds a new utility function called `consteq` that compares two chunks of memory in a way that takes the same amount of time regardless of how similar the chunks are. It is intended to help prevent timing-based attacks in the fu…
New constant-time comparison helper addedBuild scripts updated to compile the new helperNo existing comparison logic was replaced in this commit
This commit is a code cleanup, not a security fix. It creates a new, more specific error type called AuthenticationError and changes AES-GCM and ChaCha20-Poly1305 decryption to throw that error instead of a generic RuntimeError when authen…
Changed exception type for AEAD authentication failures from RuntimeError to a dedicated AuthenticationErrorUpdated all Python exception handlers to catch the new specific exception typeNo change to cryptographic verification logic or constant-time comparison
This commit is a routine code cleanup (chore) that splits one combined ChaCha20-Poly1305 encryption/decryption class into two separate classes: one for encryption and one for decryption. It does not fix a security bug, add a new feature, o…
No security-relevant signal: refactor onlyAPI split removes dual-use encrypt/decrypt state machineMAC verification path still uses constant-time comparison (consteq)
This commit is purely a code-style cleanup. It updates the project's C source files so they match the formatting rules of a newer version of the clang-format tool (version 21.1.8 instead of 17.0.6). The changes are limited to whitespace, l…
This commit is purely a code-style cleanup triggered by an update to the Python formatter 'black'. It removes unnecessary parentheses around tuple unpacking and adjusts some string-literal formatting. There is no functional change and no s…
This commit fixes a cleanup oversight in the Trezor firmware's code that handles NEM cryptocurrency encryption and decryption. Previously, if an encryption or decryption operation failed partway through, the temporary AES key context (a sm…
Missing secure zeroization (memzero) on error pathsSensitive cryptographic context (AES key schedule) left on stack after failureNEM-specific BIP32 encrypt/decrypt functions affected
This commit is purely a code-style cleanup. It adds a protobuf formatter check to the project's build tooling and reformats all .proto definition files. There are no functional changes to the firmware, no protocol changes, and no security …
This commit refactors the way digital signatures are encoded and decoded in the Trezor firmware's Python code. It replaces a generic low-level DER sequence encoder/decoder with two dedicated functions for signatures. The change is describe…
Refactoring of cryptographic signature encoding/decodingAddition of input-length validation in `encode_signature()` (64/65 bytes) and integer-size validation in `decode_signature()` (<=32 bytes)Removal of public generic DER sequence API in favor of signature-specific API
This commit only changes how certain software tests are skipped or run. It replaces manual 'if' checks at the bottom of test files with Python's built-in '@unittest.skipUnless' decorator on test classes. This makes the test suite behave mo…
This is a large cleanup commit that improves Python type annotations and fixes minor code-quality issues across build tools, helper scripts, and test utilities. It does not change any security-critical firmware behavior, cryptographic oper…
This commit removes the 'experimental' label from two Trezor firmware features: PaymentRequest (used in several cryptocurrency transaction flows) and GetNonce (a random-number request). It also updates generated code and tests accordingly.…
Removal of experimental gating for PaymentRequest and GetNonce protocol messagesNo changes to cryptographic validation, signature checks, or authorization logic visible in the diffGenerated protobuf descriptors updated to reflect non-experimental status
This commit simply fills in previously empty lists of official production 'root' public keys used by Trezor's Python library to validate firmware signatures. These are public keys, not private secrets, so adding them does not by itself cre…
Adds production root signing public keys to firmware verification modelNo private key material introducedNo code logic changes beyond populating key lists
This commit fixes the verification logic for Trezor bootloader version 2 images in the Python firmware library. Previously, the code checked the elliptic-curve (EC) signature against only the Merkle root digest. The fix now hashes that dig…
firmware signature verification bypass riskcryptographic verification logic correcteddual-signature scheme (EC + post-quantum) not enforced before patch