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:
committed by
Adam Langley
parent
934c14ffe9
commit
a3c6050446
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user