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(); } }