APT:Unwrap

From 3dbrew
Revision as of 05:28, 22 November 2015 by Steveice10 (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Request

Index Word Description
0 Header code [0x00470104]
1 Output Size
2 Input Size
3 Block Size
4 Nonce Size (capped to 12)
5 (Input Size << 4) | 0xA
6 void*, Input
7 (Output Size << 4) | 0xC
8 void*, Output

Response

Index Word Description
0 Header code
1 Result code

Description

This decrypts the input data with AES-CCM using keytype2, when the input noncesize is <12 the low 2-bits are cleared in the noncesize. The 12-byte nonce buffer used by NS is cleared to all-zero, then the nonce from inputbuf+0 with the noncesize is copied to this nonce buffer. NS then uses PS:EncryptSignDecryptVerifyAesCcm with keytype2 and with the above nonce buffer, where the inputptr is inputbuf+noncesize, outputptr is outputbuf+0, and size is inputbuffersize - noncesize - 16.

After decryption, NS copies the data at outbuf+blocksize to outbuf+blocksize+noncesize, with size inputbuffersize-blocksize-16. NS then copies the nonce from inputbuf+0 with the noncesize, to outbuf+blocksize.