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
This commit is contained in:
Frithjof Schulze
2013-09-22 15:38:36 -04:00
committed by Adam Langley
parent 934c14ffe9
commit a3c6050446
+4
View File
@@ -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: