Keys Documentation ================== Certain types of binary files used by the PlayStation 3 system are encrypted. For legal reasons, Nucleus cannot provide the decryption keys, hence the need for the users to dump the keys from their own legally purchased console. These keys have to be saved in a Keyvault file named `keys.xml` next to the Nucleus executable. The Keyvault file has to be met following structure: ```xml [...] ``` ## SELF/SPRX Keys In *Cell OS LV-2*, executable files need to be signed in order to be loaded. This applies both to ELF executables and PRX dynamic libraries (which are basically ELF's). Their signed versions are called SELF and SPRX respectively. The Keyvault must provide the corresponding decryption keys to load these files in the `` node. These keys have to met following structure: ```xml [0-9A-F]{2} [0-9A-F]{64} [0-9A-F]{32} [0-9A-F]{80} [0-9A-F]{42} ``` The following abbreviations apply: * `ctype`: Curve Type. * `erk`: Encryption Root Key. * `riv`: Root IV. * `pub`: Public Key. * `priv`: Private Key. All attribute/node values above are regex strings. Aside from the for the key type, all values are specified by uppercase hexadecimal strings. For the key type following notiation is used: `LV0` (1), `LV1` (2), `LV2` (3), `APP` (4), `ISO` (5), `LDR` (6), `UNK7` (7), `NPDRM` (8). ## Example Keyvault file This is just an example Keyvault file with fake keys. Don't expect it to work with any encrypted file: ```xml 2D 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D 8C9D0E1F2A3B4C5D0123456789ABCDEFA1B2C3D4E5F6A7BE5F6A7B8C9D0E1F2A8C9D0E1F2A3B4C5D 000000000000000000000000000000000000000000 08 C5D0123456789ABCDEFA1B2C3D4E5F6A7BE5F6A7B8C9D0E1F2A8C9D0E1F2A3B4 0123456789ABCDEF0123456789ABCDEF 0A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D0A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D0A1B2C3D4E5F6A7B 9ABCDEF0123456780A1B2C3D4E5F6A7B8C9D0E1F2A ```