CMake: Enable LTO (Link Time Optimizations)
[ezcrypt.git] / doc / key-derivation.svg
blobafc244db52f8613d2408e2356de6437f0586deba
1 <svg width="1024" height="517" viewBox="0 0 270.935 136.79" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg">
2 <defs>
3 <marker style="overflow:visible" id="d" refX="0" refY="0" orient="auto">
4 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
5 </marker>
6 <marker style="overflow:visible" id="u" refX="0" refY="0" orient="auto">
7 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
8 </marker>
9 <marker style="overflow:visible" id="D" refX="0" refY="0" orient="auto">
10 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
11 </marker>
12 <marker style="overflow:visible" id="e" refX="0" refY="0" orient="auto">
13 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
14 </marker>
15 <marker style="overflow:visible" id="E" refX="0" refY="0" orient="auto">
16 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
17 </marker>
18 <marker style="overflow:visible" id="F" refX="0" refY="0" orient="auto">
19 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
20 </marker>
21 <marker style="overflow:visible" id="G" refX="0" refY="0" orient="auto">
22 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
23 </marker>
24 <marker style="overflow:visible" id="H" refX="0" refY="0" orient="auto">
25 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
26 </marker>
27 <marker style="overflow:visible" id="I" refX="0" refY="0" orient="auto">
28 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
29 </marker>
30 <marker style="overflow:visible" id="J" refX="0" refY="0" orient="auto">
31 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
32 </marker>
33 <marker style="overflow:visible" id="K" refX="0" refY="0" orient="auto">
34 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
35 </marker>
36 <marker style="overflow:visible" id="L" refX="0" refY="0" orient="auto">
37 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
38 </marker>
39 <marker style="overflow:visible" id="P" refX="0" refY="0" orient="auto">
40 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
41 </marker>
42 <marker style="overflow:visible" id="O" refX="0" refY="0" orient="auto">
43 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
44 </marker>
45 <marker style="overflow:visible" id="N" refX="0" refY="0" orient="auto">
46 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
47 </marker>
48 <marker style="overflow:visible" id="w" refX="0" refY="0" orient="auto">
49 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
50 </marker>
51 <marker style="overflow:visible" id="y" refX="0" refY="0" orient="auto">
52 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
53 </marker>
54 <marker style="overflow:visible" id="A" refX="0" refY="0" orient="auto">
55 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
56 </marker>
57 <marker style="overflow:visible" id="C" refX="0" refY="0" orient="auto">
58 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
59 </marker>
60 <marker style="overflow:visible" id="j" refX="0" refY="0" orient="auto">
61 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
62 </marker>
63 <marker style="overflow:visible" id="M" refX="0" refY="0" orient="auto">
64 <path transform="matrix(-1.1 0 0 -1.1 -1.1 0)" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:.625;stroke-linejoin:round"/>
65 </marker>
66 <path id="i" d="M26.834 205.315h125.418v75.745H26.834Z"/>
67 <path id="l" d="M26.834 205.315h125.418v75.745H26.834Z"/>
68 <path id="n" d="M26.834 205.315h125.418v75.745H26.834Z"/>
69 <path id="p" d="M26.834 205.315h125.418v75.745H26.834Z"/>
70 <path id="r" d="M26.834 205.315h125.418v75.745H26.834Z"/>
71 <path id="t" d="M26.834 205.315h125.418v75.745H26.834Z"/>
72 <path id="v" d="M26.834 205.315h125.418v75.745H26.834Z"/>
73 <path id="x" d="M26.834 205.315h125.418v75.745H26.834Z"/>
74 <path id="z" d="M26.834 205.315h125.418v75.745H26.834Z"/>
75 <path id="B" d="M26.834 205.315h125.418v75.745H26.834Z"/>
76 <path id="f" d="M220.45 304.443h244.803v26.978H220.45Z"/>
77 <path id="g" d="M220.45 304.443h244.803v26.978H220.45Z"/>
78 <path id="R" d="M220.45 304.443h152.84v43.786H220.45Z"/>
79 <path id="S" d="M220.45 304.443h152.84v43.786H220.45Z"/>
80 <path id="T" d="M220.45 304.443h152.84v43.786H220.45Z"/>
81 <path id="U" d="M220.45 304.443h152.84v43.786H220.45Z"/>
82 <linearGradient id="c">
83 <stop style="stop-color:#d39563;stop-opacity:1" offset="0"/>
84 <stop style="stop-color:#fce9d0;stop-opacity:1" offset="1"/>
85 </linearGradient>
86 <linearGradient id="b">
87 <stop style="stop-color:#d3c563;stop-opacity:1" offset="0"/>
88 <stop style="stop-color:#fcf4d0;stop-opacity:1" offset="1"/>
89 </linearGradient>
90 <linearGradient id="a">
91 <stop style="stop-color:#abdaa9;stop-opacity:1" offset="0"/>
92 <stop style="stop-color:#e5f2d9;stop-opacity:1" offset="1"/>
93 </linearGradient>
94 <linearGradient xlink:href="#a" id="h" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.11328 0 0 .51995 66.84 170.069)" x1="145.304" y1="45.764" x2="145.304" y2="21.464"/>
95 <linearGradient xlink:href="#b" id="k" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.11328 0 0 .52005 106.766 170.1)" x1="145.304" y1="45.764" x2="145.304" y2="21.464"/>
96 <linearGradient xlink:href="#b" id="m" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.11328 0 0 .52003 122.781 100.597)" x1="145.304" y1="45.764" x2="145.304" y2="21.464"/>
97 <linearGradient xlink:href="#b" id="o" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.11328 0 0 .5198 164.881 100.554)" x1="145.304" y1="45.764" x2="145.304" y2="21.464"/>
98 <linearGradient xlink:href="#c" id="q" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.14133 0 0 .51954 -25.277 157.73)" x1="145.304" y1="45.764" x2="145.304" y2="21.464"/>
99 <linearGradient xlink:href="#c" id="s" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.14133 0 0 .52162 -31.957 129.985)" x1="145.304" y1="45.764" x2="145.304" y2="21.464"/>
100 </defs>
101 <rect style="fill:#e9adad;fill-opacity:1;stroke:none;stroke-width:.163947;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" width="270.935" height="28.722" y="108.067" ry="0"/>
102 <rect style="fill:#f3ebc7;fill-opacity:1;stroke:none;stroke-width:.255596;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" width="270.935" height="74.836" y="33.332" ry="0"/>
103 <rect style="fill:#f7f7f7;fill-opacity:1;stroke:none;stroke-width:.177051;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" width="270.935" height="33.497" ry="0"/>
104 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#d)" d="M66.737 51.46h12.26"/>
105 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#e)" d="M66.669 78.367h164.273v15.875h8.194"/>
106 <path style="fill:none;fill-rule:evenodd;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M108.229 11.036c1.836-3.57 5.253-3.21 5.253-3.21h10.817l.743-1.276.743 1.275h10.818s3.417-.358 5.252 3.211"/>
107 <text xml:space="preserve" transform="translate(34.208 -79.379) scale(.26458)" style="font-size:16px;line-height:125%;font-family:sans-serif;letter-spacing:0;word-spacing:0;white-space:pre;shape-inside:url(#f);display:inline;fill:#000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="129.605"><tspan x="311.844" y="319.001"><tspan style="font-style:italic;-inkscape-font-specification:'sans-serif Italic';text-align:center;text-anchor:middle">Plaintext</tspan></tspan></text>
108 <text xml:space="preserve" transform="translate(118.483 -79.379) scale(.26458)" style="font-size:16px;line-height:125%;font-family:sans-serif;letter-spacing:0;word-spacing:0;white-space:pre;shape-inside:url(#g);display:inline;fill:#000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="168.855"><tspan x="307.652" y="319.001"><tspan style="font-style:italic;-inkscape-font-specification:'sans-serif Italic';text-align:center;text-anchor:middle">Encrypted</tspan></tspan></text>
109 <path style="fill:none;fill-rule:evenodd;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M150.967 11.036c1.835-3.57 5.253-3.21 5.253-3.21h52.621l.744-1.276.743 1.275h52.622s3.417-.358 5.252 3.211"/>
110 <g transform="translate(99.527 -159.348)">
111 <rect style="fill:url(#h);fill-opacity:1;stroke:#245800;stroke-width:.0728092;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" width="29.835" height="12.873" x="68.056" y="181.123" ry=".383" transform="skewX(-17.839) scale(1 .95192)"/>
112 <text xml:space="preserve" transform="translate(1.77 119.406) scale(.26458)" style="font-size:16px;line-height:125%;font-family:sans-serif;letter-spacing:0;word-spacing:0;white-space:pre;shape-inside:url(#i);display:inline;fill:#000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="50.2"><tspan x="60.239" y="219.872"><tspan style="text-align:center;text-anchor:middle">AES salt
113 </tspan></tspan><tspan x="66.116" y="239.872"><tspan style="font-style:italic;font-size:13.3333px">256 bits</tspan></tspan></text>
114 </g>
115 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#j)" d="M167.314 25.078v11.65" id="V"/>
116 <g transform="translate(186.524 -159.348)">
117 <rect style="fill:url(#k);fill-opacity:1;stroke:#245800;stroke-width:.072816;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" width="29.835" height="12.875" x="107.982" y="181.157" ry=".383" transform="matrix(1 0 -.3069 .95174 0 0)"/>
118 <text xml:space="preserve" transform="translate(41.581 119.406) scale(.26458)" style="font-size:16px;line-height:125%;font-family:sans-serif;letter-spacing:0;word-spacing:0;white-space:pre;shape-inside:url(#l);display:inline;fill:#000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="50.2"><tspan x="45.215" y="219.872"><tspan style="text-align:center;text-anchor:middle">ChaCha salt
119 </tspan></tspan><tspan x="66.116" y="239.872"><tspan style="font-style:italic;font-size:13.3333px">256 bits</tspan></tspan></text>
120 </g>
121 <g transform="translate(64.635 -93.201)">
122 <rect style="fill:url(#m);fill-opacity:1;stroke:#245800;stroke-width:.0728147;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" width="29.835" height="12.875" x="123.997" y="111.654" ry=".383" transform="matrix(1 0 -.3068 .95178 0 0)"/>
123 <text xml:space="preserve" transform="translate(78.939 53.26) scale(.26458)" style="font-size:16px;line-height:125%;font-family:sans-serif;letter-spacing:0;word-spacing:0;white-space:pre;shape-inside:url(#n);display:inline;fill:#000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="50.2"><tspan x="45.183" y="219.872"><tspan style="text-align:center;text-anchor:middle">Twofish salt
124 </tspan></tspan><tspan x="66.116" y="239.872"><tspan style="font-style:italic;font-size:13.3333px">256 bits</tspan></tspan></text>
125 </g>
126 <g transform="translate(64.633 -93.201)">
127 <rect style="fill:url(#o);fill-opacity:1;stroke:#245800;stroke-width:.072799;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" width="29.835" height="12.869" x="166.097" y="111.605" ry=".383" transform="skewX(-17.789) scale(1 .95219)"/>
128 <text xml:space="preserve" transform="translate(121.205 53.26) scale(.26458)" style="font-size:16px;line-height:125%;font-family:sans-serif;letter-spacing:0;word-spacing:0;white-space:pre;shape-inside:url(#p);display:inline;fill:#000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="50.2"><tspan x="44.719" y="219.872"><tspan style="text-align:center;text-anchor:middle">Serpent salt
129 </tspan></tspan><tspan x="66.116" y="239.872"><tspan style="font-style:italic;font-size:13.3333px">256 bits</tspan></tspan></text>
130 </g>
131 <g transform="translate(106.891 -88.439)">
132 <rect style="fill:url(#q);fill-opacity:1;stroke:#245800;stroke-width:.081293;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" width="37.223" height="12.863" x="-23.76" y="168.776" ry=".383" transform="matrix(1 0 -.306 .95203 0 0)"/>
133 <text xml:space="preserve" transform="translate(-82.677 107.667) scale(.26458)" style="font-size:16px;line-height:125%;font-family:sans-serif;letter-spacing:0;word-spacing:0;white-space:pre;shape-inside:url(#r);display:inline;fill:#000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="50.2"><tspan x="46.711" y="219.872"><tspan style="text-align:center;text-anchor:middle">Passphrase
134 </tspan></tspan><tspan x="48.23" y="239.872"><tspan style="font-style:italic;font-size:13.3333px;-inkscape-font-specification:'sans-serif Italic'">(0-1023 bytes)</tspan></tspan></text>
135 </g>
136 <g transform="translate(106.891 -88.439)">
137 <rect style="fill:url(#s);fill-opacity:1;stroke:#245800;stroke-width:.0814559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" width="37.223" height="12.914" x="-30.44" y="141.075" ry=".385" transform="matrix(1 0 -.3176 .94823 0 0)"/>
138 <text xml:space="preserve" transform="translate(-82.598 80.758) scale(.26458)" style="font-size:16px;line-height:125%;font-family:sans-serif;letter-spacing:0;word-spacing:0;white-space:pre;shape-inside:url(#t);display:inline;fill:#000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="50.2"><tspan x="49.063" y="219.872"><tspan style="text-align:center;text-anchor:middle">Pepper file
139 </tspan></tspan><tspan x="54.343" y="239.872"><tspan style="font-style:italic;font-size:13.3333px;-inkscape-font-specification:'sans-serif Italic'">(any length)</tspan></tspan></text>
140 </g>
141 <g transform="matrix(.679 0 0 .679 111.568 -24.424)">
142 <circle style="fill:#d1efef;fill-opacity:1;stroke:#000;stroke-width:.264583;stroke-opacity:1" cx="19.845" cy="135.152" r="5.143"/>
143 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M19.845 130.087v10.13m5.065-5.065H14.78"/>
144 </g>
145 <g transform="translate(110.066 -104.329)">
146 <rect style="fill:#d1efef;fill-opacity:1;stroke:#000;stroke-width:.224977;stroke-opacity:1" width="24.3" height="11.901" x="-30.537" y="149.833" ry=".263"/>
147 <text xml:space="preserve" style="font-style:normal;font-weight:400;font-size:4.23333px;line-height:1.25;font-family:sans-serif;fill:#000;fill-opacity:1;stroke:none;stroke-width:.264583" x="-28.927" y="157.325"><tspan style="font-size:4.23333px;stroke-width:.264583" x="-28.927" y="157.325">SHA2-256</tspan></text>
148 </g>
149 <g transform="translate(106.891 -39.295)">
150 <rect style="fill:#d1efef;fill-opacity:1;stroke:#000;stroke-width:.224977;stroke-opacity:1" width="24.3" height="11.901" x="6.002" y="127.583" ry=".263"/>
151 <text xml:space="preserve" style="font-style:normal;font-weight:400;font-size:4.23333px;line-height:1.25;font-family:sans-serif;fill:#000;fill-opacity:1;stroke:none;stroke-width:.264583" x="11.857" y="135.076"><tspan style="font-style:normal;font-variant:normal;font-weight:700;font-stretch:normal;font-size:4.23333px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:.264583" x="11.857" y="135.076">ZKDF</tspan></text>
152 </g>
153 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#u)" d="M125.047 70.92v16.87"/>
154 <text xml:space="preserve" transform="translate(101.297 62.921) scale(.26458)" style="font-size:16px;line-height:125%;font-family:sans-serif;letter-spacing:0;word-spacing:0;white-space:pre;shape-inside:url(#v);display:inline;fill:#000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="50.2"><tspan x="58.975" y="219.872"><tspan style="font-weight:700;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle">AES key
155 </tspan></tspan><tspan x="64.956" y="239.872"><tspan style="font-style:italic;font-weight:700;font-size:13.3333px;-inkscape-font-specification:'sans-serif Bold Italic'">256 bits</tspan></tspan></text>
156 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#w)" d="M125.048 100.162v15.283"/>
157 <text xml:space="preserve" transform="translate(228.027 62.921) scale(.26458)" style="font-size:16px;line-height:125%;font-family:sans-serif;letter-spacing:0;word-spacing:0;white-space:pre;shape-inside:url(#x);display:inline;fill:#000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="50.2"><tspan x="43.015" y="219.872"><tspan style="font-weight:700;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle">ChaCha key
158 </tspan></tspan><tspan x="64.956" y="239.872"><tspan style="font-style:italic;font-weight:700;font-size:13.3333px;-inkscape-font-specification:'sans-serif Bold Italic'">256 bits</tspan></tspan></text>
159 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#y)" d="M167.341 100.162v15.283"/>
160 <text xml:space="preserve" transform="translate(143.575 62.921) scale(.26458)" style="font-size:16px;line-height:125%;font-family:sans-serif;letter-spacing:0;word-spacing:0;white-space:pre;shape-inside:url(#z);display:inline;fill:#000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="50.2"><tspan x="42.343" y="219.872"><tspan style="font-weight:700;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle">Twofish key
161 </tspan></tspan><tspan x="64.956" y="239.872"><tspan style="font-style:italic;font-weight:700;font-size:13.3333px;-inkscape-font-specification:'sans-serif Bold Italic'">256 bits</tspan></tspan></text>
162 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#A)" d="M209.635 100.162v15.283"/>
163 <text xml:space="preserve" transform="translate(185.786 62.921) scale(.26458)" style="font-size:16px;line-height:125%;font-family:sans-serif;letter-spacing:0;word-spacing:0;white-space:pre;shape-inside:url(#B);display:inline;fill:#000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="50.2"><tspan x="42.095" y="219.872"><tspan style="font-weight:700;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle">Serpent key
164 </tspan></tspan><tspan x="64.956" y="239.872"><tspan style="font-style:italic;font-weight:700;font-size:13.3333px;-inkscape-font-specification:'sans-serif Bold Italic'">256 bits</tspan></tspan></text>
165 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#C)" d="M251.929 100.162v15.283"/>
166 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#D)" d="M125.047 25.22v38.108"/>
167 <g transform="matrix(.679 0 0 .679 153.834 -24.424)">
168 <circle style="fill:#d1efef;fill-opacity:1;stroke:#000;stroke-width:.264583;stroke-opacity:1" cx="19.845" cy="135.152" r="5.143"/>
169 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M19.845 130.087v10.13m5.065-5.065H14.78"/>
170 </g>
171 <g transform="translate(149.157 -39.295)">
172 <rect style="fill:#d1efef;fill-opacity:1;stroke:#000;stroke-width:.224977;stroke-opacity:1" width="24.3" height="11.901" x="6.002" y="127.583" ry=".263"/>
173 <text xml:space="preserve" style="font-style:normal;font-weight:400;font-size:4.23333px;line-height:1.25;font-family:sans-serif;fill:#000;fill-opacity:1;stroke:none;stroke-width:.264583" x="11.857" y="135.076"><tspan style="font-style:normal;font-variant:normal;font-weight:700;font-stretch:normal;font-size:4.23333px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:.264583" x="11.857" y="135.076">ZKDF</tspan></text>
174 </g>
175 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#E)" d="M167.314 70.92v16.87"/>
176 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#F)" d="M167.314 46.387v16.941" id="W"/>
177 <g transform="matrix(.679 0 0 .679 196.1 -24.424)">
178 <circle style="fill:#d1efef;fill-opacity:1;stroke:#000;stroke-width:.264583;stroke-opacity:1" cx="19.845" cy="135.152" r="5.143"/>
179 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M19.845 130.087v10.13m5.065-5.065H14.78"/>
180 </g>
181 <g transform="translate(191.423 -39.295)">
182 <rect style="fill:#d1efef;fill-opacity:1;stroke:#000;stroke-width:.224977;stroke-opacity:1" width="24.3" height="11.901" x="6.002" y="127.583" ry=".263"/>
183 <text xml:space="preserve" style="font-style:normal;font-weight:400;font-size:4.23333px;line-height:1.25;font-family:sans-serif;fill:#000;fill-opacity:1;stroke:none;stroke-width:.264583" x="11.857" y="135.076"><tspan style="font-style:normal;font-variant:normal;font-weight:700;font-stretch:normal;font-size:4.23333px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:.264583" x="11.857" y="135.076">ZKDF</tspan></text>
184 </g>
185 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#G)" d="M209.58 70.92v16.87"/>
186 <g transform="matrix(.679 0 0 .679 238.367 -24.424)">
187 <circle style="fill:#d1efef;fill-opacity:1;stroke:#000;stroke-width:.264583;stroke-opacity:1" cx="19.845" cy="135.152" r="5.143"/>
188 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M19.845 130.087v10.13m5.065-5.065H14.78"/>
189 </g>
190 <g transform="translate(233.689 -39.295)">
191 <rect style="fill:#d1efef;fill-opacity:1;stroke:#000;stroke-width:.224977;stroke-opacity:1" width="24.3" height="11.901" x="6.002" y="127.583" ry=".263"/>
192 <text xml:space="preserve" style="font-style:normal;font-weight:400;font-size:4.23333px;line-height:1.25;font-family:sans-serif;fill:#000;fill-opacity:1;stroke:none;stroke-width:.264583" x="11.857" y="135.076"><tspan style="font-style:normal;font-variant:normal;font-weight:700;font-stretch:normal;font-size:4.23333px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:.264583" x="11.857" y="135.076">ZKDF</tspan></text>
193 </g>
194 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#H)" d="M251.846 70.92v16.87"/>
195 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#I)" d="M104.152 78.367v15.875h8.193"/>
196 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#J)" d="M146.398 78.367v15.875h8.194"/>
197 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#K)" d="M188.6 78.367v15.875h8.194"/>
198 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#L)" d="M103.885 51.465h134.718V67.34h9.252"/>
199 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#M)" d="M125.125 104.969h16.184V41.855h16.132" id="Z"/>
200 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#N)" d="M111.813 51.465V67.34h9.252"/>
201 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#O)" d="M154.059 51.465V67.34h9.252"/>
202 <path style="fill:none;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#P)" d="M196.261 51.465V67.34h9.252"/>
203 <path id="Q" style="fill:none;fill-rule:evenodd;stroke:#000;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M24.236 30.716c-3.57-1.835-3.21-5.252-3.21-5.252v-5.526l-1.276-.744 1.275-.743v-5.526s-.359-3.417 3.21-5.252"/>
204 <use xlink:href="#Q" transform="translate(0 32.26)" width="100%" height="100%"/>
205 <use xlink:href="#Q" transform="translate(0 59.168)" width="100%" height="100%"/>
206 <text xml:space="preserve" transform="rotate(-90 10.788 87.141) scale(.26458)" style="font-size:16px;line-height:125%;font-family:sans-serif;letter-spacing:0;word-spacing:0;white-space:pre;shape-inside:url(#R);display:inline;fill:#000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="168.855"><tspan x="275.317" y="319.001"><tspan style="font-style:italic;-inkscape-font-specification:'sans-serif Italic';text-align:center;text-anchor:middle">Public
207 </tspan></tspan><tspan x="256.516" y="339.001"><tspan style="font-style:italic;font-size:13.3333px;-inkscape-font-specification:'sans-serif Italic'">(stored in file)</tspan></tspan></text>
208 <text xml:space="preserve" transform="rotate(-90 26.897 103.325) scale(.26458)" style="font-size:16px;line-height:125%;font-family:sans-serif;letter-spacing:0;word-spacing:0;white-space:pre;shape-inside:url(#S);display:inline;fill:#000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="168.855"><tspan x="275.541" y="319.001"><tspan style="font-style:italic;-inkscape-font-specification:'sans-serif Italic';text-align:center;text-anchor:middle">Secret
209 </tspan></tspan><tspan x="268.336" y="339.001"><tspan style="font-style:italic;font-size:13.3333px;-inkscape-font-specification:'sans-serif Italic'">(optional)</tspan></tspan></text>
210 <text xml:space="preserve" transform="rotate(-90 40.411 116.838) scale(.26458)" style="font-size:16px;line-height:125%;font-family:sans-serif;letter-spacing:0;word-spacing:0;white-space:pre;shape-inside:url(#T);display:inline;fill:#000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="168.855"><tspan x="275.541" y="319.001"><tspan style="font-style:italic;-inkscape-font-specification:'sans-serif Italic';text-align:center;text-anchor:middle">Secret</tspan></tspan></text>
211 <text xml:space="preserve" transform="rotate(-90 62.255 138.683) scale(.26458)" style="font-size:16px;line-height:125%;font-family:sans-serif;letter-spacing:0;word-spacing:0;white-space:pre;shape-inside:url(#U);display:inline;fill:#000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="168.855"><tspan x="259.093" y="319.001"><tspan style="font-style:italic;-inkscape-font-specification:'sans-serif Italic';text-align:center;text-anchor:middle">Encryption
212 </tspan></tspan><tspan x="282.045" y="339.001"><tspan style="font-style:italic;-inkscape-font-specification:'sans-serif Italic';text-align:center;text-anchor:middle">keys</tspan></tspan></text>
213 <use xlink:href="#Q" transform="translate(0 102.858)" width="100%" height="100%"/>
214 <rect style="fill:#d1efef;fill-opacity:1;stroke:#000;stroke-width:.224977;stroke-opacity:1" width="19.006" height="9.277" x="157.816" y="37.174" ry=".263"/>
215 <text xml:space="preserve" style="font-style:normal;font-weight:400;font-size:3.52777px;line-height:1.25;font-family:sans-serif;fill:#000;fill-opacity:1;stroke:none;stroke-width:.264583" x="160.194" y="42.783"><tspan style="font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:3.52777px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:.264583" x="160.194" y="42.783">Decrypt</tspan></text>
216 <g transform="translate(42.266)">
217 <rect style="fill:#d1efef;fill-opacity:1;stroke:#000;stroke-width:.224977;stroke-opacity:1" width="19.006" height="9.277" x="157.816" y="37.174" ry=".263"/>
218 <text xml:space="preserve" style="font-style:normal;font-weight:400;font-size:3.52777px;line-height:1.25;font-family:sans-serif;fill:#000;fill-opacity:1;stroke:none;stroke-width:.264583" x="160.194" y="42.783"><tspan style="font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:3.52777px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:.264583" x="160.194" y="42.783">Decrypt</tspan></text>
219 </g>
220 <g transform="translate(84.532)">
221 <rect style="fill:#d1efef;fill-opacity:1;stroke:#000;stroke-width:.224977;stroke-opacity:1" width="19.006" height="9.277" x="157.816" y="37.174" ry=".263"/>
222 <text xml:space="preserve" style="font-style:normal;font-weight:400;font-size:3.52777px;line-height:1.25;font-family:sans-serif;fill:#000;fill-opacity:1;stroke:none;stroke-width:.264583" x="160.194" y="42.783"><tspan style="font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:3.52777px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:.264583" x="160.194" y="42.783">Decrypt</tspan></text>
223 </g>
224 <use x="0" y="0" xlink:href="#V" id="X" transform="translate(42.266)" width="100%" height="100%"/>
225 <use x="0" y="0" xlink:href="#W" id="Y" transform="translate(42.266)" width="100%" height="100%"/>
226 <use xlink:href="#X" transform="translate(42.266)" width="100%" height="100%"/>
227 <use xlink:href="#Y" transform="translate(42.266)" width="100%" height="100%"/>
228 <use x="0" y="0" xlink:href="#Z" id="aa" transform="translate(42.283)" width="100%" height="100%"/>
229 <use xlink:href="#aa" transform="translate(42.257)" width="100%" height="100%"/>
230 </svg>