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