Editing Content License
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
The PS4 content license files are like on PSP, PS3 and PS4 the .rif files.<br /> | |||
But for the first time, the format has been a lot changed: | |||
The PS4 content license files are | * There is only 1 .rif file (and .idx) per game/app. On PSP, PS3 and PSVita, there were 1 .rif per content (1 for the game + 1 for each DLC) | ||
* This is handled by adding each DLC license to the game .rif. To know where the license is in the .rif, PS4 generates a .idx file (RIF index). | |||
But for the first time, the format has | * When the .rif is downloaded from PSN by SceShellcore, it is added to the current .rif file of the game (if existing).<br />Then the .idx is generated. ShellCore calls npdrm_ioctl to get a 0x10 bytes HMAC-SHA256 per console key from SAMU.<br />The HMAC is computed over the RIF data and is written to the .idx entry.<br />The aim is both to ensure .rif integrity and to make sure the .rif and .idx can't be copied to another PS4 console. | ||
* There is only | |||
* This is handled by adding each DLC license to the game .rif. To | |||
* When the .rif is downloaded from | |||
Then the .idx is generated. | |||
The HMAC is computed over the RIF data and is written to the .idx entry.<br /> | |||
The aim is both to ensure .rif integrity and to make sure | |||
The files an be found in: | The files an be found in: | ||
Line 20: | Line 14: | ||
This is a .rif that is not paired with a .idx file. | This is a .rif that is not paired with a .idx file. | ||
For a | For a rif file that is paired with a .idx file, see [[#RIFA File|RIFA file]]. | ||
The .rif file embeds one or more [[RIF Entry|RIF entry]]. | The .rif file embeds one or more [[RIF Entry|RIF entry]]. | ||
=== RIF Entry === | === RIF Entry === | ||
Line 41: | Line 33: | ||
| Version || <code>0x004</code> || 2 || <code>00 01</code>, <code>00 02</code> || See [[#RIF Type|RIF Type]] | | Version || <code>0x004</code> || 2 || <code>00 01</code>, <code>00 02</code> || See [[#RIF Type|RIF Type]] | ||
|- | |- | ||
| | | Unknown || <code>0x006</code> || 2 || <code>00 02</code>, <code>FF FF</code> || ?Finalized flag? ?DRM Type? | ||
|- | |- | ||
| PSN Account ID || <code>0x008</code> || 8 || <code>AB CD EF 01 02 34 78 91</code> || zeroed if not KDS RIF | | PSN Account ID || <code>0x008</code> || 8 || <code>AB CD EF 01 02 34 78 91</code> || zeroed if not KDS RIF | ||
Line 178: | Line 170: | ||
| Unknown || <code>0x00</code> || 0x10 || - || | | Unknown || <code>0x00</code> || 0x10 || - || | ||
|- | |- | ||
| | | Unknown || <code>0x10</code> || 0x10 || - || | ||
|- | |- | ||
| | | Unknown || <code>0x20</code> || 0x10 || - || | ||
|- | |- | ||
| Content Key Seed || <code>0x30</code> || 0x10 || - || Used to generate PFS key | | Content Key Seed || <code>0x30</code> || 0x10 || - || Used to generate PFS key | ||
Line 190: | Line 182: | ||
| Unknown || <code>0x60</code> || 0x10 || - || | | Unknown || <code>0x60</code> || 0x10 || - || | ||
|- | |- | ||
| Entitlement Key || <code>0x70</code> || 0x10 || - || | | Entitlement Key || <code>0x70</code> || 0x10 || - || | ||
|- | |- | ||
| | | Unknown || <code>0x80</code> || 0x10 || - || | ||
|} | |} | ||
Line 260: | Line 252: | ||
! style="width: 40%" | Remark | ! style="width: 40%" | Remark | ||
|- | |- | ||
| [[Entitlement | | [[Entitlement label]] || <code>0x00</code> || 16 || <code>PLAYROOM00000000</code> || | ||
|- | |- | ||
| RIF Offset || <code>0x10</code> || 8 || <code>00 04 00 00 00 00 00 00</code> || Offset into [[#RIFA File|RIFA file]] | | RIF Offset || <code>0x10</code> || 8 || <code>00 04 00 00 00 00 00 00</code> || Offset into [[#RIFA File|RIFA file]] |