1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
digraph cipher {
bgcolor="transparent";
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"];
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"];
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"];
most -> newed [label="EVP_CIPHER_CTX_reset", style=dashed,
color="#034f84", fontcolor="#034f84"];
most [label="any of the initialised\nupdated or finaled states", style=dashed,
color="#034f84", fontcolor="#034f84"];
}
/* This is a version with a single flavour which is easier to comprehend
digraph cipher {
bgcolor="transparent";
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"];
}
*/
|