openssl/doc/life-cycles
slontis 5366490822 Add EVP_DigestSqueeze() API.
Fixes #7894

This allows SHAKE to squeeze multiple times with different output sizes.

The existing EVP_DigestFinalXOF() API has been left as a one shot
operation. A similar interface is used by another toolkit.

The low level SHA3_Squeeze() function needed to change slightly so
that it can handle multiple squeezes. This involves changing the
assembler code so that it passes a boolean to indicate whether
the Keccak function should be called on entry.
At the provider level, the squeeze is buffered, so that it only requests
a multiple of the blocksize when SHA3_Squeeze() is called. On the first
call the value is zero, on subsequent calls the value passed is 1.

This PR is derived from the excellent work done by @nmathewson in
https://github.com/openssl/openssl/pull/7921

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21511)
2023-11-10 13:27:00 +01:00
..
cipher.dot doc: improve the cipher life cycle diagram 2021-06-08 18:55:32 +10:00
digest.dot Add EVP_DigestSqueeze() API. 2023-11-10 13:27:00 +01:00
kdf.dot doc: remove end of line whitespace 2021-09-22 16:22:50 +10:00
lifecycles.ods life-cycles: update digest state table 2021-06-08 18:55:32 +10:00
mac.dot doc: remove end of line whitespace 2021-09-22 16:22:50 +10:00
Makefile
pkey.dot
rand.dot doc: remove end of line whitespace 2021-09-22 16:22:50 +10:00
README.md

Algorithm Life-Cycle Diagrams

This directory contains the algorithm life-cycle diagram sources.

The canonical life-cycles are in the spreadsheet.

The various .dot files are graph descriptions for the GraphViz tool. These omit edges and should be used for guidance only.

To generate the rendered images, you need to install the following packages:

sudo apt install graphviz cpanminus
sudo cpanm Graph::Easy

Running make will produce a number of .txt and .png files. These are the rendered .dot files. The .txt files require additional editing before they can be added to the manual pages in internal/man7/life_cycle-*.pod.