From 3dbrew
Revision as of 11:51, 30 December 2016 by Wwylele (talk | contribs) (correct the formula. confirmed by the assembly)
Jump to navigation Jump to search


Index Word Description
0 Header code [0x00460104]
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


Index Word Description
0 Header code
1 Result code


This encrypts 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+blocksize with the noncesize is copied to this nonce buffer. NS then copies the data at inputbuf+0 to outbuf+noncesize, with the blocksize.

NS then copies the data at inbuf+blocksize+noncesize to outbuf+blocksize+noncesize, with size inputbuffersize-blocksize-noncesize. NS then uses PS:EncryptSignDecryptVerifyAesCcm with keytype2 and with the above nonce buffer, where the input/output buffer ptrs are outbuf+noncesize, with size blocksize+(inputbuffersize-blocksize-noncesize). NS then copies the the nonce from the nonce-buffer with the noncesize, to outbuf+0.