public static CompleteSignature ReadBinaryCompleteSignature(Stream s)
{
var sig = new CompleteSignature();
var l = new List<BlockSignature>();
var reader = new BinaryReader(s);
int numberOfEntries = reader.ReadInt32();
for (var i = 0; i < numberOfEntries; i++)
{
var entry = new BlockSignature();
// 8 bytes. offset
long offset = reader.ReadInt64();
// 4 bytes. size
int size = reader.ReadInt32();
// 4 bytes. Block Number;
int blockNumber = reader.ReadInt32();
// 4 bytes. Rolling Signature.
decimal sig1 = reader.ReadDecimal();
decimal sig2 = reader.ReadDecimal();
RollingSignature rollingSig = new RollingSignature() { Sig1 = sig1, Sig2 = sig2 };
// should be 16 bytes.
byte[] md5 = reader.ReadBytes(16);
entry.BlockNumber = (UInt32)blockNumber;
entry.RollingSig = (RollingSignature)rollingSig;
entry.MD5Signature = md5;
entry.Offset = offset;
entry.Size = (uint)size;
l.Add(entry);
}
sig.SignatureList = l.ToArray<BlockSignature>();
return sig;
}