kindring 09a3842b94 添加依赖仓库. 1 năm trước cách đây
..
README.txt 09a3842b94 添加依赖仓库. 1 năm trước cách đây
aes-ccm.c 09a3842b94 添加依赖仓库. 1 năm trước cách đây
aes.c 09a3842b94 添加依赖仓库. 1 năm trước cách đây
aes.h 09a3842b94 添加依赖仓库. 1 năm trước cách đây

README.txt

To realize the AES-CCM functionality using the aes.c interface herewith, pull the files aes-ccm.c and aes.h from the repo: https://github.com/wi-fi-analyzer/crackle, and make the following updates -

** Update the 'xor_aes_block()' function implementation as below and use.

static void xor_aes_block(u8 *dst, const u8 *src)
{
#ifdef HAVE_ALIGNED_MEM_OPERATION
u32 *d = (u32 *) dst;
u32 *s = (u32 *) src;
*d++ ^= *s++;
*d++ ^= *s++;
*d++ ^= *s++;
*d++ ^= *s++;
#else /* HAVE_ALIGNED_MEM_OPERATION */
u32 i;

for (i = 0; i < 16; i++)
{
*dst++ ^= *src++;
}
#endif /* HAVE_ALIGNED_MEM_OPERATION */
}


** Update the 'aes_ccm_encr()' function implementation as below and use.

static void aes_ccm_encr(void *aes, size_t L, const u8 *in, size_t len, u8 *out,
u8 *a)
{
size_t last = len % AES_BLOCK_SIZE;
size_t i;

/* crypt = msg XOR (S_1 | S_2 | ... | S_n) */
for (i = 1; i <= len / AES_BLOCK_SIZE; i++) {
PUT_BE16(&a[AES_BLOCK_SIZE - 2], i);
/* S_i = E(K, A_i) */
aes_encrypt(aes, a, out);
xor_aes_block(out, in);
out += AES_BLOCK_SIZE;
in += AES_BLOCK_SIZE;
}
#if 0
if (last) {
PUT_BE16(&a[AES_BLOCK_SIZE - 2], i);
aes_encrypt(aes, a, out);
/* XOR zero-padded last block */
for (i = 0; i < last; i++)
*out++ ^= *in++;
}
#else /* 0 */
if (last) {
u8 tout[AES_BLOCK_SIZE];

PUT_BE16(&a[AES_BLOCK_SIZE - 2], i);
aes_encrypt(aes, a, tout);
/* XOR zero-padded last block */
for (i = 0; i < last; i++)
*out++ = tout[i] ^ *in++;
}
#endif /* 0 */
}