Rights Information Files
Jump to navigation
Jump to search
Can be found in:
/user/license/*.rif
,/user/license/*.idx
/user/home/*/license/*.rif
,/user/home/*/license/*.idx
/mnt/disc/license/rif
/preinst2/app/CUSA00001/app.rif
Sc0/license.dat
(in PKG entries)
Rights Information Files[edit | edit source]
For a rif file that is paired with an idx file, see RIFA file.
RIF[edit | edit source]
Fields are big-endian.
Name | Offset | Size | Example | Remark |
---|---|---|---|---|
Signature | 0x000 |
4 | 52 49 46 00 ('RIF\0') |
|
Version | 0x004 |
2 | 00 01 |
See Type |
Unknown | 0x006 |
2 | FF FF |
|
PSN Account ID | 0x008 |
8 | AB CD EF 01 02 34 78 91 |
0 if not KDS RIF |
Start Timestamp | 0x010 |
8 | 00 00 00 00 52 85 64 00 |
Start timestamp (unix/epoch) |
End Timestamp | 0x018 |
8 | 7F FF FF FF FF FF FF FF |
End timestamp (unix/epoch), typically INT64_MAX |
Content ID | 0x020 |
48 | IP9100-CUSA00001_00-PLAYROOM00000000 |
|
Type | 0x050 |
2 | 01 01 |
See Type |
DRM Type | 0x052 |
2 | 00 0F |
Same as PKG DRM Type, PS5 Uses 00 10 |
Content Type | 0x054 |
2 | 00 1A |
Same as PKG Content Type, PS5 Uses 00 20 |
SKU Flag | 0x056 |
2 | 00 01 |
Not Bootable 0 Trial 1 Full Game 3 |
Extra Flags | 0x058 |
4 | 00 00 00 00 |
|
Unknown | 0x060 |
4 | 00 02 00 00 |
PS5 Uses 00 00 00 00 |
Unknown | 0x064 |
4 | 00 00 00 01 |
|
Unknown | 0x068 |
3 | - | |
Unknown | 0x06B |
1 | - | 02 on old rifs (3.55), 03 on new rifs (5.00) |
Unknown | 0x06C |
468 | - | |
Disc Key | 0x240 |
32 | - | |
Secret Encryption IV | 0x260 |
16 | - | At least on debug/fake RIFs, this is the first 16 bytes of the SHA-256 hash of the Content ID (all 48 bytes including nulls) |
Encrypted Secret | 0x270 |
144 | - | See Secret for when decrypted. On debug/fake rifs, the decrypted secret is empty except the first 16 bytes, which are the second 16 bytes of the Content ID hash. |
RSA Signature | 0x300 |
256 | - | Verified using public key depending on type |
Type[edit | edit source]
Type | FW Type | Min Ver | Max Ver | Name | Description | Remarks |
---|---|---|---|---|---|---|
0x000
|
All | 1 | 1 | KDS (NPDRM) | Used for digital content | Revoked in at least 4.05 |
0x001
|
All | 2 | 2 | |||
0x002
|
All | 3 | 3 | |||
0x101
|
All | 1 | 1 | Isolated (Free,Kiosk) | Used for truly free content (Playroom, Vue, Spotify) | |
0x302
| ||||||
0x102
|
All | 1 | 1 | Disc | Used for Blu-ray content | |
0x200
|
DEX/TEST | 1 | 1 | Fake/Debug | Used for testing/debugging | |
0x201
| ||||||
0x202
| ||||||
0x303
|
CEX | 1 | 1 | ? | ||
0x304
|
? (not CEX) | 1 | 1 | ? | ||
0x305
|
DEX/TEST | 1 | 1 | ? |
Secret[edit | edit source]
Name | Offset | Size | Example | Remark |
---|---|---|---|---|
Unknown | 0x00 |
16 | - | Random 16 bytes of unknown purpose |
Padding | 0x10 |
32 | - | Zero byte padding (32 bytes) |
Content Key Seed | 0x30 |
16 | - | Used to generate PFS key |
SELF Key Seed | 0x40 |
16 | - | Used to generate SELF key |
Unknown | 0x50 |
16 | - | Random 16 bytes of unknown purpose |
Unknown | 0x60 |
16 | - | Random 16 bytes of unknown purpose |
Entitlement Key | 0x70 |
16 | - | Usually all zeroes. Used on Additional Content |
Padding | 0x80 |
16 | - | Zero byte padding (16 bytes) |
RIFA File[edit | edit source]
See also RIDX structure for the paired idx file.
When in this form, a RIFA header is present, followed by sequential rifs.
RIFA Header[edit | edit source]
Fields are big-endian.
Name | Offset | Size | Example | Remark |
---|---|---|---|---|
Signature | 0x000 |
4 | 52 49 46 00 ('RIF\0') |
|
Service ID | 0x004 |
48 | IP9100-CUSA00001_00 |
Size assumed |
Unknown | 0x034 |
972 | - |
RIDX File[edit | edit source]
RIDX Header[edit | edit source]
Fields are little-endian.
Name | Offset | Size | Example | Remark |
---|---|---|---|---|
Signature | 0x00 |
4 | 78 64 69 72 ('xdir') |
|
RIF Count | 0x04 |
4 | 01 00 00 00 |
|
Version | 0x08 |
1 | 01 |
1 (current) |
Service ID | 0x09 |
19 | IP9100-CUSA00001_00 |
|
Unknown | 0x1C |
4 | 01 00 00 00 |
|
Entries | 0x20 |
48 * RIF Count | - | See RIDX entry |
RIDX Entry[edit | edit source]
Fields are little-endian.
Name | Offset | Size | Example | Remark |
---|---|---|---|---|
Entitlement label | 0x00 |
16 | PLAYROOM00000000 |
|
RIF Offset | 0x10 |
8 | 00 04 00 00 00 00 00 00 |
Offset into RIFA file |
RIF Size | 0x18 |
8 | 00 04 00 00 00 00 00 00 |
|
Unknown | 0x20 |
1 | 01 |
|
Unknown | 0x21 |
1 | 00 |
|
RIF HMAC | 0x22 |
8 | - | First 8 bytes of HMACSHA256 of RIF data using per-console data as key |
Unknown | 0x2A |
6 | - |