From b0b63654e9da02a6f336c5660e659a87a29e916e Mon Sep 17 00:00:00 2001 From: Pauli Date: Wed, 24 Mar 2021 13:35:41 +1000 Subject: [PATCH] doc: life-cycle descritpion for RANDs Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/14522) --- doc/man7/life_cycle-rand.pod | 193 +++++++++++++++++++++++++++++++++++ doc/man7/rand.png | Bin 0 -> 41597 bytes 2 files changed, 193 insertions(+) create mode 100644 doc/man7/life_cycle-rand.pod create mode 100644 doc/man7/rand.png diff --git a/doc/man7/life_cycle-rand.pod b/doc/man7/life_cycle-rand.pod new file mode 100644 index 0000000000..b78b8484d2 --- /dev/null +++ b/doc/man7/life_cycle-rand.pod @@ -0,0 +1,193 @@ +=pod + +=head1 NAME + +life_cycle-rand - The RAND algorithm life-cycle + +=head1 DESCRIPTION + +All random number generator (RANDs) +go through a number of stages in their life-cycle: + +=over 4 + +=item start + +This state represents the RAND before it has been allocated. It is the +starting state for any life-cycle transitions. + +=item newed + +This state represents the RAND after it has been allocated but unable to +generate any output. + +=item instantiated + +This state represents the RAND when it is set up and capable of generating +output. + +=item uninstantiated + +This state represents the RAND when it has been shutdown and it is no longer +capable of generating output. + +=item freed + +This state is entered when the RAND is freed. It is the terminal state +for all life-cycle transitions. + +=back + +=head2 State Transition Diagram + +The usual life-cycle of a RAND is illustrated: + +=begin man + + +-------------------------+ + | start | + +-------------------------+ + | + | EVP_RAND_CTX_new + v + +-------------------------+ + | newed | + +-------------------------+ + | + | EVP_RAND_instantiate + v + EVP_RAND_generate +-------------------------+ + +-------------------- | | + | | instantiated | + +-------------------> | | <+ + +-------------------------+ ' + | ' + | EVP_RAND_uninstantiate ' EVP_RAND_instantiate + v ' + +-------------------------+ ' + | uninstantiated | -+ + +-------------------------+ + | + | EVP_RAND_CTX_free + v + +-------------------------+ + | freed | + +-------------------------+ + +=end man + +=for html + +=head2 Formal State Transitions + +This section defines all of the legal state transitions. +This is the canonical list. + +=begin man + + Function Call ------------------ Current State ------------------ + start newed instantiated uninstantiated freed + EVP_RAND_CTX_new newed + EVP_RAND_instantiate instantiated + EVP_RAND_generate instantiated + EVP_RAND_uninstantiate uninstantiated + EVP_RAND_CTX_free freed freed freed freed + EVP_RAND_get_ctx_params newed instantiated uninstantiated freed + EVP_RAND_set_ctx_params newed instantiated uninstantiated freed + EVP_RAND_CTX_gettable_params newed instantiated uninstantiated freed + EVP_RAND_CTX_settable_params newed instantiated uninstantiated freed + +=end man + +=begin html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Function CallCurrent State
startnewedinstantiateduninstantiatedfreed
EVP_RAND_CTX_newnewed
EVP_RAND_instantiateinstantiated
EVP_RAND_generateinstantiated
EVP_RAND_uninstantiateuninstantiated
EVP_RAND_CTX_freefreedfreedfreedfreed
EVP_RAND_get_ctx_paramsnewedinstantiateduninstantiated
EVP_RAND_set_ctx_paramsnewedinstantiateduninstantiated
EVP_RAND_CTX_gettable_paramsnewedinstantiateduninstantiated
EVP_RAND_CTX_settable_paramsnewedinstantiateduninstantiated
+ +=end html + +=head1 NOTES + +At some point the EVP layer will begin enforcing the transitions described +herein. + +=head1 SEE ALSO + +L, L. + +=head1 HISTORY + +The provider RAND interface was introduced in OpenSSL 3.0. + +=head1 COPYRIGHT + +Copyright 2021 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 +L. + +=cut diff --git a/doc/man7/rand.png b/doc/man7/rand.png new file mode 100644 index 0000000000000000000000000000000000000000..56d213f389464acb1be39e22cb77aaaf8148f5a0 GIT binary patch literal 41597 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

)nt`t-CbrUcql0YLafN&j4PFFw@_l{oMI<*g* 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 literal 0 HcmV?d00001