{"id":43699965,"url":"https://github.com/zeppe-lin/seedrng","last_synced_at":"2026-02-05T05:02:50.032Z","repository":{"id":172400946,"uuid":"649246557","full_name":"zeppe-lin/seedrng","owner":"zeppe-lin","description":"Seed the Linux kernel random number generator from seed files","archived":false,"fork":false,"pushed_at":"2025-12-12T13:03:49.000Z","size":121,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-14T03:39:03.379Z","etag":null,"topics":["linux-kernel","rng","seeding"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zeppe-lin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-06-04T08:57:00.000Z","updated_at":"2025-12-12T13:03:51.000Z","dependencies_parsed_at":"2023-12-11T18:30:34.467Z","dependency_job_id":"755caf9d-078d-40a5-be80-3c73f8681026","html_url":"https://github.com/zeppe-lin/seedrng","commit_stats":null,"previous_names":["zeppe-lin/seedrng"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/zeppe-lin/seedrng","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeppe-lin%2Fseedrng","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeppe-lin%2Fseedrng/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeppe-lin%2Fseedrng/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeppe-lin%2Fseedrng/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zeppe-lin","download_url":"https://codeload.github.com/zeppe-lin/seedrng/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeppe-lin%2Fseedrng/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29113190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T03:44:17.043Z","status":"ssl_error","status_checked_at":"2026-02-05T03:44:12.077Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["linux-kernel","rng","seeding"],"created_at":"2026-02-05T05:02:49.273Z","updated_at":"2026-02-05T05:02:50.026Z","avatar_url":"https://github.com/zeppe-lin.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"OVERVIEW\n========\n\nThe `seedrng` utility seeds the Linux kernel random number generator\nfrom stored seed files.\n\nIt is a fork of [Jason A. Donenfeld](mailto:jason@zx2c4)'s SeedRNG at\ncommit `f68fee4` (Wed Apr 20 2022) with the following changes:\n  * Added musl libc compatibility\n  * Added a `seedrng(8)` manual page in `scdoc(5)` format\n  * Moved paths definitions into `pathnames.h`\n  * Added code documentation and technical notes\n\nSee the git log for the complete history.\n\nOriginal sources:\n  * git://git.zx2c4.com/seedrng    (git)\n  * https://git.zx2c4.com/seedrng  (web)\n\n---\n\nREQUIREMENTS\n============\n\nBuild-time\n----------\n  * C99 compiler\n  * POSIX `sh(1p)`, `make(1p)` and \"mandatory utilities\"\n  * Linux kernel headers (optional when building with musl)\n  * `scdoc(1)` for manual page generation\n\nRuntime\n-------\n  * Linux kernel with `/dev/random` and `/dev/urandom` available\n\n---\n\nINSTALLATION\n============\n\n`seedrng` is designed for integration with init systems.  \n**It should not be run manually as a standalone tool.**\n\nTo build and install:\n\n```sh\n# as root\nmake \u0026\u0026 make install\n```\n\nConfiguration parameters are in `config.mk`.  \nDefault file paths are defined in `pathnames.h`.\n\n---\n\nDOCUMENTATION\n=============\n\nUsage\n-----\n\nRun as root (normally via init/shutdown scripts):\n\n```sh\nseedrng\n```\n\nManual pages\n------------\n\nSee `seedrng.8.scdoc`.\n\nTechnical Notes\n---------------\n\n### Entropy Hashing\n\nTo ensure that the entropy in the seed files either stays the same or\nincreases over time, `seedrng` employs the **BLAKE2s** cryptographic\nhash function (with a 32-byte output) when creating new seed files.\nThe process involves hashing the following data:\n\n```\nHASH(    \"SeedRNG v1 Old+New Prefix\"\n        || current_real_time\n        || system_boot_time\n        || length_of_old_seed\n        || old_seed_content\n        || length_of_new_seed_data\n        || new_seed_data\n    )\n```\n\nThe resulting 32-byte hash is then appended to the newly generated\nrandom data to form the complete new seed.  Specifically, if\n`new_seed` represents the newly generated random data of a certain\nlength, the final new seed stored to disk is constructed as:\n\n```\nfinal_new_seed = new_seed[:-32] || BLAKE2s_HASH(...)\n```\n\nWhere:\n* `||` denotes concatenation.\n* `BLAKE2s_HASH(...)` represents the 32-byte **BLAKE2s** hash of the\n  concatenated data described above.\n* `new_seed[:-32]` represents the initial portion of the newly\n  generated random data, with the last 32 bytes reserved for the hash.\n\nThis design ensures that the new seed incorporates information about\nthe previous seed, the current system time, the boot time, and the\nnewly generated random data itself, enhancing its robustness and\npreventing entropy loss.\n\n### Path Declarations\n\nThe absolute file paths used by `seedrng` for storing the creditable\nseed (`seed.credit`) and the non-creditable seed (`seed.no-credit`)\nare defined as constants in the `pathnames.h` header file.\nThe default location for these files is within the `/var/lib/seedrng/`\ndirectory.\n\n---\n\nLICENSE\n=======\n\n`seedrng` may be used under any of the following licenses:\n  * GPL-2.0\n  * Apache-2.0\n  * MIT\n  * BSD-1-Clause\n  * CC0-1.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzeppe-lin%2Fseedrng","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzeppe-lin%2Fseedrng","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzeppe-lin%2Fseedrng/lists"}