1 1.1 christos digraph cipher { 2 1.1 christos bgcolor="transparent"; 3 1.1 christos 4 1.1 christos begin [label=start, color="#deeaee", style="filled"]; 5 1.1 christos newed [fontcolor="#c94c4c", style="solid"]; 6 1.1 christos 7 1.1 christos initialised [fontcolor="#c94c4c"]; 8 1.1 christos updated [fontcolor="#c94c4c"]; 9 1.1 christos finaled [fontcolor="#c94c4c"]; 10 1.1 christos end [label="freed", color="#deeaee", style="filled"]; 11 1.1 christos 12 1.1 christos d_initialised [label="initialised\n(decryption)", fontcolor="#c94c4c"]; 13 1.1 christos d_updated [label="updated\n(decryption)", fontcolor="#c94c4c"]; 14 1.1 christos e_initialised [label="initialised\n(encryption)", fontcolor="#c94c4c"]; 15 1.1 christos e_updated [label="updated\n(encryption)", fontcolor="#c94c4c"]; 16 1.1 christos 17 1.1 christos begin -> newed [label="EVP_CIPHER_CTX_new"]; 18 1.1 christos newed -> initialised [label="EVP_CipherInit"]; 19 1.1 christos initialised -> initialised [label="EVP_CipherInit\n(not required but allowed)", 20 1.1 christos style=dashed]; 21 1.1 christos initialised -> updated [label="EVP_CipherUpdate", weight=2]; 22 1.1 christos updated -> updated [label="EVP_CipherUpdate"]; 23 1.1 christos updated -> finaled [label="EVP_CipherFinal"]; 24 1.1 christos finaled -> finaled [label="EVP_CIPHER_CTX_get_params\n(AEAD encryption)", 25 1.1 christos style=dashed]; 26 1.1 christos finaled -> end [label="EVP_CIPHER_CTX_free"]; 27 1.1 christos newed -> d_initialised [label="EVP_DecryptInit"]; 28 1.1 christos d_initialised -> d_initialised [label="EVP_DecryptInit\n(not required but allowed)", 29 1.1 christos style=dashed]; 30 1.1 christos d_initialised -> d_updated [label="EVP_DecryptUpdate", weight=2]; 31 1.1 christos d_updated -> d_updated [label="EVP_DecryptUpdate"]; 32 1.1 christos d_updated -> finaled [label="EVP_DecryptFinal"]; 33 1.1 christos newed -> e_initialised [label="EVP_EncryptInit"]; 34 1.1 christos e_initialised -> e_initialised [label="EVP_EncryptInit\n(not required but allowed)", 35 1.1 christos style=dashed]; 36 1.1 christos e_initialised -> e_updated [label="EVP_EncryptUpdate", weight=2]; 37 1.1 christos e_updated -> e_updated [label="EVP_EncryptUpdate"]; 38 1.1 christos e_updated -> finaled [label="EVP_EncryptFinal"]; 39 1.1 christos most -> newed [label="EVP_CIPHER_CTX_reset", style=dashed, 40 1.1 christos color="#034f84", fontcolor="#034f84"]; 41 1.1 christos most [label="any of the initialised\nupdated or finaled states", style=dashed, 42 1.1 christos color="#034f84", fontcolor="#034f84"]; 43 1.1 christos } 44 1.1 christos 45 1.1 christos /* This is a version with a single flavour which is easier to comprehend 46 1.1 christos digraph cipher { 47 1.1 christos bgcolor="transparent"; 48 1.1 christos 49 1.1 christos begin [label=start, color="#deeaee", style="filled"]; 50 1.1 christos newed [fontcolor="#c94c4c", style="solid"]; 51 1.1 christos initialised [fontcolor="#c94c4c"]; 52 1.1 christos updated [fontcolor="#c94c4c"]; 53 1.1 christos finaled [fontcolor="#c94c4c"]; 54 1.1 christos end [label="freed", color="#deeaee", style="filled"]; 55 1.1 christos 56 1.1 christos begin -> newed [label="EVP_CIPHER_CTX_new"]; 57 1.1 christos newed -> initialised [label="EVP_CipherInit"]; 58 1.1 christos initialised -> initialised [label="EVP_CipherInit\n(not required but allowed)", 59 1.1 christos style=dashed]; 60 1.1 christos initialised -> updated [label="EVP_CipherUpdate", weight=2]; 61 1.1 christos updated -> updated [label="EVP_CipherUpdate"]; 62 1.1 christos updated -> finaled [label="EVP_CipherFinal"]; 63 1.1 christos finaled -> finaled [label="EVP_CIPHER_CTX_get_params\n(AEAD encryption)", 64 1.1 christos style=dashed]; 65 1.1 christos finaled -> end [label="EVP_CIPHER_CTX_free"]; 66 1.1 christos finaled -> newed [label="EVP_CIPHER_CTX_reset", style=dashed, 67 1.1 christos color="#034f84", fontcolor="#034f84"]; 68 1.1 christos updated -> newed [label="EVP_CIPHER_CTX_reset", style=dashed, 69 1.1 christos color="#034f84", fontcolor="#034f84"]; 70 1.1 christos } 71 1.1 christos */ 72 1.1 christos 73