7 #include "gtest/gtest.h"
10 #include "sw/device/lib/base/mock_mmio.h"
17 namespace dif_aes_test {
21 using testing::ElementsAreArray;
27 void ExpectReadMultreg(
const uint32_t reg,
const uint32_t *data,
29 for (uint32_t i = 0; i < size; ++i) {
30 ptrdiff_t offset = reg + (i *
sizeof(uint32_t));
31 EXPECT_READ32(offset, data[i]);
34 void ExpectWriteMultreg(
const uint32_t reg,
const uint32_t *data,
36 for (uint32_t i = 0; i < size; ++i) {
37 ptrdiff_t offset = reg + (i *
sizeof(uint32_t));
38 EXPECT_WRITE32(offset, data[i]);
42 ExpectWriteMultreg(AES_KEY_SHARE0_0_REG_OFFSET, key.share0, key_size);
43 ExpectWriteMultreg(AES_KEY_SHARE1_0_REG_OFFSET, key.share1, key_size);
46 void ExpectIv(
const dif_aes_iv_t &iv,
const uint32_t kIvSize = 4) {
47 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_IDLE_BIT,
true}});
48 ExpectWriteMultreg(AES_IV_0_REG_OFFSET, iv.iv, kIvSize);
52 uint32_t key_len = AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_128;
53 uint32_t mode = AES_CTRL_SHADOWED_MODE_VALUE_AES_ECB;
54 uint32_t operation = AES_CTRL_SHADOWED_OPERATION_VALUE_AES_ENC;
55 uint32_t mask_reseed = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_1;
56 bool manual_op =
false;
57 bool key_sideloaded =
false;
61 EXPECT_WRITE32_SHADOWED(
62 AES_CTRL_SHADOWED_REG_OFFSET,
63 {{AES_CTRL_SHADOWED_KEY_LEN_OFFSET, options.key_len},
64 {AES_CTRL_SHADOWED_MODE_OFFSET, options.mode},
65 {AES_CTRL_SHADOWED_OPERATION_OFFSET, options.operation},
66 {AES_CTRL_SHADOWED_PRNG_RESEED_RATE_OFFSET, options.mask_reseed},
67 {AES_CTRL_SHADOWED_MANUAL_OPERATION_BIT, options.manual_op},
68 {AES_CTRL_SHADOWED_SIDELOAD_BIT, options.key_sideloaded}});
72 bool reseed_on_key_change =
false;
73 bool force_masks =
false;
77 EXPECT_READ32(AES_CTRL_AUX_REGWEN_REG_OFFSET,
78 {{AES_CTRL_AUX_REGWEN_CTRL_AUX_REGWEN_BIT, 1}});
80 EXPECT_WRITE32_SHADOWED(
81 AES_CTRL_AUX_SHADOWED_REG_OFFSET,
82 {{AES_CTRL_AUX_SHADOWED_KEY_TOUCH_FORCES_RESEED_BIT,
83 options.reseed_on_key_change},
84 {AES_CTRL_AUX_SHADOWED_FORCE_MASKS_BIT, options.force_masks}});
86 EXPECT_WRITE32(AES_CTRL_AUX_REGWEN_REG_OFFSET,
87 {{AES_CTRL_AUX_REGWEN_CTRL_AUX_REGWEN_BIT, !options.lock}});
98 TEST_F(AesInitTest, Sucess) {
116 .reseed_on_key_change =
false,
117 .force_masks =
false,
118 .ctrl_aux_lock =
false,
122 .
share0 = {0x59, 0x70, 0x33, 0x73, 0x36, 0x76, 0x39, 0x79},
123 .share1 = {0x4B, 0x61, 0x50, 0x64, 0x53, 0x67, 0x56, 0x6B}};
137 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
139 .key_len = AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_128,
140 .mode = AES_CTRL_SHADOWED_MODE_VALUE_AES_ECB,
141 .operation = AES_CTRL_SHADOWED_OPERATION_VALUE_AES_ENC,
142 .mask_reseed = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_1,
156 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
158 .key_len = AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_128,
159 .mode = AES_CTRL_SHADOWED_MODE_VALUE_AES_CBC,
160 .operation = AES_CTRL_SHADOWED_OPERATION_VALUE_AES_ENC,
161 .mask_reseed = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_1,
177 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
179 .key_len = AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_128,
180 .mode = AES_CTRL_SHADOWED_MODE_VALUE_AES_CFB,
181 .operation = AES_CTRL_SHADOWED_OPERATION_VALUE_AES_ENC,
182 .mask_reseed = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_1,
198 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
200 .key_len = AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_128,
201 .mode = AES_CTRL_SHADOWED_MODE_VALUE_AES_OFB,
202 .operation = AES_CTRL_SHADOWED_OPERATION_VALUE_AES_ENC,
203 .mask_reseed = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_1,
219 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
221 .key_len = AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_128,
222 .mode = AES_CTRL_SHADOWED_MODE_VALUE_AES_CTR,
223 .operation = AES_CTRL_SHADOWED_OPERATION_VALUE_AES_ENC,
224 .mask_reseed = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_1,
243 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
245 .key_len = AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_128,
246 .mode = AES_CTRL_SHADOWED_MODE_VALUE_AES_ECB,
247 .operation = AES_CTRL_SHADOWED_OPERATION_VALUE_AES_DEC,
248 .mask_reseed = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_1,
263 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
265 .key_len = AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_192,
266 .mode = AES_CTRL_SHADOWED_MODE_VALUE_AES_ECB,
267 .operation = AES_CTRL_SHADOWED_OPERATION_VALUE_AES_ENC,
268 .mask_reseed = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_1,
283 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
285 .key_len = AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_256,
286 .mode = AES_CTRL_SHADOWED_MODE_VALUE_AES_ECB,
287 .operation = AES_CTRL_SHADOWED_OPERATION_VALUE_AES_ENC,
288 .mask_reseed = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_1,
305 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
307 .key_len = AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_128,
308 .mode = AES_CTRL_SHADOWED_MODE_VALUE_AES_ECB,
309 .operation = AES_CTRL_SHADOWED_OPERATION_VALUE_AES_ENC,
310 .mask_reseed = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_1,
323 EXPECT_WRITE32(AES_ALERT_TEST_REG_OFFSET,
324 {{AES_ALERT_TEST_RECOV_CTRL_UPDATE_ERR_BIT,
true},
325 {AES_ALERT_TEST_FATAL_FAULT_BIT,
false}});
327 EXPECT_DIF_OK(dif_aes_alert_force(&aes_, kDifAesAlertRecovCtrlUpdateErr));
330 TEST_F(AlertTest, AlertFatalFault) {
331 EXPECT_WRITE32(AES_ALERT_TEST_REG_OFFSET,
332 {{AES_ALERT_TEST_RECOV_CTRL_UPDATE_ERR_BIT,
false},
333 {AES_ALERT_TEST_FATAL_FAULT_BIT,
true}});
335 EXPECT_DIF_OK(dif_aes_alert_force(&aes_, kDifAesAlertFatalFault));
342 .data = {0xA55AA55A, 0xA55AA55A, 0xA55AA55A, 0xA55AA55A}};
346 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_INPUT_READY_BIT,
true}});
348 ExpectWriteMultreg(AES_DATA_IN_0_REG_OFFSET, data_.data,
354 TEST_F(DataTest, DataOut) {
355 EXPECT_READ32(AES_STATUS_REG_OFFSET, {
356 {AES_STATUS_INPUT_READY_BIT,
true},
357 {AES_STATUS_OUTPUT_VALID_BIT,
true},
360 ExpectReadMultreg(AES_DATA_OUT_0_REG_OFFSET, data_.data,
366 EXPECT_THAT(out.data, ElementsAreArray(data_.data));
371 static constexpr
size_t kBlockCount = 3;
372 static constexpr
size_t kBlockSize = 4;
374 {.data = {0xA55AA55A, 0xA55AA55A, 0xA55AA55A, 0xA55AA55A}},
375 {.data = {0x5AA5A55A, 0x5AA5A55A, 0x5AA5A55A, 0x5AA5A55A}},
376 {.data = {0xA55AA55A, 0xA55AA55A, 0xA55AA55A, 0xA55AA55A}},
380 {.data = {0xB44BB44B, 0xB44BB44B, 0xB44BB44B, 0xB44BB44B}},
381 {.data = {0x4BB4B44B, 0x4BB4B44B, 0x4BB4B44B, 0x4BB4B44B}},
382 {.data = {0xB44BB44B, 0xB44BB44B, 0xB44BB44B, 0xB44BB44B}},
385 constexpr
size_t DataProcessTest::kBlockCount;
386 constexpr
size_t DataProcessTest::kBlockSize;
391 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_INPUT_READY_BIT,
true},
392 {AES_STATUS_OUTPUT_VALID_BIT,
true}});
394 ExpectWriteMultreg(AES_DATA_IN_0_REG_OFFSET, kDataIn[0].data, kBlockSize);
395 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_INPUT_READY_BIT,
true}});
397 ExpectWriteMultreg(AES_DATA_IN_0_REG_OFFSET, kDataIn[1].data, kBlockSize);
398 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_OUTPUT_VALID_BIT,
true}});
399 ExpectReadMultreg(AES_DATA_OUT_0_REG_OFFSET, kDataOut[0].data, kBlockSize);
401 ExpectWriteMultreg(AES_DATA_IN_0_REG_OFFSET, kDataIn[2].data, kBlockSize);
402 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_OUTPUT_VALID_BIT,
true}});
403 ExpectReadMultreg(AES_DATA_OUT_0_REG_OFFSET, kDataOut[1].data, kBlockSize);
405 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_OUTPUT_VALID_BIT,
true}});
406 ExpectReadMultreg(AES_DATA_OUT_0_REG_OFFSET, kDataOut[2].data, kBlockSize);
411 for (
size_t i = 0; i < kBlockCount; ++i) {
412 EXPECT_THAT(out[i].data, ElementsAreArray(kDataOut[i].data));
416 TEST_F(DataProcessTest, OneBlockSuccess) {
417 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_INPUT_READY_BIT,
true}});
418 ExpectWriteMultreg(AES_DATA_IN_0_REG_OFFSET, kDataIn[0].data, kBlockSize);
420 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_OUTPUT_VALID_BIT,
true}});
421 ExpectReadMultreg(AES_DATA_OUT_0_REG_OFFSET, kDataOut[0].data, kBlockSize);
425 EXPECT_THAT(out[0].data, ElementsAreArray(kDataOut[0].data));
428 TEST_F(DataProcessTest, OneBlockUnavailable) {
429 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_INPUT_READY_BIT,
false}});
438 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_IDLE_BIT,
true}});
440 ExpectReadMultreg(AES_IV_0_REG_OFFSET, kIv.iv,
ARRAYSIZE(kIv.iv));
444 EXPECT_THAT(iv.iv, ElementsAreArray(kIv.iv));
451 EXPECT_WRITE32(AES_TRIGGER_REG_OFFSET, {{AES_TRIGGER_START_BIT,
true}});
456 TEST_F(TriggerTest, KeyIvDataInClear) {
457 EXPECT_WRITE32(AES_TRIGGER_REG_OFFSET,
459 {AES_TRIGGER_KEY_IV_DATA_IN_CLEAR_BIT,
true},
465 TEST_F(TriggerTest, DataOutClear) {
466 EXPECT_WRITE32(AES_TRIGGER_REG_OFFSET,
468 {AES_TRIGGER_DATA_OUT_CLEAR_BIT,
true},
474 TEST_F(TriggerTest, PrngReseed) {
475 EXPECT_WRITE32(AES_TRIGGER_REG_OFFSET,
477 {AES_TRIGGER_PRNG_RESEED_BIT,
true},
487 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_IDLE_BIT,
true}});
488 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_STALL_BIT,
true}});
489 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_OUTPUT_LOST_BIT,
true}});
490 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_OUTPUT_VALID_BIT,
true}});
491 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_INPUT_READY_BIT,
true}});
492 EXPECT_READ32(AES_STATUS_REG_OFFSET,
493 {{AES_STATUS_ALERT_FATAL_FAULT_BIT,
true}});
494 EXPECT_READ32(AES_STATUS_REG_OFFSET,
495 {{AES_STATUS_ALERT_RECOV_CTRL_UPDATE_ERR_BIT,
true}});
521 TEST_F(Status, False) {
522 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_IDLE_BIT,
false}});
523 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_STALL_BIT,
false}});
524 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_OUTPUT_LOST_BIT,
false}});
525 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_OUTPUT_VALID_BIT,
false}});
526 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_INPUT_READY_BIT,
false}});
527 EXPECT_READ32(AES_STATUS_REG_OFFSET,
528 {{AES_STATUS_ALERT_FATAL_FAULT_BIT,
false}});
529 EXPECT_READ32(AES_STATUS_REG_OFFSET,
530 {{AES_STATUS_ALERT_RECOV_CTRL_UPDATE_ERR_BIT,
false}});
563 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
564 ExpectConfig({.key_len = AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_128,
565 .mode = AES_CTRL_SHADOWED_MODE_VALUE_AES_ECB,
566 .operation = AES_CTRL_SHADOWED_OPERATION_VALUE_AES_ENC,
567 .mask_reseed = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_1,
568 .key_sideloaded =
true});
577 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
579 .key_len = AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_128,
580 .mode = AES_CTRL_SHADOWED_MODE_VALUE_AES_ECB,
581 .operation = AES_CTRL_SHADOWED_OPERATION_VALUE_AES_ENC,
582 .mask_reseed = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_64,
590 TEST_F(MaskReseedingTest, ReseedPer8kBlock) {
591 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
593 .key_len = AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_128,
594 .mode = AES_CTRL_SHADOWED_MODE_VALUE_AES_ECB,
595 .operation = AES_CTRL_SHADOWED_OPERATION_VALUE_AES_ENC,
596 .mask_reseed = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_8K,
608 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
610 .key_len = AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_128,
611 .mode = AES_CTRL_SHADOWED_MODE_VALUE_AES_ECB,
612 .operation = AES_CTRL_SHADOWED_OPERATION_VALUE_AES_ENC,
613 .mask_reseed = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_1,
616 transaction_.reseed_on_key_change =
true;
617 transaction_.force_masks =
true;
619 .reseed_on_key_change =
true,
626 TEST_F(CtrlAuxTest, Lock) {
627 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
629 .key_len = AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_128,
630 .mode = AES_CTRL_SHADOWED_MODE_VALUE_AES_ECB,
631 .operation = AES_CTRL_SHADOWED_OPERATION_VALUE_AES_ENC,
632 .mask_reseed = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_1,
635 transaction_.reseed_on_key_change =
true;
636 transaction_.ctrl_aux_lock =
true;
637 ExpectAuxConfig({.reseed_on_key_change =
true, .lock =
true});
642 TEST_F(CtrlAuxTest, LockedSuccess) {
643 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
645 .key_len = AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_128,
646 .mode = AES_CTRL_SHADOWED_MODE_VALUE_AES_ECB,
647 .operation = AES_CTRL_SHADOWED_OPERATION_VALUE_AES_ENC,
648 .mask_reseed = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_1,
651 transaction_.reseed_on_key_change =
true;
652 transaction_.ctrl_aux_lock =
true;
654 EXPECT_READ32(AES_CTRL_AUX_REGWEN_REG_OFFSET,
655 {{AES_CTRL_AUX_REGWEN_CTRL_AUX_REGWEN_BIT, 0}});
656 EXPECT_READ32(AES_CTRL_AUX_SHADOWED_REG_OFFSET,
657 {{AES_CTRL_AUX_SHADOWED_KEY_TOUCH_FORCES_RESEED_BIT,
true},
658 {AES_CTRL_AUX_SHADOWED_FORCE_MASKS_BIT,
false}});
663 TEST_F(CtrlAuxTest, LockedErrorReseedOnKeyChange) {
664 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
666 .key_len = AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_128,
667 .mode = AES_CTRL_SHADOWED_MODE_VALUE_AES_ECB,
668 .operation = AES_CTRL_SHADOWED_OPERATION_VALUE_AES_ENC,
669 .mask_reseed = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_1,
672 transaction_.reseed_on_key_change =
true;
673 transaction_.ctrl_aux_lock =
true;
675 EXPECT_READ32(AES_CTRL_AUX_REGWEN_REG_OFFSET,
676 {{AES_CTRL_AUX_REGWEN_CTRL_AUX_REGWEN_BIT, 0}});
677 EXPECT_READ32(AES_CTRL_AUX_SHADOWED_REG_OFFSET,
678 {{AES_CTRL_AUX_SHADOWED_KEY_TOUCH_FORCES_RESEED_BIT,
false},
679 {AES_CTRL_AUX_SHADOWED_FORCE_MASKS_BIT,
false}});
684 TEST_F(CtrlAuxTest, LockedErrorForceMasks) {
685 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
687 .key_len = AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_128,
688 .mode = AES_CTRL_SHADOWED_MODE_VALUE_AES_ECB,
689 .operation = AES_CTRL_SHADOWED_OPERATION_VALUE_AES_ENC,
690 .mask_reseed = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_1,
693 transaction_.reseed_on_key_change =
true;
694 transaction_.ctrl_aux_lock =
true;
696 EXPECT_READ32(AES_CTRL_AUX_REGWEN_REG_OFFSET,
697 {{AES_CTRL_AUX_REGWEN_CTRL_AUX_REGWEN_BIT, 0}});
698 EXPECT_READ32(AES_CTRL_AUX_SHADOWED_REG_OFFSET,
699 {{AES_CTRL_AUX_SHADOWED_KEY_TOUCH_FORCES_RESEED_BIT,
true},
700 {AES_CTRL_AUX_SHADOWED_FORCE_MASKS_BIT,
true}});
712 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
713 EXPECT_WRITE32_SHADOWED(AES_CTRL_SHADOWED_REG_OFFSET,
714 {{AES_CTRL_SHADOWED_MANUAL_OPERATION_BIT,
true}});
716 EXPECT_WRITE32(AES_TRIGGER_REG_OFFSET,
718 {AES_TRIGGER_KEY_IV_DATA_IN_CLEAR_BIT,
true},
719 {AES_TRIGGER_DATA_OUT_CLEAR_BIT,
true},
722 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
724 EXPECT_WRITE32_SHADOWED(
725 AES_CTRL_SHADOWED_REG_OFFSET,
726 {{AES_CTRL_SHADOWED_OPERATION_OFFSET, AES_CTRL_SHADOWED_OPERATION_MASK},
727 {AES_CTRL_SHADOWED_MODE_OFFSET, AES_CTRL_SHADOWED_MODE_VALUE_AES_NONE},
728 {AES_CTRL_SHADOWED_KEY_LEN_OFFSET, AES_CTRL_SHADOWED_KEY_LEN_MASK}});
733 TEST_F(DifFunctionsTest, End) {
734 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
735 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
736 EXPECT_WRITE32_SHADOWED(AES_CTRL_SHADOWED_REG_OFFSET,
737 {{AES_CTRL_SHADOWED_MANUAL_OPERATION_BIT,
true}});
739 EXPECT_WRITE32(AES_TRIGGER_REG_OFFSET,
741 {AES_TRIGGER_KEY_IV_DATA_IN_CLEAR_BIT,
true},
742 {AES_TRIGGER_DATA_OUT_CLEAR_BIT,
true},
745 EXPECT_READ32(AES_STATUS_REG_OFFSET, 1);
770 TEST_F(DifBadArgError, LoadData) {
775 TEST_F(DifBadArgError, ReadOutput) {
781 TEST_F(DifBadArgError, Trigger) {
785 TEST_F(DifBadArgError, GetStatus) {
791 TEST_F(DifBadArgError, ReadIV) {
797 TEST_F(DifBadArgError, ProcessData) {
809 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_IDLE_BIT,
false}});
814 EXPECT_EQ(
dif_aes_start(&aes_, &transaction_, &kKey,
nullptr),
818 TEST_F(DifUnavailableError, end) {
822 TEST_F(DifUnavailableError, LoadData) {
827 TEST_F(DifUnavailableError, ReadIV) {
832 TEST_F(DifUnavailableError, ProcessData) {
845 EXPECT_READ32(AES_STATUS_REG_OFFSET, {{AES_STATUS_OUTPUT_VALID_BIT,
false}});