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