code: func New() (*Client, error) {
  	cmd := exec.Command(GetBinary())
  	stdin, err := cmd.StdinPipe()
  	if err != nil {
  		return nil, err
  	}
  
  	stdout, err := cmd.StdoutPipe()
  	if err != nil {
  		return nil, err
  	}
  
  	br := bufio.NewReader(stdout)
  	if err := cmd.Start(); err != nil {
  		return nil, err
  	}
  
  	// check welcome message
  	banner, _, err := br.ReadLine()
  	if err != nil {
  		return nil, err
  	}
  	if !bytes.HasPrefix(banner, []byte("OK")) {
  		return nil, fmt.Errorf("wrong banner: %s", banner)
  	}
  
  	cl := &Client{
  		cmd: cmd,
  		in:  stdin,
  		out: br,
  	}
  
  	return cl, nil
  }
docs: // New creates a new pinentry client