Software APIs
trigger_sca.c
1 // Copyright lowRISC contributors (OpenTitan project).
2 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
3 // SPDX-License-Identifier: Apache-2.0
4 
5 #include "sw/device/tests/penetrationtests/firmware/sca/trigger_sca.h"
6 
8 #include "sw/device/lib/base/status.h"
10 #include "sw/device/lib/testing/test_framework/ujson_ottf.h"
11 #include "sw/device/lib/ujson/ujson.h"
12 #include "sw/device/tests/penetrationtests/firmware/lib/pentest_lib.h"
13 #include "sw/device/tests/penetrationtests/json/trigger_sca_commands.h"
14 
16 
17 /**
18  * Select trigger type command handler.
19  *
20  * This function only supports 1-byte trigger values.
21  *
22  * The uJSON data contains:
23  * - Source: The trigger source type.
24  * @param uj The received uJSON data.
25  */
26 status_t handle_trigger_sca_select_source(ujson_t *uj) {
27  cryptotest_trigger_sca_source_t uj_trigger;
28  TRY(ujson_deserialize_cryptotest_trigger_sca_source_t(uj, &uj_trigger));
29 
30  pentest_select_trigger_type(uj_trigger.source);
31 
32  return OK_STATUS();
33 }
34 
35 status_t handle_trigger_sca(ujson_t *uj) {
36  trigger_sca_subcommand_t cmd;
37  TRY(ujson_deserialize_trigger_sca_subcommand_t(uj, &cmd));
38  switch (cmd) {
39  case kTriggerScaSubcommandSelectTriggerSource:
40  return handle_trigger_sca_select_source(uj);
41  break;
42  default:
43  LOG_ERROR("Unrecognized TRIGGER SCA subcommand: %d", cmd);
44  return INVALID_ARGUMENT();
45  }
46  return OK_STATUS();
47 }