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