docs: document get_bip85_bip39_entropy
What changed, and why it matters
This commit only updates documentation and removes a single comment line. It documents an existing feature that lets a user request encrypted BIP85-based BIP39 entropy from the Jade hardware wallet after on-device confirmation. There is no code behavior change, no bug fix, and no security patch in the diff.
No security action required. Treat as a normal documentation update. If the removal of the DEBUG-build note is intentional, verify the firmware gating matches the new public API expectation, but this is outside the scope of this commit.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff adds RST documentation for the get_bip85_bip39_entropy RPC request/reply format and removes the Python docstring note that the call was ‘Only available in a DEBUG build of the firmware.’ The underlying RPC implementation is unchanged. The documented flow already requires explicit user confirmation on the hardware before the reply is sent, and uses ECDH + AES-CBC-256 + HMAC-SHA512 for encrypted transport.
Changed components
docs/index.rstjadepy/jade.pyInspect captured patch +52 / −1
### docs/index.rst
@@ -1119,6 +1119,58 @@ get_bip85_pubkey reply
* 'result' is a public key pem string
+.. _get_bip85_bip39_entropy_request:
+
+get_bip85_bip39_entropy request
+-------------------------------
+
+Request to fetch bip85-based bip39 entropy, returned encrypted to the host.
+
+.. code-block:: cbor
+
+ {
+ "id": "12",
+ "method": "get_bip85_bip39_entropy",
+ "params": {
+ "num_words": 12,
+ "index": 1,
+ "pubkey": <33 bytes>
+ }
+ }
+
+* 'num_words' is the number of words the entropy is required to produce.
+* 'index' is the index to use in the bip32 path to calculate the entropy.
+* 'pubkey' is the the host ephemeral pubkey used for reply encryption.
+
+
+.. _get_bip85_bip39_entropy_reply:
+
+get_bip85_bip39_entropy reply
+-----------------------------
+
+* NOTE: The reply is not sent until the user has explicitly confirmed exporting on the hw.
+
+.. code-block:: cbor
+
+ {
+ "id": "12",
+ "pubkey": <33 bytes>,
+ "encrypted": <bytes>,
+ "hmac": <32 bytes>,
+ }
+
+* 'pubkey' is Jade's ephemeral pubkey used for ecdh secret generation.
+* 'encrypted' is the requested bip85-based bip39 entropy, AES-CBC-256
+ encrypted with the key described below (including leading IV).
+* 'hmac' is the hmac of the encrypted buffer, using the hmac key described
+ below.
+
+To decrypt the reply, derived a shared secret using `ECDC(privkey,reply pubkey)`,
+where `privkey` is the private key for the request's `pubkey`. Create hash
+`HMAC-SHA512(secret, "bip85_bip39_entropy")`. The encryption key is the
+first 32 bytes of the result; the hmac key is the second 32 bytes.
+
+
.. _sign_bip85_digests_request:
sign_bip85_digests request
### jadepy/jade.py
@@ -695,7 +695,6 @@ def set_seed(self, seed):
def get_bip85_bip39_entropy(self, num_words, index, pubkey):
"""
RPC call to fetch encrypted bip85-bip39 entropy.
- NOTE: Only available in a DEBUG build of the firmware.
Parameters
----------Why this scored 15/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.