Skip to content

Certificates

For verification of the console and as well as a method of securely determining the capabilities to enable.

Console Certificate

Per-console certificate to verify and define the device. Stored in sp_s.cfg (offset: 0x5400) inside XBFS.

Total Size: 0x400 bytes

Offset Length Type Information
0x00 0x02 ushort Magic (CC)
0x02 0x02 ushort Size
0x04 0x02 ushort IssuerKeyId
0x06 0x02 ushort ProtocolVersion
0x08 0x04 uint32 IssueDate
0x0C 0x04 uint32 PspRevisionId
0x10 0x10 byte[] SocId
0x20 0x02 ushort GenerationId
0x22 0x01 byte ConsoleRegion
0x23 0x01 byte Reserved0
0x24 0x04 uint32 Reserved1
0x28 0x08 byte[] VendorId
0x30 0x100 byte[] AttestationPublicKey
0x130 0x100 byte[] ReservedPublicKey
0x230 0x0C byte[] ConsoleSerialNumber
0x23C 0x08 byte[] ConsoleSku
0x244 0x20 byte[] ConsoleSettingsDigest (SHA256)
0x264 0x0C byte[] ConsolePartNumber
0x270 0x10 byte[] HwSpecificData
0x280 0x180 byte[] RsaSignature
0x400 End-of-file

Boot Capability Certificate

Used to determine what type of developer features the console can use. Stored in certkeys.bin inside XBFS. Also check out Devkit types.

Format

Total Size: 0x400 bytes

Offset Length Type Information
0x00 0x02 ushort Magic (CP)
0x02 0x02 ushort Size
0x04 0x02 ushort ProtocolVersion
0x06 0x02 ushort IssuerKeyId
0x08 0x08 uint64 Issue Date
0x10 0x10 byte[] SoC ID
0x20 0x02 ushort GenerationId
0x22 0x01 byte AllowedStates
0x23 0x01 byte LastCapability
0x24 0x04 uint Flags
0x28 0x01 byte ExpireCentury
0x29 0x01 byte ExpireYear
0x2A 0x01 byte ExpireMonth
0x2B 0x01 byte ExpireDayOfMonth
0x2C 0x01 byte ExpireHour
0x2D 0x01 byte ExpireMinute
0x2E 0x01 byte ExpireSecond
0x2F 0x01 byte MinimumSpVersion
0x30 0x08 uint64 Minimum2blVersion
0x38 0x10 byte[] Nonce
0x48 0x38 byte[] Reserved
0x80 0x200 ushort[] Capabilities
0x280 0x180 byte[] RsaSignature
0x400 End-of-file

Capabilities

Starting at offset 0x80, the capabilities are defined as 2 byte reversed entries. For example, 0x2001 - SRA_DEVKIT, which would be written as 01 20 in the certificate. An SRA Devkit's certificate would contain 0x2001 and 0x2002 respectively, while an MS Internal Devkit would contain 0x6001 and 0x6002 to enable host telnet.

