split up etag generation from digesting