private static List <SKUCheckData> GetSKUCheckData(bool reversed, ref byte[] data, ref Common.TypeData checkdata)
{
var ret = new List <SKUCheckData>();
foreach (var skuDataEntry in checkdata.SKUDataList.Value)
{
var skuCheckDataEntry = new SKUCheckData
{
Type = skuDataEntry.Type
};
var tmpdata = new byte[skuDataEntry.Size];
Buffer.BlockCopy(data, (int)skuDataEntry.Offset, tmpdata, 0, tmpdata.Length);
if (reversed)
{
if (skuDataEntry.Size == 1)
{
if ((skuDataEntry.Offset % 2) == 0)
{
if (data.Length < skuDataEntry.Offset + 1)
{
Logger.WriteLine2("FAILED! Offset is at end of image!");
tmpdata[0] = 0;
}
else
{
tmpdata[0] = data[skuDataEntry.Offset + 1];
}
}
else
{
tmpdata[0] = data[skuDataEntry.Offset - 1];
}
}
else
{
Common.SwapBytes(ref tmpdata);
}
}
if (skuDataEntry.Type.Equals("bootldrsize", StringComparison.CurrentCultureIgnoreCase))
{
if (tmpdata.Length == 2)
{
skuCheckDataEntry.Size = Common.GetLdrSize(ref tmpdata);
}
else
{
throw new ArgumentException("The bootloader argument size should be 2");
}
}
else
{
skuCheckDataEntry.Data = Common.GetDataForTest(tmpdata);
}
ret.Add(skuCheckDataEntry);
}
return(ret);
}