/// <summary> /// Parse the information of segment. /// </summary> /// <param name="dwHashAlgo">The hash algorithm to use.</param> /// <param name="cSegments">The number of segments which intersect the content range and hence are contained /// in the Content Information structure.</param> /// <param name="data">The byte data.</param> /// <param name="index">The start index.</param> /// <returns>Returns the segment infromation.</returns> private static SegmentDescription[] ParseSements( dwHashAlgo_Values dwHashAlgo, uint cSegments, byte[] data, ref int index) { SegmentDescription[] retSegments = new SegmentDescription[cSegments]; int dataSize = GetDataSizeByHashAlgo(dwHashAlgo); for (int i = 0; i < retSegments.Length; i++) { retSegments[i].ullOffsetInContent = GetUInt64(data, ref index); retSegments[i].cbSegment = GetUInt32(data, ref index); retSegments[i].cbBlockSize = GetUInt32(data, ref index); byte[] tempSegmentHashOfData = GetBytes(data, ref index, dataSize); retSegments[i].SegmentHashOfData = tempSegmentHashOfData; byte[] tempSegmentSecret = GetBytes(data, ref index, dataSize); retSegments[i].SegmentSecret = tempSegmentSecret; } return(retSegments); }
/// <summary> /// Parse the information of segment. /// </summary> /// <param name="dwHashAlgo">The hash algorithm to use.</param> /// <param name="cSegments">The number of segments which intersect the content range and hence are contained /// in the Content Information structure.</param> /// <param name="data">The byte data.</param> /// <param name="index">The start index.</param> /// <returns>Returns the segment infromation.</returns> private static SegmentDescription[] ParseSements( dwHashAlgo_Values dwHashAlgo, uint cSegments, byte[] data, ref int index) { SegmentDescription[] retSegments = new SegmentDescription[cSegments]; int dataSize = GetDataSizeByHashAlgo(dwHashAlgo); for (int i = 0; i < retSegments.Length; i++) { retSegments[i].ullOffsetInContent = GetUInt64(data, ref index); retSegments[i].cbSegment = GetUInt32(data, ref index); retSegments[i].cbBlockSize = GetUInt32(data, ref index); byte[] tempSegmentHashOfData = GetBytes(data, ref index, dataSize); retSegments[i].SegmentHashOfData = tempSegmentHashOfData; byte[] tempSegmentSecret = GetBytes(data, ref index, dataSize); retSegments[i].SegmentSecret = tempSegmentSecret; } return retSegments; }