diff --git a/nx/include/switch/services/spl.h b/nx/include/switch/services/spl.h index 79eb8e08..ada7b3bc 100644 --- a/nx/include/switch/services/spl.h +++ b/nx/include/switch/services/spl.h @@ -64,7 +64,7 @@ Result splCryptoGenerateAesKek(const void *wrapped_kek, u32 key_generation, u32 Result splCryptoLoadAesKey(const void *sealed_kek, const void *wrapped_key, u32 keyslot); Result splCryptoGenerateAesKey(const void *sealed_kek, const void *wrapped_key, void *out_sealed_key); Result splCryptoDecryptAesKey(const void *wrapped_key, u32 key_generation, u32 option, void *out_sealed_key); -Result splCryptoCryptAesCtr(const void *input, void *output, size_t size, const void *ctr); +Result splCryptoCryptAesCtr(const void *input, void *output, size_t size, u32 keyslot, const void *ctr); Result splCryptoComputeCmac(const void *input, size_t size, u32 keyslot, void *out_cmac); Result splCryptoLockAesEngine(u32 *out_keyslot); Result splCryptoUnlockAesEngine(u32 keyslot); diff --git a/nx/source/services/spl.c b/nx/source/services/spl.c index bba51819..7d42327e 100644 --- a/nx/source/services/spl.c +++ b/nx/source/services/spl.c @@ -572,7 +572,7 @@ Result splCryptoDecryptAesKey(const void *wrapped_key, u32 key_generation, u32 o return rc; } -Result splCryptoCryptAesCtr(const void *input, void *output, size_t size, const void *ctr) { +Result splCryptoCryptAesCtr(const void *input, void *output, size_t size, u32 keyslot, const void *ctr) { IpcCommand c; ipcInitialize(&c); @@ -583,6 +583,7 @@ Result splCryptoCryptAesCtr(const void *input, void *output, size_t size, const u64 magic; u64 cmd_id; u8 ctr[0x10]; + u32 keyslot; } *raw; raw = ipcPrepareHeader(&c, sizeof(*raw)); @@ -590,6 +591,7 @@ Result splCryptoCryptAesCtr(const void *input, void *output, size_t size, const raw->magic = SFCI_MAGIC; raw->cmd_id = 15; memcpy(raw->ctr, ctr, sizeof(raw->ctr)); + raw->keyslot = keyslot; Result rc = serviceIpcDispatch(_splGetCryptoSrv());