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

libngu-pr-59

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

Latest reviewed change

source content difference between and

The author edited the closing comment: successor PRs #63 and #64 were retitled to "random: reject two-word entropy cycles" and "random: harden entropy backends and state handling".

seen +2 -2 full history below
 Author
 Per your feedback that the diff was too big, I've split this into a stack of three PRs that sum to exactly this branch (byte-identical tree):
 add HMAC_DRBG (SP 800-90A 10.1.2, SHA-256), verified against NIST CAVP vectors #62 — the HMAC_DRBG core + NIST CAVP test harness (pure addition, self-verifying, no behavior change to any build)
-add entropy health rule as a pure, deterministically tested module #63 — the entropy health rule + its deterministic tests (pure addition)
-random: fail-closed entropy backends; all output via HMAC_DRBG #64 — the random.c rework that composes them, with compile-gate regression tests and README (the part that fixes the advisory)
+random: reject two-word entropy cycles #63 — the entropy health rule + its deterministic tests (pure addition)
+random: harden entropy backends and state handling #64 — the random.c rework that composes them, with compile-gate regression tests and README (the part that fixes the advisory)
 Suggested review order is #62 → #63 → #64 ; each is small on its own, and #63/#64 will show only their own commits once their predecessors merge. Closing this one in favor of the stack — happy to reopen if you'd rather review it whole.

First lines only. The complete diff is in the timeline below.

Organisation
switck
Evidence role
Repository pull request
Published
not established
Source changes
3
Detected differences
6
Unreviewed
0
Copies held
7

