diff --git a/docs/double_ratchet.svg b/docs/double_ratchet.svg
new file mode 100644
index 0000000000000000000000000000000000000000..26ee8c3c1dea1aa0ded2562de5f5a5f2f33dff0f
--- /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>