code: func (c *Conversation) processDHKey(msg []byte) (isSame bool, err error) {
  	dhKeyMsg := dhKey{}
  	err = dhKeyMsg.deserialize(msg)
  	if err != nil {
  		return false, err
  	}
  
  	if !isGroupElement(dhKeyMsg.gy) {
  		return false, newOtrError("DH value out of range")
  	}
  
  	//If receive same public key twice, just retransmit the previous Reveal Signature
  	if c.ake.theirPublicValue != nil {
  		isSame = eq(c.ake.theirPublicValue, dhKeyMsg.gy)
  		return
  	}
  
  	c.ake.theirPublicValue = dhKeyMsg.gy
  	return
  }
docs: // processDHKey = bob = x
  // Alice -- DH Key --------------> Bob