1=pod 2 3=head1 NAME 4 5EVP_RAND-CRNG-TEST - The FIPS health testing EVP_RAND filter 6 7=head1 DESCRIPTION 8 9This B<EVP_RAND> object acts as a filter between the entropy source 10and its users. It performs CRNG health tests as defined in 11L<SP 800-90B|https://csrc.nist.gov/pubs/sp/800/90/b/final> Section 4 "Health 12Tests". Most requests are forwarded to the entropy source, either via 13its parent reference or via the provider entropy upcalls. 14 15=head2 Identity 16 17"CRNG-TEST" is the name for this implementation; it can be used with the 18EVP_RAND_fetch() function. 19 20=head2 Supported parameters 21 22If a parent EVP_RAND is specified on context creation, the parent's 23parameters are supported because the request is forwarded to the parent 24seed source for processing. 25 26If no parent EVP_RAND is specified on context creation, the following parameters 27are supported: 28 29=over 4 30 31=item "state" (B<OSSL_RAND_PARAM_STATE>) <integer> 32 33=item "strength" (B<OSSL_RAND_PARAM_STRENGTH>) <unsigned integer> 34 35=item "max_request" (B<OSSL_RAND_PARAM_MAX_REQUEST>) <unsigned integer> 36 37These parameters work as described in L<EVP_RAND(3)/PARAMETERS>. 38 39=item "fips-indicator" (B<OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR>) <integer> 40 41This parameter works as described in L<provider-rand(7)/PARAMETERS>. 42 43=back 44 45=head1 NOTES 46 47This EVP_RAND is only implemented by the OpenSSL FIPS provider. 48 49A context for a health test filter can be obtained by calling: 50 51 EVP_RAND *parent = ...; 52 EVP_RAND *rand = EVP_RAND_fetch(NULL, "CRNG-TEST", NULL); 53 EVP_RAND_CTX *rctx = EVP_RAND_CTX_new(rand, parent); 54 55=head1 SEE ALSO 56 57L<EVP_RAND(3)>, L<OSSL_PROVIDER-FIPS(7)> 58 59=head1 HISTORY 60 61This functionality was added in OpenSSL 3.4. 62 63=head1 COPYRIGHT 64 65Copyright 2024 The OpenSSL Project Authors. All Rights Reserved. 66 67Licensed under the Apache License 2.0 (the "License"). You may not use 68this file except in compliance with the License. You can obtain a copy 69in the file LICENSE in the source distribution or at 70L<https://www.openssl.org/source/license.html>. 71 72=cut 73