code: func (c *Client) uploadPublicKey(ctx context.Context) error {
  	sigRef := c.SignerPublicKeyBlobref()
  	if !sigRef.Valid() {
  		return nil
  	}
  	var err error
  	if _, keyUploaded := c.haveCache.StatBlobCache(sigRef); !keyUploaded {
  		_, err = c.uploadString(ctx, c.publicKeyArmored, false)
  	}
  	return err
  }
docs: // uploadPublicKey uploads the public key (if one is defined), so
  // subsequent (likely synchronous) indexing of uploaded signed blobs
  // will have access to the public key to verify it. In the normal
  // case, the stat cache prevents this from doing anything anyway.