From a3c6050446ec077a5f411deb35d89b420f8d5fd7 Mon Sep 17 00:00:00 2001 From: Frithjof Schulze Date: Sun, 22 Sep 2013 15:38:36 -0400 Subject: [PATCH] go.crypto/otr: Reset Conversation.myKeyId for each AKE. This shouldn't be necessary according to the OTRv2 spec, but is expected by at least one other client. CC=golang-dev https://golang.org/cl/13823043 --- otr/otr.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/otr/otr.go b/otr/otr.go index 30b39fb..d98b323 100644 --- a/otr/otr.go +++ b/otr/otr.go @@ -277,6 +277,7 @@ func (c *Conversation) Receive(in []byte) (out []byte, encrypted bool, change Se in = in[len(msgPrefix) : len(in)-1] } else if version := isQuery(in); version > 0 { c.authState = authStateAwaitingDHKey + c.myKeyId = 0 toSend = c.encode(c.generateDHCommit()) return } else { @@ -310,6 +311,7 @@ func (c *Conversation) Receive(in []byte) (out []byte, encrypted bool, change Se if err = c.processDHCommit(msg); err != nil { return } + c.myKeyId = 0 toSend = c.encode(c.generateDHKey()) return case authStateAwaitingDHKey: @@ -328,6 +330,7 @@ func (c *Conversation) Receive(in []byte) (out []byte, encrypted bool, change Se if err = c.processDHCommit(msg); err != nil { return } + c.myKeyId = 0 toSend = c.encode(c.generateDHKey()) return } @@ -340,6 +343,7 @@ func (c *Conversation) Receive(in []byte) (out []byte, encrypted bool, change Se if err = c.processDHCommit(msg); err != nil { return } + c.myKeyId = 0 toSend = c.encode(c.generateDHKey()) c.authState = authStateAwaitingRevealSig default: