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