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 #61: SHA-256 Hash-DRBG and a full-width reseed API

libngu-pr-61

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

Latest reviewed change

source content difference between and

The pull-request state changed from Draft to Closed.

seen +1 -1 full history below
 Aug 1, 2026
 fix: feed full SE digest to PRNG reseed (drop 32-bit truncation)
 Coldcard/firmware#691
-Draft
+Closed
 scgbckbone
 added 4 commits
 August 1, 2026 21:56
Organisation
switck
Evidence role
Repository pull request
Published
not established
Source changes
6
Detected differences
8
Unreviewed
0
Copies held
9

The live upstream proposal after #59 and #60 were closed by their authors on 1 August. Replaces the generator with a SHA-256 Hash-DRBG and requires a reseed seed of at least 32 bytes, rejecting the old four-byte integer call. Coldcard/firmware PR #691 was rewritten to depend on this one.

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 Current source content +1 -1

    The pull-request state changed from Draft to Closed.

    seen · Captured here 7,891 chars
    What changed from the previous capture 2 lines
     Aug 1, 2026
     fix: feed full SE digest to PRNG reseed (drop 32-bit truncation)
     Coldcard/firmware#691
    -Draft
    +Closed
     scgbckbone
     added 4 commits
     August 1, 2026 21:56
    
    Extracted text as captured
    Skip to content
    Navigation Menu
    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
    Healthcare

    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 +2 -1

    The pull request state changed from Open to Merged, and the page rendered additional contributor labels.

    seen · Captured here 7,897 chars
    What changed from the previous capture 3 lines
     Aug 1, 2026
     Copy link
     Copy Markdown
    +Contributor
     Nice! I hadn't noticed cifra already ships a Hash-DRBG; that's a simpler core than the one I wrote in #62.
     One heads-up from working on the same problem (#62/#63/#64): the backend-selection trap that caused the advisory looks untouched here, with MICROPY_HW_ENABLE_RNG (0), the #ifndef still passes and upstream links its pseudo-random rng_get(), which would then seed this DRBG. That part is what #64 fixes, and it's independent of which DRBG core is used.
     No attachment to my DRBG core, if this one is preferred, I'm happy to rebase the attestation/gates work on top of it.
     Closed
     random: harden entropy backends and state handling
     #64
    -Open
    +Merged
     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
    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.

  3. source content difference between and source content +1 -1

    The pull request state changed from Open to Closed.

    seen · Captured here 7,883 chars
    What changed from the previous capture 2 lines
     Closed
     random: reject two-word entropy cycles
     #63
    -Open
    +Closed
     random: harden entropy backends and state handling
     #64
     Open
    
    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.

  4. source content difference between and source content +10 -0

    PR #61 gained a referenced-by section dated Aug 7, 2026: the new PR stack #62 (Closed), #63 (Open) and #64 (Open) now references it.

    seen · Captured here 7,881 chars
    What changed from the previous capture 10 lines
     into
     switck:master
     Aug 5, 2026
    +This was referenced Aug 7, 2026
    +add HMAC_DRBG (SP 800-90A 10.1.2, SHA-256), verified against NIST CAVP vectors
    +#62
    +Closed
    +random: reject two-word entropy cycles
    +#63
    +Open
    +random: harden entropy backends and state handling
    +#64
    +Open
     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
    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.

  5. source content difference between and source content +11 -5

    The pull request status changed from open to merged, showing that its six commits were merged into the upstream master branch on 5 August 2026.

    seen · Captured here 7,651 chars
    What changed from the previous capture 16 lines
     Insights
     Replace Yasmarang with SHA-256 Hash-DRBG - #61
     #61
    -Open
    -scgbckbone wants to merge 6 commits into
    +Merged
    +switck merged 6 commits into
     switck:masterswitck/libngu:masterfrom
     scgbckbone:fix/hash-drbgscgbckbone/libngu:fix/hash-drbgCopy head branch name to clipboard
    +Aug 5, 2026
     ConversationCommits6 (6)ChecksFiles changed
    -Open
    +Merged
     Replace Yasmarang with SHA-256 Hash-DRBG#61
    -scgbckbone wants to merge 6 commits into
    +switck merged 6 commits into
     switck:masterswitck/libngu:masterfrom
     scgbckbone:fix/hash-drbgscgbckbone/libngu:fix/hash-drbgCopy head branch name to clipboard
     Conversation
     Sorry, something went wrong.
     Uh oh!
     There was an error while loading. Please reload this page.
    +switck
    +merged commit ba22875
    +into
    +switck:master
    +Aug 5, 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
     Successfully merging this pull request may close these issues.
     Uh oh!
     There was an error while loading. Please reload this page.
    -4 participants
    +5 participants
     Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
     Footer
     © 2026 GitHub, Inc.
    
    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.

  6. source content difference between and source content +12 -0

    A new pull-request comment proposed incorporating Hash_DRBG, including bounds on hash_df requests and wiping stack temporaries.

    seen · Captured here 8,050 chars
    What changed from the previous capture 12 lines
     a6da5a6
     Use mem_clean for secret zeroization
     6b2f56e
    +scgbckbone
    +commented
    +Aug 4, 2026
    +Copy link
    +Copy Markdown
    +Contributor
    +Author
    +incorporate Hash_DRBG: bound hash_df request size, wipe stack temporaries ctz/cifra#24 (maybe even by forking cifra)
    +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.

  7. Earliest copy held
    seen · Captured here 7,748 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.

2 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 -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.