Software APIs
Data Structures | Functions
dif_keymgr_unittest::anonymous_namespace{dif_keymgr_unittest.cc} Namespace Reference

Data Structures

class  DifKeymgrTest
 
class  BadArgsTwo
 Class for parameterizing bad argument tests for functions with two arguments. More...
 
class  DifKeymgrInitialized
 Base class for the rest of the tests in this file, provides a dif_keymgr_t instance and some methods for common expectations. More...
 
class  ConfigureTest
 
class  AdvanceStateTest
 
class  AdvanceToOperational
 
class  AdvanceToNonOperational
 
class  DisableTest
 
struct  GetStatusCodesTestCase
 
class  GetStatusCodesNoError
 
class  GetStatusCodesWithError
 
class  GetStateTest
 
struct  GetStateTestCase
 
class  GetState
 
class  GenerateIdentityTest
 
class  GenerateVersionedKeyTest
 
struct  GenerateVersionedKeyTestCase
 
class  GenerateVersionedKey
 
class  SideloadClearTest
 
class  ReadOutputTest
 
class  ReadBindingTest
 
class  ReadMaxKeyVersionTest
 

Functions

uint32_t AllOnesExcept (uint32_t index)
 Returns a uint32_t with a single zero bit.
 
template<typename T >
std::vector< T > CreateEnumVector (T last)
 Returns a vector of values for a given enum type. More...
 
template<typename T >
T * GetGoodBadPtrArg (bool is_good)
 Returns a seemingly valid, i.e. More...
 
