mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-06-28 02:42:34 +00:00
rename aes_ctr_counter_inc to aes_ctr_cbuf_inc and move it to aes_modes.c
This commit is contained in:
parent
22b0dd2e62
commit
b16e36f10e
2
aes.h
2
aes.h
@ -196,6 +196,8 @@ typedef void cbuf_inc(unsigned char *cbuf);
|
|||||||
AES_RETURN aes_ctr_crypt(const unsigned char *ibuf, unsigned char *obuf,
|
AES_RETURN aes_ctr_crypt(const unsigned char *ibuf, unsigned char *obuf,
|
||||||
int len, unsigned char *cbuf, cbuf_inc ctr_inc, aes_encrypt_ctx cx[1]);
|
int len, unsigned char *cbuf, cbuf_inc ctr_inc, aes_encrypt_ctx cx[1]);
|
||||||
|
|
||||||
|
void aes_ctr_cbuf_inc(unsigned char *cbuf);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
|
10
aes_modes.c
10
aes_modes.c
@ -941,6 +941,16 @@ AES_RETURN aes_ctr_crypt(const unsigned char *ibuf, unsigned char *obuf,
|
|||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void aes_ctr_cbuf_inc(unsigned char *cbuf)
|
||||||
|
{
|
||||||
|
int i = 15;
|
||||||
|
while (i >= 0) {
|
||||||
|
cbuf[i]++;
|
||||||
|
if (cbuf[i]) return; // if there was no overflow
|
||||||
|
i--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
20
tests.c
20
tests.c
@ -437,22 +437,12 @@ START_TEST(test_verify_speed)
|
|||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
void aes_ctr_counter_inc(uint8_t *ctr)
|
|
||||||
{
|
|
||||||
int i = 15;
|
|
||||||
while (i >= 0) {
|
|
||||||
ctr[i]++;
|
|
||||||
if (ctr[i]) return; // if there was no overflow
|
|
||||||
i--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// test vectors from http://www.inconteam.com/software-development/41-encryption/55-aes-test-vectors
|
// test vectors from http://www.inconteam.com/software-development/41-encryption/55-aes-test-vectors
|
||||||
START_TEST(test_aes)
|
START_TEST(test_aes)
|
||||||
{
|
{
|
||||||
aes_encrypt_ctx ctxe;
|
aes_encrypt_ctx ctxe;
|
||||||
aes_decrypt_ctx ctxd;
|
aes_decrypt_ctx ctxd;
|
||||||
uint8_t ibuf[16], obuf[16], iv[16], cntr[16];
|
uint8_t ibuf[16], obuf[16], iv[16], cbuf[16];
|
||||||
const char **ivp, **plainp, **cipherp;
|
const char **ivp, **plainp, **cipherp;
|
||||||
|
|
||||||
// ECB
|
// ECB
|
||||||
@ -574,22 +564,22 @@ START_TEST(test_aes)
|
|||||||
// encrypt
|
// encrypt
|
||||||
plainp = ctr_vector;
|
plainp = ctr_vector;
|
||||||
cipherp = ctr_vector + 1;
|
cipherp = ctr_vector + 1;
|
||||||
memcpy(cntr, fromhex("f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff"), 16);
|
memcpy(cbuf, fromhex("f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff"), 16);
|
||||||
aes_encrypt_key256(fromhex("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4"), &ctxe);
|
aes_encrypt_key256(fromhex("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4"), &ctxe);
|
||||||
while (*plainp && *cipherp) {
|
while (*plainp && *cipherp) {
|
||||||
memcpy(ibuf, fromhex(*plainp), 16);
|
memcpy(ibuf, fromhex(*plainp), 16);
|
||||||
aes_ctr_encrypt(ibuf, obuf, 16, cntr, aes_ctr_counter_inc, &ctxe);
|
aes_ctr_encrypt(ibuf, obuf, 16, cbuf, aes_ctr_cbuf_inc, &ctxe);
|
||||||
ck_assert_mem_eq(obuf, fromhex(*cipherp), 16);
|
ck_assert_mem_eq(obuf, fromhex(*cipherp), 16);
|
||||||
plainp += 2; cipherp += 2;
|
plainp += 2; cipherp += 2;
|
||||||
}
|
}
|
||||||
// decrypt (uses encryption)
|
// decrypt (uses encryption)
|
||||||
plainp = ctr_vector;
|
plainp = ctr_vector;
|
||||||
cipherp = ctr_vector + 1;
|
cipherp = ctr_vector + 1;
|
||||||
memcpy(cntr, fromhex("f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff"), 16);
|
memcpy(cbuf, fromhex("f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff"), 16);
|
||||||
aes_encrypt_key256(fromhex("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4"), &ctxe);
|
aes_encrypt_key256(fromhex("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4"), &ctxe);
|
||||||
while (*plainp && *cipherp) {
|
while (*plainp && *cipherp) {
|
||||||
memcpy(ibuf, fromhex(*cipherp), 16);
|
memcpy(ibuf, fromhex(*cipherp), 16);
|
||||||
aes_ctr_decrypt(ibuf, obuf, 16, cntr, aes_ctr_counter_inc, &ctxe);
|
aes_ctr_decrypt(ibuf, obuf, 16, cbuf, aes_ctr_cbuf_inc, &ctxe);
|
||||||
ck_assert_mem_eq(obuf, fromhex(*plainp), 16);
|
ck_assert_mem_eq(obuf, fromhex(*plainp), 16);
|
||||||
plainp += 2; cipherp += 2;
|
plainp += 2; cipherp += 2;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user