=pod =head1 NAME life_cycle-digest - The digest algorithm life-cycle =head1 DESCRIPTION All message digests (MDs) go through a number of stages in their life-cycle: =over 4 =item start This state represents the MD before it has been allocated. It is the starting state for any life-cycle transitions. =item newed This state represents the MD after it has been allocated. =item initialised This state represents the MD when it is set up and capable of processing input. =item updated This state represents the MD when it is set up and capable of processing additional input or generating output. =item finaled This state represents the MD when it has generated output. =item freed This state is entered when the MD is freed. It is the terminal state for all life-cycle transitions. =back =head2 State Transition Diagram The usual life-cycle of a MD is illustrated: =begin man +-------------------+ | start | +-------------------+ | | EVP_MD_CTX_new v +-------------------+ EVP_MD_CTX_reset | newed | <------------------------------+ +-------------------+ | | | | EVP_DigestInit | v | +-------------------+ | +--> | initialised | <+ EVP_DigestInit | | +-------------------+ | | | | | EVP_DigestUpdate | | | EVP_DigestUpdate | +------------------+ | | v | v | | | +------------------------------------------------+ | EVP_DigestInit | | updated | --+ | +------------------------------------------------+ | | | | | | | EVP_DigestFinal | EVP_DigestFinalXOF | | v v | | +------------------------------------------------+ | +--- | finaled | --+ +------------------------------------------------+ | | EVP_MD_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 initialised updated finaled freed EVP_MD_CTX_new newed EVP_DigestInit initialised initialised initialised initialised EVP_DigestUpdate updated updated EVP_DigestFinal finaled EVP_DigestFinalXOF finaled EVP_MD_CTX_free freed freed freed freed freed EVP_MD_CTX_reset newed newed newed newed EVP_MD_CTX_get_params newed initialised updated EVP_MD_CTX_set_params newed initialised updated EVP_MD_CTX_gettable_params newed initialised updated EVP_MD_CTX_settable_params newed initialised updated =end man =begin html
Function Call | Current State | |||||
---|---|---|---|---|---|---|
start | newed | initialised | updated | finaled | freed | |
EVP_MD_CTX_new | newed | |||||
EVP_DigestInit | initialised | initialised | initialised | initialised | ||
EVP_DigestUpdate | updated | updated | ||||
EVP_DigestFinal | finaled | |||||
EVP_DigestFinalXOF | finaled | |||||
EVP_MD_CTX_free | freed | freed | freed | freed | freed | |
EVP_MD_CTX_reset | newed | newed | newed | newed | ||
EVP_MD_CTX_get_params | newed | initialised | updated | |||
EVP_MD_CTX_set_params | newed | initialised | updated | |||
EVP_MD_CTX_gettable_params | newed | initialised | updated | |||
EVP_MD_CTX_settable_params | newed | initialised | updated |