{"id":35218171,"url":"https://github.com/sixafter/aes-ctr-drbg","last_synced_at":"2026-04-07T19:31:56.574Z","repository":{"id":305252042,"uuid":"1022374253","full_name":"sixafter/aes-ctr-drbg","owner":"sixafter","description":"A Deterministic Random Bit Generator based on AES in Counter mode (AES-CTR-DRBG) as specified in NIST SP 800-90A written in Go.","archived":false,"fork":false,"pushed_at":"2026-03-26T12:34:57.000Z","size":371,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-27T06:41:10.453Z","etag":null,"topics":["aes-ctr","cipher-algorithms","cipher-streams","crypto","drbg","fips-140","fips-140-2","nist-sp-800-90a"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sixafter.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","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":"2025-07-19T00:16:40.000Z","updated_at":"2026-03-26T12:34:35.000Z","dependencies_parsed_at":"2025-12-23T21:01:16.488Z","dependency_job_id":null,"html_url":"https://github.com/sixafter/aes-ctr-drbg","commit_stats":null,"previous_names":["sixafter/aes-ctr-drbg"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/sixafter/aes-ctr-drbg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sixafter%2Faes-ctr-drbg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sixafter%2Faes-ctr-drbg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sixafter%2Faes-ctr-drbg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sixafter%2Faes-ctr-drbg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sixafter","download_url":"https://codeload.github.com/sixafter/aes-ctr-drbg/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sixafter%2Faes-ctr-drbg/sbom","scorecard":{"id":1236721,"data":{"date":"2025-09-01T18:34:54Z","repo":{"name":"github.com/sixafter/aes-ctr-drbg","commit":"5cbd917dea805bd0375e47bd665f2d96ce369028"},"scorecard":{"version":"v5.2.1","commit":"ab2f6e92482462fe66246d9e32f642855a691dc1"},"score":6.4,"checks":[{"name":"Code-Review","score":0,"reason":"Found 1/14 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#code-review"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#security-policy"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/ci.yaml:33","Info: jobLevel 'pull-requests' permission set to 'read': .github/workflows/ci.yaml:34","Warn: jobLevel 'checks' permission set to 'write': .github/workflows/ci.yaml:35","Info: jobLevel 'pull-requests' permission set to 'read': .github/workflows/release.yaml:25","Info: topLevel permissions set to 'read-all': .github/workflows/ci.yaml:28","Info: topLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yaml:10","Info: topLevel permissions set to 'read-all': .github/workflows/release.yaml:16","Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:22"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"project was created within the last 90 days. Please review its contents carefully","details":["Warn: Repository was created within the last 90 days."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yaml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/aes-ctr-drbg/ci.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yaml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/aes-ctr-drbg/ci.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yaml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/aes-ctr-drbg/ci.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yaml:89: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/aes-ctr-drbg/ci.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yaml:97: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/aes-ctr-drbg/ci.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yaml:64: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/aes-ctr-drbg/codeql-analysis.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yaml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/aes-ctr-drbg/codeql-analysis.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yaml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/aes-ctr-drbg/codeql-analysis.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yaml:82: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/aes-ctr-drbg/codeql-analysis.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yaml:85: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/aes-ctr-drbg/codeql-analysis.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/aes-ctr-drbg/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/aes-ctr-drbg/release.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/aes-ctr-drbg/release.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:66: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/aes-ctr-drbg/release.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/aes-ctr-drbg/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/scorecard.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/aes-ctr-drbg/scorecard.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/scorecard.yml:82: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/aes-ctr-drbg/scorecard.yml/main?enable=pin","Warn: goCommand not pinned by hash: scripts/go-deps.sh:18","Warn: goCommand not pinned by hash: scripts/go-deps.sh:19","Warn: goCommand not pinned by hash: scripts/go-install.sh:18","Warn: goCommand not pinned by hash: scripts/go-install.sh:20","Info:   1 out of  13 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   6 third-party GitHubAction dependencies pinned","Info:   0 out of   4 goCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#pinned-dependencies"}},{"name":"Dependency-Update-Tool","score":0,"reason":"no update tool detected","details":["Warn: no dependency update tool configurations found"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#dependency-update-tool"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#license"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":10,"reason":"project is fuzzed","details":["Info: GoBuiltInFuzzer integration found: aes_ctr_drbg_fuzz_test.go:19","Info: GoBuiltInFuzzer integration found: aes_ctr_drbg_fuzz_test.go:41","Info: GoBuiltInFuzzer integration found: aes_ctr_drbg_fuzz_test.go:75","Info: GoBuiltInFuzzer integration found: aes_ctr_drbg_fuzz_test.go:174","Info: GoBuiltInFuzzer integration found: aes_ctr_drbg_fuzz_test.go:197","Info: GoBuiltInFuzzer integration found: aes_ctr_drbg_fuzz_test.go:218","Info: GoBuiltInFuzzer integration found: aes_ctr_drbg_fuzz_test.go:251","Info: GoBuiltInFuzzer integration found: aes_ctr_drbg_fuzz_test.go:274","Info: GoBuiltInFuzzer integration found: aes_ctr_drbg_fuzz_test.go:301"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: aes-ctr-drbg-1.6.0.tar.gz.sig: https://github.com/sixafter/aes-ctr-drbg/releases/tag/v1.6.0","Info: signed release artifact: aes-ctr-drbg-1.5.0.tar.gz.sig: https://github.com/sixafter/aes-ctr-drbg/releases/tag/v1.5.0","Info: signed release artifact: aes-ctr-drbg-1.4.0.tar.gz.sig: https://github.com/sixafter/aes-ctr-drbg/releases/tag/v1.4.0","Info: signed release artifact: aes-ctr-drbg-1.3.0.tar.gz.sig: https://github.com/sixafter/aes-ctr-drbg/releases/tag/v1.3.0","Info: signed release artifact: aes-ctr-drbg-1.2.0.tar.gz.sig: https://github.com/sixafter/aes-ctr-drbg/releases/tag/v1.2.0","Warn: release artifact v1.6.0 does not have provenance: https://api.github.com/repos/sixafter/aes-ctr-drbg/releases/239832457","Warn: release artifact v1.5.0 does not have provenance: https://api.github.com/repos/sixafter/aes-ctr-drbg/releases/234708116","Warn: release artifact v1.4.0 does not have provenance: https://api.github.com/repos/sixafter/aes-ctr-drbg/releases/233769689","Warn: release artifact v1.3.0 does not have provenance: https://api.github.com/repos/sixafter/aes-ctr-drbg/releases/233730261","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/sixafter/aes-ctr-drbg/releases/233659260"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":8,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'main'","Info: 'force pushes' disabled on branch 'main'","Warn: 'branch protection settings apply to administrators' is disabled on branch 'main'","Info: 'stale review dismissal' is required to merge on branch 'main'","Warn: required approving review count is 1 on branch 'main'","Info: codeowner review is required on branch 'main'","Info: 'last push approval' is required to merge on branch 'main'","Info: 'up-to-date branches' is required to merge on branch 'main'","Info: status check found to merge onto on branch 'main'","Info: PRs are required in order to make changes on branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#branch-protection"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/release.yaml:19"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#packaging"}},{"name":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 11 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#sast"}},{"name":"Contributors","score":0,"reason":"project has 0 contributing companies or organizations -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#contributors"}},{"name":"CI-Tests","score":6,"reason":"7 out of 11 merged PRs checked by a CI test -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#ci-tests"}}]},"last_synced_at":"2025-09-01T20:23:23.276Z","repository_id":305252042,"created_at":"2025-09-01T20:23:23.276Z","updated_at":"2025-09-01T20:23:23.276Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31526666,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"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":["aes-ctr","cipher-algorithms","cipher-streams","crypto","drbg","fips-140","fips-140-2","nist-sp-800-90a"],"created_at":"2025-12-29T23:02:37.909Z","updated_at":"2026-04-07T19:31:56.568Z","avatar_url":"https://github.com/sixafter.png","language":"Go","readme":"# AES-CTR-DRBG\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/sixafter/aes-ctr-drbg)](https://goreportcard.com/report/github.com/sixafter/aes-ctr-drbg)\n[![License: Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-blue?style=flat-square)](LICENSE)\n[![Go](https://img.shields.io/github/go-mod/go-version/sixafter/aes-ctr-drbg)](https://img.shields.io/github/go-mod/go-version/sixafter/aes-ctr-drbg)\n[![Go Reference](https://pkg.go.dev/badge/github.com/sixafter/aes-ctr-drbg.svg)](https://pkg.go.dev/github.com/sixafter/aes-ctr-drbg)\n[![FIPS‑140 Mode Compatible](https://img.shields.io/badge/FIPS‑140--Mode-Compatible-brightgreen)](FIPS‑140.md)\n\n---\n\n## Status\n\n### Build \u0026 Test\n\n[![CI](https://github.com/sixafter/aes-ctr-drbg/workflows/ci/badge.svg)](https://github.com/sixafter/aes-ctr-drbg/actions)\n[![GitHub issues](https://img.shields.io/github/issues/sixafter/aes-ctr-drbg)](https://github.com/sixafter/aes-ctr-drbg/issues)\n\n### Quality\n\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=six-after_aes-ctr-drbg\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=six-after_aes-ctr-drbg)\n![CodeQL](https://github.com/sixafter/aes-ctr-drbg/actions/workflows/codeql-analysis.yaml/badge.svg)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=six-after_aes-ctr-drbg\u0026metric=security_rating)](https://sonarcloud.io/summary/new_code?id=six-after_aes-ctr-drbg)\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/11487/badge)](https://www.bestpractices.dev/projects/11487)\n[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/sixafter/aes-ctr-drbg/badge)](https://scorecard.dev/viewer/?uri=github.com/sixafter/aes-ctr-drbg)\n\n### Package and Deploy\n\n[![Release](https://github.com/sixafter/aes-ctr-drbg/workflows/release/badge.svg)](https://github.com/sixafter/aes-ctr-drbg/actions)\n\n---\n## Overview \n\nAES-CTR-DRBG (Deterministic Random Bit Generator based on AES in Counter mode) is a cryptographically secure pseudo-random number generator (CSPRNG) defined by [NIST SP 800-90A Rev. 1](https://csrc.nist.gov/pubs/sp/800/90/a/r1/final). It's widely used in high-assurance systems, including those requiring [FIPS 140-2](https://csrc.nist.gov/pubs/fips/140-2/upd2/final) compliance. \nAES-CTR-DRBG is designed for environments requiring deterministic, reproducible, and FIPS‑140-compatible random bit generation. This module is suitable for any application that needs strong cryptographic assurance or must comply with regulated environments (e.g., FedRAMP, FIPS, PCI, HIPAA). \n\nThe module uses only Go standard library crypto primitives (`crypto/aes` and `crypto/cipher`), making it safe for use in FIPS 140-validated Go runtimes. No third-party, homegrown, or experimental ciphers are used.\n\nPlease see the [godoc](https://pkg.go.dev/github.com/sixafter/aes-ctr-drbg) for detailed documentation.\n\n---\n\n## FIPS‑140 Mode\n\nSee [FIPS‑140.md](FIPS-140.md) for compliance, deployment, and configuration guidance.\n\n---\n\n## Features\n\n* **Standards-Compliant Implementation:**\n  Implements NIST SP 800-90A, Revision 1 AES-CTR-DRBG using the Go standard library (`crypto/aes`, `crypto/cipher`). Supports 128-, 192-, and 256-bit keys. State and counter management strictly adhere to the specification.\n\n* **FIPS 140-2 Alignment:**\n  Designed for use in FIPS 140-2 validated environments and compatible with Go’s FIPS 140 mode (`GODEBUG=fips140=on`). See [FIPS-140.md](FIPS-140.md) for platform guidance.\n\n* **Zero-Allocation Output Path:**\n  The DRBG is engineered for `0 allocs/op` in its standard `io.Reader` output path, enabling predictable resource usage and high throughput.\n\n* **Asynchronous Key Rotation:**\n  Supports automatic key rotation after a configurable number of bytes have been generated (`MaxBytesPerKey`). Rekeying occurs asynchronously with exponential backoff and configurable retry limits, reducing long-term key exposure.\n\n* **Prediction Resistance Mode:**\n  Supports NIST SP 800-90A prediction resistance. When enabled, the DRBG reseeds from system entropy before every output, as required for state compromise resilience.\n\n* **Sharded Pooling for Concurrency:**\n  Internal state pooling can be sharded across multiple `sync.Pool` instances. The number of shards is configurable, allowing improved performance under concurrent workloads.\n\n* **Extensive Functional Configuration:**\n  Exposes a comprehensive set of functional options, including:\n\n  * AES key size (128/192/256-bit)\n  * Maximum output per key (rekey threshold)\n  * Personalization string (domain separation)\n  * Shard/pool count\n  * Reseed interval and request count\n  * Buffer size controls\n  * Key rotation and rekey backoff parameters\n  * Prediction resistance\n  * Fork detection and reseeding\n\n* **Thread-Safe and Deterministic:**\n  All DRBG instances are safe for concurrent use. Output is deterministic for a given seed and personalization.\n\n* **io.Reader Compatibility:**\n  Implements Go’s `io.Reader` interface for drop-in use as a secure random source.\n\n* **No External Dependencies:**\n  Depends exclusively on the Go standard library for cryptographic operations.\n\n* **UUID Generation:**\n  Can be used as a cryptographically secure `io.Reader` with the [`google/uuid`](https://pkg.go.dev/github.com/google/uuid) package and similar libraries.\n\n* **Comprehensive Testing and Fuzzing:**\n  Includes property-based, fuzz, concurrency, and allocation tests to validate correctness, robustness, and allocation characteristics.\n\n* **Fork-Safety:**\n  Automatic detection and reseeding on process fork. This library automatically detects process forks and reseeds in the child process to prevent random stream duplication. No manual action is required.\n\nFor an example of how this library can be consumed in practice, see [sixafter/nanoid](https://github.com/sixafter/nanoid).\n\nNanoID uses [sixafter/prng-chacha](https://github.com/sixafter/prng-chacha) as its default high-performance PRNG, but  can also use **`aes-ctr-drbg`** when \nFIPS 140-2/3 alignment or deterministic AES-CTR-based randomness is required. This provides a clear, real-world example \nof integrating this DRBG into an ID-generation workflow, including optional FIPS-centric operation. There is also a \n[WithAutoRandReader()](https://github.com/sixafter/nanoid/blob/d8efbc63e5a5696a33f34b9fb5d24f5d7805a7ed/config.go#L229) option that automatically selects between `prng-chacha` and `aes-ctr-drbg` based on the \nruntime FIPS mode.\n\n## NIST SP 800-90A Compliance\n\nFor a detailed mapping between the implementation and NIST SP 800-90A requirements, see [NIST-SP-800-90A.md](docs/NIST-SP-800-90A.md).\n\n---\n\n## Verify with Cosign\n\n[Cosign](https://github.com/sigstore/cosign) is used to sign releases for integrity verification.\n\nTo verify the integrity of the release tarball, you can use Cosign to check the signature and checksums. Follow these steps:\n\n```sh\n# Fetch the latest release tag from GitHub API (e.g., \"v1.16.0\")\nTAG=$(curl -s https://api.github.com/repos/sixafter/aes-ctr-drbg/releases/latest | jq -r .tag_name)\n\n# Remove leading \"v\" for filenames (e.g., \"v1.16.0\" -\u003e \"1.16.0\")\nVERSION=${TAG#v}\n\n# ---------------------------------------------------------------------\n# Verify the source archive using Sigstore bundles\n# ---------------------------------------------------------------------\n\n# Download the release tarball and its signature bundle\ncurl -LO \"https://github.com/sixafter/aes-ctr-drbg/releases/download/${TAG}/aes-ctr-drbg-${VERSION}.tar.gz\"\ncurl -LO \"https://github.com/sixafter/aes-ctr-drbg/releases/download/${TAG}/aes-ctr-drbg-${VERSION}.tar.gz.sigstore.json\"\n\n# Verify the tarball with Cosign using the published public key\ncosign verify-blob \\\n  --key \"https://raw.githubusercontent.com/sixafter/aes-ctr-drbg/main/cosign.pub\" \\\n  --bundle \"aes-ctr-drbg-${VERSION}.tar.gz.sigstore.json\" \\\n  \"aes-ctr-drbg-${VERSION}.tar.gz\"\n\n# ---------------------------------------------------------------------\n# Verify the checksums manifest using Sigstore bundles\n# ---------------------------------------------------------------------\n\ncurl -LO \"https://github.com/sixafter/aes-ctr-drbg/releases/download/${TAG}/checksums.txt\"\ncurl -LO \"https://github.com/sixafter/aes-ctr-drbg/releases/download/${TAG}/checksums.txt.sigstore.json\"\n\ncosign verify-blob \\\n  --key \"https://raw.githubusercontent.com/sixafter/aes-ctr-drbg/main/cosign.pub\" \\\n  --bundle \"checksums.txt.sigstore.json\" \\\n  \"checksums.txt\"\n\n# ---------------------------------------------------------------------\n# Confirm local artifact integrity\n# ---------------------------------------------------------------------\n\nshasum -a 256 -c checksums.txt\n\n```\n\nIf valid, Cosign will output:\n\n```shell\nVerified OK\n```\n\n---\n\n## Verify Go module\n\nTo validate that the Go module archive served by GitHub, go mod download, and the Go \nproxy are all consistent, run the `module-verify` target. This performs a full cross-check \nof the tag archive and module ZIPs to confirm they match byte-for-byte.\n\n---\n\n## Installation\n\n```bash\ngo get -u github.com/sixafter/aes-ctr-drbg\n```\n\n---\n\n## Usage\n\n### Basic Usage: Generate Secure Random Bytes With Reader\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\n\t\"github.com/sixafter/aes-ctr-drbg\"\n)\n\nfunc main() {\n\tbuf := make([]byte, 64)\n\tn, err := ctrdrbg.Reader.Read(buf)\n\tif err != nil {\n\t\tlog.Fatalf(\"failed to read random bytes: %v\", err)\n\t}\n\tfmt.Printf(\"Read %d random bytes: %x\\n\", n, buf)\n}\n```\n\n### Basic Usage: Generate Secure Random Bytes with NewReader\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\n\t\"github.com/sixafter/aes-ctr-drbg\"\n)\n\nfunc main() {\n\t// Example: AES-256 (32 bytes) key\n\tr, err := ctrdrbg.NewReader(ctrdrbg.WithKeySize(ctrdrbg.KeySize256))\n\tif err != nil {\n\t\tlog.Fatalf(\"failed to create ctrdrbg.Reader: %v\", err)\n\t}\n\n\tbuf := make([]byte, 64)\n\tn, err := r.Read(buf)\n\tif err != nil {\n\t\tlog.Fatalf(\"failed to read random bytes: %v\", err)\n\t}\n\tfmt.Printf(\"Read %d random bytes: %x\\n\", n, buf)\n}\n```\n\n### Using Personalization and Additional Input\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\n\t\"github.com/sixafter/aes-ctr-drbg\"\n)\n\nfunc main() {\n\tr, err := ctrdrbg.NewReader(\n\t\tctrdrbg.WithPersonalization([]byte(\"service-id-1\")),\n\t\tctrdrbg.WithKeySize(ctrdrbg.KeySize256), // AES-256\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"failed to create ctrdrbg.Reader: %v\", err)\n\t}\n\n\tbuf := make([]byte, 64)\n\tn, err := r.Read(buf)\n\tif err != nil {\n\t\tlog.Fatalf(\"failed to read random bytes: %v\", err)\n\t}\n\tfmt.Printf(\"Read %d random bytes: %x\\n\", n, buf)\n}\n```\n\n---\n\n## Performance Benchmarks\n\n### Raw Random Byte Generation\n\nThese `ctrdrbg.Reader` benchmarks demonstrate the package's focus on minimizing latency, memory usage, and allocation overhead, making it suitable for high-performance applications.\n\n\u003cdetails\u003e\n  \u003csummary\u003eExpand to see results\u003c/summary\u003e\n\n```shell\nmake bench\ngo test -bench='^BenchmarkDRBG_' -run=^$ -benchmem -memprofile=mem.out -cpuprofile=cpu.out .\ngoos: darwin\ngoarch: arm64\npkg: github.com/sixafter/aes-ctr-drbg\ncpu: Apple M4 Max\nBenchmarkDRBG_SyncPool_Baseline_Concurrent/G2-16  \t1000000000\t         0.6112 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_SyncPool_Baseline_Concurrent/G4-16  \t1000000000\t         0.6134 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_SyncPool_Baseline_Concurrent/G8-16  \t1000000000\t         0.5971 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_SyncPool_Baseline_Concurrent/G16-16 \t1000000000\t         0.5937 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_SyncPool_Baseline_Concurrent/G32-16 \t1000000000\t         0.5700 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_SyncPool_Baseline_Concurrent/G64-16 \t1000000000\t         0.5587 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_SyncPool_Baseline_Concurrent/G128-16         \t1000000000\t         0.5644 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Serial/Serial_Read_16Bytes-16           \t34062441\t        34.18 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Serial/Serial_Read_32Bytes-16           \t29895489\t        39.54 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Serial/Serial_Read_64Bytes-16           \t24042694\t        50.42 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Serial/Serial_Read_256Bytes-16          \t10366684\t       115.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Serial/Serial_Read_512Bytes-16          \t 5998489\t       200.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Serial/Serial_Read_4096Bytes-16         \t  871158\t      1377 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Serial/Serial_Read_16384Bytes-16        \t  222878\t      5376 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_16Bytes_2Goroutines-16         \t19962072\t        85.99 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_16Bytes_4Goroutines-16         \t19596702\t        84.39 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_16Bytes_8Goroutines-16         \t19851349\t        80.85 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_16Bytes_16Goroutines-16        \t19654436\t        64.24 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_16Bytes_32Goroutines-16        \t19521876\t        81.78 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_16Bytes_64Goroutines-16        \t19818331\t        82.29 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_16Bytes_128Goroutines-16       \t20155250\t        82.61 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_32Bytes_2Goroutines-16         \t18829485\t        88.29 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_32Bytes_4Goroutines-16         \t19666596\t        88.22 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_32Bytes_8Goroutines-16         \t19722001\t        83.93 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_32Bytes_16Goroutines-16        \t19440373\t        85.58 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_32Bytes_32Goroutines-16        \t19804376\t        84.60 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_32Bytes_64Goroutines-16        \t19879699\t        84.29 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_32Bytes_128Goroutines-16       \t19940580\t        82.55 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_64Bytes_2Goroutines-16         \t18446626\t        80.89 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_64Bytes_4Goroutines-16         \t19594609\t        84.27 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_64Bytes_8Goroutines-16         \t19475618\t        84.79 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_64Bytes_16Goroutines-16        \t19886919\t        85.68 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_64Bytes_32Goroutines-16        \t19558533\t        81.82 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_64Bytes_64Goroutines-16        \t19842116\t        82.01 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_64Bytes_128Goroutines-16       \t20000374\t        83.86 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_256Bytes_2Goroutines-16        \t10465203\t       161.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_256Bytes_4Goroutines-16        \t10905505\t       158.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_256Bytes_8Goroutines-16        \t10895772\t       154.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_256Bytes_16Goroutines-16       \t10901005\t       156.7 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_256Bytes_32Goroutines-16       \t10952331\t       151.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_256Bytes_64Goroutines-16       \t11080442\t       156.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_256Bytes_128Goroutines-16      \t11141888\t       156.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_512Bytes_2Goroutines-16        \t10665208\t       160.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_512Bytes_4Goroutines-16        \t10822701\t       161.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_512Bytes_8Goroutines-16        \t10816222\t       155.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_512Bytes_16Goroutines-16       \t11038309\t       148.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_512Bytes_32Goroutines-16       \t10907218\t       156.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_512Bytes_64Goroutines-16       \t11146635\t       156.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_512Bytes_128Goroutines-16      \t11120167\t       154.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_4096Bytes_2Goroutines-16       \t 7884975\t       205.0 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_4096Bytes_4Goroutines-16       \t 7952276\t       203.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_4096Bytes_8Goroutines-16       \t 6754220\t       200.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_4096Bytes_16Goroutines-16      \t 6395343\t       191.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_4096Bytes_32Goroutines-16      \t 6827542\t       203.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_4096Bytes_64Goroutines-16      \t 7638505\t       197.6 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_4096Bytes_128Goroutines-16     \t 7684468\t       187.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_16384Bytes_2Goroutines-16      \t 1792022\t       730.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_16384Bytes_4Goroutines-16      \t 1782008\t       752.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_16384Bytes_8Goroutines-16      \t 1811017\t       811.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_16384Bytes_16Goroutines-16     \t 1553781\t       773.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_16384Bytes_32Goroutines-16     \t 1644704\t       775.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_16384Bytes_64Goroutines-16     \t 1553227\t       758.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_Concurrent/Concurrent_Read_16384Bytes_128Goroutines-16    \t 1627238\t       789.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Sequential/Serial_Read_Large_4096Bytes-16      \t  724966\t      1396 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Sequential/Serial_Read_Large_16384Bytes-16     \t  217694\t      5471 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Sequential/Serial_Read_Large_65536Bytes-16     \t   56064\t     21448 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_4096Bytes_2Goroutines-16         \t 7686088\t       190.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_4096Bytes_4Goroutines-16         \t 7127140\t       193.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_4096Bytes_8Goroutines-16         \t 6847946\t       203.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_4096Bytes_16Goroutines-16        \t 7394517\t       202.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_4096Bytes_32Goroutines-16        \t 7078538\t       198.7 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_4096Bytes_64Goroutines-16        \t 7311069\t       213.6 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_4096Bytes_128Goroutines-16       \t 7093018\t       199.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_16384Bytes_2Goroutines-16        \t 1553928\t       787.7 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_16384Bytes_4Goroutines-16        \t 1505232\t       806.0 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_16384Bytes_8Goroutines-16        \t 1586379\t       824.8 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_16384Bytes_16Goroutines-16       \t 1567017\t       834.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_16384Bytes_32Goroutines-16       \t 1515153\t       826.6 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_16384Bytes_64Goroutines-16       \t 1498590\t       835.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_16384Bytes_128Goroutines-16      \t 1637242\t       823.0 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_65536Bytes_2Goroutines-16        \t  500164\t      2770 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_65536Bytes_4Goroutines-16        \t  498936\t      2767 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_65536Bytes_8Goroutines-16        \t  508104\t      2763 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_65536Bytes_16Goroutines-16       \t  486643\t      2768 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_65536Bytes_32Goroutines-16       \t  493526\t      2734 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_65536Bytes_64Goroutines-16       \t  511357\t      2723 ns/op\t       1 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_LargeSizes_Concurrent/Concurrent_Read_Large_65536Bytes_128Goroutines-16      \t  512506\t      2734 ns/op\t       1 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes/Serial_Read_Variable_16Bytes-16                                \t34138875\t        33.64 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes/Serial_Read_Variable_32Bytes-16                                \t30298119\t        39.34 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes/Serial_Read_Variable_64Bytes-16                                \t24156391\t        50.14 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes/Serial_Read_Variable_128Bytes-16                               \t16411648\t        71.70 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes/Serial_Read_Variable_256Bytes-16                               \t10339018\t       116.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes/Serial_Read_Variable_512Bytes-16                               \t 6003164\t       200.0 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes/Serial_Read_Variable_1024Bytes-16                              \t 3275638\t       368.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes/Serial_Read_Variable_2048Bytes-16                              \t 1683925\t       717.7 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes/Serial_Read_Variable_4096Bytes-16                              \t  828991\t      1396 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_16Bytes_2Goroutines-16     \t19667361\t        81.35 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_16Bytes_4Goroutines-16     \t19478792\t        82.87 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_16Bytes_8Goroutines-16     \t20362839\t        77.59 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_16Bytes_16Goroutines-16    \t19621669\t        79.42 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_16Bytes_32Goroutines-16    \t19656086\t        85.41 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_16Bytes_64Goroutines-16    \t20029543\t        73.63 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_16Bytes_128Goroutines-16   \t20244778\t        80.71 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_32Bytes_2Goroutines-16     \t18923464\t        86.25 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_32Bytes_4Goroutines-16     \t19499445\t        83.80 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_32Bytes_8Goroutines-16     \t19745245\t        85.16 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_32Bytes_16Goroutines-16    \t19773741\t        81.00 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_32Bytes_32Goroutines-16    \t19825248\t        84.00 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_32Bytes_64Goroutines-16    \t19899246\t        82.07 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_32Bytes_128Goroutines-16   \t19991892\t        83.84 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_64Bytes_2Goroutines-16     \t19272760\t        85.83 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_64Bytes_4Goroutines-16     \t19945840\t        84.05 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_64Bytes_8Goroutines-16     \t19978730\t        86.82 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_64Bytes_16Goroutines-16    \t19746584\t        82.55 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_64Bytes_32Goroutines-16    \t20115018\t        83.09 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_64Bytes_64Goroutines-16    \t19668866\t        80.67 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_64Bytes_128Goroutines-16   \t20351356\t        82.02 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_128Bytes_2Goroutines-16    \t10806562\t       156.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_128Bytes_4Goroutines-16    \t10851708\t       160.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_128Bytes_8Goroutines-16    \t10542328\t       155.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_128Bytes_16Goroutines-16   \t10863722\t       155.0 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_128Bytes_32Goroutines-16   \t10945759\t       147.8 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_128Bytes_64Goroutines-16   \t11071387\t       153.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_128Bytes_128Goroutines-16  \t11136016\t       155.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_256Bytes_2Goroutines-16    \t10442144\t       158.8 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_256Bytes_4Goroutines-16    \t10719852\t       156.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_256Bytes_8Goroutines-16    \t10798916\t       156.8 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_256Bytes_16Goroutines-16   \t10926900\t       157.0 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_256Bytes_32Goroutines-16   \t10761366\t       143.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_256Bytes_64Goroutines-16   \t11546500\t       122.6 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_256Bytes_128Goroutines-16  \t12631794\t       114.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_512Bytes_2Goroutines-16    \t10984488\t       156.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_512Bytes_4Goroutines-16    \t11054596\t       153.6 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_512Bytes_8Goroutines-16    \t 9367392\t       148.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_512Bytes_16Goroutines-16   \t11085548\t       149.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_512Bytes_32Goroutines-16   \t10982490\t       151.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_512Bytes_64Goroutines-16   \t11193729\t       145.6 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_512Bytes_128Goroutines-16  \t11057155\t       153.8 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_1024Bytes_2Goroutines-16   \t12433735\t       140.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_1024Bytes_4Goroutines-16   \t12563049\t       142.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_1024Bytes_8Goroutines-16   \t12526951\t       137.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_1024Bytes_16Goroutines-16  \t12434395\t       137.8 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_1024Bytes_32Goroutines-16  \t12830301\t       136.6 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_1024Bytes_64Goroutines-16  \t12661705\t       146.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_1024Bytes_128Goroutines-16 \t12534420\t       147.0 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_2048Bytes_2Goroutines-16   \t12307370\t       124.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_2048Bytes_4Goroutines-16   \t12567220\t       105.7 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_2048Bytes_8Goroutines-16   \t12071736\t       100.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_2048Bytes_16Goroutines-16  \t11801464\t       106.6 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_2048Bytes_32Goroutines-16  \t12380242\t       115.7 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_2048Bytes_64Goroutines-16  \t12019501\t       110.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_2048Bytes_128Goroutines-16 \t12071012\t       115.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_4096Bytes_2Goroutines-16   \t 6966630\t       220.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_4096Bytes_4Goroutines-16   \t 7283623\t       222.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_4096Bytes_8Goroutines-16   \t 7271518\t       216.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_4096Bytes_16Goroutines-16  \t 7153774\t       217.6 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_4096Bytes_32Goroutines-16  \t 7220374\t       215.7 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_4096Bytes_64Goroutines-16  \t 6965928\t       197.0 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_VariableSizes_Concurrent/Concurrent_Read_Variable_4096Bytes_128Goroutines-16 \t 6695487\t       211.7 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Serial_Read_Extreme_10485760Bytes-16                            \t     328\t   3549165 ns/op\t     163 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_10485760Bytes_2Goroutines-16            \t    3732\t    339168 ns/op\t      91 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_10485760Bytes_4Goroutines-16            \t    3270\t    346786 ns/op\t     113 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_10485760Bytes_8Goroutines-16            \t    3276\t    346405 ns/op\t     133 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_10485760Bytes_16Goroutines-16           \t    3267\t    349331 ns/op\t     149 B/op\t       0 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_10485760Bytes_32Goroutines-16           \t    3325\t    349511 ns/op\t     177 B/op\t       1 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_10485760Bytes_64Goroutines-16           \t    3267\t    354763 ns/op\t     262 B/op\t       1 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_10485760Bytes_128Goroutines-16          \t    3253\t    355026 ns/op\t     277 B/op\t       2 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Serial_Read_Extreme_52428800Bytes-16                            \t      61\t  17701644 ns/op\t    1019 B/op\t       2 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_52428800Bytes_2Goroutines-16            \t     717\t   1717468 ns/op\t     457 B/op\t       2 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_52428800Bytes_4Goroutines-16            \t     645\t   1733391 ns/op\t     575 B/op\t       3 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_52428800Bytes_8Goroutines-16            \t     656\t   1740158 ns/op\t     608 B/op\t       3 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_52428800Bytes_16Goroutines-16           \t     642\t   1738901 ns/op\t     763 B/op\t       4 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_52428800Bytes_32Goroutines-16           \t     625\t   1764412 ns/op\t     754 B/op\t       5 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_52428800Bytes_64Goroutines-16           \t     660\t   1753616 ns/op\t    1038 B/op\t       7 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_52428800Bytes_128Goroutines-16          \t     627\t   1769634 ns/op\t    1249 B/op\t      11 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Serial_Read_Extreme_104857600Bytes-16                           \t      31\t  35179063 ns/op\t    1601 B/op\t       2 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_104857600Bytes_2Goroutines-16           \t     338\t   3426444 ns/op\t     973 B/op\t       5 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_104857600Bytes_4Goroutines-16           \t     336\t   3494822 ns/op\t    1085 B/op\t       6 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_104857600Bytes_8Goroutines-16           \t     314\t   3478031 ns/op\t    1293 B/op\t       7 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_104857600Bytes_16Goroutines-16          \t     338\t   3507727 ns/op\t    1410 B/op\t       8 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_104857600Bytes_32Goroutines-16          \t     320\t   3539974 ns/op\t    1687 B/op\t      11 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_104857600Bytes_64Goroutines-16          \t     296\t   3483667 ns/op\t    2022 B/op\t      15 allocs/op\nBenchmarkDRBG_Read_ExtremeSizes/Concurrent_Read_Extreme_104857600Bytes_128Goroutines-16         \t     289\t   3470399 ns/op\t    2329 B/op\t      23 allocs/op\nBenchmarkDRBG_Read_WithKeyRotation-16                                                           \t 5215118\t       227.6 ns/op\t     196 B/op\t       1 allocs/op\nBenchmarkDRBG_Read_PredictionResistance-16                                                      \t 2658322\t       450.1 ns/op\t     633 B/op\t       3 allocs/op\nPASS\nok  \tgithub.com/sixafter/aes-ctr-drbg\t293.330s\n```\n\n\u003c/details\u003e\n\n### UUID Generation with Google UUID and ctrdrbg\n\nHere's a summary of the benchmark results comparing the default random reader for Google's [UUID](https://pkg.go.dev/github.com/google/uuid) package and the ctrdrbg-based UUID generation:\n\n| Benchmark Scenario                  | Default ns/op | CTRDRBG ns/op | % Faster (ns/op) | Default B/op | CTRDRBG B/op | Default allocs/op | CTRDRBG allocs/op |\n|-------------------------------------|--------------:|--------------:|-----------------:|-------------:|-------------:|------------------:|------------------:|\n| v4 Serial                           |        180.6  |        40.78  |         77.4%    |         16   |         16   |                1  |                1  |\n| v4 Parallel                         |        445.4  |        10.56  |         97.6%    |         16   |         16   |                1  |                1  |\n| v4 Concurrent (2 goroutines)        |        413.2  |        21.91  |         94.7%    |         16   |         16   |                1  |                1  |\n| v4 Concurrent (4 goroutines)        |        428.5  |        12.77  |         97.0%    |         16   |         16   |                1  |                1  |\n| v4 Concurrent (8 goroutines)        |        484.6  |         9.74  |         98.0%    |         16   |         16   |                1  |                1  |\n| v4 Concurrent (16 goroutines)       |        458.2  |         7.67  |         98.3%    |         16   |         16   |                1  |                1  |\n| v4 Concurrent (32 goroutines)       |        506.3  |         7.69  |         98.5%    |         16   |         16   |                1  |                1  |\n| v4 Concurrent (64 goroutines)       |        506.9  |         7.64  |         98.5%    |         16   |         16   |                1  |                1  |\n| v4 Concurrent (128 goroutines)      |        508.2  |         7.63  |         98.5%    |         16   |         16   |                1  |                1  |\n| v4 Concurrent (256 goroutines)      |        511.8  |         7.79  |         98.5%    |         16   |         16   |                1  |                1  |\n\nNotes:\n- \"Default\" refers to the baseline Go `crypto/rand` source.\n- \"CTRDRBG\" refers to this AES-CTR-DRBG implementation.\n- \"% Faster (ns/op)\" is computed as `100 * (Default - CTRDRBG) / Default`, rounded.\n\n\u003cdetails\u003e\n  \u003csummary\u003eExpand to see results\u003c/summary\u003e\n\n```shell\nmake bench-uuid\ngo test -bench='^BenchmarkUUID_' -run=^$ -benchmem -memprofile=mem.out -cpuprofile=cpu.out .\ngoos: darwin\ngoarch: arm64\npkg: github.com/sixafter/aes-ctr-drbg\ncpu: Apple M4 Max\nBenchmarkUUID_v4_Default_Serial-16        \t 5764681\t       207.8 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_Default_Parallel-16      \t 2523262\t       467.4 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_Default_Concurrent/Goroutines_2-16         \t 3328860\t       360.3 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_Default_Concurrent/Goroutines_4-16         \t 2731453\t       436.8 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_Default_Concurrent/Goroutines_8-16         \t 2447664\t       491.7 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_Default_Concurrent/Goroutines_16-16        \t 2558335\t       473.6 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_Default_Concurrent/Goroutines_32-16        \t 2366698\t       510.7 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_Default_Concurrent/Goroutines_64-16        \t 2340867\t       511.9 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_Default_Concurrent/Goroutines_128-16       \t 2345401\t       510.6 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_Default_Concurrent/Goroutines_256-16       \t 2329904\t       515.1 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CTRDRBG_Serial-16                          \t23044700\t        50.41 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CTRDRBG_Parallel-16                        \t94280326\t        12.50 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CTRDRBG_Concurrent/Goroutines_2-16         \t43251036\t        26.58 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CTRDRBG_Concurrent/Goroutines_4-16         \t80453218\t        14.85 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CTRDRBG_Concurrent/Goroutines_8-16         \t100000000\t        10.95 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CTRDRBG_Concurrent/Goroutines_16-16        \t139321384\t         8.189 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CTRDRBG_Concurrent/Goroutines_32-16        \t146813631\t         8.137 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CTRDRBG_Concurrent/Goroutines_64-16        \t144867888\t         8.253 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CTRDRBG_Concurrent/Goroutines_128-16       \t147125661\t         8.219 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CTRDRBG_Concurrent/Goroutines_256-16       \t143012491\t         8.396 ns/op\t      16 B/op\t       1 allocs/op\nPASS\nok  \tgithub.com/sixafter/aes-ctr-drbg\t32.857s\n  ```\n\u003c/details\u003e\n\n---\n\n## Contributing\n\nContributions are welcome. See [CONTRIBUTING](CONTRIBUTING.md)\n\n---\n\n## License\n\nThis project is licensed under the [Apache 2.0 License](https://choosealicense.com/licenses/apache-2.0/). See [LICENSE](LICENSE) file.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsixafter%2Faes-ctr-drbg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsixafter%2Faes-ctr-drbg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsixafter%2Faes-ctr-drbg/lists"}