Revoke List: Difference between revisions

From PS3 Developer wiki
Jump to navigation Jump to search
 
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
Revoke list is a [[Certified File]]
Revoke list is a [[Certified File]].


= Location =
= Location =
Line 10: Line 10:


== PSVita ==
== PSVita ==
In SLB2 partition in PUP and in eMMC:


slb2:prog_rvk.srvk
slb2:prog_rvk.srvk
Line 15: Line 17:
= Decryption =
= Decryption =


See [[Certified_File#Decryption]]
See [[Certified_File#Decryption]].


= Stucture
= Stucture =


Contains includes/excludes to be checked by lv1/hypervisor.<br>
Contains includes/excludes to be checked by lv1/hypervisor.<br>
Fetched by Updating process to NAND/NOR-Flash as trvk_prg0/1 and trvk_pkg0/1.<br>
Fetched by Updating process to NAND/NOR-Flash as trvk_prg0/1 and trvk_pkg0/1.<br>
So this is basically a list of additional checks for the hv.<br>
So this is basically a list of additional checks for the hypervisor.<br>
example: if (sce type == 4 & authid = x) then do what flags tell, related with version etc.<br>
Example: if (sce type == 4 & authid = x) then do what flags tell, related with version etc.<br>


See also: [[keys]], [[Program Authority Id]].
See also: [[Keys]], [[Program Authority Id]].


== Struct ==
== Struct ==
Line 30: Line 32:
<source lang="C">
<source lang="C">
  typedef header {
  typedef header {
   uint32_t type;       /* type: 3 ps3 prog rvk, 4 ps3 pkg rvk, 5 psvita prog rvk */
   uint32_t type;         /* 3 ps3 prog rvk, 4 ps3 pkg rvk, 5 psvita prog rvk */
   uint32_t unk;
   uint32_t unk;
   union {
   union {
   struct prog {
   struct prog {
     uint64_t version; /* Version */
     uint64_t version;     /* Revoke List Version */
   };
   };
   struct pkg {
   struct pkg {
Line 40: Line 42:
   };
   };
   };
   };
   uint32_t entry_count;     /* Number of entries */
   uint32_t entry_count;   /* Number of entries */
   uint8_t padding[0xC];
   uint8_t padding[0xC];
  } __attribute__((packed)) rvk_HEADER;
  } __attribute__((packed)) rvk_header;
</source>
</source>


=== Revoke items ===
== Revoke list entries ==


<source lang="C">
<source lang="C">
Line 61: Line 63:
! field !! offset !! type !! notes
! field !! offset !! type !! notes
|-
|-
| program_type || 0x00 || u32 ||
| program_type || 0x00 || u32 || See [[Program Type]].
|-
|-
| flags || 0x08 || u32 || enforce/block/ignore/whatever?
| flags || 0x04 || u32 || enforce/block/ignore/whatever?
|-
|-
| version || 0x0c || u64 || program version
| version || 0x8 || u64 || program version
|-
|-
| program_authority_id || 0x0C || u64 || [[Program Authority Id]]
| program_authority_id || 0x10 || u64 || See [[Program Authority Id]].
|-
|-
| unknown ||0x10 || u64 || enforce/block/ignore/whatever?
| unknown ||0x18 || u64 || enforce/block/ignore/whatever?
|}
|}


Line 79: Line 81:


  Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
  Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
  00000200  00 00 00 04 00 00 00 01 00 03 00 56 00 00 00 00  ...�...�.�.V....
  00000200  00 00 00 04 00 00 00 01 00 04 00 89 00 00 00 00  ...�...�.�.V....
  00000210  00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00  ...�............ 6 items
  00000210  00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00  ...�............ 6 items
  00000220  00 00 00 03 00 00 00 01 00 03 00 56 00 00 00 00  ...�...�.�.V.... e.g. lv2
  00000220  00 00 00 03 00 00 00 01 00 04 00 89 00 00 00 00  ...�...�.�.V.... e.g. lv2
  00000230  00 00 00 00 00 00 00 02 FF FF FF FF FF FF FF FF  .......�ÿÿÿÿÿÿÿÿ
  00000230  00 00 00 00 00 00 00 02 FF FF FF FF FF FF FF FF  .......�ÿÿÿÿÿÿÿÿ
  00000240  00 00 00 04 00 00 00 01 00 03 00 56 00 00 00 00  ...�...�.�.V.... e.g. vsh
  00000240  00 00 00 04 00 00 00 01 00 04 00 89 00 00 00 00  ...�...�.�.V.... e.g. vsh
  00000250  10 70 00 05 FF 00 00 01 FF FF FF FF FF FF FF FF  �p.�ÿ..�ÿÿÿÿÿÿÿÿ
  00000250  10 70 00 05 FF 00 00 01 FF FF FF FF FF FF FF FF  �p.�ÿ..�ÿÿÿÿÿÿÿÿ
  00000260  00 00 00 04 00 00 00 01 00 03 00 56 00 00 00 00  ...�...�.�.V....  
  00000260  00 00 00 04 00 00 00 01 00 04 00 89 00 00 00 00  ...�...�.�.V....  
  00000270  10 70 00 05 FE 00 00 01 FF FF FF FF FF FF FF FF  �p.�þ..�ÿÿÿÿÿÿÿÿ
  00000270  10 70 00 05 FE 00 00 01 FF FF FF FF FF FF FF FF  �p.�þ..�ÿÿÿÿÿÿÿÿ
  00000280  00 00 00 04 00 00 00 01 00 03 00 56 00 00 00 00  ...�...�.�.V.... e.g. sys_init_osd
  00000280  00 00 00 04 00 00 00 01 00 04 00 89 00 00 00 00  ...�...�.�.V.... e.g. sys_init_osd
  00000290  10 70 00 05 FD 00 00 01 FF FF FF FF FF FF FF FF  �p.�ý..�ÿÿÿÿÿÿÿÿ
  00000290  10 70 00 05 FD 00 00 01 FF FF FF FF FF FF FF FF  �p.�ý..�ÿÿÿÿÿÿÿÿ
  000002A0  00 00 00 04 00 00 00 01 00 03 00 56 00 00 00 00  ...�...�.�.V.... e.g. sys_audio
  000002A0  00 00 00 04 00 00 00 01 00 04 00 89 00 00 00 00  ...�...�.�.V.... e.g. sys_audio
  000002B0  10 70 00 05 FC 00 00 01 FF FF FF FF FF FF FF FF  �p.�ü..�ÿÿÿÿÿÿÿÿ
  000002B0  10 70 00 05 FC 00 00 01 FF FF FF FF FF FF FF FF  �p.�ü..�ÿÿÿÿÿÿÿÿ
  000002C0  00 00 00 04 00 00 00 03 00 01 00 00 00 00 00 00  ...�...�.�......
  000002C0  00 00 00 04 00 00 00 03 00 01 00 00 00 00 00 00  ...�...�.�......
Line 157: Line 159:
  00000240  00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 02  ...�.......�...�
  00000240  00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 02  ...�.......�...�
  00000250  00 02 00 30 00 00 00 00 00 00 00 00 00 00 00 00  .�.0............
  00000250  00 02 00 30 00 00 00 00 00 00 00 00 00 00 00 00  .�.0............





Latest revision as of 05:04, 15 July 2022

Revoke list is a Certified File.

Location[edit | edit source]

PS3[edit | edit source]

CoreOS package 3.56+.

RL_FOR_PACKAGE.img/RL_FOR_PROGRAM.img, pkg.srvk/prog.srvk

PSVita[edit | edit source]

In SLB2 partition in PUP and in eMMC:

slb2:prog_rvk.srvk

Decryption[edit | edit source]

See Certified_File#Decryption.

Stucture[edit | edit source]

Contains includes/excludes to be checked by lv1/hypervisor.
Fetched by Updating process to NAND/NOR-Flash as trvk_prg0/1 and trvk_pkg0/1.
So this is basically a list of additional checks for the hypervisor.
Example: if (sce type == 4 & authid = x) then do what flags tell, related with version etc.

See also: Keys, Program Authority Id.

Struct[edit | edit source]

 typedef header {
  uint32_t type;          /* 3 ps3 prog rvk, 4 ps3 pkg rvk, 5 psvita prog rvk */
  uint32_t unk;
  union {
   struct prog {
    uint64_t version;     /* Revoke List Version */
   };
   struct pkg {
    uint64_t unk_pkg_rvk; /* To check */
   };
  };
  uint32_t entry_count;   /* Number of entries */
  uint8_t padding[0xC];
 } __attribute__((packed)) rvk_header;

Revoke list entries[edit | edit source]

typedef rvk_entry {
  uint32_t program_type;
  uint32_t flags;
  uint64_t version;
  uint64_t program_authority_id;
  uint64_t unknown;
} __attribute__((packed)) rvk_entry;
field offset type notes
program_type 0x00 u32 See Program Type.
flags 0x04 u32 enforce/block/ignore/whatever?
version 0x8 u64 program version
program_authority_id 0x10 u64 See Program Authority Id.
unknown 0x18 u64 enforce/block/ignore/whatever?

Examples[edit | edit source]

= PS3[edit | edit source]

3.56 prog.srvk[edit | edit source]

Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000200  00 00 00 04 00 00 00 01 00 04 00 89 00 00 00 00  ...�...�.�.V....
00000210  00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00  ...�............ 6 items
00000220  00 00 00 03 00 00 00 01 00 04 00 89 00 00 00 00  ...�...�.�.V.... e.g. lv2
00000230  00 00 00 00 00 00 00 02 FF FF FF FF FF FF FF FF  .......�ÿÿÿÿÿÿÿÿ
00000240  00 00 00 04 00 00 00 01 00 04 00 89 00 00 00 00  ...�...�.�.V.... e.g. vsh
00000250  10 70 00 05 FF 00 00 01 FF FF FF FF FF FF FF FF  �p.�ÿ..�ÿÿÿÿÿÿÿÿ
00000260  00 00 00 04 00 00 00 01 00 04 00 89 00 00 00 00  ...�...�.�.V.... 
00000270  10 70 00 05 FE 00 00 01 FF FF FF FF FF FF FF FF  �p.�þ..�ÿÿÿÿÿÿÿÿ
00000280  00 00 00 04 00 00 00 01 00 04 00 89 00 00 00 00  ...�...�.�.V.... e.g. sys_init_osd
00000290  10 70 00 05 FD 00 00 01 FF FF FF FF FF FF FF FF  �p.�ý..�ÿÿÿÿÿÿÿÿ
000002A0  00 00 00 04 00 00 00 01 00 04 00 89 00 00 00 00  ...�...�.�.V.... e.g. sys_audio
000002B0  10 70 00 05 FC 00 00 01 FF FF FF FF FF FF FF FF  �p.�ü..�ÿÿÿÿÿÿÿÿ
000002C0  00 00 00 04 00 00 00 03 00 01 00 00 00 00 00 00  ...�...�.�......
000002D0  10 70 00 04 00 00 00 01 FF FF FF FF FF FF FF FF  �p.�...�ÿÿÿÿÿÿÿÿ

3.41 trvk_prog0[edit | edit source]

Offset(h)  00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000200   00 00 00 04 00 00 00 01 00 03 00 41 00 00 00 00  ...�...�.�.A....
00000210   00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00  ...�............
00000220   00 00 00 03 00 00 00 01 00 03 00 41 00 00 00 00  ...�...�.�.A....
00000230   00 00 00 00 00 00 00 02 FF FF FF FF FF FF FF FF  .......�ÿÿÿÿÿÿÿÿ
00000240   00 00 00 04 00 00 00 01 00 03 00 41 00 00 00 00  ...�...�.�.A....
00000250   10 70 00 05 FF 00 00 01 FF FF FF FF FF FF FF FF  �p.�ÿ..�ÿÿÿÿÿÿÿÿ
00000260   00 00 00 04 00 00 00 01 00 03 00 41 00 00 00 00  ...�...�.�.A....
00000270   10 70 00 05 FE 00 00 01 FF FF FF FF FF FF FF FF  �p.�þ..�ÿÿÿÿÿÿÿÿ
00000280   00 00 00 04 00 00 00 01 00 03 00 41 00 00 00 00  ...�...�.�.A....
00000290   10 70 00 05 FD 00 00 01 FF FF FF FF FF FF FF FF  �p.�ý..�ÿÿÿÿÿÿÿÿ
000002A0   00 00 00 04 00 00 00 01 00 03 00 41 00 00 00 00  ...�...�.�.A....
000002B0   10 70 00 05 FC 00 00 01 FF FF FF FF FF FF FF FF  �p.�ü..�ÿÿÿÿÿÿÿÿ
000002C0   00 00 00 04 00 00 00 03 00 01 00 00 00 00 00 00  ...�...�.�......
000002D0   10 70 00 04 00 00 00 01 FF FF FF FF FF FF FF FF  �p.�...�ÿÿÿÿÿÿÿÿ

3.55 trvk_prog1[edit | edit source]

Offset(h)  00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000200  00 00 00 04 00 00 00 01 00 03 00 55 00 00 00 00  ...�...�.�.U....
00000210  00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00  ...�............
00000220  00 00 00 03 00 00 00 01 00 03 00 55 00 00 00 00  ...�...�.�.U....
00000230  00 00 00 00 00 00 00 02 FF FF FF FF FF FF FF FF  .......�ÿÿÿÿÿÿÿÿ
00000240  00 00 00 04 00 00 00 01 00 03 00 55 00 00 00 00  ...�...�.�.U....
00000250  10 70 00 05 FF 00 00 01 FF FF FF FF FF FF FF FF  �p.�ÿ..�ÿÿÿÿÿÿÿÿ
00000260  00 00 00 04 00 00 00 01 00 03 00 55 00 00 00 00  ...�...�.�.U....
00000270  10 70 00 05 FE 00 00 01 FF FF FF FF FF FF FF FF  �p.�þ..�ÿÿÿÿÿÿÿÿ
00000280  00 00 00 04 00 00 00 01 00 03 00 55 00 00 00 00  ...�...�.�.U....
00000290  10 70 00 05 FD 00 00 01 FF FF FF FF FF FF FF FF  �p.�ý..�ÿÿÿÿÿÿÿÿ
000002A0  00 00 00 04 00 00 00 01 00 03 00 55 00 00 00 00  ...�...�.�.U....
000002B0  10 70 00 05 FC 00 00 01 FF FF FF FF FF FF FF FF  �p.�ü..�ÿÿÿÿÿÿÿÿ
000002C0  00 00 00 04 00 00 00 03 00 01 00 00 00 00 00 00  ...�...�.�......
000002D0  10 70 00 04 00 00 00 01 FF FF FF FF FF FF FF FF  �p.�...�ÿÿÿÿÿÿÿÿ

3.56 pkg.srvk[edit | edit source]

Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000200  00 00 00 03 00 00 00 02 00 01 00 00 00 00 00 00  ...�...�.�...... 1.0 version
00000210  00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00  ...�............ 1 items
00000220  00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 02  ...�.......�...�
00000230  00 00 00 08 00 05 00 00 00 00 00 00 00 00 00 00  ...�.�..........

trvk_pkg0[edit | edit source]

Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000200  00 00 00 03 00 00 00 02 00 02 00 30 00 00 00 00  ...�...�.�.0....   2.3 version
00000210  00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00  ...�............ 2 Items
00000220  00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 02  ...�.......�...�
00000230  00 02 00 30 00 00 00 00 00 00 00 00 00 00 00 00  .�.0............
00000240  00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 02  ...�.......�...�
00000250  00 02 00 30 00 00 00 00 00 00 00 00 00 00 00 00  .�.0............

trvk_pkg1[edit | edit source]

Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000200  00 00 00 03 00 00 00 02 00 02 00 30 00 00 00 00  ...�...�.�.0.... 2.3 version
00000210  00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00  ...�............ 2 Items
00000220  00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 02  ...�.......�...�
00000230  00 02 00 30 00 00 00 00 00 00 00 00 00 00 00 00  .�.0............
00000240  00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 02  ...�.......�...�
00000250  00 02 00 30 00 00 00 00 00 00 00 00 00 00 00 00  .�.0............