<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://learn.equalit.ie/mw/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://learn.equalit.ie/mw/index.php?action=history&amp;feed=atom&amp;title=MpOTR%2Falgorithm_dump</id>
		<title>MpOTR/algorithm dump - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://learn.equalit.ie/mw/index.php?action=history&amp;feed=atom&amp;title=MpOTR%2Falgorithm_dump"/>
		<link rel="alternate" type="text/html" href="https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;action=history"/>
		<updated>2026-05-10T00:09:33Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.23.1</generator>

	<entry>
		<id>https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=611&amp;oldid=prev</id>
		<title>Vmon: /* Common functions used by other procedures in different stages */</title>
		<link rel="alternate" type="text/html" href="https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=611&amp;oldid=prev"/>
				<updated>2014-07-28T20:40:04Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Common functions used by other procedures in different stages&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 20:40, 28 July 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 141:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 141:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; # standard signature verification&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; # standard signature verification&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=Sign and Send Key Confirmation and Share}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=Sign and Send Key Confirmation and Share}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 157:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 158:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=Update Session Key}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=Update Session Key}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; Input: &amp;lt;math&amp;gt;keyShareList&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; Input: &amp;lt;math&amp;gt;keyShareList&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &lt;/del&gt;&amp;lt;math&amp;gt;i := myId&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160;  &lt;/ins&gt;&amp;lt;math&amp;gt;i := myId&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  '''for each''' &amp;lt;math&amp;gt;{j \in [i,...,i+n-1]}&amp;lt;/math&amp;gt;, '''do'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  '''for each''' &amp;lt;math&amp;gt;{j \in [i,...,i+n-1]}&amp;lt;/math&amp;gt;, '''do'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;lt;math&amp;gt;z_{j,j+1} := z_{j-1,j} \oplus keyShareListe[j+1]&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;lt;math&amp;gt;z_{j,j+1} := z_{j-1,j} \oplus keyShareListe[j+1]&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Vmon</name></author>	</entry>

	<entry>
		<id>https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=610&amp;oldid=prev</id>
		<title>Vmon: /* Common functions used by other procedures in different stages */</title>
		<link rel="alternate" type="text/html" href="https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=610&amp;oldid=prev"/>
				<updated>2014-07-28T20:38:08Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Common functions used by other procedures in different stages&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 20:38, 28 July 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 126:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 126:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  '''if''' &amp;lt;math&amp;gt;keyConfirmationList[participant][myId] \neq Hash(k_{myId,participant} , U_{myId} )&amp;lt;/math&amp;gt;''', then'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  '''if''' &amp;lt;math&amp;gt;keyConfirmationList[participant][myId] \neq Hash(k_{myId,participant} , U_{myId} )&amp;lt;/math&amp;gt;''', then'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160;  &amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Halt&amp;lt;/span&amp;gt;'''()&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160;  &amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Halt&amp;lt;/span&amp;gt;'''()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  ' '''if''' &amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''ED25519VerifySignature&amp;lt;/span&amp;gt;'''(&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;''', then'''{&lt;/del&gt;&amp;lt;math&amp;gt;ephemeralPublicKeyList[particicpant]&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;sessionId &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;|&lt;/del&gt;|keyShares[myId]&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;originAuthSignature&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;} &lt;/del&gt;= Fail&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''else''&lt;/ins&gt;' '''if''' &amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''ED25519VerifySignature&amp;lt;/span&amp;gt;'''(&amp;lt;math&amp;gt;ephemeralPublicKeyList[particicpant]&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;sessionId | keyShares[myId]&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;originAuthSignature&amp;lt;/math&amp;gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;) &lt;/ins&gt;= Fail &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''', then''&lt;/ins&gt;'&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160;  &amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Halt&amp;lt;/span&amp;gt;'''()&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160;  &amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Halt&amp;lt;/span&amp;gt;'''()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=Compute Session Id}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=Compute Session Id}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 144:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 144:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=Sign and Send Key Confirmation and Share}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=Sign and Send Key Confirmation and Share}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; Input: &amp;lt;math&amp;gt;schnorrRandomPointList&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; Input: &amp;lt;math&amp;gt;schnorrRandomPointList&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;'''for each''' &amp;lt;math&amp;gt;participant \in participantList&amp;lt;/math&amp;gt;, '''do'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160;  &lt;/ins&gt;'''for each''' &amp;lt;math&amp;gt;participant \in participantList&amp;lt;/math&amp;gt;, '''do'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  &amp;lt;math&amp;gt;k_{myId, participant} := Hash(x_{myId}LP_{participant} |lp_{myId}y_{participant} | x_{myId}y_{participant})&amp;lt;/math&amp;gt;&amp;#160; # Triple DH&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  &amp;lt;math&amp;gt;k_{myId, participant} := Hash(x_{myId}LP_{participant} |lp_{myId}y_{participant} | x_{myId}y_{participant})&amp;lt;/math&amp;gt;&amp;#160; # Triple DH&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  &amp;lt;math&amp;gt;kc_{myId} := kc_{myId} | Hash(k_{myId,participant}, U_{participant})&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  &amp;lt;math&amp;gt;kc_{myId} := kc_{myId} | Hash(k_{myId,participant}, U_{participant})&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 153:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 153:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  &amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Broadcast&amp;lt;/span&amp;gt;'''(&amp;quot;:3mpCat:3KeyConfirmationAndShare:3&amp;quot;, &amp;lt;math&amp;gt;myId&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;keyShare_{myId}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;originAuthSignature&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;kc_{myId}&amp;lt;/math&amp;gt;)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  &amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Broadcast&amp;lt;/span&amp;gt;'''(&amp;quot;:3mpCat:3KeyConfirmationAndShare:3&amp;quot;, &amp;lt;math&amp;gt;myId&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;keyShare_{myId}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;originAuthSignature&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;kc_{myId}&amp;lt;/math&amp;gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=Update Session Key}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=Update Session Key}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; Input: &amp;lt;math&amp;gt;keyShareList&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; Input: &amp;lt;math&amp;gt;keyShareList&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;&amp;lt;math&amp;gt;i := myId&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &lt;/ins&gt;&amp;lt;math&amp;gt;i := myId&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''for each''' &amp;lt;math&amp;gt;{j \in [i,...,i+n-1]}&amp;lt;/math&amp;gt;, '''do'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160;  &lt;/ins&gt;'''for each''' &amp;lt;math&amp;gt;{j \in [i,...,i+n-1]}&amp;lt;/math&amp;gt;, '''do'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160;  &lt;/del&gt;&amp;lt;math&amp;gt;z_{j,j+1} := z_{j-1,j} \oplus keyShareListe[j+1]&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &lt;/ins&gt;&amp;lt;math&amp;gt;z_{j,j+1} := z_{j-1,j} \oplus keyShareListe[j+1]&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &lt;/del&gt;# recovered &amp;lt;math&amp;gt;z_{i-1,i}&amp;lt;/math&amp;gt; should be equal to its original value&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160;  &lt;/ins&gt;# recovered &amp;lt;math&amp;gt;z_{i-1,i}&amp;lt;/math&amp;gt; should be equal to its original value&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;'''global''' &amp;lt;math&amp;gt;sessionKey := Hash(z_{j,j+1} | j \in [1...n])&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &lt;/ins&gt;'''global''' &amp;lt;math&amp;gt;sessionKey := Hash(z_{j,j+1} | j \in [1...n])&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=Sign Params Update Session Key}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=Sign Params Update Session Key}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; Input: &amp;lt;math&amp;gt;toBeSigned&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;signatureList&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;keyShareList&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; Input: &amp;lt;math&amp;gt;toBeSigned&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;signatureList&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;keyShareList&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;&amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Update Session Key&amp;lt;/span&amp;gt;'''()&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160;  &lt;/ins&gt;&amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Update Session Key&amp;lt;/span&amp;gt;'''()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;&amp;lt;math&amp;gt;toBeSigned := Hash(sessionId, ||Hash(verifierList, ephemeralPublicPointList, keyShareList)))&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160;  &lt;/ins&gt;&amp;lt;math&amp;gt;toBeSigned := Hash(sessionId, ||Hash(verifierList, ephemeralPublicPointList, keyShareList)))&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;&amp;lt;math&amp;gt;signature_{myId} := &amp;lt;/math&amp;gt;&amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Sign Session and Send&amp;lt;/span&amp;gt;'''(&amp;lt;math&amp;gt;toBeSigned&amp;lt;/math&amp;gt;)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160;  &lt;/ins&gt;&amp;lt;math&amp;gt;signature_{myId} := &amp;lt;/math&amp;gt;&amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Sign Session and Send&amp;lt;/span&amp;gt;'''(&amp;lt;math&amp;gt;toBeSigned&amp;lt;/math&amp;gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;&amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Broadcast&amp;lt;/span&amp;gt;'''(&amp;quot;:3mpCat:3SignedSessionParameters:3&amp;quot;,&amp;lt;math&amp;gt;signature_{myId}&amp;lt;/math&amp;gt;)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160;  &lt;/ins&gt;&amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Broadcast&amp;lt;/span&amp;gt;'''(&amp;quot;:3mpCat:3SignedSessionParameters:3&amp;quot;,&amp;lt;math&amp;gt;signature_{myId}&amp;lt;/math&amp;gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 175:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 176:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=ComputeSessionDigest}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=ComputeSessionDigest}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; Input: &amp;lt;math&amp;gt;lastMessage&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; Input: &amp;lt;math&amp;gt;lastMessage&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''for each''' &amp;lt;math&amp;gt;message&amp;lt;/math&amp;gt; in Messages Received from &amp;lt;math&amp;gt;lastDigestedMessage&amp;lt;/math&amp;gt;+1 till &amp;lt;math&amp;gt;lastMessage&amp;lt;/math&amp;gt;, '''do'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160;  &lt;/ins&gt;'''for each''' &amp;lt;math&amp;gt;message&amp;lt;/math&amp;gt; in Messages Received from &amp;lt;math&amp;gt;lastDigestedMessage&amp;lt;/math&amp;gt;+1 till &amp;lt;math&amp;gt;lastMessage&amp;lt;/math&amp;gt;, '''do'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160;  &lt;/del&gt;&amp;lt;math&amp;gt;sesionDigest := Hass(sessionDigest, message)&amp;lt;/math&amp;gt; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &lt;/ins&gt;&amp;lt;math&amp;gt;sesionDigest := Hass(sessionDigest, message)&amp;lt;/math&amp;gt; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160;  &lt;/del&gt;&amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''LRU Cache Store Digest&amp;lt;/span&amp;gt;'''(&amp;lt;math&amp;gt;sessionDigest&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;message&amp;lt;/math&amp;gt;)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &lt;/ins&gt;&amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''LRU Cache Store Digest&amp;lt;/span&amp;gt;'''(&amp;lt;math&amp;gt;sessionDigest&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;message&amp;lt;/math&amp;gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;'''return''' &amp;lt;math&amp;gt;sessionDigest&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;lastMessageId&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160;  &lt;/ins&gt;'''return''' &amp;lt;math&amp;gt;sessionDigest&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;lastMessageId&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Vmon</name></author>	</entry>

	<entry>
		<id>https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=609&amp;oldid=prev</id>
		<title>Vmon: /* Common functions used by other procedures in different stages */</title>
		<link rel="alternate" type="text/html" href="https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=609&amp;oldid=prev"/>
				<updated>2014-07-28T20:30:25Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Common functions used by other procedures in different stages&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 20:30, 28 July 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 117:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 117:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  &amp;lt;math&amp;gt;x_{myId} :=&amp;lt;/math&amp;gt; &amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Ed25519 Scalar&amp;lt;/span&amp;gt;'''(&amp;lt;math&amp;gt;signaturePrivateKey&amp;lt;/math&amp;gt;)) #{This is both Diffie-Hellman secret and ephemeral signature private key}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  &amp;lt;math&amp;gt;x_{myId} :=&amp;lt;/math&amp;gt; &amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Ed25519 Scalar&amp;lt;/span&amp;gt;'''(&amp;lt;math&amp;gt;signaturePrivateKey&amp;lt;/math&amp;gt;)) #{This is both Diffie-Hellman secret and ephemeral signature private key}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  &amp;lt;math&amp;gt;y_{myId} := x_{myId}P&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  &amp;lt;math&amp;gt;y_{myId} := x_{myId}P&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &lt;/del&gt;'''return''' &amp;lt;math&amp;gt;x,y&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160;  &lt;/ins&gt;'''return''' &amp;lt;math&amp;gt;x,y&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Vmon</name></author>	</entry>

	<entry>
		<id>https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=608&amp;oldid=prev</id>
		<title>Vmon: /* Farewell */</title>
		<link rel="alternate" type="text/html" href="https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=608&amp;oldid=prev"/>
				<updated>2014-07-28T20:29:58Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Farewell&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 20:29, 28 July 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 74:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 74:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  &amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Wait On Receive&amp;lt;/span&amp;gt;'''(&amp;quot;:3mpCat:3KeyShare:3&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  &amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Wait On Receive&amp;lt;/span&amp;gt;'''(&amp;quot;:3mpCat:3KeyShare:3&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  &amp;lt;math&amp;gt;keyShareList&amp;lt;/math&amp;gt; := &amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Receive&amp;lt;/span&amp;gt;'''()&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  &amp;lt;math&amp;gt;keyShareList&amp;lt;/math&amp;gt; := &amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Receive&amp;lt;/span&amp;gt;'''()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160;  &lt;/del&gt;&amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Update Session Key&amp;lt;/span&amp;gt;'''(&amp;lt;math&amp;gt;keyShareList&amp;lt;/math&amp;gt;)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160;  &lt;/ins&gt;&amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Update Session Key&amp;lt;/span&amp;gt;'''(&amp;lt;math&amp;gt;keyShareList&amp;lt;/math&amp;gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=Sign and Send Key Shares}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=Sign and Send Key Shares}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Vmon</name></author>	</entry>

	<entry>
		<id>https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=607&amp;oldid=prev</id>
		<title>Vmon: /* Join */</title>
		<link rel="alternate" type="text/html" href="https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=607&amp;oldid=prev"/>
				<updated>2014-07-28T20:28:54Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Join&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 20:28, 28 July 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 38:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 38:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  &amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Update Session Key&amp;lt;/span&amp;gt;'''()&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  &amp;lt;span style=&amp;quot;font-family: serif; font-size: larger; font-variant:small-caps;&amp;quot;&amp;gt;'''Update Session Key&amp;lt;/span&amp;gt;'''()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=Receive Session Digest}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=Receive Session Digest}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Vmon</name></author>	</entry>

	<entry>
		<id>https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=606&amp;oldid=prev</id>
		<title>Vmon: /* Chatroom setup */</title>
		<link rel="alternate" type="text/html" href="https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=606&amp;oldid=prev"/>
				<updated>2014-07-28T20:28:35Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Chatroom setup&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 20:28, 28 July 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  &amp;lt;math&amp;gt;ephemeralPublicPointList := [y_{myId}, y_{other}]&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  &amp;lt;math&amp;gt;ephemeralPublicPointList := [y_{myId}, y_{other}]&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-end}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=Verify Verifier Generate Init Key}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{algorithm-begin|name=Verify Verifier Generate Init Key}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Vmon</name></author>	</entry>

	<entry>
		<id>https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=605&amp;oldid=prev</id>
		<title>Vmon at 20:28, 28 July 2014</title>
		<link rel="alternate" type="text/html" href="https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=605&amp;oldid=prev"/>
				<updated>2014-07-28T20:28:13Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;amp;diff=605&amp;amp;oldid=604&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Vmon</name></author>	</entry>

	<entry>
		<id>https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=604&amp;oldid=prev</id>
		<title>Vmon at 18:56, 28 July 2014</title>
		<link rel="alternate" type="text/html" href="https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=604&amp;oldid=prev"/>
				<updated>2014-07-28T18:56:22Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;amp;diff=604&amp;amp;oldid=603&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Vmon</name></author>	</entry>

	<entry>
		<id>https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=603&amp;oldid=prev</id>
		<title>Vmon at 10:33, 27 July 2014</title>
		<link rel="alternate" type="text/html" href="https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=603&amp;oldid=prev"/>
				<updated>2014-07-27T10:33:05Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;amp;diff=603&amp;amp;oldid=599&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Vmon</name></author>	</entry>

	<entry>
		<id>https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=599&amp;oldid=prev</id>
		<title>Vmon: Created page with &quot;===Example of an Algorithm in Wiki=== {{algorithm-begin|name=LargestNumber}}    Input: A list of numbers ''L''.    Output: The largest number in the list ''L''.     ''largest'...&quot;</title>
		<link rel="alternate" type="text/html" href="https://learn.equalit.ie/mw/index.php?title=MpOTR/algorithm_dump&amp;diff=599&amp;oldid=prev"/>
				<updated>2014-07-23T21:30:52Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;===Example of an Algorithm in Wiki=== {{algorithm-begin|name=LargestNumber}}    Input: A list of numbers &amp;#039;&amp;#039;L&amp;#039;&amp;#039;.    Output: The largest number in the list &amp;#039;&amp;#039;L&amp;#039;&amp;#039;.     &amp;#039;&amp;#039;largest&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;===Example of an Algorithm in Wiki===&lt;br /&gt;
{{algorithm-begin|name=LargestNumber}}&lt;br /&gt;
   Input: A list of numbers ''L''.&lt;br /&gt;
   Output: The largest number in the list ''L''.&lt;br /&gt;
&lt;br /&gt;
   ''largest'' ← null&lt;br /&gt;
   '''for each''' ''item'' '''in''' &amp;quot;L&amp;quot;', '''do'''&lt;br /&gt;
     '''if''' ''item'' &amp;gt; ''largest'', '''then'''&lt;br /&gt;
       ''largest'' ← ''item''&lt;br /&gt;
   '''return''' ''largest''&lt;br /&gt;
{{algorithm-end}}&lt;br /&gt;
&lt;br /&gt;
===mpOTR algorithms===&lt;br /&gt;
====Chatroom setup====&lt;br /&gt;
&amp;lt;!--alg_chat_setup--&amp;gt;&lt;br /&gt;
{{algorithm-begin|name=Chat Initiator Init}}&lt;br /&gt;
 Input: ''newRoomName'', ''participantNick''&lt;br /&gt;
   Global ''myId := 1''&lt;br /&gt;
   Global ''Nick_{myId} := participantNick''&lt;br /&gt;
   Global ''roomName := newRoomName''&lt;br /&gt;
   Global ''x_{myId}, y_{myId} :='' '''Call''' '''Generate Initial Paramters'''(''myId'')&lt;br /&gt;
   Global ''signatureKey_{myId} := (x_{myId},y_{myId})''&lt;br /&gt;
   ''participantList := [Nick_{myId}]''&lt;br /&gt;
   ''ephemeralPublicPointList := [y_{myId}, y_{other}]''&lt;br /&gt;
{{algorithm-end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm-begin|name=Verify Verifier Generate Init Key}}&lt;br /&gt;
 Input: ''schnorrRandomPoint_{other''&lt;br /&gt;
   '''Call''' '''Verify Verifiers'''()&lt;br /&gt;
   Global ''sessionKey := SHA-512(x_{myId}y_{other}, sessionId)''&lt;br /&gt;
   ''toBeSigned := SHA-512(SHA-512(sessionId||SHA-512(y_1, v_1)||SHA-512(y_2,v_2)))''&lt;br /&gt;
   '''Call''' '''Sign Session and Send'''(''toBeSigned'')&lt;br /&gt;
{{algorithm-end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Join====&lt;br /&gt;
&amp;lt;!--alg_join--&amp;gt;&lt;br /&gt;
{{algorithm-begin|name=Join}}&lt;br /&gt;
 Input: ''newRoomName'', ''Nickname_{myId''&lt;br /&gt;
   Global ''myId := participantId''&lt;br /&gt;
   Global ''roomName := newRoomName''&lt;br /&gt;
   ''x_{myId}, y_{myId} := '''''Call''' '''Generate Initial Paramters'''(Participant ID ''myId'')&lt;br /&gt;
   Global ''signatureKey_{myId} := (x_{myId},y_{myId})''&lt;br /&gt;
   '''Call''' '''Broadcast'''(``:3mpCat:3Join:3'', ''myId'', ''Nickname_{myId'')&lt;br /&gt;
   Global ''participantList, ephemeralPublicPointList :='' '''Call''' '''Receive'''()&lt;br /&gt;
   Global ''sessionId := '' '''Call''' '''Compute Session Id'''(''roomName'', ''participantList'', ''ephemeralPublicPointList'')&lt;br /&gt;
   '''Call''' '''Sign and Send Key Confirmation and Shares'''()&lt;br /&gt;
   '''Call''' '''Wait On Receive'''(``:3mpCat:3KeyConfirmationShare:3'')&lt;br /&gt;
   Global ''keyShareList, keyConfirmationList, signatureList :='' '''Call''' '''Receive'''()&lt;br /&gt;
   '''Call''' '''Verify Key Confirmations and Signatures'''(''keyConfirmationList'', ''signatureList'')&lt;br /&gt;
   '''Call''' '''Update Session Key'''()&lt;br /&gt;
{{algorithm-end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm-begin|name=Receive Session Digest}}&lt;br /&gt;
 Input: ''currentSessionHistoryDigest''&lt;br /&gt;
   Global ''sessionDigest := currentSessionHistoryDigest''&lt;br /&gt;
{{algorithm-end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Protocol for other participants already in the chat to accept the newcomer====&lt;br /&gt;
&amp;lt;!--alg_accept--&amp;gt;&lt;br /&gt;
{{algorithm-begin|name=Accept}}&lt;br /&gt;
 Input: newParticipant&lt;br /&gt;
   '''Call''' '''Broadcast'''(``:3mpCat:3Join:3'', ''myId'', ''Nickname_{myId'')&lt;br /&gt;
   '''Call''' '''Wait On Receive'''(``:3mpCat:3Join:3'')&lt;br /&gt;
   Global ''nick_{NewParticipant}'', ''ephemeralPublicPoint_{NewParticipant} := '' '''Call''' '''Receive'''()&lt;br /&gt;
   '''Call''' '''Update Lists'''(''nick_{NewParticipant'')&lt;br /&gt;
   Global ''sessionId := '' '''Call''' '''Compute Session Id'''(''roomName'', ''participantList'', ''ephemeralPublicPointList'')&lt;br /&gt;
   '''Call''' '''Sign and Send Key Confirmation and Shares'''()&lt;br /&gt;
   '''Call''' '''Wait On Receive'''(``:3mpCat:3KeyConfirmationShare:3'')&lt;br /&gt;
   Global ''keyShareList, keyConfirmationList, signatureList :='' '''Call''' '''Receive'''()&lt;br /&gt;
   '''Call''' '''Verify Key Confirmations and Signatures'''(''keyConfirmationList'', ''signatureList'')&lt;br /&gt;
   '''Call''' '''Update Session Key'''()&lt;br /&gt;
   '''Call''' '''Send'''(''sessionDigest'')&lt;br /&gt;
{{algorithm-end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Farewell====&lt;br /&gt;
&amp;lt;!--alg_farewell--&amp;gt;&lt;br /&gt;
{{algorithm-begin|name=Shrink on Leave}}&lt;br /&gt;
 Input: ''leaverId''&lt;br /&gt;
   Remove ''leaverId'' from ''participantIdList''&lt;br /&gt;
   Global ''sessionId :='' '''Call''' '''Compute Session Id'''()&lt;br /&gt;
  \If{''|participantList| &amp;gt; 1''}&lt;br /&gt;
   '''Call''' '''Sign and Send Key Shares'''()&lt;br /&gt;
   '''Call''' '''Wait On Receive'''(``:3mpCat:3KeyShare:3'')&lt;br /&gt;
   ''keyShareList'' := Receive{}&lt;br /&gt;
   '''Call''' '''Update Session Key'''(''keyShareList'')&lt;br /&gt;
{{algorithm-end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm-begin|name=Sign and Send Key Shares}}&lt;br /&gt;
 Input: &lt;br /&gt;
   Global ''z_{myId -1, myId} := SHA-512(k_{myId,myId-1}, sessionId)''&lt;br /&gt;
   Global ''z_{myId, myId+1} := SHA-512(k_{myId,myId+1}, sessionId)''&lt;br /&gt;
   ''keyShare_{myId} := z_{myId -1, myId} \oplus z_{myId, myId+1}''&lt;br /&gt;
   ''originAuthSignature :='' '''Call''' '''ED25519Sign'''(''SignatureKey'', ''sessionId'' || ''z_{myId'')&lt;br /&gt;
   '''Call''' '''Broadcast'''(``:3mpCat:3KeyShare:3'', ''myId'', ''keyShare_{myId'')&lt;br /&gt;
{{algorithm-end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Send====&lt;br /&gt;
&amp;lt;!--alg_send--&amp;gt;&lt;br /&gt;
{{algorithm-begin|name=Send}}&lt;br /&gt;
 Input: Message&lt;br /&gt;
 ''keyShareMessage'' = '''Call''' '''NewKeyShareMessage'''(MetaMessage)&lt;br /&gt;
 ''cryptMessage'' := '''Call''' '''AES CTR Encrypt'''(''sessionKey'',''message | keyShareMessage'')&lt;br /&gt;
 ''originAuthSignature'' := '''Call''' '''ED25519Sign'''(''SignatureKey'', ''sessionId'' || ''cryptMetatMessage'')&lt;br /&gt;
 ''sessionDigest'' := '''Call''' '''Compute Session Digest'''(''lastMessage'')&lt;br /&gt;
 '''Call''' '''Broadcast'''(``:3mpCat:3'', ''sessionId'', ''cryptMessage'', ''sessionDigest'', ''originAuthSignature'',``:3'')&lt;br /&gt;
{{algorithm-end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Recieve====&lt;br /&gt;
&amp;lt;!--alg_recv--&amp;gt;&lt;br /&gt;
{{algorithm-begin|name=Receive}}&lt;br /&gt;
 Input: ''sender'', ''encryptedMessage'', ''originAuthSignature'', ''sessionDigest''&lt;br /&gt;
 ''v := '' '''Call''' '''ED25519VerifySignature'''(''ephemeralPublicKeyList[Sender]'', ''sessionId || encryptedMessage'', ''originAuthSignature'')&lt;br /&gt;
 '''Call''' '''Assert'''(''v'')&lt;br /&gt;
 ''message, keyShareMessage :='' '''Call''' '''AES CTR Decrypt'''(''sessionKey'', ''encryptedMessage'')&lt;br /&gt;
 ''isMetaMessage = '''''Call''' '''UpdateNewKeyStatus'''(''keyShareMessage'')&lt;br /&gt;
 '''Call''' '''Verify Digests'''(''sessionDiges'')&lt;br /&gt;
 '''Return'''{''isMetaMessage, message''}&lt;br /&gt;
{{algorithm-end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\subsection{Common functions}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Common functions used by other procedures in different stages====&lt;br /&gt;
&amp;lt;!--alg_comm--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm-begin|name=Generate Initial Paramters}}&lt;br /&gt;
 Input: ''myId''&lt;br /&gt;
   ''signaturePrivateKey := '' '''Call''' '''RandomBits'''(256)&lt;br /&gt;
   ''x_{myId} :='' '''Call''' '''Ed25519 Scalar'''(''signaturePrivateKey''))&lt;br /&gt;
   ''y_{myId} := x_{myId}P''&lt;br /&gt;
  '''Return''' ''x,y''&lt;br /&gt;
{{algorithm-end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm-begin|name=Verify Key Confirmation and Signatures}}&lt;br /&gt;
 Input: ''signatureList'', ''keyConfirmationList''&lt;br /&gt;
   '''For each''' ''participant \in participantList''}, '''do'''&lt;br /&gt;
     \If{''keyConfirmationList[participant][myId] \neq SHA-512(k_{myId,participant}, U_{myId})''}&lt;br /&gt;
       '''Call''' '''Halt'''()&lt;br /&gt;
      ' \If{'''Call''' '''ED25519VerifySignature'''(''ephemeralPublicKeyList[particicpant]'', ''sessionId ||keyShares[myId]'', ''originAuthSignature'')'&lt;br /&gt;
       '''Call''' '''Halt'''()&lt;br /&gt;
{{algorithm-end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm-begin|name=Compute Session Id}}&lt;br /&gt;
 Input: ''participantList'', ''ephemeralPublicPointList''&lt;br /&gt;
   '''Return''' ''SHA-512(roomeName, zip(participantList, ephemeralPublicPointList))'' # ''zip([a,b],[c,d]):=[(a,c),(b,d)]''&lt;br /&gt;
{{algorithm-end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm-begin|name=Verify Signatures}}&lt;br /&gt;
 Input: ''longPublicList'',''schnorrRandomPointList'', &lt;br /&gt;
{{algorithm-end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm-begin|name=Sign and Send Key Confirmation and Share}}&lt;br /&gt;
 Input: ''schnorrRandomPointList''&lt;br /&gt;
 '''For each''' ''participant \in participantList'', '''do'''&lt;br /&gt;
     ''k_{myId, participant} := H(g^{lp_{myId}}LP_{participant}y_{participant}^{x_{myId}})'' # Triple DH&lt;br /&gt;
     ''kc_{myId} := kc_{myId} | H(k_{myId,participant}, U_{participant})''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   Global ''z_{myId -1, myId} := SHA-512(k_{myId,myId-1}, sessionId)''&lt;br /&gt;
   Global ''z_{myId, myId+1} := SHA-512(k_{myId,myId+1}, sessionId)''&lt;br /&gt;
   ''keyShare_{myId} := z_{myId -1, myId} \oplus z_{myId, myId+1}''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     ''originAuthSignature :='' '''Call''' '''ED25519Sign'''(''SignatureKey'', ''sessionId'' || ''z_{myId'')&lt;br /&gt;
   '''Call''' '''Broadcast'''(``:3mpCat:3KeyConfirmationAndShare:3'', ''myId'', ''keyShare_{myId'')&lt;br /&gt;
{{algorithm-end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm-begin|name=Update Session Key}}&lt;br /&gt;
 Input: ''keyShareList''&lt;br /&gt;
 ''i := myId''&lt;br /&gt;
'''For each''' ''{j \in [i,...,i+n-1]}''}, '''do'''&lt;br /&gt;
   ''z_{j,j+1} := z_{j-1,j} \oplus keyShareListe[j+1]''&lt;br /&gt;
 # recovered ''z_{i-1,i}'' should be equal to its original value&lt;br /&gt;
 Global ''sessionKey := SHA-512(z_{j,j+1} | j \in [1...n])''&lt;br /&gt;
{{algorithm-end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm-begin|name=Sign Params Update Session Key}}&lt;br /&gt;
 Input: ''toBeSigned'', ''signatureList'', ''keyShareList''&lt;br /&gt;
 '''Call''' '''Update Session Key'''()&lt;br /&gt;
 ''toBeSigned := SHA-512(sessionId, ||SHA-512(verifierList, ephemeralPublicPointList, keyShareList)))''&lt;br /&gt;
 ''signature_{myId} := '''''Call''' '''Sign Session and Send'''(''toBeSigned'')&lt;br /&gt;
 '''Call''' '''Broadcast'''(``:3mpCat:3SignedSessionParameters:3'',''signature_{myId'')&lt;br /&gt;
{{algorithm-end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{algorithm-begin|name=ComputeSessionDigest}}&lt;br /&gt;
 Input: ''lastMessage''&lt;br /&gt;
'''For each''' ''message'' in Messages Received from ''lastDigestedMessage''+1 till ''lastMessage''}, '''do'''&lt;br /&gt;
 ''sesionDigest :='' '''Call''' '''SHA-512'''(''sessionDigest'', ''message'')&lt;br /&gt;
 '''Call''' '''LRU Cache Store Digest'''(''sessionDigest'', ''message'')&lt;br /&gt;
 '''Return''' ''sessionDigest'',''lastMessageId''&lt;br /&gt;
{{algorithm-end}}&lt;/div&gt;</summary>
		<author><name>Vmon</name></author>	</entry>

	</feed>