code: func (c *Conversation) dhCommitMessage() ([]byte, error) {
  	c.initAKE()
  	c.ake.keys.ourKeyID = 0
  
  	// TODO: where does this 40 come from?
  	x, err := c.randMPI(make([]byte, 40))
  	if err != nil {
  		return nil, err
  	}
  
  	c.setSecretExponent(x)
  	wipeBigInt(x)
  
  	if err := c.randomInto(c.ake.r[:]); err != nil {
  		return nil, err
  	}
  
  	// this can't return an error, since ake.r is of a fixed size that is always correct
  	c.ake.encryptedGx, _ = encrypt(c.ake.r[:], gotrax.AppendMPI(nil, c.ake.ourPublicValue))
  
  	return c.serializeDHCommit(c.ake.ourPublicValue), nil
  }
docs: // dhCommitMessage = bob = x
  // Bob ---- DH Commit -----------> Alice