{
    "mode": "man",
    "parameter": "EVP_RAND-CTR-DRBG",
    "section": "7ssl",
    "url": "https://www.chedong.com/phpMan.php/man/EVP_RAND-CTR-DRBG/7ssl/json",
    "generated": "2026-06-16T10:13:25Z",
    "sections": {
        "NAME": {
            "content": "EVPRAND-CTR-DRBG - The CTR DRBG EVPRAND implementation\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "Support for the counter deterministic random bit generator through the EVPRAND API.\n",
            "subsections": [
                {
                    "name": "Identity",
                    "content": "\"CTR-DRBG\" is the name for this implementation; it can be used with the EVPRANDfetch()\nfunction.\n"
                },
                {
                    "name": "Supported parameters",
                    "content": "The supported parameters are:\n\n\"state\" (OSSLRANDPARAMSTATE) <integer>\n\"strength\" (OSSLRANDPARAMSTRENGTH) <unsigned integer>\n\"maxrequest\" (OSSLRANDPARAMMAXREQUEST) <unsigned integer>\n\"reseedrequests\" (OSSLDRBGPARAMRESEEDREQUESTS) <unsigned integer>\n\"reseedtimeinterval\" (OSSLDRBGPARAMRESEEDTIMEINTERVAL) <integer>\n\"minentropylen\" (OSSLDRBGPARAMMINENTROPYLEN) <unsigned integer>\n\"maxentropylen\" (OSSLDRBGPARAMMAXENTROPYLEN) <unsigned integer>\n\"minnoncelen\" (OSSLDRBGPARAMMINNONCELEN) <unsigned integer>\n\"maxnoncelen\" (OSSLDRBGPARAMMAXNONCELEN) <unsigned integer>\n\"maxperslen\" (OSSLDRBGPARAMMAXPERSLEN) <unsigned integer>\n\"maxadinlen\" (OSSLDRBGPARAMMAXADINLEN) <unsigned integer>\n\"reseedcounter\" (OSSLDRBGPARAMRESEEDCOUNTER) <unsigned integer>\n\"properties\" (OSSLDRBGPARAMPROPERTIES) <UTF8 string>\n\"cipher\" (OSSLDRBGPARAMCIPHER) <UTF8 string>\nThese parameters work as described in \"PARAMETERS\" in EVPRAND(3).\n\n\"usederivationfunction\" (OSSLDRBGPARAMUSEDF) <integer>\nThis Boolean indicates if a derivation function should be used or not.  A nonzero value\n(the default) uses the derivation function.  A zero value does not.\n"
                }
            ]
        },
        "NOTES": {
            "content": "A context for CTR DRBG can be obtained by calling:\n\nEVPRAND *rand = EVPRANDfetch(NULL, \"CTR-DRBG\", NULL);\nEVPRANDCTX *rctx = EVPRANDCTXnew(rand);\n",
            "subsections": []
        },
        "EXAMPLES": {
            "content": "EVPRAND *rand;\nEVPRANDCTX *rctx;\nunsigned char bytes[100];\nOSSLPARAM params[2], *p = params;\nunsigned int strength = 128;\n\nrand = EVPRANDfetch(NULL, \"CTR-DRBG\", NULL);\nrctx = EVPRANDCTXnew(rand, NULL);\nEVPRANDfree(rand);\n\n*p++ = OSSLPARAMconstructutf8string(OSSLDRBGPARAMCIPHER,\nSNaes256ctr, 0);\n*p = OSSLPARAMconstructend();\nEVPRANDinstantiate(rctx, strength, 0, NULL, 0, params);\n\nEVPRANDgenerate(rctx, bytes, sizeof(bytes), strength, 0, NULL, 0);\n\nEVPRANDCTXfree(rctx);\n",
            "subsections": []
        },
        "CONFORMING TO": {
            "content": "NIST SP 800-90A and SP 800-90B\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "EVPRAND(3), \"PARAMETERS\" in EVPRAND(3)\n",
            "subsections": []
        },
        "COPYRIGHT": {
            "content": "Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.\n\nLicensed under the Apache License 2.0 (the \"License\").  You may not use this file except in\ncompliance with the License.  You can obtain a copy in the file LICENSE in the source\ndistribution or at <https://www.openssl.org/source/license.html>.\n\n\n\n3.0.2                                        2026-06-02                      EVPRAND-CTR-DRBG(7SSL)",
            "subsections": []
        }
    },
    "summary": "EVPRAND-CTR-DRBG - The CTR DRBG EVPRAND implementation",
    "flags": [],
    "examples": [
        "EVPRAND *rand;",
        "EVPRANDCTX *rctx;",
        "unsigned char bytes[100];",
        "OSSLPARAM params[2], *p = params;",
        "unsigned int strength = 128;",
        "rand = EVPRANDfetch(NULL, \"CTR-DRBG\", NULL);",
        "rctx = EVPRANDCTXnew(rand, NULL);",
        "EVPRANDfree(rand);",
        "*p++ = OSSLPARAMconstructutf8string(OSSLDRBGPARAMCIPHER,",
        "SNaes256ctr, 0);",
        "*p = OSSLPARAMconstructend();",
        "EVPRANDinstantiate(rctx, strength, 0, NULL, 0, params);",
        "EVPRANDgenerate(rctx, bytes, sizeof(bytes), strength, 0, NULL, 0);",
        "EVPRANDCTXfree(rctx);"
    ],
    "see_also": [
        {
            "name": "EVPRAND",
            "section": "3",
            "url": "https://www.chedong.com/phpMan.php/man/EVPRAND/3/json"
        },
        {
            "name": "EVPRAND",
            "section": "3",
            "url": "https://www.chedong.com/phpMan.php/man/EVPRAND/3/json"
        }
    ]
}