code: func (w *Wallet) doselect() (*applicationInfo, error) {
  	response, err := transmit(w.card, &commandAPDU{
  		Cla:  claISO7816,
  		Ins:  insSelect,
  		P1:   4,
  		P2:   0,
  		Data: appletAID,
  	})
  	if err != nil {
  		return nil, err
  	}
  
  	appinfo := new(applicationInfo)
  	if _, err := asn1.UnmarshalWithParams(response.Data, appinfo, "tag:4"); err != nil {
  		return nil, err
  	}
  	return appinfo, nil
  }
docs: // doselect is an internal (unlocked) function to send a SELECT APDU to the card.