template<typename T >
GetGoodBadEnumArg (bool is_good, T last)
 Returns a valid or invalid value for the given enum type. More...
 
 INSTANTIATE_TEST_SUITE_P (BadArgsTwo, BadArgsTwo, testing::Combine(testing::Bool(), testing::Bool()), [&](testing::TestParamInfo< std::tuple< bool, bool >> info) { auto stringify=[](bool foo) { return foo ? "Good" :"Bad";};std::stringstream ss;ss<< stringify(std::get< 0 >(info.param))<< stringify(std::get< 1 >(info.param));return ss.str();})
 
 TEST_F (ConfigureTest, BadArgs)
 
 TEST_F (ConfigureTest, Configure)
 
 TEST_F (AdvanceStateTest, BadArgsNoKeymgr)
 
 TEST_P (AdvanceToOperational, BadArgsToOperationalWithoutParams)
 
 INSTANTIATE_TEST_SUITE_P (AdvanceToOperational, AdvanceToOperational, testing::ValuesIn(kStatesWithOperationalNextStates))
 
 TEST_P (AdvanceToNonOperational, BadArgsToNonOperationalWithParams)
 
 INSTANTIATE_TEST_SUITE_P (AdvanceToNonOperational, AdvanceToNonOperational, testing::ValuesIn(kStatesWithNonOperationalNextStates))
 
 TEST_F (AdvanceStateTest, LockedBusy)
 
 TEST_F (AdvanceStateTest, LockedConfig)
 
 TEST_P (AdvanceToOperational, LockedBinding)
 
 TEST_P (AdvanceToOperational, LockedMaxKeyVersion)
 
 TEST_P (AdvanceToOperational, Success)
 
 TEST_P (AdvanceToNonOperational, Success)
 
 TEST_F (DisableTest, BadArgs)
 
 TEST_F (DisableTest, LockedBusy)
 
 TEST_F (DisableTest, LockedConfig)
 
 TEST_F (DisableTest, Disable)
 
 TEST_P (BadArgsTwo, GetStatusCodes)
 
 TEST_P (GetStatusCodesNoError, Success)
 
 INSTANTIATE_TEST_SUITE_P (GetStatusCodesNoError, GetStatusCodesNoError, testing::Values(GetStatusCodesTestCase{ .reg_val={{ .offset=KEYMGR_OP_STATUS_STATUS_OFFSET,.value=KEYMGR_OP_STATUS_STATUS_VALUE_IDLE, }},.exp_val=kDifKeymgrStatusCodeIdle, }, GetStatusCodesTestCase{ .reg_val={{ .offset=KEYMGR_OP_STATUS_STATUS_OFFSET,.value=KEYMGR_OP_STATUS_STATUS_VALUE_DONE_SUCCESS, }},.exp_val=kDifKeymgrStatusCodeIdle, }, GetStatusCodesTestCase{ .reg_val={{ .offset=KEYMGR_OP_STATUS_STATUS_OFFSET,.value=KEYMGR_OP_STATUS_STATUS_VALUE_DONE_ERROR, }},.exp_val=kDifKeymgrStatusCodeIdle|kDifKeymgrStatusCodeInvalidKmacOutput|kDifKeymgrStatusCodeInvalidOperation, }, GetStatusCodesTestCase{ .reg_val={{ .offset=KEYMGR_OP_STATUS_STATUS_OFFSET,.value=KEYMGR_OP_STATUS_STATUS_VALUE_WIP, }},.exp_val=0, }))
 
 TEST_P (GetStatusCodesWithError, Success)
 
 INSTANTIATE_TEST_SUITE_P (GetStatusCodesWithError, GetStatusCodesWithError, testing::Values(GetStatusCodesTestCase{ .reg_val={{ .offset=KEYMGR_ERR_CODE_INVALID_OP_BIT,.value=1, }},.exp_val=kDifKeymgrStatusCodeIdle|kDifKeymgrStatusCodeInvalidOperation, }, GetStatusCodesTestCase{ .reg_val={{ .offset=KEYMGR_ERR_CODE_INVALID_KMAC_INPUT_BIT,.value=1, }},.exp_val=kDifKeymgrStatusCodeIdle|kDifKeymgrStatusCodeInvalidKmacInput, }, GetStatusCodesTestCase{ .reg_val={{ .offset=KEYMGR_ERR_CODE_INVALID_OP_BIT,.value=1, }, { .offset=KEYMGR_ERR_CODE_INVALID_KMAC_INPUT_BIT,.value=1, }},.exp_val=kDifKeymgrStatusCodeIdle|kDifKeymgrStatusCodeInvalidOperation|kDifKeymgrStatusCodeInvalidKmacInput, }))
 
 TEST_P (BadArgsTwo, GetState)
 
 TEST_P (GetState, Success)
 
 INSTANTIATE_TEST_SUITE_P (AllValidStates, GetState, testing::Values(GetStateTestCase{ .reg_val={{ .offset=KEYMGR_WORKING_STATE_STATE_OFFSET,.value=KEYMGR_WORKING_STATE_STATE_VALUE_RESET, }},.exp_output=kDifKeymgrStateReset, }, GetStateTestCase{ .reg_val={{ .offset=KEYMGR_WORKING_STATE_STATE_OFFSET,.value=KEYMGR_WORKING_STATE_STATE_VALUE_INIT, }},.exp_output=kDifKeymgrStateInitialized, }, GetStateTestCase{ .reg_val={{ .offset=KEYMGR_WORKING_STATE_STATE_OFFSET,.value=KEYMGR_WORKING_STATE_STATE_VALUE_CREATOR_ROOT_KEY, }},.exp_output=kDifKeymgrStateCreatorRootKey, }, GetStateTestCase{ .reg_val={{ .offset=KEYMGR_WORKING_STATE_STATE_OFFSET,.value=KEYMGR_WORKING_STATE_STATE_VALUE_OWNER_INTERMEDIATE_KEY, }},.exp_output=kDifKeymgrStateOwnerIntermediateKey, }, GetStateTestCase{ .reg_val={{ .offset=KEYMGR_WORKING_STATE_STATE_OFFSET,.value=KEYMGR_WORKING_STATE_STATE_VALUE_OWNER_KEY, }},.exp_output=kDifKeymgrStateOwnerRootKey, }, GetStateTestCase{ .reg_val={{ .offset=KEYMGR_WORKING_STATE_STATE_OFFSET,.value=KEYMGR_WORKING_STATE_STATE_VALUE_DISABLED, }},.exp_output=kDifKeymgrStateDisabled, }, GetStateTestCase{ .reg_val={{ .offset=KEYMGR_WORKING_STATE_STATE_OFFSET,.value=KEYMGR_WORKING_STATE_STATE_VALUE_INVALID, }},.exp_output=kDifKeymgrStateInvalid, }))
 
 TEST_F (GetStateTest, UnexpectedState)
 
 TEST_F (GenerateIdentityTest, BadArgs)
 
 TEST_F (GenerateIdentityTest, LockedBusy)
 
 TEST_F (GenerateIdentityTest, LockedConfig)
 
 TEST_F (GenerateIdentityTest, GenerateSealing)
 
 TEST_F (GenerateIdentityTest, GenerateAttestation)
 
 TEST_P (BadArgsTwo, GenerateVersionedKey)
 
 TEST_F (GenerateVersionedKeyTest, LockedBusy)
 
 TEST_F (GenerateVersionedKeyTest, LockedConfig)
 
 TEST_P (GenerateVersionedKey, Success)
 
 INSTANTIATE_TEST_SUITE_P (GenerateVersionedKeyAllDests, GenerateVersionedKey, testing::Values(GenerateVersionedKeyTestCase{ .dest=kDifKeymgrVersionedKeyDestSw,.exp_dest_sel=KEYMGR_CONTROL_SHADOWED_DEST_SEL_VALUE_NONE,.exp_operation=KEYMGR_CONTROL_SHADOWED_OPERATION_VALUE_GENERATE_SW_OUTPUT,.cdi_type=kDifKeymgrSealingCdi, }, GenerateVersionedKeyTestCase{ .dest=kDifKeymgrVersionedKeyDestAes,.exp_dest_sel=KEYMGR_CONTROL_SHADOWED_DEST_SEL_VALUE_AES,.exp_operation=KEYMGR_CONTROL_SHADOWED_OPERATION_VALUE_GENERATE_HW_OUTPUT,.cdi_type=kDifKeymgrSealingCdi, }, GenerateVersionedKeyTestCase{ .dest=kDifKeymgrVersionedKeyDestKmac,.exp_dest_sel=KEYMGR_CONTROL_SHADOWED_DEST_SEL_VALUE_KMAC,.exp_operation=KEYMGR_CONTROL_SHADOWED_OPERATION_VALUE_GENERATE_HW_OUTPUT,.cdi_type=kDifKeymgrSealingCdi, }, GenerateVersionedKeyTestCase{ .dest=kDifKeymgrVersionedKeyDestSw,.exp_dest_sel=KEYMGR_CONTROL_SHADOWED_DEST_SEL_VALUE_NONE,.exp_operation=KEYMGR_CONTROL_SHADOWED_OPERATION_VALUE_GENERATE_SW_OUTPUT,.cdi_type=kDifKeymgrAttestationCdi, }, GenerateVersionedKeyTestCase{ .dest=kDifKeymgrVersionedKeyDestAes,.exp_dest_sel=KEYMGR_CONTROL_SHADOWED_DEST_SEL_VALUE_AES,.exp_operation=KEYMGR_CONTROL_SHADOWED_OPERATION_VALUE_GENERATE_HW_OUTPUT,.cdi_type=kDifKeymgrAttestationCdi, }, GenerateVersionedKeyTestCase{ .dest=kDifKeymgrVersionedKeyDestKmac,.exp_dest_sel=KEYMGR_CONTROL_SHADOWED_DEST_SEL_VALUE_KMAC,.exp_operation=KEYMGR_CONTROL_SHADOWED_OPERATION_VALUE_GENERATE_HW_OUTPUT,.cdi_type=kDifKeymgrAttestationCdi, }))
 
 TEST_P (BadArgsTwo, GetBadArg)
 
 TEST_P (BadArgsTwo, SetBadArg)
 
 TEST_F (SideloadClearTest, Set)
 
 TEST_F (SideloadClearTest, Get)
 
 TEST_P (BadArgsTwo, ReadOutput)
 
 TEST_F (ReadOutputTest, Read)
 
 TEST_P (BadArgsTwo, ReadBinding)
 
 TEST_F (ReadBindingTest, Read)
 
 TEST_P (BadArgsTwo, ReadMaxKeyVersion)
 
 TEST_F (ReadMaxKeyVersionTest, Read)
 

