From 4aac71f705f5fff15c6cb0da44d9f8014f48901f Mon Sep 17 00:00:00 2001 From: Pauli Date: Fri, 12 Mar 2021 08:46:55 +1000 Subject: [PATCH] doc: add life-cycle source files Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/14522) --- doc/life-cycles/Makefile | 26 ++++++++++++ doc/life-cycles/README.md | 18 +++++++++ doc/life-cycles/cipher.dot | 72 +++++++++++++++++++++++++++++++++ doc/life-cycles/digest.dot | 31 ++++++++++++++ doc/life-cycles/kdf.dot | 14 +++++++ doc/life-cycles/lifecycles.ods | Bin 0 -> 16408 bytes doc/life-cycles/mac.dot | 24 +++++++++++ doc/life-cycles/pkey.dot | 48 ++++++++++++++++++++++ doc/life-cycles/rand.dot | 15 +++++++ 9 files changed, 248 insertions(+) create mode 100644 doc/life-cycles/Makefile create mode 100644 doc/life-cycles/README.md create mode 100644 doc/life-cycles/cipher.dot create mode 100644 doc/life-cycles/digest.dot create mode 100644 doc/life-cycles/kdf.dot create mode 100644 doc/life-cycles/lifecycles.ods create mode 100644 doc/life-cycles/mac.dot create mode 100644 doc/life-cycles/pkey.dot create mode 100644 doc/life-cycles/rand.dot diff --git a/doc/life-cycles/Makefile b/doc/life-cycles/Makefile new file mode 100644 index 00000000000..4c12558e63d --- /dev/null +++ b/doc/life-cycles/Makefile @@ -0,0 +1,26 @@ +GRAPHS=cipher.dot digest.dot kdf.dot mac.dot pkey.dot rand.dot +IMAGES= + +all: png txt +png: $(subst .dot,.png,$(GRAPHS)) +txt: $(subst .dot,.txt,$(GRAPHS)) + @echo + @echo Remember to check and manually fix the mistakes before merging + @echo into the man pages. + @echo + +# for the dot program: +# sudo apt install graphviz +%.png: %.dot + dot -Tpng -O $< + @mv $<.png $@ + +# for the graph-easy program: +# sudo apt install cpanminus +# sudo cpanm Graph::Easy +%.txt: %.dot + graph-easy --from=dot --as_ascii < $< > $@ + +clean: + rm -f $(wildcard *.png) $(wildcard *.txt) + diff --git a/doc/life-cycles/README.md b/doc/life-cycles/README.md new file mode 100644 index 00000000000..d5043965455 --- /dev/null +++ b/doc/life-cycles/README.md @@ -0,0 +1,18 @@ +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](https://www.graphviz.org/) tool. These omit edges and should +be used for guidance only. + +To generate the rendered images, you need to install: +``` sh +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`. diff --git a/doc/life-cycles/cipher.dot b/doc/life-cycles/cipher.dot new file mode 100644 index 00000000000..6f1acb40266 --- /dev/null +++ b/doc/life-cycles/cipher.dot @@ -0,0 +1,72 @@ +digraph cipher { + begin [label=start, color="#deeaee", style="filled"]; + newed [fontcolor="#c94c4c", style="solid"]; + + initialised [fontcolor="#c94c4c"]; + updated [fontcolor="#c94c4c"]; + finaled [fontcolor="#c94c4c"]; + end [label="freed", color="#deeaee", style="filled"]; + + d_initialised [label="initialised\n(decryption)", fontcolor="#c94c4c"]; + d_updated [label="updated\n(decryption)", fontcolor="#c94c4c"]; + e_initialised [label="initialised\n(encryption)", fontcolor="#c94c4c"]; + e_updated [label="updated\n(encryption)", fontcolor="#c94c4c"]; + + begin -> newed [label="EVP_CIPHER_CTX_new"]; + newed -> initialised [label="EVP_CipherInit"]; + initialised -> initialised [label="EVP_CipherInit\n(not required but allowed)", + style=dashed]; + initialised -> updated [label="EVP_CipherUpdate", weight=2]; + updated -> updated [label="EVP_CipherUpdate"]; + updated -> finaled [label="EVP_CipherFinal"]; + finaled -> finaled [label="EVP_CIPHER_CTX_get_params\n(AEAD encryption)", + style=dashed]; + finaled -> end [label="EVP_CIPHER_CTX_free"]; + finaled -> newed [label="EVP_CIPHER_CTX_reset", style=dashed, + color="#034f84", fontcolor="#034f84"]; + updated -> newed [label="EVP_CIPHER_CTX_reset", style=dashed, + color="#034f84", fontcolor="#034f84"]; + newed -> d_initialised [label="EVP_DecryptInit"]; + d_initialised -> d_initialised [label="EVP_DecryptInit\n(not required but allowed)", + style=dashed]; + d_initialised -> d_updated [label="EVP_DecryptUpdate", weight=2]; + d_updated -> d_updated [label="EVP_DecryptUpdate"]; + d_updated -> finaled [label="EVP_DecryptFinal"]; + d_updated -> newed [label="EVP_CIPHER_CTX_reset", style=dashed, + color="#034f84", fontcolor="#034f84"]; + newed -> e_initialised [label="EVP_EncryptInit"]; + e_initialised -> e_initialised [label="EVP_EncryptInit\n(not required but allowed)", + style=dashed]; + e_initialised -> e_updated [label="EVP_EncryptUpdate", weight=2]; + e_updated -> e_updated [label="EVP_EncryptUpdate"]; + e_updated -> finaled [label="EVP_EncryptFinal"]; + e_updated -> newed [label="EVP_CIPHER_CTX_reset", style=dashed, + color="#034f84", fontcolor="#034f84"]; +} + +/* This is a version with a single flavour which is easier to comprehend +digraph cipher { + begin [label=start, color="#deeaee", style="filled"]; + newed [fontcolor="#c94c4c", style="solid"]; + initialised [fontcolor="#c94c4c"]; + updated [fontcolor="#c94c4c"]; + finaled [fontcolor="#c94c4c"]; + end [label="freed", color="#deeaee", style="filled"]; + + begin -> newed [label="EVP_CIPHER_CTX_new"]; + newed -> initialised [label="EVP_CipherInit"]; + initialised -> initialised [label="EVP_CipherInit\n(not required but allowed)", + style=dashed]; + initialised -> updated [label="EVP_CipherUpdate", weight=2]; + updated -> updated [label="EVP_CipherUpdate"]; + updated -> finaled [label="EVP_CipherFinal"]; + finaled -> finaled [label="EVP_CIPHER_CTX_get_params\n(AEAD encryption)", + style=dashed]; + finaled -> end [label="EVP_CIPHER_CTX_free"]; + finaled -> newed [label="EVP_CIPHER_CTX_reset", style=dashed, + color="#034f84", fontcolor="#034f84"]; + updated -> newed [label="EVP_CIPHER_CTX_reset", style=dashed, + color="#034f84", fontcolor="#034f84"]; +} +*/ + diff --git a/doc/life-cycles/digest.dot b/doc/life-cycles/digest.dot new file mode 100644 index 00000000000..989342fd109 --- /dev/null +++ b/doc/life-cycles/digest.dot @@ -0,0 +1,31 @@ +digraph digest { + begin [label=start, color="#deeaee", style="filled"]; + newed [label=newed, fontcolor="#c94c4c", style="solid"]; + initialised [label=initialised, fontcolor="#c94c4c"]; + updated [label=updated, fontcolor="#c94c4c"]; + finaled [label="finaled", fontcolor="#c94c4c"]; + end [label="freed", color="#deeaee", style="filled"]; + + begin -> newed [label="EVP_MD_CTX_new"]; + newed -> initialised [label="EVP_DigestInit"]; + initialised -> updated [label="EVP_DigestUpdate", weight=3]; + updated -> updated [label="EVP_DigestUpdate"]; + updated -> finaled [label="EVP_DigestFinal"]; + updated -> finaled [label="EVP_DigestFinalXOF", + fontcolor="#808080", color="#808080"]; + /* Once this works it should go back in: + finaled -> finaled [taillabel="EVP_DigestFinalXOF", + labeldistance=9, labelangle=345, + labelfontcolor="#808080", color="#808080"]; + */ + finaled -> end [label="EVP_MD_CTX_free"]; + finaled -> newed [label="EVP_MD_CTX_reset", style=dashed, weight=2, + color="#034f84", fontcolor="#034f84"]; + updated -> newed [label="EVP_MD_CTX_reset", style=dashed, + color="#034f84", fontcolor="#034f84"]; + updated -> initialised [label="EVP_DigestInit", weight=0, style=dashed, + color="#034f84", fontcolor="#034f84"]; + finaled -> initialised [label="EVP_DigestInit", style=dashed, + color="#034f84", fontcolor="#034f84"]; +} + diff --git a/doc/life-cycles/kdf.dot b/doc/life-cycles/kdf.dot new file mode 100644 index 00000000000..4729dcdeba7 --- /dev/null +++ b/doc/life-cycles/kdf.dot @@ -0,0 +1,14 @@ +strict digraph kdf { + begin [label=start, color="#deeaee", style="filled"]; + newed [label="newed", fontcolor="#c94c4c", style="solid"]; + deriving [label="deriving", fontcolor="#c94c4c"]; + end [label="freed", color="#deeaee", style="filled"]; + + begin -> newed [label="EVP_KDF_CTX_new"]; + newed -> deriving [label="EVP_KDF_derive"]; + deriving -> deriving [label="EVP_KDF_derive", style=dashed]; + deriving -> end [label="EVP_KDF_CTX_free"]; + deriving -> newed [label="EVP_KDF_CTX_reset", style=dashed, + color="#034f84", fontcolor="#034f84"]; +} + diff --git a/doc/life-cycles/lifecycles.ods b/doc/life-cycles/lifecycles.ods new file mode 100644 index 0000000000000000000000000000000000000000..4f77f281e0cce8ec1cc35c7bde8adf31e93f9201 GIT binary patch literal 16408 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 literal 0 Hc-jL100001 diff --git a/doc/life-cycles/mac.dot b/doc/life-cycles/mac.dot new file mode 100644 index 00000000000..c52701742ca --- /dev/null +++ b/doc/life-cycles/mac.dot @@ -0,0 +1,24 @@ +digraph mac { + begin [label=start, color="#deeaee", style="filled"]; + newed [fontcolor="#c94c4c", style="solid"]; + initialised [fontcolor="#c94c4c"]; + updated [fontcolor="#c94c4c"]; + finaled [fontcolor="#c94c4c"]; + end [label=freed, color="#deeaee", style="filled"]; + + begin -> newed [label="EVP_MAC_CTX_new"]; + newed -> initialised [label="EVP_MAC_init"]; + initialised -> updated [label="EVP_MAC_update"]; + updated -> updated [label="EVP_MAC_update"]; + updated -> finaled [label="EVP_MAC_final"]; + /* Once this works it should go back in: + updated -> finaled [label="EVP_MAC_final_XOF", style=dashed]; + finaled -> finaled [label="EVP_MAC_final_XOF", style=dashed]; + */ + finaled -> end [label="EVP_MAC_CTX_free"]; + updated -> initialised [label="EVP_MAC_init", style=dashed, + color="#034f84", fontcolor="#034f84"]; + finaled -> initialised [label="EVP_MAC_init", style=dashed, + color="#034f84", fontcolor="#034f84"]; +} + diff --git a/doc/life-cycles/pkey.dot b/doc/life-cycles/pkey.dot new file mode 100644 index 00000000000..1662c4ef3dd --- /dev/null +++ b/doc/life-cycles/pkey.dot @@ -0,0 +1,48 @@ +strict digraph pkey { + layout=circo + + begin [label=start, color="#deeaee", style="filled"]; + newed [fontcolor="#c94c4c", style="solid"]; + digestsign [label="digest sign", fontcolor="#AB3910", color="#AB3910"] + verify [fontcolor="#F8CF2C", color="#F8CF2C"] + verifyrecover [label="verify recover", fontcolor="#B19FF9", color="#B19FF9"] + encrypt [fontcolor="#63AAC0", color="#63AAC0"] + decrypt [fontcolor="#425F06", color="#425F06"] + derive [fontcolor="#FEA303", color="#FEA303"] + encapsulate [fontcolor="#D95980", color="#D95980"] + decapsulate [fontcolor="#A16AE8", color="#A16AE8"] + paramgen [label="parameter\ngeneration", fontcolor="#2879C0", color="#2879C0"] + keygen [label="key\ngeneration", fontcolor="#2F7604", color="#2F7604"] + + begin -> newed [label="EVP_PKEY_CTX_new"]; + + newed -> digestsign [label="EVP_PKEY_sign_init", color="#AB3910", fontcolor="#AB3910"]; + digestsign -> digestsign [label="EVP_PKEY_sign", color="#AB3910", fontcolor="#AB3910"]; + + newed -> verify [label="EVP_PKEY_verify_init", fontcolor="#F8CF2C", color="#F8CF2C"]; + verify -> verify [label="EVP_PKEY_verify", fontcolor="#F8CF2C", color="#F8CF2C"]; + + newed -> verifyrecover [label="EVP_PKEY_verify_recover_init", fontcolor="#B19FF9", color="#B19FF9"]; + verifyrecover -> verifyrecover [label="EVP_PKEY_verify_recover", fontcolor="#B19FF9", color="#B19FF9"]; + + newed -> encrypt [label="EVP_PKEY_encrypt_init", fontcolor="#63AAC0", color="#63AAC0"]; + encrypt -> encrypt [label="EVP_PKEY_encrypt", fontcolor="#63AAC0", color="#63AAC0"]; + + newed -> decrypt [label="EVP_PKEY_decrypt_init", fontcolor="#425F06", color="#425F06"]; + decrypt -> decrypt [label="EVP_PKEY_decrypt", fontcolor="#425F06", color="#425F06"]; + + newed -> derive [label="EVP_PKEY_derive_init", fontcolor="#FEA303", color="#FEA303"]; + derive -> derive [label="EVP_PKEY_derive\nEVP_PKEY_derive_set_peer", fontcolor="#FEA303", color="#FEA303"]; + + newed -> encapsulate [label="EVP_PKEY_encapsulate_init", fontcolor="#D95980", color="#D95980"]; + encapsulate -> encapsulate [label="EVP_PKEY_encapsulate", fontcolor="#D95980", color="#D95980"]; + + newed -> decapsulate [label="EVP_PKEY_decapsulate_init", fontcolor="#A16AE8", color="#A16AE8"]; + decapsulate -> decapsulate [label="EVP_PKEY_decapsulate", fontcolor="#A16AE8", color="#A16AE8"]; + + newed -> paramgen [label="EVP_PKEY_paramgen_init", fontcolor="#2879C0", color="#2879C0"]; + paramgen -> paramgen [label="EVP_PKEY_paramgen\nEVP_PKEY_gen", fontcolor="#2879C0", color="#2879C0"]; + + newed -> keygen [label="EVP_PKEY_keygen_init", fontcolor="#2F7604", color="#2F7604"]; + keygen -> keygen [label="EVP_PKEY_keygen\nEVP_PKEY_gen", fontcolor="#2F7604", color="#2F7604"]; +} diff --git a/doc/life-cycles/rand.dot b/doc/life-cycles/rand.dot new file mode 100644 index 00000000000..5aa225f314b --- /dev/null +++ b/doc/life-cycles/rand.dot @@ -0,0 +1,15 @@ +strict digraph rand { + begin [label=start, color="#deeaee", style="filled"]; + newed [fontcolor="#c94c4c", style="solid"]; + instantiated [fontcolor="#c94c4c"]; + uninstantiated [fontcolor="#c94c4c"]; + end [label="freed", color="#deeaee", style="filled"]; + + begin -> newed [label="EVP_RAND_CTX_new"]; + newed -> instantiated [label="EVP_RAND_instantiate"]; + instantiated -> instantiated [label="EVP_RAND_generate"]; + instantiated -> uninstantiated [label="EVP_RAND_uninstantiate"]; + uninstantiated -> end [label="EVP_RAND_CTX_free"]; + uninstantiated -> instantiated [label="EVP_RAND_instantiate", style=dashed, color="#034f84", fontcolor="#034f84"]; +} + -- 2.47.3