SPL services: Difference between revisions
No edit summary  | 
				No edit summary  | 
				||
| Line 16: | Line 16: | ||
== GenerateRandomBytes ==  | == GenerateRandomBytes ==  | ||
Takes an output type-0xA buffer and fills it with random data from [[SMC#  | Takes an output type-0xA buffer and fills it with random data from [[SMC#GenerateRandomBytes|GenerateRandomBytes SMC]]. Same command for "spl:" and "csrng" services, except for buffer-type.  | ||
= spl: =  | = spl: =  | ||
| Line 27: | Line 27: | ||
| 0 || [[#GetConfig]]  | | 0 || [[#GetConfig]]  | ||
|-  | |-  | ||
| 1 || [[#  | | 1 || [[#ModularExponentiate]]  | ||
|-  | |-  | ||
| 5 || [[#SetConfig]]  | | 5 || [[#SetConfig]]  | ||
| Line 45: | Line 45: | ||
Takes an input u32 '''ConfigItem'''. Returns one or more output u64s '''ConfigValue'''.  | Takes an input u32 '''ConfigItem'''. Returns one or more output u64s '''ConfigValue'''.  | ||
==   | == ModularExponentiate ==  | ||
Wrapper for [[SMC#  | Wrapper for [[SMC#ModularExponentiate|ModularExponentiate SMC]].  | ||
Takes an output type-0xA buffer '''DataOut''' and 3 input type-0x9 buffers '''DataIn''', '''ExpIn''' and '''ModIn'''.  | Takes an output type-0xA buffer '''DataOut''' and 3 input type-0x9 buffers '''DataIn''', '''ExpIn''' and '''ModIn'''.  | ||
| Line 81: | Line 81: | ||
== ImportLotusKey ==  | == ImportLotusKey ==  | ||
Wrapper for [[SMC#  | Wrapper for [[SMC#DecryptAndImportLotusKey|DecryptAndImportLotusKey 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).  | 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).  | ||
| Line 87: | Line 87: | ||
Decrypts '''DataIn''' with a key generated from '''AccessKey''' and '''KeySource''' and imports it for later usage.  | 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#  | [5.0.0+] The '''Version''' argument was removed and this now calls the [[SMC#ReencryptDeviceUniqueData|ReencryptDeviceUniqueData SMC]] instead.  | ||
== DecryptLotusMessage ==  | == DecryptLotusMessage ==  | ||
Takes 3 input type-0x9 buffers '''DataIn''', '''ModIn''' and '''LabelHashIn'''.  | Takes 3 input type-0x9 buffers '''DataIn''', '''ModIn''' and '''LabelHashIn'''.  | ||
Uses the [[SMC#  | Uses the [[SMC#ModularExponentiateByStorageKey|ModularExponentiateByStorageKey SMC]] to decrypt '''DataIn''' using the private key imported with [[#ImportLotusKey]] and the supplied '''ModIn''' and '''LabelHashIn'''.  | ||
== IsDevelopment ==  | == IsDevelopment ==  | ||
| Line 104: | Line 104: | ||
Takes an input 16-byte '''KeySource''' and two input u32s '''Generation''' and '''Option'''. Returns an output 16-byte '''AesKey'''.  | Takes an input 16-byte '''KeySource''' and two input u32s '''Generation''' and '''Option'''. Returns an output 16-byte '''AesKey'''.  | ||
==   | == DecryptDeviceUniqueData ==  | ||
Wrapper for [[SMC#  | Wrapper for [[SMC#DecryptDeviceUniqueData|DecryptDeviceUniqueData 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).  | 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).  | ||
| Line 113: | Line 113: | ||
Used by [[SSL_services|SSL]] for TLS client-privk.  | Used by [[SSL_services|SSL]] for TLS client-privk.  | ||
[5.0.0+] The '''Version''' argument was removed   | [5.0.0+] The '''Version''' argument was removed.  | ||
== DecryptAesKey ==  | == DecryptAesKey ==  | ||
| Line 137: | Line 137: | ||
== ImportEsKey ==  | == ImportEsKey ==  | ||
Wrapper for [[SMC#  | Wrapper for [[SMC#DecryptAndImportEsDeviceKey|DecryptAndImportEsDeviceKey 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).  | 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).  | ||
| Line 143: | Line 143: | ||
Decrypts '''DataIn''' with a key generated from '''AccessKey''' and '''KeySource''' and imports it for later usage.  | 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#  | [5.0.0+] The '''Version''' argument was removed and this now calls the [[SMC#ReencryptDeviceUniqueData|ReencryptDeviceUniqueData SMC]] instead.  | ||
== UnwrapTitleKey ==  | == UnwrapTitleKey ==  | ||
Wrapper for [[SMC#  | Wrapper for [[SMC#PrepareEsDeviceUniqueKey|PrepareEsDeviceUniqueKey SMC]].  | ||
Takes an output type-0xA buffer '''DataOut''' and 3 input type-0x9 buffers '''DataIn''', '''ModIn''' and '''LabelHashIn'''. Returns an output u32 '''DataOutSize'''.  | Takes an output type-0xA buffer '''DataOut''' and 3 input type-0x9 buffers '''DataIn''', '''ModIn''' and '''LabelHashIn'''. Returns an output u32 '''DataOutSize'''.  | ||
| Line 155: | Line 155: | ||
== LoadTitleKey ==  | == LoadTitleKey ==  | ||
Wrapper for [[SMC#  | Wrapper for [[SMC#LoadPreparedAesKey|LoadPreparedAesKey SMC]].  | ||
Takes an input u32 '''Keyslot''' and an input 16-byte '''AccessKey'''.  | Takes an input u32 '''Keyslot''' and an input 16-byte '''AccessKey'''.  | ||
| Line 162: | Line 162: | ||
== UnwrapCommonTitleKey ==  | == UnwrapCommonTitleKey ==  | ||
Wrapper for [[SMC#  | Wrapper for [[SMC#PrepareEsCommonKey|PrepareEsCommonKey SMC]].  | ||
Takes an input 16-byte '''KeySource'''. Returns an output 16-byte '''AccessKey'''.  | Takes an input 16-byte '''KeySource'''. Returns an output 16-byte '''AccessKey'''.  | ||
| Line 173: | Line 173: | ||
Returns error 0xD01A if all keyslots are taken.  | Returns error 0xD01A if all keyslots are taken.  | ||
==   | == DeallocateAesKeySlot ==  | ||
Takes an input u32 '''Keyslot'''.  | Takes an input u32 '''Keyslot'''.  | ||
| Line 191: | Line 191: | ||
[4.0.0+] Returns 0xD61A if a value has not previously been set and unsets the value after getting it.  | [4.0.0+] Returns 0xD61A if a value has not previously been set and unsets the value after getting it.  | ||
==   | == LoadPreparedAesKey ==  | ||
Same as [[#LoadTitleKey|LoadTitleKey]].  | Same as [[#LoadTitleKey|LoadTitleKey]].  | ||
| Line 203: | Line 203: | ||
| 0 || [[#GetConfig]]  | | 0 || [[#GetConfig]]  | ||
|-  | |-  | ||
| 1 || [[#  | | 1 || [[#ModularExponentiate]]  | ||
|-  | |-  | ||
| 5 || [[#SetConfig]]  | | 5 || [[#SetConfig]]  | ||
| Line 229: | Line 229: | ||
| 21 || [2.0.0+] [[#AllocateAesKeyslot]]  | | 21 || [2.0.0+] [[#AllocateAesKeyslot]]  | ||
|-  | |-  | ||
| 22 || [2.0.0+] [[#  | | 22 || [2.0.0+] [[#DeallocateAesKeySlot]]  | ||
|-  | |-  | ||
| 23 || [2.0.0+] [[#GetAesKeyslotAvailableEvent]]  | | 23 || [2.0.0+] [[#GetAesKeyslotAvailableEvent]]  | ||
| Line 243: | Line 243: | ||
| 0 || [[#GetConfig]]  | | 0 || [[#GetConfig]]  | ||
|-  | |-  | ||
| 1 || [[#  | | 1 || [[#ModularExponentiate]]  | ||
|-  | |-  | ||
| 5 || [[#SetConfig]]  | | 5 || [[#SetConfig]]  | ||
| Line 269: | Line 269: | ||
| 21 || [2.0.0+] [[#AllocateAesKeyslot]]  | | 21 || [2.0.0+] [[#AllocateAesKeyslot]]  | ||
|-  | |-  | ||
| 22 || [2.0.0+] [[#  | | 22 || [2.0.0+] [[#DeallocateAesKeySlot]]  | ||
|-  | |-  | ||
| 23 || [2.0.0+] [[#GetAesKeyslotAvailableEvent]]  | | 23 || [2.0.0+] [[#GetAesKeyslotAvailableEvent]]  | ||
| Line 293: | Line 293: | ||
| 0 || [[#GetConfig]]  | | 0 || [[#GetConfig]]  | ||
|-  | |-  | ||
| 1 || [[#  | | 1 || [[#ModularExponentiate]]  | ||
|-  | |-  | ||
| 5 || [[#SetConfig]]  | | 5 || [[#SetConfig]]  | ||
| Line 319: | Line 319: | ||
| 21 || [2.0.0+] [[#AllocateAesKeyslot]]  | | 21 || [2.0.0+] [[#AllocateAesKeyslot]]  | ||
|-  | |-  | ||
| 22 || [2.0.0+] [[#  | | 22 || [2.0.0+] [[#DeallocateAesKeySlot]]  | ||
|-  | |-  | ||
| 23 || [2.0.0+] [[#GetAesKeyslotAvailableEvent]]  | | 23 || [2.0.0+] [[#GetAesKeyslotAvailableEvent]]  | ||
|-  | |-  | ||
| 13 || [[#  | | 13 || [[#DecryptDeviceUniqueData]]  | ||
|-  | |-  | ||
| 26 || [5.0.0+]   | | 26 || [5.0.0+] DecryptAndStoreSslClientCertKey  | ||
|-  | |-  | ||
| 27 || [5.0.0+]   | | 27 || [5.0.0+] ModularExponentiateWithSslClientCertKey  | ||
|}  | |}  | ||
| Line 339: | Line 339: | ||
| 0 || [[#GetConfig]]  | | 0 || [[#GetConfig]]  | ||
|-  | |-  | ||
| 1 || [[#  | | 1 || [[#ModularExponentiate]]  | ||
|-  | |-  | ||
| 5 || [[#SetConfig]]  | | 5 || [[#SetConfig]]  | ||
| Line 365: | Line 365: | ||
| 21 || [2.0.0+] [[#AllocateAesKeyslot]]  | | 21 || [2.0.0+] [[#AllocateAesKeyslot]]  | ||
|-  | |-  | ||
| 22 || [2.0.0+] [[#  | | 22 || [2.0.0+] [[#DeallocateAesKeySlot]]  | ||
|-  | |-  | ||
| 23 || [2.0.0+] [[#GetAesKeyslotAvailableEvent]]  | | 23 || [2.0.0+] [[#GetAesKeyslotAvailableEvent]]  | ||
|-  | |-  | ||
| 13 || [[#  | | 13 || [[#DecryptDeviceUniqueData]]  | ||
|-  | |-  | ||
| 17 || [[#ImportEsKey]]  | | 17 || [[#ImportEsKey]]  | ||
| Line 375: | Line 375: | ||
| 18 || [[#UnwrapTitleKey]]  | | 18 || [[#UnwrapTitleKey]]  | ||
|-  | |-  | ||
| 20 || [2.0.0+] [[#  | | 20 || [2.0.0+] [[#PrepareEsCommonKey]]  | ||
|-  | |-  | ||
| 28 || [5.0.0+]   | | 28 || [5.0.0+] DecryptAndStoreDrmDeviceCertKey  | ||
|-  | |-  | ||
| 29 || [5.0.0+]   | | 29 || [5.0.0+] ModularExponentiateWithDrmDeviceCertKey  | ||
|-  | |-  | ||
| 31 || [6.0.0+]   | | 31 || [6.0.0+] PrepareEsArchiveKey  | ||
|-  | |-  | ||
| 32 || [6.0.0+] [[#  | | 32 || [6.0.0+] [[#LoadPreparedAesKey]]  | ||
|}  | |}  | ||
| Line 395: | Line 395: | ||
| 0 || [[#GetConfig]]  | | 0 || [[#GetConfig]]  | ||
|-  | |-  | ||
| 1 || [[#  | | 1 || [[#ModularExponentiate]]  | ||
|-  | |-  | ||
| 5 || [[#SetConfig]]  | | 5 || [[#SetConfig]]  | ||
| Line 421: | Line 421: | ||
| 21 || [2.0.0+] [[#AllocateAesKeyslot]]  | | 21 || [2.0.0+] [[#AllocateAesKeyslot]]  | ||
|-  | |-  | ||
| 22 || [2.0.0+] [[#  | | 22 || [2.0.0+] [[#DeallocateAesKeySlot]]  | ||
|-  | |-  | ||
| 23 || [2.0.0+] [[#GetAesKeyslotAvailableEvent]]  | | 23 || [2.0.0+] [[#GetAesKeyslotAvailableEvent]]  | ||
|-  | |-  | ||
| 13 || [[#  | | 13 || [[#DecryptDeviceUniqueData]]  | ||
|-  | |-  | ||
| 30 || [5.0.0+]   | | 30 || [5.0.0+] ReencryptDeviceUniqueData  | ||
|}  | |}  | ||
[[Category:Services]]  | [[Category:Services]]  | ||