Data Structure Documentation

◆ dif_keymgr_unittest::anonymous_namespace{dif_keymgr_unittest.cc}::GetStatusCodesTestCase

struct dif_keymgr_unittest::anonymous_namespace{dif_keymgr_unittest.cc}::GetStatusCodesTestCase

Definition at line 402 of file dif_keymgr_unittest.cc.

Data Fields
dif_keymgr_status_codes_t exp_val Expected output of dif_keymgr_get_status_codes().
vector< BitField > reg_val Values of OP_STATUS or ERR_CODE registers.

◆ dif_keymgr_unittest::anonymous_namespace{dif_keymgr_unittest.cc}::GetStateTestCase

struct dif_keymgr_unittest::anonymous_namespace{dif_keymgr_unittest.cc}::GetStateTestCase

Definition at line 528 of file dif_keymgr_unittest.cc.

Data Fields
dif_keymgr_state_t exp_output Expected output of dif_keymgr_get_state().
vector< BitField > reg_val Value of the WORKING_STATE register.

◆ dif_keymgr_unittest::anonymous_namespace{dif_keymgr_unittest.cc}::GenerateVersionedKeyTestCase

struct dif_keymgr_unittest::anonymous_namespace{dif_keymgr_unittest.cc}::GenerateVersionedKeyTestCase

Definition at line 676 of file dif_keymgr_unittest.cc.

Data Fields
dif_keymgr_cdi_type_t cdi_type Expected CDI_SEL value to be written to the CONTROL register.
dif_keymgr_versioned_key_dest_t dest Destination of the generated key.
uint32_t exp_dest_sel Expected DEST_SEL value to be written to the CONTROL register.
uint32_t exp_operation Expected OPERATION values to be written to the CONTROL register.

Function Documentation

◆ CreateEnumVector()

template<typename T >
std::vector<T> dif_keymgr_unittest::anonymous_namespace{dif_keymgr_unittest.cc}::CreateEnumVector ( last)

Returns a vector of values for a given enum type.

Assumes that the values are sequential and the first value is 0. last must be the last valid value for the given enum and is included in the returned vector.

Definition at line 33 of file dif_keymgr_unittest.cc.

◆ GetGoodBadEnumArg()

template<typename T >
T dif_keymgr_unittest::anonymous_namespace{dif_keymgr_unittest.cc}::GetGoodBadEnumArg ( bool  is_good,
last 
)

Returns a valid or invalid value for the given enum type.

last must be the last valid value of the given enum type and last+1 must be an invalid value.

Definition at line 62 of file dif_keymgr_unittest.cc.

◆ GetGoodBadPtrArg()

template<typename T >
T* dif_keymgr_unittest::anonymous_namespace{dif_keymgr_unittest.cc}::GetGoodBadPtrArg ( bool  is_good)

Returns a seemingly valid, i.e.

nonzero, pointer for the given type or a nullptr.

Definition at line 47 of file dif_keymgr_unittest.cc.