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.

libngu PR #59 patch

libngu-pr-59-patch

https://github.com/switck/libngu/pull/59.patch

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

Patch content for the open incident-response proposal. 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 64,233 chars
    Extracted text as captured
    From 4c0ea35499ab72245b5c8d0252312c0baccfc668 Mon Sep 17 00:00:00 2001
    From: "Javier G. Montoya S" <[email protected]>
    Date: Fri, 31 Jul 2026 17:42:44 -0400
    Subject: [PATCH 1/5] add HMAC_DRBG (SP 800-90A 10.1.2, SHA-256), verified
     against NIST CAVP vectors
    Self-contained core for the RNG rework that follows: K/V state machine
    with instantiate, mixing reseed, and backtracking-resistant generate.
    No heap allocation and no failure paths -- HMAC is built directly on
    the SHA-256 backend the rest of libngu already uses (mbedtls or cifra,
    as in hash.c), because mbedtls' HMAC layer allocates and hardware SHA
    (MBEDTLS_SHA256_ALT) can fail at runtime; the latter is refused at
    compile time until a target proves its no-fail contract. Reseed
    interval and prediction resistance are deliberately omitted and
    documented: the consumer (random.c, next commits) mixes fresh entropy
    into every output instead. Secret-bearing temporaries are wiped via a
    volatile-store helper the optimizer cannot elide.
    Verified by a host-compiled harness (ngu_tests: make cavp, part of
    'make tests') against official NIST CAVP vectors -- 12 vectors plus 2
    derived partial-block KATs, run through BOTH SHA-256 backends. The
    vector extractor cross-checks every vector against an independent
    pure-python reference before emitting; vectors are checked in with
    provenance.
    ---
     .gitignore                             |   2 +
     ngu/hmac_drbg.c                        | 149 +++++++++++++++++++
     ngu/hmac_drbg.h                        |  31 ++++
     ngu/ngu_tests/Makefile                 |  24 ++-
     ngu/ngu_tests/gen_hmac_drbg_vectors.py | 196 +++++++++++++++++++++++++
     ngu/ngu_tests/hmac_drbg_cavp.c         |  46 ++++++
     ngu/ngu_tests/hmac_drbg_cavp_vectors.h |  71 +++++++++
     7 files changed, 518 insertions(+), 1 deletion(-)
     create mode 100644 ngu/hmac_drbg.c
     create mode 100644 ngu/hmac_drbg.h
     create mode 100644 ngu/ngu_tests/gen_hmac_drbg_vectors.py
     create mode 100644 ngu/ngu_tests/hmac_drbg_cavp.c
     create mode 100644 ngu/ngu_tests/hmac_drbg_cavp_vectors.h
    diff --git a/.gitignore b/.gitignore
    index 35465d8..5881e0d 100644
    --- a/.gitignore
    +++ b/.gitignore

    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.