enum CERTIFICATE_CAPABILITIES : ushort {
    SRA_DEVKIT = 0x2001,
    SRA_DEVKIT_DEBUG = 0x2002,
    SRA_FILE_IO = 0x2003,
    SRA_STREAM = 0x2004,
    SRA_PUSH_DEPLOY = 0x2005,
    SRA_PULL_DEPLOY = 0x2006,
    SRA_PROFILING = 0x2007,
    SRA_JS_PROFILING = 0x2008,
    RECOVERY = 0x3001,
    VS_CRASH_DUMP = 0x3002,
    CRASH_DUMP = 0x3003,
    REMOTE_MGMT = 0x3004,
    VIEW_TRACING = 0x3005,
    TCR_TOOL = 0x3006,
    ALLOW_RETAIL_GAME_DUMP = 0x3007,
    GESTURE_BUILDER = 0x3008,
    SPEECH_LAB = 0x3009,
    SMARTGLASS_STUDIO = 0x300A,
    NETWORK_FIDDLER = 0x300B,
    ERA_DEVKIT = 0x4001,
    HW_BERINGSEA_DEBUG = 0x4002,
    ERA_DEVKIT_DEBUG = 0x4003,
    ERA_FILE_IO = 0x4004,
    ERA_STREAM = 0x4005,
    ERA_PUSH_DEPLOY = 0x4006,
    ERA_PULL_DEPLOY = 0x4007,
    ERA_EXTRA_MEM = 0x4008,
    ERA_PROFILING = 0x4009,
    MS_DEVKIT = 0x6001,
    HW_CPU_DEBUG = 0x6002,
    HW_FW_DEBUG = 0x6003,
    HW_POWER_DEBUG = 0x6004,
    MEMENC_DISABLED = 0x6005,
    MEMENC_FIXED_KEY = 0x6006,
    MEMENC_KEY_0 = 0x6007,
    CERT_MTE_BOOST = 0x6008,
    CERT_RIO_BOOST = 0x6009,
    CERT_TEST_BOOST = 0x600A,
    UPDATE_TESTER = 0x600B,
    RED_CPU_CODE = 0x600C,
    OS_PREVIEW = 0x600D,
    RETAIL_DEBUGGER = 0x600E,
    OFFLINE = 0x600F,
    IGNORE_UPDATESEQUENCE = 0x6010,
    CERT_QASLT = 0x6011,
    GPU_FENCE_DEBUG = 0x6013,
    HW_EN_MEM_SPEED_RETEST = 0x6014,
    HW_EN_MEM_1GB_RETEST = 0x6015,
    HW_EN_FUSE_READ = 0x6016,
    HW_EN_POST_CODE_SECURE = 0x6017,
    HW_EN_FUSE_OVR_RETEST = 0x6018,
    HW_EN_MEM_UNLIM_RETEST = 0x6019,
    ICT_TESTER = 0x601A,
    LOADXVD_TESTER = 0x601B,
    WIDE_THERMAL_THRESHOLDS = 0x601C,
    MS_TESTLAB = 0x601D,
    ALLOW_DISK_LICENSE = 0x601E,
    ALLOW_SYSTEM_DOWNGRADE = 0x601F,
    WIFI_TESTER = 0x6020,
    GREEN_FIDDLER = 0x6021,
    KIOSK_MODE = 0x6022,
    FULL_MEDIA_AUTH = 0x6023,
    HW_DEVTEST = 0x6024,
    ALLOW_FUSE_FA = 0x6025,
    ALLOW_SERIAL_CERT_UPLOAD = 0x6026,
    ALLOW_INSTRUMENTATION = 0x6027,
    WIFI_TESTER_DFS = 0x6028,
    HOSTOS_HW_TEST = 0x6029,
    HOSTOS_ODD_TEST = 0x602A,
    PR_SL2000 = 0x7001,
    REDUCE_MODE_TESTER = 0x7002,
    SP_DEVKIT = 0x8001,
    HW_SP_DEBUG = 0x8002,
    SCP_DEBUG = 0x8003,
    HW_SDF = 0x8004,
    HW_ALL_DEBUG = 0x8005,
    HW_AEB_DEBUG = 0x8006,
    HW_BTG = 0x8007,
    SP_TESTER = 0x8008,
    SP_DEBUG_BUILD = 0x8009,
    NO_FUSE_BLOW = 0x800A,
    HW_DIS_N_CALIB_RETEST = 0x800B,
    HW_DIS_CRIT_FUSE_CHK_RETEST = 0x800C,
    GREEN_SRA_DEBUG = 0x800D,
    GREEN_ERA_DEBUG = 0x800E,
    HW_DIS_RNG_CHK_SECURE = 0x800F,
    HW_EN_FUSE_OVRD_SECURE = 0x8010,
    GREEN_HOST_DEBUG = 0x8011,
    GREEN_ALLOW_DISK_LICENSES = 0x8012,
    VIRT_CAP_DEVKIT_ANY_EQUIV = 0xF001,
    VIRT_CAP_DEVKIT_INTERNAL_EQUIV = 0xF002,
    VIRT_CAP_SP_DEVKIT_EQUIV = 0xF003,
    VIRT_CAP_MS_DEVKIT_EQUIV = 0xF004,
    VIRT_CAP_RED_SIGNED_CPU_CODE = 0xF005
};

Information about capabilities gathered from: C:\Windows\DefaultApp\XboxOneExtensions.dll

Authors: Mezone, tuxuser