SPL services: Difference between revisions
No edit summary |
|||
Line 1: | Line 1: | ||
= | = spl: = | ||
[2.0.0+] Where previously only one AES engine was utilized, there is now support for 4 of them. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 21: | Line 12: | ||
| 2 || [[#GenerateAesKek]] || wrapper for [[SMC#KeygenAndSealX|KeygenAndSealX]] | | 2 || [[#GenerateAesKek]] || wrapper for [[SMC#KeygenAndSealX|KeygenAndSealX]] | ||
|- | |- | ||
| 3 || LoadAesKey || wrapper for [[SMC#SetKeyslotFromXY|SetKeyslotFromXY]] | | 3 || [[#LoadAesKey]] || wrapper for [[SMC#SetKeyslotFromXY|SetKeyslotFromXY]] | ||
|- | |- | ||
| 4 || GenerateAesKey || decrypts 0x10 bytes using AES ECB, uses [[SMC#SetKeyslotFromXY|SetKeyslotFromXY]] with a fixed Y | | 4 || [[#GenerateAesKey]] || decrypts 0x10 bytes using AES ECB, uses [[SMC#SetKeyslotFromXY|SetKeyslotFromXY]] with a fixed Y | ||
|- | |- | ||
| 5 || [[#SetConfig]] || wrapper for [[SMC#SetConfig|SetConfig]] | | 5 || [[#SetConfig]] || wrapper for [[SMC#SetConfig|SetConfig]] | ||
Line 39: | Line 30: | ||
| 13 || [[#DecryptExpModParamsWithXY]] || wrapper for [[SMC#DecryptExpModParamsWithXY|DecryptExpModParamsWithXY]] | | 13 || [[#DecryptExpModParamsWithXY]] || wrapper for [[SMC#DecryptExpModParamsWithXY|DecryptExpModParamsWithXY]] | ||
|- | |- | ||
| 14 || || decrypts 0x10 bytes using AES ECB, uses [[SMC#SetKeyslotFromXY|SetKeyslotFromXY]] with fixed X and Y | | 14 || [[#GenerateAesKeyOther]] || decrypts 0x10 bytes using AES ECB, uses [[SMC#SetKeyslotFromXY|SetKeyslotFromXY]] with fixed X and Y | ||
|- | |- | ||
| 15 || DecryptAesCtr || wrapper for [[SMC#SymmetricCrypto|SymmetricCrypto]] | | 15 || [[#DecryptAesCtr]] || wrapper for [[SMC#SymmetricCrypto|SymmetricCrypto]] | ||
|- | |- | ||
| 16 || ComputeCmac || wrapper for [[SMC#CMAC|CMAC]] | | 16 || [[#ComputeCmac]] || wrapper for [[SMC#CMAC|CMAC]] | ||
|- | |- | ||
| 17 || || wrapper for [[SMC#ImportParamsFor10WithXY|ImportParamsFor10WithXY]] | | 17 || || wrapper for [[SMC#ImportParamsFor10WithXY|ImportParamsFor10WithXY]] | ||
Line 49: | Line 40: | ||
| 18 || || wrapper for [[SMC#ExpModAndKeygenAndSealZ|ExpModAndKeygenAndSealZ]] | | 18 || || wrapper for [[SMC#ExpModAndKeygenAndSealZ|ExpModAndKeygenAndSealZ]] | ||
|- | |- | ||
| 19 || || wrapper for [[SMC#SetKeyslotFromZ|SetKeyslotFromZ]] | | 19 || [[#SetKeyslotFromZ]] || wrapper for [[SMC#SetKeyslotFromZ|SetKeyslotFromZ]] | ||
|- | |- | ||
| 20 || || wrapper for [[SMC#KeygenAndSealZ|KeygenAndSealZ]] | | 20 || [2.0.0+] || wrapper for [[SMC#KeygenAndSealZ|KeygenAndSealZ]] | ||
|- | |- | ||
| 21 || [[# | | 21 || [2.0.0+] [[#LockAesEngine]] || | ||
|- | |- | ||
| 22 || [[# | | 22 || [2.0.0+] [[#UnlockAesEngine]] || | ||
|- | |- | ||
| 23 || GetSplWaitEvent || | | 23 || [2.0.0+] GetSplWaitEvent || | ||
|} | |} | ||
Line 99: | Line 90: | ||
Same input gives same output. Output changes when system is rebooted. | Same input gives same output. Output changes when system is rebooted. | ||
== LoadAesKey == | |||
[2.0.0+] Now verifies that the engine used (0..3) is locked/owned by the current spl session, otherwise errors with 0xD21A. Previously engine was hardcoded to 0. | |||
== GenerateAesKey == | |||
[2.0.0+] Previously it used engine 0 always. Now it tries to allocate an engine to be used, returns 0xD01A if they're all busy. After command is done, the engine is released. | |||
== SetConfig == | == SetConfig == | ||
Line 107: | Line 104: | ||
! ConfigItem || Name | ! ConfigItem || Name | ||
|- | |- | ||
| 13 || | | 13 || BatteryProfile? | ||
|} | |} | ||
Line 120: | Line 117: | ||
Last SPL cmd used by [[SSL_services|SSL]]-sysmodule for TLS client-privk. | Last SPL cmd used by [[SSL_services|SSL]]-sysmodule for TLS client-privk. | ||
== | == GenerateAesKeyOther == | ||
Returns | Scrambles with a different constant than non-"other" version. | ||
[2.0.0+] Introduced same engine allocation code as for [[#GenerateAesKey]]. | |||
== DecryptAesCtr == | |||
[2.0.0+] Verifies the engine is locked by current session, same change as [[#LoadAesKey]]. | |||
== ComputeCmac == | |||
[2.0.0+] Verifies the engine is locked by current session, same change as [[#LoadAesKey]]. | |||
== SetKeyslotFromZ == | |||
[2.0.0+] Verifies the engine is locked by current session, same change as [[#LoadAesKey]]. | |||
== LockAesEngine == | |||
Returns the id of the engine that was locked, or 0xD01A if all engines are busy. You need to lock an engine before using AES functions. | |||
== | == UnlockAesEngine == | ||
Takes a single u32 | Takes a single u32 and unlocks the engine with that id. It must be owned by current session otherwise 0xD21A will be returned. |