1 | digraph 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
|
---|
46 | digraph 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 |
|
---|