SceSblAuthMgr

From Vita Development Wiki
Jump to navigation Jump to search

Module

Known NIDs

Version Name World Privilege NID
1.69 SceSblAuthMgr Non-secure Kernel 0xEA5DFC93

Libraries

Known NIDs

Version Name World Visibility NID
1.69 SceSblAuthMgrForKernel Non-secure Kernel 0x7ABF5135
3.60 SceSblAuthMgrForKernel Non-secure Kernel 0x7ABF5135
1.69 SceSblAuthMgrForDriver Non-secure Kernel 0x4EB2B1BB
3.60 SceSblAuthMgrForDriver Non-secure Kernel 0x4EB2B1BB

SceSblAuthMgrForKernel

These functions are used for self decryption

sceSblAuthMgrStartF00DCommunication

Version NID
3.60 0xA9CD2A09
//if initialization is successful - ctx will be initialized to 1
int sceSblAuthMgrStartF00DCommunication(int* ctx);

sceSblAuthMgrShutDownCurrentlyLoadedSelf

Version NID
3.60 0x026ACBAD

executes special F00D command -1

//ctx - should equal 1 for successful deinit. it is obtained by calling sceSblAuthMgrStartF00DCommunication
int sceSblAuthMgrShutDownCurrentlyLoadedSelf(int ctx);

sceSblAuthMgrParseSelfHeader

Version NID
3.60 0xF3411881

Issues F00D command 0x10001

typedef struct header_ctx_request //size is 0x90
{
   uint32_t unk_8;
   uint32_t unk_C;
   
   uint32_t unk_10[20];
   
   uint32_t unk_60;
   uint32_t unk_64;
   char klicensee[0x10]; // offset 0x68
   
   uint32_t unk_78;
   uint32_t unk_7C;
   
   uint32_t unk_80;
   uint32_t unk_84;
   uint32_t unk_88;
   uint32_t unk_8C;
   
   uint32_t unk_90;
   uint32_t unk_94;
}header_ctx_request;

typedef struct header_ctx_response //size is 0x90
{
   char data[0x90]; // offset 0x98
}header_ctx_response;

typedef struct header_ctx // size is 0x130. probably SceSblSmCommContext130
{
   uint32_t unk_0;
   uint32_t unk_4; //used
   
   header_ctx_request req; //size is 0x90
   
   header_ctx_response resp; //size is 0x90
   
   uint32_t unk_128; // used
   uint32_t unk_12C;
   
}header_ctx;

//ctx - obtained with sceSblAuthMgrStartF00DCommunication
int sceSblAuthMgrParseSelfHeader(int ctx, char *self_header, int length, header_ctx *buffer);

sceSblAuthMgrSetSelfSegment

Version NID
3.60 0x89CCDA2C

Issues F00D command 0x20001

//ctx - obtained with sceSblAuthMgrStartF00DCommunication
int sceSblAuthMgrSetSelfSegment(int ctx, int segment_number);

sceSblAuthMgrDecryptSelfSegment

Version NID
3.60 0xBC422443

Issues F00D command 0x30001

sceSblAuthMgrSetDmac5Key

Version NID
1.05 0x122acdea
3.60 0x122acdea

Issues F00D command 0x50001

//key_size - in bytes
int sceSblAuthMgrSetDmac5Key(char *key, int key_size, int slot_id, int key_id);

sceSblAuthMgrClearDmac5Key

Version NID
1.05 0xf2bb723e
3.60 0xf2bb723e

Issues F00D command 0x60001

int sceSblAuthMgrClearDmac5Key(int unk0, int unk1);

sceSblAuthMgrReturnZero

Version NID
3.60 0x2A83A012

returns 0

unk_ABAB8466

Version NID
3.60 0xABAB8466

aligns unk0 on 12 bits and compares to 0x3600000

int unk_ABAB8466(int unk0);

SceSblAuthMgrForDriver

sceSblAuthMgrGetEKc

Version NID
1.05 0x868b9e9a
3.60 0x868b9e9a

Issues F00D command 0x40001

int sceSblAuthMgrGetEKc(void* data, int size, int key_id);

sceSblAuthMgrDecBindData

Version NID
1.05 0x41daea12
3.60 0x41daea12

Issues F00D command 0x70001

//request should contain pair of keys and rif data

int sceSblAuthMgrDecBindData(char* klicensee, int klicensee_len, char* request, int request_len, int zero);

sceSblAuthMgrVerifySpfsoCtx

Version NID
3.60 0x24C4CE64

Used by sceSblPostSsMgrVerifySpfsoCtxForDriver

Issues F00D command 0x80001

int sceSblAuthMgrVerifySpfsoCtx(spsfo_ctx *ctx);