code: func NewClient(keyRing, keyId, challengeIP string) (*Client, error) {
  	signer, err := secretKeyEntity(keyRing, keyId)
  	if err != nil {
  		return nil, fmt.Errorf("could not get signer %v from keyRing %v: %v", keyId, keyRing, err)
  	}
  	cl := &Client{
  		keyRing:     keyRing,
  		keyId:       keyId,
  		signer:      signer,
  		challengeIP: challengeIP,
  		errc:        make(chan error, 1),
  	}
  	handler := &clientHandler{
  		cl: cl,
  	}
  	cl.handler = handler
  	return cl, nil
  }
docs: // NewClient returns a Client. keyRing and keyId are the GPG key ring and key ID
  // used to fulfill the challenge. challengeIP is the address that client proves
  // that it owns, by answering the challenge the server sends at this address.