public static void WriteBinarySizedBasedSignature(SizeBasedCompleteSignature sig, Stream s)
{
var writer = new BinaryWriter(s);
int numberOfSizes = sig.Signatures.Keys.Count;
// 4 bytes. Number of key sizes.
writer.Write(numberOfSizes);
foreach (int keySize in sig.Signatures.Keys)
{
// write key size.
writer.Write(keySize);
var completeSigForKeySize = sig.Signatures[keySize];
int numberOfEntries = completeSigForKeySize.SignatureList.Length;
// number of entries for this key size.
writer.Write(numberOfEntries);
foreach (var i in completeSigForKeySize.SignatureList)
{
// 8 bytes
writer.Write(i.Offset);
// 4 bytes
writer.Write(i.Size);
// 4 bytes.
writer.Write(i.BlockNumber);
// 8 bytes.
writer.Write(i.RollingSig.Sig1);
// 8 bytes.
writer.Write(i.RollingSig.Sig2);
// should be 16 bytes.
foreach (byte b in i.MD5Signature)
{
writer.Write(b);
}
}
}
}