SceKrm: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
(5 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
Key ring manager module. | Key ring manager module. | ||
It | It works a bit like DMAC Manager and Magic Gate Key Manager (for example it uses OpenPsId and sha256). Its syscalls requires the calling app to have an appropriate SELF capability. It might be the equivalent of Magic Gate Key Manager for Play Ready. It is imported in sceplayready.suprx in some usermode applications, usually online TV streaming applications. See [[SceAppMgr#sceAppMgrSetSystemDataFilePlayReady]]. | ||
That might work with a file of size 0x40 bytes, magic "SDPR" for SceSystemDataFilePlayReady. | |||
== Module == | == Module == | ||
This module is present since FW 3.00. | |||
{| class="wikitable" | {| class="wikitable" | ||
Line 63: | Line 65: | ||
// dst += (s1 * s2) | // dst += (s1 * s2) | ||
void sceKrmBignumMulAdd(void *s1, uint32_t s2, void *dst, int words); | void sceKrmBignumMulAdd(void *s1, uint32_t s2, void *dst, int words); | ||
</source> | |||
=== sceKrmBignumNMul === | |||
{| class="wikitable" | |||
|- | |||
! Version !! Offset !! Mode | |||
|- | |||
| 3.60 || 0x63BC || Thumb | |||
|} | |||
<source lang="C"> | |||
// dst = (0 - dst) - (s1 * s2) | |||
int sceKrmBignumNMul(void *s1, uint32_t s2, void *dst, int words); | |||
</source> | </source> | ||
Line 79: | Line 95: | ||
</source> | </source> | ||
=== sceKrmEcdsaVerifyCore === | |||
{| class="wikitable" | |||
|- | |||
! Version !! Offset !! Mode | |||
|- | |||
| 3.60 || 0x5ACC || Thumb | |||
|} | |||
<source lang="C">int sceKrmEcdsaVerifyCore(const void *hash, const void *pubkey, const void *sign, void *ctx);</source> | |||
=== ecdsa_ctx === | |||
{| class="wikitable" | |||
|- | |||
! Version !! Segment !! Offset | |||
|- | |||
| 3.60 || data || 0x55C | |||
|} | |||
This is just variable. | |||
[[Category:ARM]] | |||
[[Category:Kernel]] | |||
[[Category:Modules]] | [[Category:Modules]] | ||
[[Category: | [[Category:Library]] |
Latest revision as of 21:07, 1 May 2023
Key ring manager module.
It works a bit like DMAC Manager and Magic Gate Key Manager (for example it uses OpenPsId and sha256). Its syscalls requires the calling app to have an appropriate SELF capability. It might be the equivalent of Magic Gate Key Manager for Play Ready. It is imported in sceplayready.suprx in some usermode applications, usually online TV streaming applications. See SceAppMgr#sceAppMgrSetSystemDataFilePlayReady.
That might work with a file of size 0x40 bytes, magic "SDPR" for SceSystemDataFilePlayReady.
Module
This module is present since FW 3.00.
Version | World | Privilege |
---|---|---|
3.00-3.60 | Non-secure | Kernel |
Libraries
Known NIDs
Version | Name | World | Visibility | NID |
---|---|---|---|---|
3.60 | SceKrm | Non-secure | User | 0x17EDC66B |
SceKrm
0x10202EB4, SceKrm_10202EB4, addr: 0x81001C24 0x18DE25C6, SceKrm_18DE25C6, addr: 0x810022C0 0x2528D613, SceKrm_2528D613, addr: 0x81002018 0x3257BD35, SceKrm_3257BD35, addr: 0x81002EB4 0x350C8251, SceKrm_350C8251, addr: 0x81001F04 0x41547BE1, SceKrm_41547BE1, addr: 0x81002AC0 0x5296A954, SceKrm_5296A954, addr: 0x81002430 0x7251237D, SceKrm_7251237D, addr: 0x81002548 0x7401B932, SceKrm_7401B932, addr: 0x81002BD4 0x820B45C6, SceKrm_820B45C6, addr: 0x81001758 0x949506DC, SceKrm_949506DC, addr: 0x81002150 0x98EEB7F3, SceKrm_98EEB7F3, addr: 0x81001D94 0xA100E9C3, SceKrm_A100E9C3, addr: 0x81001A98 0xA9201DA3, SceKrm_A9201DA3, addr: 0x81002660 0xD7B35BE6, SceKrm_D7B35BE6, addr: 0x81002D48 0xE0AEAE3B, SceKrm_E0AEAE3B, addr: 0x81001864 0xECE6B5F4, SceKrm_ECE6B5F4, addr: 0x810015B4 0xECF53237, SceKrm_ECF53237, addr: 0x81002F2C 0xF0B626E7, SceKrm_F0B626E7, addr: 0x810028A0
Subroutines
sceKrmBignumMulAdd
Version | Offset | Mode |
---|---|---|
3.60 | 0x61F4 | Thumb |
// dst += (s1 * s2) void sceKrmBignumMulAdd(void *s1, uint32_t s2, void *dst, int words);
sceKrmBignumNMul
Version | Offset | Mode |
---|---|---|
3.60 | 0x63BC | Thumb |
// dst = (0 - dst) - (s1 * s2) int sceKrmBignumNMul(void *s1, uint32_t s2, void *dst, int words);
sceKrmBignumMod
Version | Offset | Mode |
---|---|---|
3.60 | 0x6F28 | Thumb |
// dst = s1 % s2 int sceKrmBignumMod(const void *s1, int s1_words, const void *s2, int s2_words, void *a5, int a6, void *dst);
sceKrmEcdsaVerifyCore
Version | Offset | Mode |
---|---|---|
3.60 | 0x5ACC | Thumb |
int sceKrmEcdsaVerifyCore(const void *hash, const void *pubkey, const void *sign, void *ctx);
ecdsa_ctx
Version | Segment | Offset |
---|---|---|
3.60 | data | 0x55C |
This is just variable.