using System.Runtime.InteropServices;
namespace SabreTools.Data.Models.N3DS
{
///
/// The exheader has two sections:
/// - The actual exheader data, containing System Control Info (SCI) and Access Control Info (ACI);
/// - A signed copy of NCCH HDR public key, and exheader ACI. This version of the ACI is used as limitation to the actual ACI.
///
///
[StructLayout(LayoutKind.Sequential)]
public sealed class NCCHExtendedHeader
{
///
/// SCI
///
public SystemControlInfo SCI = new();
///
/// ACI
///
public AccessControlInfo ACI = new();
///
/// AccessDesc signature (RSA-2048-SHA256)
///
/// 0x100 bytes
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x100)]
public byte[] AccessDescSignature = new byte[0x100];
///
/// NCCH HDR RSA-2048 public key
///
/// 0x100 bytes
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x100)]
public byte[] NCCHHDRPublicKey = new byte[0x100];
///
/// ACI (for limitation of first ACI)
///
public AccessControlInfo ACIForLimitations = new();
}
}