aes 256 mode works wrong
#1
Exclamation 
Trying to implement CTR mode and this is part of my kernel file:
Code:
DECLSPEC void aes256_decrypt_ctr (GLOBAL_AS const u32 *encrypted_data, int data_len, PRIVATE_AS const u32 *iv, PRIVATE_AS const u32 *key, PRIVATE_AS u32 *decrypted_data,                                   SHM_TYPE u32 *s_te0, SHM_TYPE u32 *s_te1, SHM_TYPE u32 *s_te2, SHM_TYPE u32 *s_te3, SHM_TYPE u32 *s_te4) {     u32 ks[60];     u32 ctr_block[4];     // Initialize the counter block (IV), which will be modified during encryption     ctr_block[0] = iv[0];     ctr_block[1] = iv[1];     ctr_block[2] = iv[2];     ctr_block[3] = iv[3];     aes256_set_encrypt_key(ks, key, s_te0, s_te1, s_te2, s_te3);     // Decrypt in CTR mode     for (int i = 0; i < data_len / 4; i+=4) {       // Encrypt the counter block to generate the keystream       aes256_encrypt(ks, ctr_block, decrypted_data + i, s_te0, s_te1, s_te2, s_te3, s_te4);       decrypted_data[i + 0] ^= encrypted_data[i + 0];       decrypted_data[i + 1] ^= encrypted_data[i + 1];       decrypted_data[i + 2] ^= encrypted_data[i + 2];       decrypted_data[i + 3] ^= encrypted_data[i + 3];             // Increment the counter block (IV) for the next iteration       for (int j = 3; j >= 0; --j)       {         if (++ctr_block[j] != 0) break;       }     } }
It decodes correct and save to `decrypted_data` only first 16 bytes(1 iteration of loop). Needs your help
Reply