What changed, and why it matters
This commit only updates documentation comments in automatically generated Python type-stub files for the BitBox02's protocol messages. It explains that leaving out an optional 'host nonce commitment' field causes the device to fall back to older, non-anti-klepto signing behavior. No code logic, firmware behavior, or API rules were changed.
No action required for this commit. Treat as documentation-only regeneration. If reviewing the broader anti-klepto feature, verify that the underlying protobuf definitions and firmware enforce host nonce commitment where intended.
Security signals we found
Mentions anti-klepto / S2C (sign-to-contract) nonce commitment mechanism
Documents fallback to deterministic signing when host nonce commitment is omitted
No functional code or protobuf schema change in this commit
Evidence from the diff
The diff regenerates protobuf .pyi stub files, adding docstring comments to the host_nonce_commitment properties in BTC and ETH request messages. The comments state that omitting the field results in deterministic zero-contribution S2C fallback signing (historical behavior) instead of anti-klepto (S2C) protection. These are generated Python interface files; the actual protobuf definitions and firmware implementation are not modified here.
Changed components
py/bitbox02/bitbox02/communication/generated/btc_pb2.pyipy/bitbox02/bitbox02/communication/generated/eth_pb2.pyiInspect captured patch +28 / −6
### py/bitbox02/bitbox02/communication/generated/btc_pb2.pyi
@@ -468,7 +468,11 @@ class BTCSignInputRequest(google.protobuf.message.Message):
"""all inputs must be ours."""
@property
- def host_nonce_commitment(self) -> antiklepto_pb2.AntiKleptoHostNonceCommitment: ...
+ def host_nonce_commitment(self) -> antiklepto_pb2.AntiKleptoHostNonceCommitment:
+ """If omitted, the signature uses the historical deterministic zero-contribution S2C fallback.
+ This differs from plain RFC6979 and does not provide anti-klepto protection.
+ """
+
def __init__(
self,
*,
@@ -882,7 +886,11 @@ class BTCSignMessageRequest(google.protobuf.message.Message):
@property
def script_config(self) -> global___BTCScriptConfigWithKeypath: ...
@property
- def host_nonce_commitment(self) -> antiklepto_pb2.AntiKleptoHostNonceCommitment: ...
+ def host_nonce_commitment(self) -> antiklepto_pb2.AntiKleptoHostNonceCommitment:
+ """If omitted, the signature uses the historical deterministic zero-contribution S2C fallback.
+ This differs from plain RFC6979 and does not provide anti-klepto protection.
+ """
+
def __init__(
self,
*,
### py/bitbox02/bitbox02/communication/generated/eth_pb2.pyi
@@ -146,7 +146,11 @@ class ETHSignRequest(google.protobuf.message.Message):
@property
def keypath(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
@property
- def host_nonce_commitment(self) -> antiklepto_pb2.AntiKleptoHostNonceCommitment: ...
+ def host_nonce_commitment(self) -> antiklepto_pb2.AntiKleptoHostNonceCommitment:
+ """If omitted, the signature uses the historical deterministic zero-contribution S2C fallback.
+ This differs from plain RFC6979 and does not provide anti-klepto protection.
+ """
+
def __init__(
self,
*,
@@ -207,7 +211,11 @@ class ETHSignEIP1559Request(google.protobuf.message.Message):
@property
def keypath(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
@property
- def host_nonce_commitment(self) -> antiklepto_pb2.AntiKleptoHostNonceCommitment: ...
+ def host_nonce_commitment(self) -> antiklepto_pb2.AntiKleptoHostNonceCommitment:
+ """If omitted, the signature uses the historical deterministic zero-contribution S2C fallback.
+ This differs from plain RFC6979 and does not provide anti-klepto protection.
+ """
+
@property
def payment_request(self) -> btc_pb2.BTCPaymentRequestRequest: ...
def __init__(
@@ -282,7 +290,11 @@ class ETHSignMessageRequest(google.protobuf.message.Message):
@property
def keypath(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
@property
- def host_nonce_commitment(self) -> antiklepto_pb2.AntiKleptoHostNonceCommitment: ...
+ def host_nonce_commitment(self) -> antiklepto_pb2.AntiKleptoHostNonceCommitment:
+ """If omitted, the signature uses the historical deterministic zero-contribution S2C fallback.
+ This differs from plain RFC6979 and does not provide anti-klepto protection.
+ """
+
def __init__(
self,
*,
@@ -418,7 +430,9 @@ class ETHSignTypedMessageRequest(google.protobuf.message.Message):
@property
def types(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ETHSignTypedMessageRequest.StructType]: ...
@property
- def host_nonce_commitment(self) -> antiklepto_pb2.AntiKleptoHostNonceCommitment: ...
+ def host_nonce_commitment(self) -> antiklepto_pb2.AntiKleptoHostNonceCommitment:
+ """If omitted, plain RFC6979 signing is used without anti-klepto protection."""
+
def __init__(
self,
*,Why this scored 19/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.