mirror of
https://github.com/SabreTools/SabreTools.Models.git
synced 2026-09-24 15:47:27 +00:00
44 lines
1.4 KiB
C#
44 lines
1.4 KiB
C#
using System.Runtime.InteropServices;
|
|
|
|
namespace SabreTools.Models.N3DS
|
|
{
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
/// <see href="https://www.3dbrew.org/wiki/NCCH/Extended_Header"/>
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public sealed class NCCHExtendedHeader
|
|
{
|
|
/// <summary>
|
|
/// SCI
|
|
/// </summary>
|
|
public SystemControlInfo? SCI;
|
|
|
|
/// <summary>
|
|
/// ACI
|
|
/// </summary>
|
|
public AccessControlInfo? ACI;
|
|
|
|
/// <summary>
|
|
/// AccessDesc signature (RSA-2048-SHA256)
|
|
/// </summary>
|
|
/// <remarks>0x100 bytes</remarks>
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x100)]
|
|
public byte[]? AccessDescSignature;
|
|
|
|
/// <summary>
|
|
/// NCCH HDR RSA-2048 public key
|
|
/// </summary>
|
|
/// <remarks>0x100 bytes</remarks>
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x100)]
|
|
public byte[]? NCCHHDRPublicKey;
|
|
|
|
/// <summary>
|
|
/// ACI (for limitation of first ACI)
|
|
/// </summary>
|
|
public AccessControlInfo? ACIForLimitations;
|
|
}
|
|
}
|