public static void ReadWholeArray(Stream stream, byte[] data)
{
int offset = 0;
int remaining = data.Length;
while (remaining > 0)
{
int read = stream.Read(data, offset, remaining);
if (read <= 0)
throw new EndOfStreamException
(String.Format(CultureInfo.CurrentCulture, "End of stream reached with {0} bytes left to read", remaining));
remaining -= read;
offset += read;
}
}