Beispiel #1
0
 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;
 }
Beispiel #2
0
 private static List<Common.SKUEntry> GetFilterList(IEnumerable<Common.SKUEntry> skuEntryList, SkuCheckData dataEntry)
 {
     var ret = new List<Common.SKUEntry>();
     foreach(var skuEntry in skuEntryList) {
         if(!skuEntry.Type.Equals(dataEntry.Type, StringComparison.CurrentCultureIgnoreCase))
             continue;
         bool isok;
         if(dataEntry.Type.Equals("bootldrsize", StringComparison.CurrentCultureIgnoreCase)) {
             uint tmpval;
             if(uint.TryParse(skuEntry.Data, NumberStyles.HexNumber, CultureInfo.CurrentCulture, out tmpval))
                 isok = tmpval == dataEntry.Size;
             else
                 isok = false;
         }
         else
             isok = dataEntry.Data.Equals(skuEntry.Data, StringComparison.CurrentCultureIgnoreCase);
         if(isok)
             ret.Add(skuEntry);
     }
     return ret;
 }