aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/double_ratchet.svg1007
1 files changed, 1007 insertions, 0 deletions
diff --git a/docs/double_ratchet.svg b/docs/double_ratchet.svg
new file mode 100644
index 0000000..26ee8c3
--- /dev/null
+++ b/docs/double_ratchet.svg
@@ -0,0 +1,1007 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="892.75781"
+ height="561"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="Axolotl.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path4029"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.98994949"
+ inkscape:cx="630.66152"
+ inkscape:cy="166.30515"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1855"
+ inkscape:window-height="1056"
+ inkscape:window-x="65"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0.5,0.5)">
+ <g
+ id="g2991">
+ <rect
+ ry="8"
+ rx="8"
+ y="0"
+ x="0"
+ height="48"
+ width="256"
+ id="rect2985"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text2987"
+ y="32"
+ x="8"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ style="font-size:24px"
+ y="32"
+ x="8"
+ id="tspan2989"
+ sodipodi:role="line">Initial Shared Secret</tspan></text>
+ </g>
+ <g
+ id="g4701"
+ transform="translate(192,100)">
+ <g
+ id="hkdf_chain_keys">
+ <rect
+ ry="8"
+ rx="8"
+ y="0"
+ x="0"
+ height="80"
+ width="256"
+ id="rect3023"
+ style="fill:none;stroke:#000000" />
+ <g
+ id="g3031">
+ <rect
+ style="fill:none;stroke:#000000"
+ id="rect3019"
+ width="64"
+ height="24"
+ x="0"
+ y="0"
+ rx="8"
+ ry="8" />
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="32"
+ y="18"
+ id="text3025"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3027"
+ x="32"
+ y="18">Secret</tspan></text>
+ </g>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3052"
+ y="48"
+ x="128"
+ style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="48"
+ x="128"
+ id="tspan3054"
+ sodipodi:role="line">HKDF</tspan></text>
+ <g
+ transform="translate(0,56)"
+ id="g3073">
+ <rect
+ ry="8"
+ rx="8"
+ y="0"
+ x="0"
+ height="24"
+ width="128"
+ id="rect3075"
+ style="fill:none;stroke:#000000" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3077"
+ y="18"
+ x="64"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="18"
+ x="64"
+ id="tspan3079"
+ sodipodi:role="line">Root Key</tspan></text>
+ </g>
+ <g
+ id="g3081"
+ transform="translate(128,56)">
+ <rect
+ style="fill:none;stroke:#000000"
+ id="rect3083"
+ width="128"
+ height="24"
+ x="0"
+ y="0"
+ rx="8"
+ ry="8" />
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="64"
+ y="18"
+ id="text3085"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3087"
+ x="64"
+ y="18">Chain Key</tspan></text>
+ </g>
+ <g
+ id="g4802"
+ transform="translate(192,0)">
+ <rect
+ style="fill:none;stroke:#000000"
+ id="rect4804"
+ width="64"
+ height="24"
+ x="0"
+ y="0"
+ rx="8"
+ ry="8" />
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="32"
+ y="18"
+ id="text4806"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4808"
+ x="32"
+ y="18">Info</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
+ d="m 32,-60 0,56"
+ id="path4810"
+ inkscape:connector-curvature="0" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4812"
+ y="-64"
+ x="32"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-64"
+ x="32"
+ id="tspan4814"
+ sodipodi:role="line">&quot;OLM_ROOT&quot;</tspan></text>
+ </g>
+ <g
+ transform="translate(64,0)"
+ id="g4830">
+ <rect
+ ry="8"
+ rx="8"
+ y="0"
+ x="0"
+ height="24"
+ width="64"
+ id="rect4832"
+ style="fill:none;stroke:#000000" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4834"
+ y="18"
+ x="32"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="18"
+ x="32"
+ id="tspan4836"
+ sodipodi:role="line">Salt</tspan></text>
+ <path
+ inkscape:connector-curvature="0"
+ id="path4838"
+ d="m 32,-28 0,24"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" />
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="32"
+ y="-32"
+ id="text4840"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4842"
+ x="32"
+ y="-32">&quot;&quot;</tspan></text>
+ </g>
+ </g>
+ <g
+ id="hmac_chain_key"
+ transform="translate(128,160)">
+ <rect
+ style="fill:none;stroke:#000000"
+ id="rect3147"
+ width="128"
+ height="80"
+ x="0"
+ y="0"
+ rx="8"
+ ry="8" />
+ <g
+ id="g3149">
+ <rect
+ ry="8"
+ rx="8"
+ y="0"
+ x="0"
+ height="24"
+ width="64"
+ id="rect3151"
+ style="fill:none;stroke:#000000" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3153"
+ y="18"
+ x="32"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="18"
+ x="32"
+ id="tspan3155"
+ sodipodi:role="line">Key</tspan></text>
+ </g>
+ <g
+ id="g3157"
+ transform="translate(64,0)">
+ <rect
+ style="fill:none;stroke:#000000"
+ id="rect3159"
+ width="64"
+ height="24"
+ x="0"
+ y="0"
+ rx="8"
+ ry="8" />
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="32"
+ y="18"
+ id="text3161"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3163"
+ x="32"
+ y="18">Data</tspan></text>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="64"
+ y="48"
+ id="text3173"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3175"
+ x="64"
+ y="48">HMAC</tspan></text>
+ <g
+ transform="translate(0,56)"
+ id="g3185">
+ <rect
+ ry="8"
+ rx="8"
+ y="0"
+ x="0"
+ height="24"
+ width="128"
+ id="rect3187"
+ style="fill:none;stroke:#000000" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3189"
+ y="18"
+ x="64"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="18"
+ x="64"
+ id="tspan3191"
+ sodipodi:role="line">Chain Key</tspan></text>
+ </g>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3225"
+ y="-32"
+ x="96"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-32"
+ x="96"
+ id="tspan3227"
+ sodipodi:role="line">&quot;\x02&quot;</tspan></text>
+ <path
+ inkscape:connector-curvature="0"
+ id="path3231"
+ d="m 96,-28 0,24"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
+ d="m 32,-76 0,72"
+ id="path4639"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ transform="translate(320,56)"
+ id="hmac_message_key">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4641"
+ d="m -60,12 56,0"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" />
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="96"
+ y="-32"
+ id="text4633"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4635"
+ x="96"
+ y="-32">&quot;\x01&quot;</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
+ d="m 96,-28 0,24"
+ id="path4630"
+ inkscape:connector-curvature="0" />
+ <rect
+ ry="8"
+ rx="8"
+ y="0"
+ x="0"
+ height="80"
+ width="128"
+ id="rect3195"
+ style="fill:none;stroke:#000000" />
+ <g
+ id="g3197">
+ <rect
+ style="fill:none;stroke:#000000"
+ id="rect3199"
+ width="64"
+ height="24"
+ x="0"
+ y="0"
+ rx="8"
+ ry="8" />
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="32"
+ y="18"
+ id="text3201"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3203"
+ x="32"
+ y="18">Key</tspan></text>
+ </g>
+ <g
+ transform="translate(64,0)"
+ id="g3205">
+ <rect
+ ry="8"
+ rx="8"
+ y="0"
+ x="0"
+ height="24"
+ width="64"
+ id="rect3207"
+ style="fill:none;stroke:#000000" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3209"
+ y="18"
+ x="32"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="18"
+ x="32"
+ id="tspan3211"
+ sodipodi:role="line">Data</tspan></text>
+ </g>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3213"
+ y="48"
+ x="64"
+ style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="48"
+ x="64"
+ id="tspan3215"
+ sodipodi:role="line">HMAC</tspan></text>
+ <g
+ id="g3217"
+ transform="translate(0,56)">
+ <rect
+ style="fill:none;stroke:#000000"
+ id="rect3219"
+ width="128"
+ height="24"
+ x="0"
+ y="0"
+ rx="8"
+ ry="8" />
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="64"
+ y="18"
+ id="text3221"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3223"
+ x="64"
+ y="18">Message Key</tspan></text>
+ </g>
+ </g>
+ <g
+ transform="translate(320,168)"
+ id="hkdf_message_keys">
+ <rect
+ style="fill:none;stroke:#000000"
+ id="rect3091"
+ width="320"
+ height="80"
+ x="0"
+ y="0"
+ rx="8"
+ ry="8" />
+ <g
+ id="g3093">
+ <rect
+ ry="8"
+ rx="8"
+ y="0"
+ x="0"
+ height="24"
+ width="128"
+ id="rect3095"
+ style="fill:none;stroke:#000000" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3097"
+ y="18"
+ x="64"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="18"
+ x="64"
+ id="tspan3099"
+ sodipodi:role="line">Secret</tspan></text>
+ <path
+ inkscape:connector-curvature="0"
+ id="path4644"
+ d="m 64,-28 0,24"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" />
+ </g>
+ <g
+ id="g3101"
+ transform="translate(128,0)">
+ <rect
+ style="fill:none;stroke:#000000"
+ id="rect3103"
+ width="64"
+ height="24"
+ x="0"
+ y="0"
+ rx="8"
+ ry="8" />
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="32"
+ y="18"
+ id="text3105"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3107"
+ x="32"
+ y="18">Salt</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
+ d="m 32,-28 0,24"
+ id="path4660"
+ inkscape:connector-curvature="0" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3225-6"
+ y="-32"
+ x="32"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-32"
+ x="32"
+ id="tspan3227-8"
+ sodipodi:role="line">&quot;&quot;</tspan></text>
+ </g>
+ <g
+ transform="translate(256,0)"
+ id="g3109">
+ <rect
+ ry="8"
+ rx="8"
+ y="0"
+ x="0"
+ height="24"
+ width="64"
+ id="rect3111"
+ style="fill:none;stroke:#000000" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3113"
+ y="18"
+ x="32"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="18"
+ x="32"
+ id="tspan3115"
+ sodipodi:role="line">Info</tspan></text>
+ <path
+ inkscape:connector-curvature="0"
+ id="path4664"
+ d="m 32,-60 0,56"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" />
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="32"
+ y="-64"
+ id="text4693"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4695"
+ x="32"
+ y="-64">&quot;OLM_KEYS&quot;</tspan></text>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="160"
+ y="48"
+ id="text3117"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3119"
+ x="160"
+ y="48">HKDF</tspan></text>
+ <g
+ id="g3121"
+ transform="translate(0,56)">
+ <rect
+ style="fill:none;stroke:#000000"
+ id="rect3123"
+ width="128"
+ height="24"
+ x="0"
+ y="0"
+ rx="8"
+ ry="8" />
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="64"
+ y="18"
+ id="text3125"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3127"
+ x="64"
+ y="18">Cipher Key</tspan></text>
+ </g>
+ <g
+ transform="translate(128,56)"
+ id="g3129">
+ <rect
+ ry="8"
+ rx="8"
+ y="0"
+ x="0"
+ height="24"
+ width="128"
+ id="rect3131"
+ style="fill:none;stroke:#000000" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3133"
+ y="18"
+ x="64"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="18"
+ x="64"
+ id="tspan3135"
+ sodipodi:role="line">Mac Key</tspan></text>
+ </g>
+ <g
+ id="g3137"
+ transform="translate(256,56)">
+ <rect
+ style="fill:none;stroke:#000000"
+ id="rect3139"
+ width="64"
+ height="24"
+ x="0"
+ y="0"
+ rx="8"
+ ry="8" />
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="32"
+ y="18"
+ id="text3141"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3143"
+ x="32"
+ y="18">IV</tspan></text>
+ </g>
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
+ d="m 32,-48 0,44"
+ id="path5157"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ id="g4858"
+ transform="translate(192,480)">
+ <g
+ id="g4860">
+ <rect
+ style="fill:none;stroke:#000000"
+ id="rect4862"
+ width="256"
+ height="80"
+ x="0"
+ y="0"
+ rx="8"
+ ry="8" />
+ <g
+ id="g4864">
+ <rect
+ ry="8"
+ rx="8"
+ y="0"
+ x="0"
+ height="24"
+ width="64"
+ id="rect4866"
+ style="fill:none;stroke:#000000" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4868"
+ y="18"
+ x="32"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="18"
+ x="32"
+ id="tspan4870"
+ sodipodi:role="line">Secret</tspan></text>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="128"
+ y="48"
+ id="text4872"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4874"
+ x="128"
+ y="48">HKDF</tspan></text>
+ <g
+ id="g4876"
+ transform="translate(0,56)">
+ <rect
+ style="fill:none;stroke:#000000"
+ id="rect4878"
+ width="128"
+ height="24"
+ x="0"
+ y="0"
+ rx="8"
+ ry="8" />
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="64"
+ y="18"
+ id="text4880"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4882"
+ x="64"
+ y="18">Root Key</tspan></text>
+ </g>
+ <g
+ transform="translate(128,56)"
+ id="g4884">
+ <rect
+ ry="8"
+ rx="8"
+ y="0"
+ x="0"
+ height="24"
+ width="128"
+ id="rect4886"
+ style="fill:none;stroke:#000000" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4888"
+ y="18"
+ x="64"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="18"
+ x="64"
+ id="tspan4890"
+ sodipodi:role="line">Chain Key</tspan></text>
+ </g>
+ <g
+ transform="translate(192,0)"
+ id="g4892">
+ <rect
+ ry="8"
+ rx="8"
+ y="0"
+ x="0"
+ height="24"
+ width="64"
+ id="rect4894"
+ style="fill:none;stroke:#000000" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4896"
+ y="18"
+ x="32"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="18"
+ x="32"
+ id="tspan4898"
+ sodipodi:role="line">Info</tspan></text>
+ <path
+ inkscape:connector-curvature="0"
+ id="path4900"
+ d="m 32,-60 0,56"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" />
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="32"
+ y="-64"
+ id="text4902"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4904"
+ x="32"
+ y="-64">&quot;OLM_RATCHET&quot;</tspan></text>
+ </g>
+ <g
+ id="g4906"
+ transform="translate(64,0)">
+ <rect
+ style="fill:none;stroke:#000000"
+ id="rect4908"
+ width="64"
+ height="24"
+ x="0"
+ y="0"
+ rx="8"
+ ry="8" />
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="32"
+ y="18"
+ id="text4910"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4912"
+ x="32"
+ y="18">Salt</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
+ d="M 32,-296 32,-4"
+ id="path5070"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ inkscape:connector-curvature="0"
+ id="path5154"
+ d="m 32,-96 0,92"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" />
+ </g>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="20"
+ y="150"
+ id="text5162"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5164"
+ x="20"
+ y="140">Alice's Chain</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="20"
+ y="530"
+ id="text5166"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5168"
+ x="20"
+ y="528.07648">Bob's Chain</tspan></text>
+ </g>
+ <g
+ id="g5074"
+ transform="translate(0.5,300.5)">
+ <rect
+ style="fill:none;stroke:#000000"
+ id="rect5076"
+ width="256"
+ height="80"
+ x="0"
+ y="0"
+ rx="8"
+ ry="8" />
+ <g
+ id="g5078">
+ <rect
+ ry="8"
+ rx="8"
+ y="0"
+ x="0"
+ height="24"
+ width="128"
+ id="rect5080"
+ style="fill:none;stroke:#000000" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text5082"
+ y="18"
+ x="64"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="18"
+ x="64"
+ id="tspan5084"
+ sodipodi:role="line">Bob's Key</tspan></text>
+ </g>
+ <g
+ id="g5086"
+ transform="translate(128,0)">
+ <rect
+ style="fill:none;stroke:#000000"
+ id="rect5088"
+ width="128"
+ height="24"
+ x="0"
+ y="0"
+ rx="8"
+ ry="8" />
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="64"
+ y="18"
+ id="text5090"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5092"
+ x="64"
+ y="18">Alice's Key</tspan></text>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="128"
+ y="48"
+ id="text5094"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5096"
+ x="128"
+ y="48">ECDH</tspan></text>
+ <g
+ transform="translate(0,56)"
+ id="g5098">
+ <rect
+ ry="8"
+ rx="8"
+ y="0"
+ x="0"
+ height="24"
+ width="256"
+ id="rect5100"
+ style="fill:none;stroke:#000000" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text5102"
+ y="18"
+ x="128"
+ style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="18"
+ x="128"
+ id="tspan5104"
+ sodipodi:role="line">Shared Secret</tspan></text>
+ </g>
+ </g>
+</svg>