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