public static async Task<byte[]> Compute(IUVStream<ArraySegment<byte>> stream)
{
var hashAlgorithm = SHA1Managed.Create();
ArraySegment<byte>? data;
while ((data = await stream.ReadStructAsync()).HasValue) {
hashAlgorithm.TransformBlock(data.Value);
}
hashAlgorithm.TransformFinalBlock();
return hashAlgorithm.Hash;
}