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
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 @@
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 @@
if err = c.processDHCommit(msg); err != nil {
return
}
+ c.myKeyId = 0
toSend = c.encode(c.generateDHKey())
return
case authStateAwaitingDHKey:
@@ -328,6 +330,7 @@
if err = c.processDHCommit(msg); err != nil {
return
}
+ c.myKeyId = 0
toSend = c.encode(c.generateDHKey())
return
}
@@ -340,6 +343,7 @@
if err = c.processDHCommit(msg); err != nil {
return
}
+ c.myKeyId = 0
toSend = c.encode(c.generateDHKey())
c.authState = authStateAwaitingRevealSig
default: