Difference between revisions of "SceSblPostSsMgr"

From Vita Development Wiki
Jump to navigation Jump to search
Line 145: Line 145:
 
|}
 
|}
  
executes [[F00D_Commands#pm_sm.self|pm_sm.self]] commands 2,3,4,5,6,7,8,9,A
+
executes [[F00D_Commands#pm_sm.self|pm_sm.self]] commands 2, 3, 4, 5, 6, 7, 8, 9, 0xA
  
 
=== sceSblPmMgrGetProductMode2ForDriver ===
 
=== sceSblPmMgrGetProductMode2ForDriver ===

Revision as of 22:57, 18 August 2018

Module

Known NIDs

Version Name World Privilege NID
3.60 SceSblPostSsMgr Non-secure Kernel 0xB6C941F2

Libraries

Known NIDs

Version Name World Visibility NID
3.60 SceSblPostSsMgrForDriver ? Kernel 0x2254E1B2
3.60 SceZlibForDriver ? Kernel 0xE241534E
3.60 SceSblFwLoaderForDriver ? Kernel 0x6FE424E4
3.60 SceSblPmMgr ? User 0xA9CE5795
3.60 SceSblRtcMgr ? User 0x44C5F209
3.60 SceSblLicMgr ? User 0x62083C72
3.60 SceSblUtMgr ? User 0x000DF81A

SceSblPostSsMgrForDriver

Types

typedef struct spsfo_ctx
{
  SceUID mem_uid; //SceSblSpsfoMgr
  void* mem_block_base;
  uint32_t unk_8;
} spsfo_ctx;

sceSblPostSsMgrInitializeSpfsoCtxForDriver

Version NID
3.60 0xBDF18922

derived from _vshSblAuthMgrVerifySpsfo

int sceSblPostSsMgrInitializeSpfsoCtxForDriver(char *path, spsfo_ctx *result);

sceSblPostSsMgrVerifySpfsoCtxForDriver

Version NID
3.60 0x686B9461

derived from _vshSblAuthMgrVerifySpsfo

int sceSblPostSsMgrVerifySpfsoCtxForDriver(spsfo_ctx *ctx, int *res, int *size);

sceSblPostSsMgrReleaseSpfsoCtxForDriver

Version NID
3.60 0xAD3B0078

derived from _vshSblAuthMgrVerifySpsfo

int sceSblPostSsMgrReleaseSpfsoCtxForDriver(spsfo_ctx *ctx);

sceSblLicMgrGetActivationKeyForDriver

Version NID
3.60 0xF7F1015B
typedef struct activation_key // size is 0x14
{
   char open_psid[0x10]; // obtained with sceSblSsMgrGetOpenPsIdForDriver
   uint32_t vadd_hash; // result of vector add operation applied to open_psid
} activation_key;

int sceSblLicMgrGetActivationKeyForDriver(activation_key* key);

sceSblLicMgrActivateForDriver

Version NID
3.60 0x0298382B
int sceSblLicMgrActivateForDriver(char *afv_path);

sceSblLicMgrGetLicenseStatusForDriver

Version NID
3.60 0x15F37282
int sceSblLicMgrGetLicenseStatusForDriver(void);

sceSblLicMgrGetExpireDateForDriver

Version NID
3.60 0x4FF2682F

Get activation data expire date

int sceSblLicMgrGetExpireDateForDriver(int *expire_date, int request_data_flag);

sceSblPmMgrGetProductModeForDriver

Version NID
3.60 0xADF92824

executes pm_sm.self commands 2, 3, 4, 5, 6, 7, 8, 9, 0xA

sceSblPmMgrGetProductMode2ForDriver

Version NID
3.60 0xFE92A318

Executes pm_sm.self commands 2, 3, 4, 5, 6, 7, 8, 9, 0xA.

sceSblPmMgrGetProductModeFromNVSForDriver

Version NID
3.60 0x4663C195

Executes pm_sm.self command 8.

sceSblPmMgrAuthEtoIForDriver

Version NID
3.60 0x19B63D65

Executes pm_sm_sd.self commands 9, A.

sceSblPostSsMgrDecryptSealedkeyForDriver

Version NID
3.60 0x33275F95

data is 0x50 bytes of data from sealedkey

this function:

verifies pfsSKKey header

decrypts aes_key(pfsSKKey__EncKey) and hmac_key(pfsSKKey__Secret) using sceSblSsMgrEncryptWithPortabilityForDriver

verifies hmac256 value in HMAC Value

decrypts Encrypted key into dst_secret

//data - size 0x50
//dst_secret - size 0x10
int sceSblPostSsMgrDecryptSealedkeyForDriver(char* data, char* dst_secret);

sceSblPostSsMgrEncryptSealedkeyForDriver

Version NID
3.60 0x08525D8D

data is 0x50 bytes of data like in sealedkey

this function:

writes pfsSKKey header

decrypts aes_key(pfsSKKey__EncKey) and hmac_key(pfsSKKey__Secret) using sceSblSsMgrEncryptWithPortabilityForDriver

randomly generates 0x10 bytes of IV with sceSblSsMgrGetRandomNumberForDriver

randomly generates 0x10 bytes of secret with sceSblSsMgrGetRandomNumberForDriver

encrypts the secret into Encrypted key

calculates hmac256 value into HMAC Value

//dest_data - size 0x50
int sceSblPostSsMgrEncryptSealedkeyForDriver (char* dest_data);

sceSblPostSsMgrVerifyKeystoneForDriver

Version NID
3.60 0xDDA6FA6D

This function verifies magic in the header and HMAC of the keystone file

int sceSblPostSsMgrVerifyKeystoneForDriver(char* data, int version);

sceSblPostSsMgrVerifyKeystoneWithPasscodeForDriver

Version NID
3.60 0xF86F1452

This function calls sceSblPostSsMgrVerifyKeystoneForDriver. Then also verifies HMAC of passcode.

int sceSblPostSsMgrVerifyKeystoneWithPasscodeForDriver(char* keystone_data, char* passcode);

sceSblPostSsMgrDebugEncryptKeystoneForDriver

Version NID
3.60 0x42474C8B
int sceSblPostSsMgrDebugEncryptKeystoneForDriver(char* src_secret, char* dest_data);

sceSblPostSsMgrDebugDecryptKeystoneForDriver

Version NID
3.60 0xCC5AA5A5
int sceSblPostSsMgrDebugDecryptKeystoneForDriver(char* keystone_data, char* dst_secret);

sceSblUtMgrUpdateUtokenForDriver

Version NID
3.60 0xC2E58CE3

Executes utoken_sm command 1 (?to encrypt or verify buffer?) Writes a 0x800 buffer to tm0:utoken/utoken.dat.

Called by SceSblUtMgr_BDE74645.

// size = 0x800
int sceSblUtMgrExecuteUtokenSmCommand1ForDriver(char* buf, SceSize size);

sceSblUtMgrResetUtokenFileForDriver

Version NID
3.60 0x1FF699DD

Writes 0x800 blank tm0:utoken/utoken.dat or removes it.

Exported to userland by sceSblUtMgrResetUtokenFile.

int sceSblUtMgrResetUtokenFileForDriver(void);

sceSblUtMgrHasComTestFlagForDriver

Version NID
3.60 0x7ACCAA50

Derived from vshSblUtMgrHasComTestFlag.

int sceSblUtMgrHasComTestFlagForDriver(void);

sceSblUtMgrHasStoreFlagForDriver

Version NID
3.60 0x9D2E2D39

Derived from vshSblUtMgrHasStoreFlag.

int sceSblUtMgrHasStoreFlagForDriver(void);

sceSblUtMgrHasNpTestFlagForDriver

Version NID
3.60 0x9FD835B0

Derived from vshSblUtMgrHasNpTestFlag.

int sceSblUtMgrHasNpTestFlagForDriver(void);

sceSblRtcMgrSetCpRtcForDriver

Version NID
3.60 0x3F9BDEDF

Set RTC in DevKit CP.

int sceSblRtcMgrSetCpRtcForDriver(int rtc);

sceSblRtcMgrGetCpRtcPhysicalForDriver

Version NID
3.60 0x942010A0

sceSblRtcMgrGetCpRtcLogicalForDriver

Version NID
3.60 0xDE5150FE

SceZlibForDriver

SceSblFwLoaderForDriver

SceSblPmMgr

sceSblPmMgrSetProductModeOffForUser

Version NID
3.60 0x41FE8A37

sceSblPmMgrGetProductModeForUser

Version NID
3.60 0x46EA9FDB

Returns 0 on success.

Gets sysroot_buffer using sceKernelGetSysrootBufferForDriver.

result = ((int *)(sysroot_buffer->boot_type_indicator_1) >> 2) & 1; // manufacturing mode flag

int sceSblPmMgrGetProductModeForUser(int* result);

sceSblPmMgrGetProductModeFromNVS

Version NID
3.60 0x49CE0DDF

Calls sceSblPostSsMgrExecutePmSmF00dCommand8ForDriver.

sceSblPmMgrAuthEtoI

Version NID
3.60 0xBD38B141

sceSblPmMgrGetCurrentMode

Version NID
3.60 0xDA4EDEBF

Returns 0 on success.

Gets sysroot_buffer using sceKernelGetSysrootBufferForDriver.

result = ((int *)(sysroot_buffer->boot_type_indicator_1) >> 2) & 1; // manufacturing mode flag

int sceSblPmMgrGetCurrentMode(int* result);

SceSblRtcMgr

sceSblRtcMgrGetCpRtcPhysicalForUser

Version NID
3.60 0x1614302B

sceSblRtcMgrSetCpActivationKey

Version NID
3.60 0x298AE544

sceSblRtcMgrSetCpRtcPhysicalAndKey

Version NID
3.60 0x3C0EEC69

sceSblRtcMgrSetCpRtcLogical

Version NID
3.60 0x9DFB118B

sceSblRtcMgrSetCpRtcPhysicalForUser

Version NID
3.60 0xA990BC44

sceSblRtcMgrGetCpRtcLogical

Version NID
3.60 0xDD44D726

sceSblRtcMgrGetCpSerialId

Version NID
3.60 0xE162A827

Calls sceDeci4pCpupGetCpSerialIdForDriver.

SceSblLicMgr

Functions related to afv file.

sceSblLicMgrGetIssueNo

Version NID
3.60 0x0E0691A1
// if request_data_flag is 0 then some cached value is used
// if request_data_flag is 1 then data is requested from syscon
int sceSblLicMgrGetIssueNo(int *issue_number, int request_data_flag);

sceSblLicMgrGetLicenseStatus

Version NID
3.60 0x0EA6A30C
int sceSblLicMgrGetLicenseStatus();

sceSblLicMgrGetActivationKey

Version NID
3.60 0x2A437187
typedef struct activation_key // size is 0x14
{
   char open_psid[0x10]; // obtained with sceSblSsMgrGetOpenPsIdForDriver
   uint32_t vadd_hash; // result of vector add operation applied to openPSID
} activation_key;

int sceSblLicMgrGetActivationKey(activation_key* key);

sceSblLicMgrActivateFromFs

Version NID
3.60 0x6E56EA0A
// activates from ux0:/data/activate/
int sceSblLicMgrActivateFromFs();

sceSblLicMgrGetUsageTimeLimit

Version NID
3.60 0x774EBBA2
int sceSblLicMgrGetUsageTimeLimit(int *time_limit);

Uses sceSblSsMgrGetQAFlagsForKernel.

sceSblLicMgrClearActivationData

Version NID
3.60 0x9B749D1D
int sceSblLicMgrClearActivationData();

sceSblLicMgrGetExpireDate

Version NID
3.60 0xE9FA0FE5
// if request_data_flag is 0 then some cached value is used
// if request_data_flag is 1 then data is requested from syscon
int sceSblLicMgrGetExpireDate(int *expire_date, int request_data_flag);

sceSblLicMgrActivateDevkit

Version NID
3.60 0xEB21DD39
// afv_path is of size 0x100
int sceSblLicMgrActivateDevkit(char* afv_path);

SceSblUtMgr

sceSblUtMgrUpdateUtoken

Version NID
3.60 0xBDE74645

Calls sceSblUtMgrUpdateUtokenForDriver(buf, 0x800);.

// size = 0x800
int sceSblUtMgrUpdateUtoken(char* buf, SceSize size);

sceSblUtMgrReadUtoken

Version NID
3.60 0xD2836E0D
// size = 0x800
int sceSblUtMgrReadUtoken(char *buf, int SceSize size);

sceSblUtMgrResetUtokenFile

Version NID
3.60 0x1CD57182

Calls sceSblUtMgrResetUtokenFileForDriver.

int sceSblUtMgrResetUtokenFile(void);

sceSblUtMgrGetCurrentSecureTick

Version NID
3.60 0xCFCB1355

Calls sceRtcGetCurrentSecureTickForDriver then uses sceKernelMemcpyKernelToUserForDriver.

int sceSblUtMgrGetCurrentSecureTick(int* secure_tick);

sceSblUtMgrIsTrilithiumFlagEnabled

Version NID
3.60 0x04CA1311
// size = sizeof("UT_TRILITHIUM_FLAG") = 18
int SceSblUtMgr_04CA1311(char* buf, SceSize size);

buf takes value "UT_TRILITHIUM_FLAG" if a flag is enabled.