diff --git a/src/common/stanza_session.py b/src/common/stanza_session.py index b1848091a..08e867163 100644 --- a/src/common/stanza_session.py +++ b/src/common/stanza_session.py @@ -512,7 +512,6 @@ class EncryptedStanzaSession(StanzaSession): self.negotiated = negotiated -# 2. Return a error to Bob unless: 1 < d < p - 1 self.form_b = ''.join(map(lambda el: xmpp.c14n.c14n(el), form.getChildren())) accept = xmpp.Message() @@ -532,6 +531,9 @@ class EncryptedStanzaSession(StanzaSession): e = self.es[mod_p] self.d = self.decode_mpi(base64.b64decode(form['dhkeys'])) + + if (not 1 < self.d < (p - 1)): + raise exceptions.NegotiationError, "invalid DH value 'd'" self.k = self.sha256(self.encode_mpi(self.powmod(self.d, x, p)))