namespace SabreTools.Data.Models.XboxExecutable { /// /// XBox Executable certificate /// /// /// public class Certificate { /// /// Number of bytes that should be reserved for this certificate. /// public uint SizeOfCertificate { get; set; } /// /// Time and Date when this certificate was created. Standard windows format. /// public uint TimeDate { get; set; } /// /// Title ID for this application. This field doesn't appear to matter with /// unsigned code, so it can be set to zero. /// public uint TitleID { get; set; } /// /// Title name for this application (i.e. L"The Simpsons Road Rage"). /// This buffer contains enough room for 40 Unicode characters. /// public byte[] TitleName { get; set; } = new byte[0x50]; /// /// Alternate Title IDs (16 4-byte DWORDs) for this certificate. These do not appear /// to matter with unsigned code (or signed code, for that matter), so they can all /// be set to zero. /// public uint[] AlternativeTitleIDs { get; set; } = new uint[16]; /// /// Allowed media types for this .XBE. /// public AllowedMediaTypes AllowedMediaTypes { get; set; } /// /// Game region for this .XBE. /// public GameRegion GameRegion { get; set; } /// /// Game ratings for this .XBE. It is typically safe to set this to 0xFFFFFFFF. /// public uint GameRatings { get; set; } /// /// Disk Number. Typically zero. /// public uint DiskNumber { get; set; } /// /// Certificate Version. /// public uint Version { get; set; } /// /// 16-byte LAN Key. An unsigned .XBE can just zero these out. /// public byte[] LANKey { get; set; } = new byte[16]; /// /// 16-byte Signature Key. An unsigned .XBE can just zero these out. /// public byte[] SignatureKey { get; set; } = new byte[16]; /// /// 16 x 16-byte Signature Keys. An unsigned .XBE can just zero these out. /// public byte[][] AlternateSignatureKeys { get; set; } = new byte[16][]; /// /// Original Certificate Size? /// public uint OriginalCertificateSize { get; set; } /// /// Online Service ID /// public uint OnlineService { get; set; } /// /// Extra Security Flags /// public uint SecurityFlags { get; set; } /// /// Code Encryption Key? /// public byte[] CodeEncKey { get; set; } = new byte[16]; } }