code: func (w *Wallet) connect() error {
  	w.lock.Lock()
  	defer w.lock.Unlock()
  
  	appinfo, err := w.doselect()
  	if err != nil {
  		return err
  	}
  
  	channel, err := NewSecureChannelSession(w.card, appinfo.PublicKey)
  	if err != nil {
  		return err
  	}
  
  	w.PublicKey = appinfo.PublicKey
  	w.log = log.New("url", w.URL())
  	w.session = &Session{
  		Wallet:  w,
  		Channel: channel,
  	}
  	return nil
  }
docs: // connect connects to the wallet application and establishes a secure channel with it.
  // must be called before any other interaction with the wallet.