Broad incident-response PR. On 1 Aug the maintainer called the diff too large and the author offered a three-PR split.

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. source content difference between and source content +2 -2

    The author edited the closing comment: successor PRs #63 and #64 were retitled to "random: reject two-word entropy cycles" and "random: harden entropy backends and state handling".

    seen · Captured here 15,427 chars
    What changed from the previous capture 4 lines
     Author
     Per your feedback that the diff was too big, I've split this into a stack of three PRs that sum to exactly this branch (byte-identical tree):
     add HMAC_DRBG (SP 800-90A 10.1.2, SHA-256), verified against NIST CAVP vectors #62 — the HMAC_DRBG core + NIST CAVP test harness (pure addition, self-verifying, no behavior change to any build)
    -add entropy health rule as a pure, deterministically tested module #63 — the entropy health rule + its deterministic tests (pure addition)
    -random: fail-closed entropy backends; all output via HMAC_DRBG #64 — the random.c rework that composes them, with compile-gate regression tests and README (the part that fixes the advisory)
    +random: reject two-word entropy cycles #63 — the entropy health rule + its deterministic tests (pure addition)
    +random: harden entropy backends and state handling #64 — the random.c rework that composes them, with compile-gate regression tests and README (the part that fixes the advisory)
     Suggested review order is #62 → #63 → #64 ; each is small on its own, and #63/#64 will show only their own commits once their predecessors merge. Closing this one in favor of the stack — happy to reopen if you'd rather review it whole.
     All reactions
     Sorry, something went wrong.
    
    Extracted text as captured
    Skip to content
    Navigation Menu
    Sign inAppearance settings
    Platform
    AI CODE CREATION
    GitHub CopilotWrite better code with AI
    GitHub Copilot appDirect agents from issue to merge
    MCP RegistryIntegrate external tools
    DEVELOPER WORKFLOWS
    ActionsAutomate any workflow
    CodespacesInstant dev environments
    IssuesPlan and track work
    Code ReviewManage code changes
    Code QualityEnforce quality at merge
    APPLICATION SECURITY
    GitHub Advanced SecurityFind and fix vulnerabilities
    Code securitySecure your code as you build
    Secret protectionStop leaks before they start
    EXPLORE
    Why GitHub
    Documentation
    Blog
    Changelog
    Marketplace
    View all features
    Solutions
    BY COMPANY SIZE
    Enterprises
    Small and medium teams
    Startups
    Nonprofits
    BY USE CASE
    App Modernization
    DevSecOps
    DevOps
    CI/CD
    View all use cases
    BY INDUSTRY
    Healthcare
    Financial services

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

  2. source content difference between and source content +20 -2

    The pull request was closed by its author in favour of a three-pull-request stack (#62, #63 and #64) described as summing to a byte-identical tree, with a suggested review order and an offer to reopen.

    seen · Captured here 15,918 chars
    What changed from the previous capture 22 lines
     Insights
     random: fail-closed entropy backends; replace Yasmarang with CAVP-verified HMAC_DRBG - #59
     #59
    -Open
    +Closed
     jgmontoya wants to merge 5 commits into
     switck:masterswitck/libngu:masterfrom
     jgmontoya:rng-hardeningjgmontoya/libngu:rng-hardeningCopy head branch name to clipboard
     ConversationCommits5 (5)ChecksFiles changed
    -Open
    +Closed
     random: fail-closed entropy backends; replace Yasmarang with CAVP-verified HMAC_DRBG#59
     jgmontoya wants to merge 5 commits into
     switck:masterswitck/libngu:masterfrom
     Sorry, something went wrong.
     Uh oh!
     There was an error while loading. Please reload this page.
    +jgmontoya
    +commented
    +Aug 1, 2026
    +Copy link
    +Copy Markdown
    +Author
    +Per your feedback that the diff was too big, I've split this into a stack of three PRs that sum to exactly this branch (byte-identical tree):
    +add HMAC_DRBG (SP 800-90A 10.1.2, SHA-256), verified against NIST CAVP vectors #62 — the HMAC_DRBG core + NIST CAVP test harness (pure addition, self-verifying, no behavior change to any build)
    +add entropy health rule as a pure, deterministically tested module #63 — the entropy health rule + its deterministic tests (pure addition)
    +random: fail-closed entropy backends; all output via HMAC_DRBG #64 — the random.c rework that composes them, with compile-gate regression tests and README (the part that fixes the advisory)
    +Suggested review order is #62 → #63 → #64 ; each is small on its own, and #63/#64 will show only their own commits once their predecessors merge. Closing this one in favor of the stack — happy to reopen if you'd rather review it whole.
    +All reactions
    +Sorry, something went wrong.
    +Uh oh!
    +There was an error while loading. Please reload this page.
    +jgmontoya
    +closed this
    +Aug 1, 2026
     This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
     Learn more about bidirectional Unicode characters
     Show hidden characters
    
    Extracted text as captured
    Skip to content
    Navigation Menu
    Toggle navigation
    Sign in
    Appearance settings
    Platform
    AI CODE CREATION
    GitHub CopilotWrite better code with AI
    GitHub Copilot appDirect agents from issue to merge
    MCP RegistryIntegrate external tools
    DEVELOPER WORKFLOWS
    ActionsAutomate any workflow
    CodespacesInstant dev environments
    IssuesPlan and track work
    Code ReviewManage code changes
    Code QualityEnforce quality at merge
    APPLICATION SECURITY
    GitHub Advanced SecurityFind and fix vulnerabilities
    Code securitySecure your code as you build
    Secret protectionStop leaks before they start
    EXPLORE
    Why GitHub
    Documentation
    Blog
    Changelog
    Marketplace
    View all features
    Solutions
    BY COMPANY SIZE
    Enterprises
    Small and medium teams
    Startups
    Nonprofits
    BY USE CASE
    App Modernization
    DevSecOps
    DevOps
    CI/CD
    View all use cases
    BY INDUSTRY

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

  3. source content difference between and source content +14 -2

    The pull-request author added a comment offering to split the proposal into three smaller changes; GitHub navigation counters also changed.

    seen · Captured here 14,807 chars
    What changed from the previous capture 16 lines
     Notifications
     You must be signed in to change notification settings
     Fork
    -10
    +11
     Star
     6
     Code
     Issues
     2
     Pull requests
    -5
    +6
     Actions
     Projects
     Security and quality
     Sorry, something went wrong.
     Uh oh!
     There was an error while loading. Please reload this page.
    +jgmontoya
    +commented
    +Aug 1, 2026
    +Copy link
    +Copy Markdown
    +Author
    +diff too big
    +I'd be happy to split into a 3-PR stack: two independent, self-verifying additions (DRBG+CAVP, health rule) and then the random.c rework as a much smaller final diff.
    +All reactions
    +Sorry, something went wrong.
    +Uh oh!
    +There was an error while loading. Please reload this page.
     This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
     Learn more about bidirectional Unicode characters
     Show hidden characters
    
    Extracted text as captured
    Skip to content
    Navigation Menu
    Toggle navigation
    Sign in
    Appearance settings
    Platform
    AI CODE CREATION
    GitHub CopilotWrite better code with AI
    GitHub Copilot appDirect agents from issue to merge
    MCP RegistryIntegrate external tools
    DEVELOPER WORKFLOWS
    ActionsAutomate any workflow
    CodespacesInstant dev environments
    IssuesPlan and track work
    Code ReviewManage code changes
    Code QualityEnforce quality at merge
    APPLICATION SECURITY
    GitHub Advanced SecurityFind and fix vulnerabilities
    Code securitySecure your code as you build
    Secret protectionStop leaks before they start
    EXPLORE
    Why GitHub
    Documentation
    Blog
    Changelog
    Marketplace
    View all features
    Solutions
    BY COMPANY SIZE
    Enterprises
    Small and medium teams
    Startups
    Nonprofits
    BY USE CASE
    App Modernization
    DevSecOps
    DevOps
    CI/CD
    View all use cases
    BY INDUSTRY

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

  4. Earliest copy held
    seen · Captured here 14,455 chars
    Extracted text as captured
    Skip to content
    Navigation Menu
    Toggle navigation
    Sign in
    Appearance settings
    Platform
    AI CODE CREATION
    GitHub CopilotWrite better code with AI
    GitHub Copilot appDirect agents from issue to merge
    MCP RegistryIntegrate external tools
    DEVELOPER WORKFLOWS
    ActionsAutomate any workflow
    CodespacesInstant dev environments
    IssuesPlan and track work
    Code ReviewManage code changes
    Code QualityEnforce quality at merge
    APPLICATION SECURITY
    GitHub Advanced SecurityFind and fix vulnerabilities
    Code securitySecure your code as you build
    Secret protectionStop leaks before they start
    EXPLORE
    Why GitHub
    Documentation
    Blog
    Changelog
    Marketplace
    View all features
    Solutions
    BY COMPANY SIZE
    Enterprises
    Small and medium teams
    Startups
    Nonprofits
    BY USE CASE
    App Modernization
    DevSecOps
    DevOps
    CI/CD
    View all use cases
    BY INDUSTRY

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

3 presentation-noise differences. Sidebar, ticker and other page chrome churn that our review classified as not being changes to what the source says.
  • +5 -3 Only GitHub header chrome changed. The 'Sign in' and 'Appearance settings' labels split onto separate lines, and the search prompt changed from 'Type / to search' to 'Search/'.
  • +3 -0 Only GitHub contributor-role labels rendered on the page; the pull-request state, discussion and patch text were unchanged.
  • +3 -23 Only GitHub navigation and search-dialog chrome rendered differently. The pull request content did not change.
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.