=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 |