code: func (c *Conversation) StartAuthenticate(question string, mutualSecret []byte) ([]ValidMessage, error) {
  	c.smp.ensureSMP()
  
  	tlvs, err := c.smp.state.startAuthenticate(c, question, mutualSecret)
  
  	if err != nil {
  		return nil, err
  	}
  
  	msgs, _, err := c.createSerializedDataMessage(nil, messageFlagIgnoreUnreadable, tlvs)
  	return msgs, err
  }
docs: // StartAuthenticate should be called when the user wants to initiate authentication with a peer.
  // The authentication uses an optional question message and a shared secret. The authentication will proceed
  // until the event handler reports that SMP is complete, that a secret is needed or that SMP has failed.