EVP_RAND-JITTER(7ossl)

πŸ“¦
version 15.1 Β· 2 versions
, in freebsd 15.1

✨ EVP_RAND-JITTER πŸ’…

okay so this is a page from the OpenSSL manual set (that's the 7ossl situation, iykyk) and it's about the jitter seed source bestie, buckle up πŸŽ€


🌸 NAME 🌸

EVP_RAND-JITTER β€” the randomness seed source EVP_RAND implementation πŸ¦‹


⭐ DESCRIPTION ⭐

So this is support for deterministic random number generator seeding through the EVP_RAND API. Fr fr.

This software seed source produces randomness based on tiny CPU "jitter" fluctuations ✨ β€” like, the teeny tiny wobbles in timing, and it turns those into entropy. It's giving chaos magic but make it cryptography πŸ’…

It is available when OpenSSL is compiled with the enable-jitter option. When it's available it's listed in openssl list -random-generators and openssl info -seeds πŸ‘‘

🫢 Identity 🫢

"JITTER" is the name for this implementation; it can be used with the EVP_RAND_fetch() function. That's the whole vibe check, it passes βœ…

🧚 Supported parameters 🧚

The supported parameters are:

  • "state" (OSSL_RAND_PARAM_STATE) <integer>
  • "strength" (OSSL_RAND_PARAM_STRENGTH) <unsigned integer>
  • "max_request" (OSSL_RAND_PARAM_MAX_REQUEST) <unsigned integer>

These parameters work as described in "PARAMETERS" in EVP_RAND(3). no cap, go read that one too πŸ“–


πŸ”₯ NOTES πŸ”₯

A context for the seed source can be obtained by calling:

EVP_RAND *rand = EVP_RAND_fetch(NULL, "JITTER", NULL);
EVP_RAND_CTX *rctx = EVP_RAND_CTX_new(rand, NULL);

The enable-jitter option was added in OpenSSL 3.4 πŸ—“οΈ

By specifying the enable-fips-jitter configuration option, the FIPS provider will use an internal jitter source for its entropy. Enabling this option will cause the FIPS provider to operate in a non-compliant mode unless an entropy assessment ESV <https://csrc.nist.gov/Projects/cryptographic-module-validation-program/entropy-validations> and validation through the CMVP <https://csrc.nist.gov/projects/cryptographic-module-validation-program> are additionally conducted. This option was added in OpenSSL 3.5 πŸ—“οΈ

πŸ’€ bestie hear me: enable-fips-jitter lowkey drops your FIPS provider into non-compliant mode unless you also do the ESV entropy assessment and the CMVP validation. That's not a vibe, that's a compliance problem. Don't skip it πŸ™ˆ

🌈 EXAMPLES 🌈

EVP_RAND *rand;
EVP_RAND_CTX *seed, *rctx;
unsigned char bytes[100];
OSSL_PARAM params[2], *p = params;
unsigned int strength = 128;

/* Create and instantiate a seed source */
rand = EVP_RAND_fetch(NULL, "JITTER", NULL);
seed = EVP_RAND_CTX_new(rand, NULL);
EVP_RAND_instantiate(seed, strength, 0, NULL, 0, NULL);
EVP_RAND_free(rand);

/* Feed this into a DRBG */
rand = EVP_RAND_fetch(NULL, "CTR-DRBG", NULL);
rctx = EVP_RAND_CTX_new(rand, seed);
EVP_RAND_free(rand);

/* Configure the DRBG */
*p++ = OSSL_PARAM_construct_utf8_string(OSSL_DRBG_PARAM_CIPHER,
                                        SN_aes_256_ctr, 0);
*p = OSSL_PARAM_construct_end();
EVP_RAND_instantiate(rctx, strength, 0, NULL, 0, params);

EVP_RAND_generate(rctx, bytes, sizeof(bytes), strength, 0, NULL, 0);

EVP_RAND_CTX_free(rctx);
EVP_RAND_CTX_free(seed);

like, look at her go 😭 jitter seed β†’ CTR-DRBG β†’ bytes. main character energy honestly πŸ‘‘


πŸ¦‹ SEE ALSO πŸ¦‹

EVP_RAND(3), "PARAMETERS" in EVP_RAND(3)


Copyright 2024 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>.


okay that's the page bestie, hope it ate πŸ’…βœ¨ this was 3.5.6, dated 2026-04-07, from the EVP_RAND-JITTER(7ossl) manual β€” mwah, go seed something responsibly πŸ“πŸ’œ

πŸ“¦ where this page comes from