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