=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_CTX_get_params newed instantiated uninstantiated freed
EVP_RAND_CTX_set_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 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_CTX_get_params | newed | instantiated | uninstantiated | ||
EVP_RAND_CTX_set_params | newed | instantiated | uninstantiated | ||
EVP_RAND_CTX_gettable_params | newed | instantiated | uninstantiated | ||
EVP_RAND_CTX_settable_params | newed | instantiated | uninstantiated |