mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
37 lines
1.3 KiB
C#
37 lines
1.3 KiB
C#
using System.IO;
|
|
using SabreTools.IO.Extensions;
|
|
|
|
namespace SabreTools.FileTypes.Aaru
|
|
{
|
|
/// <summary>
|
|
/// Checksum block, contains a checksum of all user data sectors
|
|
/// (except for optical discs that is 2352 bytes raw sector if available
|
|
/// </summary>
|
|
/// <see href="https://github.com/aaru-dps/Aaru/blob/master/Aaru.Images/AaruFormat/Structs.cs" />
|
|
public class ChecksumHeader
|
|
{
|
|
/// <summary>Identifier, <see cref="BlockType.ChecksumBlock" /></summary>
|
|
public AaruBlockType identifier;
|
|
/// <summary>Length in bytes of the block</summary>
|
|
public uint length;
|
|
/// <summary>How many checksums follow</summary>
|
|
public byte entries;
|
|
|
|
/// <summary>
|
|
/// Read a stream as an ChecksumHeader
|
|
/// </summary>
|
|
/// <param name="stream">ChecksumHeader as a stream</param>
|
|
/// <returns>Populated ChecksumHeader, null on failure</returns>
|
|
public static ChecksumHeader Deserialize(Stream stream)
|
|
{
|
|
var checksumHeader = new ChecksumHeader();
|
|
|
|
checksumHeader.identifier = (AaruBlockType)stream.ReadUInt32();
|
|
checksumHeader.length = stream.ReadUInt32();
|
|
checksumHeader.entries = stream.ReadByteValue();
|
|
|
|
return checksumHeader;
|
|
}
|
|
}
|
|
}
|