Line 39: |
Line 39: |
| | 25 || [3.0.0+] [[#GetBootReason]] | | | 25 || [3.0.0+] [[#GetBootReason]] |
| |} | | |} |
| + | |
| + | == GetConfig == |
| + | Wrapper for [[SMC#GetConfig|GetConfig SMC]]. |
| + | |
| + | Takes an input u32 '''ConfigItem'''. Returns one or more output u64s '''ConfigValue'''. |
| + | |
| + | == ExpMod == |
| + | Wrapper for [[SMC#ExpMod|ExpMod SMC]]. |
| + | |
| + | Takes an output type-0xA buffer '''DataOut''' and 3 input type-0x9 buffers '''DataIn''', '''ExpIn''' and '''ModIn'''. |
| + | |
| + | Performs asymmetric crypto with user supplied modulus and exponent. |
| + | |
| + | == GenerateAesKek == |
| + | Wrapper for [[SMC#GenerateAesKek|GenerateAesKek SMC]]. |
| + | |
| + | Takes an input 16-byte '''KeySource''' and two input u32s '''Generation''' and '''Option'''. Returns an output 16-byte '''AccessKey'''. |
| + | |
| + | == LoadAesKey == |
| + | Wrapper for [[SMC#LoadAesKey|LoadAesKey SMC]]. |
| + | |
| + | Takes an input u32 '''Keyslot''' , an input 16-byte '''AccessKey''' and an input 16-byte '''KeySource'''. |
| + | |
| + | Sets the specified '''Keyslot''' with a key generated from '''AccessKey''' and '''KeySource'''. |
| + | |
| + | [2.0.0+] Now verifies that the keyslot in use (0..3) is allocated by the current spl session, otherwise errors with 0xD21A. Previously, keyslot was hardcoded to 0. |
| + | |
| + | == GenerateAesKey == |
| + | Takes an input 16-byte '''AccessKey''' and an input 16-byte '''KeySource'''. Returns an output 16-byte '''AesKey'''. |
| + | |
| + | Generates a new key by decrypting (AES-ECB) '''KeySource''' with a key generated from the supplied '''AccessKey''' and the key set with [[SMC#LoadAesKey|LoadAesKey SMC]]. |
| + | |
| + | [2.0.0+] Previously, it always used keyslot 0. Now it tries to allocate a keyslot to be used and returns 0xD01A if they're all busy. When the command is done, the keyslot is released. |
| + | |
| + | == SetConfig == |
| + | Wrapper for [[SMC#SetConfig|SetConfig SMC]]. |
| + | |
| + | Takes an input u32 '''ConfigItem''' and an input u64 '''ConfigValue'''. |
| + | |
| + | Only '''ConfigItem''' 13 (IsChargerHiZModeEnabled) can be set. |
| + | |
| + | == ImportLotusKey == |
| + | Wrapper for [[SMC#ImportLotusKey|ImportLotusKey SMC]]. |
| + | |
| + | Takes an input type-0x9 buffer '''DataIn''', an input 16-byte '''AccessKey''', an input 16-byte '''KeySource''' and an input u32 '''Version''' (0 for normal keys or 1 for extended keys). |
| + | |
| + | Decrypts '''DataIn''' with a key generated from '''AccessKey''' and '''KeySource''' and imports it for later usage. |
| + | |
| + | [5.0.0+] The '''Version''' argument was removed and this now calls the [[SMC#ReEncryptRsaPrivateKey|ReEncryptRsaPrivateKey SMC]] instead. |
| + | |
| + | == DecryptLotusMessage == |
| + | Takes 3 input type-0x9 buffers '''DataIn''', '''ModIn''' and '''LabelHashIn'''. |
| + | |
| + | Uses the [[SMC#SecureExpMod|SecureExpMod SMC]] to decrypt '''DataIn''' using the private key imported with [[#ImportLotusKey]] and the supplied '''ModIn''' and '''LabelHashIn'''. |
| + | |
| + | == IsDevelopment == |
| + | No input. Returns an output u8 bool. |
| + | |
| + | Uses [[#GetConfig]] internally. |
| + | |
| + | == GenerateSpecificAesKey == |
| + | Wrapper for [[SMC#GenerateSpecificAesKey|GenerateSpecificAesKey SMC]]. |
| + | |
| + | Takes an input 16-byte '''KeySource''' and two input u32s '''Generation''' and '''Option'''. Returns an output 16-byte '''AesKey'''. |
| + | |
| + | == DecryptRsaPrivateKey == |
| + | Wrapper for [[SMC#DecryptRsaPrivateKey|DecryptRsaPrivateKey SMC]]. |
| + | |
| + | Takes an output type-0xA buffer '''DataOut''', an input type-0x9 '''DataIn''', an input 16-byte '''AccessKey''', an input 16-byte '''KeySource''' and an input u32 '''Version''' (0 for normal keys or 1 for extended keys). |
| + | |
| + | Decrypts '''DataIn''' into '''DataOut''' with a key generated from '''AccessKey''' and '''KeySource'''. |
| + | |
| + | Used by [[SSL_services|SSL]] for TLS client-privk. |
| + | |
| + | [5.0.0+] The '''Version''' argument was removed and this now calls [[SMC#DecryptOrImportRsaPrivateKey|DecryptOrImportRsaPrivateKey SMC]] instead. |
| + | |
| + | == DecryptAesKey == |
| + | Takes an input 16-byte '''KeySource''' and two input u32s '''Generation''' and '''Option'''. Returns an output 16-byte '''AesKey'''. |
| + | |
| + | Decrypts (AES-ECB) '''KeySource''' with a key set with [[SMC#LoadAesKey|LoadAesKey SMC]]. |
| + | |
| + | [2.0.0+] Introduced same keyslot allocation code as for [[#GenerateAesKey]]. |
| + | |
| + | == CryptAesCtr == |
| + | Takes an output type-0x46 buffer '''DataOut''', an input u32 '''Keyslot''', an input type-0x45 buffer '''DataIn''' and an input 16-byte '''IvCtr'''. |
| + | |
| + | Uses [[SMC#ComputeAes|ComputeAes SMC]] to decrypt '''DataIn''' into '''DataOut''' using the key set in the specified '''Keyslot'''. |
| + | |
| + | [2.0.0+] Verifies the keyslot was allocated by the current session. |
| + | |
| + | == ComputeCmac == |
| + | Wrapper for [[SMC#ComputeCmac|ComputeCmac SMC]]. |
| + | |
| + | Takes an input type-0x9 buffer '''DataIn''' and an input u32 '''Keyslot'''. Returns an output 16-byte '''Cmac'''. |
| + | |
| + | [2.0.0+] Verifies the keyslot was allocated by the current session. |
| + | |
| + | == ImportEsKey == |
| + | Wrapper for [[SMC#ImportEsKey|ImportEsKey SMC]]. |
| + | |
| + | Takes an input type-0x9 buffer '''DataIn''', an input 16-byte '''AccessKey''', an input 16-byte '''KeySource''' and an input u32 '''Version''' (0 for normal keys or 1 for extended keys). |
| + | |
| + | Decrypts '''DataIn''' with a key generated from '''AccessKey''' and '''KeySource''' and imports it for later usage. |
| + | |
| + | [5.0.0+] The '''Version''' argument was removed and this now calls the [[SMC#ReEncryptRsaPrivateKey|ReEncryptRsaPrivateKey SMC]] instead. |
| + | |
| + | == UnwrapTitleKey == |
| + | Wrapper for [[SMC#UnwrapTitleKey|UnwrapTitleKey SMC]]. |
| + | |
| + | Takes an output type-0xA buffer '''DataOut''' and 3 input type-0x9 buffers '''DataIn''', '''ModIn''' and '''LabelHashIn'''. Returns an output u32 '''DataOutSize'''. |
| + | |
| + | [3.0.0+] Now takes an input u32 '''Generation'''. |
| + | |
| + | Decrypts '''DataIn''' into '''DataOut''' using the private key imported with [[#ImportEsKey]] and the supplied '''ModIn'''. Afterwards, verifies RSA-OAEP encoding using '''LabelHashIn'''. |
| + | |
| + | == LoadTitleKey == |
| + | Wrapper for [[SMC#LoadTitleKey|LoadTitleKey SMC]]. |
| + | |
| + | Takes an input u32 '''Keyslot''' and an input 16-byte '''AccessKey'''. |
| + | |
| + | [2.0.0+] Verifies the keyslot was allocated in the current session. |
| + | |
| + | == UnwrapCommonTitleKey == |
| + | Wrapper for [[SMC#UnwrapCommonTitleKey|UnwrapCommonTitleKey SMC]]. |
| + | |
| + | Takes an input 16-byte '''KeySource'''. Returns an output 16-byte '''AccessKey'''. |
| + | |
| + | [3.0.0+] Now takes an input u32 '''Generation'''. |
| + | |
| + | == AllocateAesKeyslot == |
| + | Returns an output u32 '''Keyslot'''. |
| + | |
| + | Returns error 0xD01A if all keyslots are taken. |
| + | |
| + | == FreeAesKeyslot == |
| + | Takes an input u32 '''Keyslot'''. |
| + | |
| + | Returns error 0xD21A if the keyslot wasn't allocated by current session. |
| + | |
| + | == GetAesKeyslotAvailableEvent == |
| + | Returns an output event handle for synchronizing with the AES keyslots. |
| + | |
| + | == SetBootReason == |
| + | Takes an input u32 '''BootReason'''. |
| + | |
| + | [4.0.0+] Returns 0xD41A if a value has been previously set without being [[#GetBootReason|gotten]]. |
| + | |
| + | == GetBootReason == |
| + | Returns an output u32 '''BootReason'''. |
| + | |
| + | [4.0.0+] Returns 0xD61A if a value has not previously been set and unsets the value after getting it. |
| + | |
| + | == LoadElicenseKey == |
| + | Same as [[#LoadTitleKey|LoadTitleKey]]. |
| | | |
| = spl:mig = | | = spl:mig = |
Line 275: |
Line 429: |
| | 30 || [5.0.0+] ReEncryptRsaPrivateKey | | | 30 || [5.0.0+] ReEncryptRsaPrivateKey |
| |} | | |} |
− |
| |
− | == GetConfig ==
| |
− | Wrapper for [[SMC#GetConfig|GetConfig SMC]].
| |
− |
| |
− | Takes an input u32 '''ConfigItem'''. Returns one or more output u64s '''ConfigValue'''.
| |
− |
| |
− | == ExpMod ==
| |
− | Wrapper for [[SMC#ExpMod|ExpMod SMC]].
| |
− |
| |
− | Takes an output type-0xA buffer '''DataOut''' and 3 input type-0x9 buffers '''DataIn''', '''ExpIn''' and '''ModIn'''.
| |
− |
| |
− | Performs asymmetric crypto with user supplied modulus and exponent.
| |
− |
| |
− | == GenerateAesKek ==
| |
− | Wrapper for [[SMC#GenerateAesKek|GenerateAesKek SMC]].
| |
− |
| |
− | Takes an input 16-byte '''KeySource''' and two input u32s '''Generation''' and '''Option'''. Returns an output 16-byte '''AccessKey'''.
| |
− |
| |
− | == LoadAesKey ==
| |
− | Wrapper for [[SMC#LoadAesKey|LoadAesKey SMC]].
| |
− |
| |
− | Takes an input u32 '''Keyslot''' , an input 16-byte '''AccessKey''' and an input 16-byte '''KeySource'''.
| |
− |
| |
− | Sets the specified '''Keyslot''' with a key generated from '''AccessKey''' and '''KeySource'''.
| |
− |
| |
− | [2.0.0+] Now verifies that the keyslot in use (0..3) is allocated by the current spl session, otherwise errors with 0xD21A. Previously, keyslot was hardcoded to 0.
| |
− |
| |
− | == GenerateAesKey ==
| |
− | Takes an input 16-byte '''AccessKey''' and an input 16-byte '''KeySource'''. Returns an output 16-byte '''AesKey'''.
| |
− |
| |
− | Generates a new key by decrypting (AES-ECB) '''KeySource''' with a key generated from the supplied '''AccessKey''' and the key set with [[SMC#LoadAesKey|LoadAesKey SMC]].
| |
− |
| |
− | [2.0.0+] Previously, it always used keyslot 0. Now it tries to allocate a keyslot to be used and returns 0xD01A if they're all busy. When the command is done, the keyslot is released.
| |
− |
| |
− | == SetConfig ==
| |
− | Wrapper for [[SMC#SetConfig|SetConfig SMC]].
| |
− |
| |
− | Takes an input u32 '''ConfigItem''' and an input u64 '''ConfigValue'''.
| |
− |
| |
− | Only '''ConfigItem''' 13 (IsChargerHiZModeEnabled) can be set.
| |
− |
| |
− | == ImportLotusKey ==
| |
− | Wrapper for [[SMC#ImportLotusKey|ImportLotusKey SMC]].
| |
− |
| |
− | Takes an input type-0x9 buffer '''DataIn''', an input 16-byte '''AccessKey''', an input 16-byte '''KeySource''' and an input u32 '''Version''' (0 for normal keys or 1 for extended keys).
| |
− |
| |
− | Decrypts '''DataIn''' with a key generated from '''AccessKey''' and '''KeySource''' and imports it for later usage.
| |
− |
| |
− | [5.0.0+] The '''Version''' argument was removed and this now calls the [[SMC#ReEncryptRsaPrivateKey|ReEncryptRsaPrivateKey SMC]] instead.
| |
− |
| |
− | == DecryptLotusMessage ==
| |
− | Takes 3 input type-0x9 buffers '''DataIn''', '''ModIn''' and '''LabelHashIn'''.
| |
− |
| |
− | Uses the [[SMC#SecureExpMod|SecureExpMod SMC]] to decrypt '''DataIn''' using the private key imported with [[#ImportLotusKey]] and the supplied '''ModIn''' and '''LabelHashIn'''.
| |
− |
| |
− | == IsDevelopment ==
| |
− | No input. Returns an output u8 bool.
| |
− |
| |
− | Uses [[#GetConfig]] internally.
| |
− |
| |
− | == GenerateSpecificAesKey ==
| |
− | Wrapper for [[SMC#GenerateSpecificAesKey|GenerateSpecificAesKey SMC]].
| |
− |
| |
− | Takes an input 16-byte '''KeySource''' and two input u32s '''Generation''' and '''Option'''. Returns an output 16-byte '''AesKey'''.
| |
− |
| |
− | == DecryptRsaPrivateKey ==
| |
− | Wrapper for [[SMC#DecryptRsaPrivateKey|DecryptRsaPrivateKey SMC]].
| |
− |
| |
− | Takes an output type-0xA buffer '''DataOut''', an input type-0x9 '''DataIn''', an input 16-byte '''AccessKey''', an input 16-byte '''KeySource''' and an input u32 '''Version''' (0 for normal keys or 1 for extended keys).
| |
− |
| |
− | Decrypts '''DataIn''' into '''DataOut''' with a key generated from '''AccessKey''' and '''KeySource'''.
| |
− |
| |
− | Used by [[SSL_services|SSL]] for TLS client-privk.
| |
− |
| |
− | [5.0.0+] The '''Version''' argument was removed and this now calls [[SMC#DecryptOrImportRsaPrivateKey|DecryptOrImportRsaPrivateKey SMC]] instead.
| |
− |
| |
− | == DecryptAesKey ==
| |
− | Takes an input 16-byte '''KeySource''' and two input u32s '''Generation''' and '''Option'''. Returns an output 16-byte '''AesKey'''.
| |
− |
| |
− | Decrypts (AES-ECB) '''KeySource''' with a key set with [[SMC#LoadAesKey|LoadAesKey SMC]].
| |
− |
| |
− | [2.0.0+] Introduced same keyslot allocation code as for [[#GenerateAesKey]].
| |
− |
| |
− | == CryptAesCtr ==
| |
− | Takes an output type-0x46 buffer '''DataOut''', an input u32 '''Keyslot''', an input type-0x45 buffer '''DataIn''' and an input 16-byte '''IvCtr'''.
| |
− |
| |
− | Uses [[SMC#ComputeAes|ComputeAes SMC]] to decrypt '''DataIn''' into '''DataOut''' using the key set in the specified '''Keyslot'''.
| |
− |
| |
− | [2.0.0+] Verifies the keyslot was allocated by the current session.
| |
− |
| |
− | == ComputeCmac ==
| |
− | Wrapper for [[SMC#ComputeCmac|ComputeCmac SMC]].
| |
− |
| |
− | Takes an input type-0x9 buffer '''DataIn''' and an input u32 '''Keyslot'''. Returns an output 16-byte '''Cmac'''.
| |
− |
| |
− | [2.0.0+] Verifies the keyslot was allocated by the current session.
| |
− |
| |
− | == ImportEsKey ==
| |
− | Wrapper for [[SMC#ImportEsKey|ImportEsKey SMC]].
| |
− |
| |
− | Takes an input type-0x9 buffer '''DataIn''', an input 16-byte '''AccessKey''', an input 16-byte '''KeySource''' and an input u32 '''Version''' (0 for normal keys or 1 for extended keys).
| |
− |
| |
− | Decrypts '''DataIn''' with a key generated from '''AccessKey''' and '''KeySource''' and imports it for later usage.
| |
− |
| |
− | [5.0.0+] The '''Version''' argument was removed and this now calls the [[SMC#ReEncryptRsaPrivateKey|ReEncryptRsaPrivateKey SMC]] instead.
| |
− |
| |
− | == UnwrapTitleKey ==
| |
− | Wrapper for [[SMC#UnwrapTitleKey|UnwrapTitleKey SMC]].
| |
− |
| |
− | Takes an output type-0xA buffer '''DataOut''' and 3 input type-0x9 buffers '''DataIn''', '''ModIn''' and '''LabelHashIn'''. Returns an output u32 '''DataOutSize'''.
| |
− |
| |
− | [3.0.0+] Now takes an input u32 '''Generation'''.
| |
− |
| |
− | Decrypts '''DataIn''' into '''DataOut''' using the private key imported with [[#ImportEsKey]] and the supplied '''ModIn'''. Afterwards, verifies RSA-OAEP encoding using '''LabelHashIn'''.
| |
− |
| |
− | == LoadTitleKey ==
| |
− | Wrapper for [[SMC#LoadTitleKey|LoadTitleKey SMC]].
| |
− |
| |
− | Takes an input u32 '''Keyslot''' and an input 16-byte '''AccessKey'''.
| |
− |
| |
− | [2.0.0+] Verifies the keyslot was allocated in the current session.
| |
− |
| |
− | == UnwrapCommonTitleKey ==
| |
− | Wrapper for [[SMC#UnwrapCommonTitleKey|UnwrapCommonTitleKey SMC]].
| |
− |
| |
− | Takes an input 16-byte '''KeySource'''. Returns an output 16-byte '''AccessKey'''.
| |
− |
| |
− | [3.0.0+] Now takes an input u32 '''Generation'''.
| |
− |
| |
− | == AllocateAesKeyslot ==
| |
− | Returns an output u32 '''Keyslot'''.
| |
− |
| |
− | Returns error 0xD01A if all keyslots are taken.
| |
− |
| |
− | == FreeAesKeyslot ==
| |
− | Takes an input u32 '''Keyslot'''.
| |
− |
| |
− | Returns error 0xD21A if the keyslot wasn't allocated by current session.
| |
− |
| |
− | == GetAesKeyslotAvailableEvent ==
| |
− | Returns an output event handle for synchronizing with the AES keyslots.
| |
− |
| |
− | == SetBootReason ==
| |
− | Takes an input u32 '''BootReason'''.
| |
− |
| |
− | [4.0.0+] Returns 0xD41A if a value has been previously set without being [[#GetBootReason|gotten]].
| |
− |
| |
− | == GetBootReason ==
| |
− | Returns an output u32 '''BootReason'''.
| |
− |
| |
− | [4.0.0+] Returns 0xD61A if a value has not previously been set and unsets the value after getting it.
| |
− |
| |
− | == LoadElicenseKey ==
| |
− | Same as [[#LoadTitleKey|LoadTitleKey]].
| |
| | | |
| [[Category:Services]] | | [[Category:Services]] |