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