COLDCARD RNG incident the public record, collected and explained
Informational only, and this site never asks for your seed words. details

Informational only. This is an open source collection of what others have published about the incident, together with an explanation of it. It is not financial, security or legal advice, and not a substitute for professional advice about your own situation. It is not affiliated with, endorsed by, or speaking for Coinkite. Material is attributed and quoted as published; where sources disagree their scenarios are kept separate with their assumptions rather than reconciled into one answer. Everything is meant to be checked against the linked evidence rather than taken on trust. Act on your own judgement about a particular situation. Editorial standards and corrections.

Do not disclose recovery material to a website, form, message or support account. This site never asks for it, and contributions containing recovery words or private keys are not accepted.

COLDCARD firmware PR #707 patch

coldcard-firmware-pr-707-patch

https://github.com/Coldcard/firmware/pull/707.patch

Organisation
Coinkite
Evidence role
Repository patch
Published
not established
Source changes
0
Detected differences
0
Unreviewed
0
Copies held
1

Patch content for #707. Kept separately from the conversation and review-state capture.

Every check is recorded, including checks that found no text change. A detected edit is therefore bounded between two checks. The publisher's exact save time is not observable from this record. Last checked .

  1. Earliest copy held Current
    seen · Captured here 54,634 chars
    Extracted text as captured
    From f460ce3e6fc92772f7aada9709a53f6c0c805d88 Mon Sep 17 00:00:00 2001
    From: scgbckbone <[email protected]>
    Date: Mon, 3 Aug 2026 19:07:13 +0200
    Subject: [PATCH 1/7] Mix secure element entropy into seed generation
    ---
     releases/Next-ChangeLog.md |  2 ++
     shared/seed.py             | 12 +++++++++---
     2 files changed, 11 insertions(+), 3 deletions(-)
    diff --git a/releases/Next-ChangeLog.md b/releases/Next-ChangeLog.md
    index a1f1d1b1..82bb00f8 100644
    --- a/releases/Next-ChangeLog.md
    +++ b/releases/Next-ChangeLog.md
    @@ -4,6 +4,8 @@ This lists the new changes that have not yet been published in a normal release.
     # Shared Improvements - Both Mk and Q
    +- Security Improvement: Master seed generation mixes entropy from both Secure
    +  Elements with the STM32 TRNG (previously TRNG only).
     - Bugfix: Detect RNG_SR_SEIS and RNG_SR_SECS, retry safely, and fail closed on persistent faults.
     # Mk Specific Changes
    diff --git a/shared/seed.py b/shared/seed.py
    index e63feb84..4350cc0d 100644
    --- a/shared/seed.py
    +++ b/shared/seed.py
    @@ -600,13 +600,19 @@ async def ephemeral_seed_generate_from_dice(nwords):
             await set_ephemeral_seed_words(words, origin='Dice')
     def generate_seed():
    -    # Generate 32 bytes of best-quality high entropy TRNG bytes.
    +    # Generate 32 bytes of best-quality high entropy from independent sources.
    +    import callgate
         seed = ngu.random.bytes(32)
         assert len(set(seed)) > 4       # TRNG failure
    -    # hash to mitigate any possible bias in TRNG
    -    return ngu.hash.sha256d(seed)
    +    a = callgate.read_rng(1)        # SE1
    +    b = callgate.read_rng(2)        # SE2
    +    assert len(a) == 32
    +    assert len(b) == 8
    +
    +    # hash to combine the sources and mitigate any possible bias
    +    return ngu.hash.sha256d(seed + a + b)
     async def make_new_wallet(nwords):

    Excerpt only. The complete copy is held offline and backs quotations on this site. The original publication remains the canonical public source.

How to check this yourself

The excerpts and plain unified diffs above show the text this project held and how it changed. To verify a quotation, compare it against the page itself or against the Internet Archive's copies, which are independent of this project.

Complete captures are held offline rather than mirrored here, so this page shows diffs and excerpts. If a quotation is ever disputed, the full copy can be produced. Ask.