code: func New(key string, ad []byte) (*Standard, error) {
  	if splitKey := strings.SplitN(key, ":", 2); len(splitKey) == 2 {
  		switch splitKey[0] {
  		case "env":
  			key = os.Getenv(splitKey[1])
  		case "file":
  			data, err := ioutil.ReadFile(splitKey[1])
  			if err != nil {
  				return nil, err
  			}
  			key = strings.TrimSpace(string(data))
  		default:
  			return nil, fmt.Errorf("unknown key prefix: %s", splitKey[0])
  		}
  	}
  
  	keyBytes, err := hex.DecodeString(key)
  	if err != nil {
  		return nil, err
  	}
  
  	return &Standard{keyBytes, ad}, nil
  }
docs: // New generates a new standard authentication provider from the key
  // and additional data. The additional data will be used when
  // generating a new token.