=pod =head1 NAME life_cycle-mac - The MAC algorithm life-cycle =head1 DESCRIPTION All message authentication codes (MACs) go through a number of stages in their life-cycle: =over 4 =item start This state represents the MAC before it has been allocated. It is the starting state for any life-cycle transitions. =item newed This state represents the MAC after it has been allocated. =item initialised This state represents the MAC when it is set up and capable of processing input. =item updated This state represents the MAC when it is set up and capable of processing additional input or generating output. =item finaled This state represents the MAC when it has generated output. =item freed This state is entered when the MAC is freed. It is the terminal state for all life-cycle transitions. =back =head2 State Transition Diagram The usual life-cycle of a MAC is illustrated: =begin man +-------------------+ | start | +-------------------+ | | EVP_MAC_CTX_new v +-------------------+ | newed | +-------------------+ | | EVP_MAC_init v +-------------------+ +> | initialised | <+ | +-------------------+ | | | | | | EVP_MAC_update | EVP_MAC_init | v | EVP_MAC_init | +-------------------+ | | | updated | -+ | +-------------------+ | | | | | EVP_MAC_final | EVP_MAC_finalXOF | v v | +-------------------+ +- | finaled | +-------------------+ | | EVP_MAC_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_MAC_CTX_new newed EVP_MAC_init initialised initialised initialised initialised EVP_MAC_update updated updated EVP_MAC_final finaled EVP_MAC_finalXOF finaled EVP_MAC_CTX_free freed freed freed freed freed EVP_MAC_CTX_get_params newed initialised updated EVP_MAC_CTX_set_params newed initialised updated EVP_MAC_CTX_gettable_params newed initialised updated EVP_MAC_CTX_settable_params newed initialised updated =end man =begin html
Function Call | Current State | |||||
---|---|---|---|---|---|---|
start | newed | initialised | updated | finaled | freed | |
EVP_MAC_CTX_new | newed | |||||
EVP_MAC_init | initialised | initialised | initialised | initialised | ||
EVP_MAC_update | updated | updated | ||||
EVP_MAC_final | finaled | |||||
EVP_MAC_finalXOF | finaled | |||||
EVP_MAC_CTX_free | freed | freed | freed | freed | freed | |
EVP_MAC_CTX_get_params | newed | initialised | updated | |||
EVP_MAC_CTX_set_params | newed | initialised | updated | |||
EVP_MAC_CTX_gettable_params | newed | initialised | updated | |||
EVP_MAC_CTX_settable_params | newed | initialised | updated |