using System.Runtime.InteropServices; namespace SabreTools.Data.Models.N3DS { /// [StructLayout(LayoutKind.Sequential)] public sealed class InitialData { /// /// Card seed keyY (first u64 is Media ID (same as first NCCH partitionId)) /// /// 0x10 bytes [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x10)] public byte[] CardSeedKeyY = new byte[0x10]; /// /// Encrypted card seed (AES-CCM, keyslot 0x3B for retail cards, see CTRCARD_SECSEED) /// /// 0x10 bytes [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x10)] public byte[] EncryptedCardSeed = new byte[0x10]; /// /// Card seed AES-MAC /// /// 0x10 bytes [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x10)] public byte[] CardSeedAESMAC = new byte[0x10]; /// /// Card seed nonce /// /// 0x0C bytes [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x0C)] public byte[] CardSeedNonce = new byte[0x0C]; /// /// Reserved3 /// /// 0xC4 bytes [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0xC4)] public byte[] Reserved = new byte[0xC4]; /// /// Copy of first NCCH header (excluding RSA signature) /// public NCCHHeader BackupHeader = new(); } }