10 #include "sw/device/lib/testing/test_framework/check.h"
15 OTTF_DEFINE_TEST_CONFIG();
25 const uint32_t *message_big_endian;
26 const uint32_t *message_little_endian;
38 const uint32_t message_big_endian[] = {0x03020100, 0x07060504};
39 const uint32_t message_little_endian[] = {0x00010203, 0x04050607};
46 .share0 = {0x43424140, 0x47464544, 0x4B4A4948, 0x4F4E4D4C,
47 0x53525150, 0x57565554, 0x5B5A5958, 0x5F5E5D5C},
51 .message_big_endian = message_big_endian,
52 .message_little_endian = message_little_endian,
53 .message_len =
ARRAYSIZE(message_big_endian),
65 uint32_t big_to_little_endian(uint32_t big_endian) {
66 uint32_t little_endian = 0;
67 little_endian = (big_endian >> 24) & 0xff;
68 little_endian |= (big_endian >> 8) & 0xff00;
69 little_endian |= (big_endian << 8) & 0xff0000;
70 little_endian |= (big_endian << 24) & 0xff000000;
99 char msg_log[4][7] = {
"little",
"little",
"big",
"big"};
100 char digest_log[4][7] = {
"little",
"big",
"little",
"big"};
101 bool msg_endianess_big[4] = {
false,
false,
true,
true};
102 bool digest_endianess_big[4] = {
false,
true,
false,
true};
107 for (
size_t it = 0; it <
ARRAYSIZE(msg_endianess_big); it++) {
108 LOG_INFO(
"Testing %s endian message and %s endian digest.", msg_log[it],
113 .entropy_seed = {0xb153e3fe, 0x09596819, 0x3e85a6e8, 0xb6dcdaba,
114 0x50dc409c, 0x11e1ebd1},
116 .message_big_endian = msg_endianess_big[it],
117 .output_big_endian = digest_endianess_big[it],
124 const uint32_t *message;
125 if (msg_endianess_big[it]) {
128 message =
kmac_test.message_little_endian;
136 kmac_test.message_len *
sizeof(uint32_t),
141 CHECK_DIF_OK(
dif_kmac_end(&kmac, &kmac_operation_state));
143 if (msg_endianess_big[it] ==
false && digest_endianess_big[it] ==
false) {
145 memcpy(ref_out, out,
sizeof(ref_out));
146 }
else if (digest_endianess_big[it] ==
true) {
149 uint32_t big_to_little[
kmac_test.digest_len];
150 for (
int i = 0; i <
kmac_test.digest_len; i++) {
151 big_to_little[i] = big_to_little_endian(out[i]);
153 CHECK_ARRAYS_EQ(big_to_little, ref_out,
kmac_test.digest_len);
156 CHECK_ARRAYS_EQ(out, ref_out,
kmac_test.digest_len);