Editing Revoke List

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

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:
Revoke list is a [[Certified File]].
[[Category:Software]]
 
Location: CoreOS package 3.56+ . (for decryption you also need keys ofc, its same as spp/pkg/any metadata decryption)
= Location =
 
== PS3 ==
 
CoreOS package 3.56+.
 
RL_FOR_PACKAGE.img/RL_FOR_PROGRAM.img, pkg.srvk/prog.srvk
 
== PSVita ==
 
In SLB2 partition in PUP and in eMMC:
 
slb2:prog_rvk.srvk
 
= Decryption =
 
See [[Certified_File#Decryption]].
 
= 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 hypervisor.<br>
So this is basically a list of additional checks for the hv.<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: <br>
[[keys]]<br>
[[SELF_File_Format_and_Decryption]]<br>
[[Authentication_IDs]]<br>


== Struct ==
==Struct==


<source lang="C">
  typedef header {
  typedef header {
   uint32_t type;         /* 3 ps3 prog rvk, 4 ps3 pkg rvk, 5 psvita prog rvk */
   uint32_t type;       /* header type
   uint32_t unk;
                        * 3 prg rvk
                        * 4 pkg rvk */
   uint32_t unk_1;     /* Unknown. */
   union {
   union {
   struct prog {
   struct prg {
     uint64_t version;     /* Revoke List Version */
     uint64_t version; /* Version. */
   };
   };
   struct pkg {
   struct pkg {
     uint64_t unk_pkg_rvk; /* To check */
     uint64_t unk_0;   /* Unknown. */
   };
   };
   };
   };
   uint32_t entry_count;   /* Number of entries */
   uint32_t entcnt;     /* Number of entries. */
   uint8_t padding[0xC];
   uint8_t padding[12]; /* Padding. */
  } __attribute__((packed)) rvk_header;
  } __attribute__((packed)) rvk_HEADER;
</source>
 
== Revoke list entries ==
 
<source lang="C">
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;
</source>


revokation items
{| class="wikitable"
{| class="wikitable"
|-
|-
! field !! offset !! type !! notes
! field !! offset !! type !! notes
|-
|-
| program_type || 0x00 || u32 || See [[Program Type]].
|self_type || 0x00 ||u32 ||
              *1 -- level 0
              *2 -- level 1
              *3 -- level 2
              *4 -- application
              *5 -- isolated SPU module
              *6 -- secure loader
              *8 -- NP-DRM application
|-
|-
| flags || 0x04 || u32 || enforce/block/ignore/whatever?
|flags || 0x08 ||u32 || /* enforce/block/ignore/whatever? */
|-
|-
| version || 0x8 || u64 || program version
|version || 0x0c ||u64 ||  
|-
|-
| program_authority_id || 0x10 || u64 || See [[Program Authority Id]].
|authid || 0x0c ||u64 || [[Authentication_IDs]]
|-
|-
| unknown ||0x18 || u64 || enforce/block/ignore/whatever?
|unknown ||0x10 ||u64 || /* enforce/block/ignore/whatever? */
|}
|}


= Examples =


== PS3 =
typedef info {
  uint32_t self_type;            /* app type
                                  * 1 level0,
                                  * 2 level1,
                                  * 3 level2,
                                  * 4 application,
                                  * 5 isolated SPU module,
                                  * 6 secure loader,
                                  * 7 unknown, handled by appldr,
                                  * 8 NPDRM app */
  uint32_t flags;                /* enforce/block/ignore/whatever? */
  uint64_t version;              /* app version */
  uint64_t authid;                /* auth id */
  uint64_t unknown1;              /* enforce/block/ignore/whatever? */
} __attribute__((packed)) rvk_INFO;
 
== Examples ==


=== 3.56 prog.srvk ===
=== 3.56 prog.srvk ===
  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 04 00 89 00 00 00 00  ...�...�.�.V....
  00000200  00 00 00 04 00 00 00 01 00 03 00 56 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 04 00 89 00 00 00 00  ...�...�.�.V.... e.g. lv2
  00000220  00 00 00 03 00 00 00 01 00 03 00 56 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 04 00 89 00 00 00 00  ...�...�.�.V.... e.g. vsh
  00000240  00 00 00 04 00 00 00 01 00 03 00 56 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 04 00 89 00 00 00 00  ...�...�.�.V....  
  00000260  00 00 00 04 00 00 00 01 00 03 00 56 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 04 00 89 00 00 00 00  ...�...�.�.V.... e.g. sys_init_osd
  00000280  00 00 00 04 00 00 00 01 00 03 00 56 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 04 00 89 00 00 00 00  ...�...�.�.V.... e.g. sys_audio
  000002A0  00 00 00 04 00 00 00 01 00 03 00 56 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  ...�...�.�......
  000002D0  10 70 00 04 00 00 00 01 FF FF FF FF FF FF FF FF  �p.�...�ÿÿÿÿÿÿÿÿ
  000002D0  10 70 00 04 00 00 00 01 FF FF FF FF FF FF FF FF  �p.�...�ÿÿÿÿÿÿÿÿ


=== 3.41 trvk_prog0 ===
=== 3.41 trvk_prog0 ===
 
  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 41 00 00 00 00  ...�...�.�.A....
  00000200  00 00 00 04 00 00 00 01 00 03 00 41 00 00 00 00  ...�...�.�.A....
Line 114: Line 107:
  000002D0  10 70 00 04 00 00 00 01 FF FF FF FF FF FF FF FF  �p.�...�ÿÿÿÿÿÿÿÿ
  000002D0  10 70 00 04 00 00 00 01 FF FF FF FF FF FF FF FF  �p.�...�ÿÿÿÿÿÿÿÿ


=== 3.55 trvk_prog1 ===
=== 3.55 trvk_prog1 ===
 
  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 55 00 00 00 00  ...�...�.�.U....
  00000200  00 00 00 04 00 00 00 01 00 03 00 55 00 00 00 00  ...�...�.�.U....
Line 131: Line 123:
  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  ...�...�.�......
  000002D0  10 70 00 04 00 00 00 01 FF FF FF FF FF FF FF FF  �p.�...�ÿÿÿÿÿÿÿÿ
  000002D0  10 70 00 04 00 00 00 01 FF FF FF FF FF FF FF FF  �p.�...�ÿÿÿÿÿÿÿÿ


=== 3.56 pkg.srvk ===
=== 3.56 pkg.srvk ===
  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 03 00 00 00 02 00 01 00 00 00 00 00 00  ...�...�.�...... 1.0 version
  00000200  00 00 00 03 00 00 00 02 00 01 00 00 00 00 00 00  ...�...�.�...... 1.0 version
Line 141: Line 133:


=== trvk_pkg0 ===
=== trvk_pkg0 ===
  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 03 00 00 00 02 00 02 00 30 00 00 00 00  ...�...�.�.0....  2.3 version
  00000200  00 00 00 03 00 00 00 02 00 02 00 30 00 00 00 00  ...�...�.�.0....  2.3 version
Line 151: Line 142:


=== trvk_pkg1 ===
=== trvk_pkg1 ===
  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 03 00 00 00 02 00 02 00 30 00 00 00 00  ...�...�.�.0.... 2.3 version
  00000200  00 00 00 03 00 00 00 02 00 02 00 30 00 00 00 00  ...�...�.�.0.... 2.3 version
Line 159: Line 149:
  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............
{{Reverse engineering}}
{{Flash}}
{{File Formats}}
<noinclude>[[Category:Main]]</noinclude>
Please note that all contributions to PS3 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS3 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)