|
BSL v1.0.0 - 16.g9d98179
AMMOS Bundle Protocol Security Library (BSL)
|
#include <assert.h>#include <m-string.h>#include <BPSecLib_Private.h>#include <CryptoInterface.h>#include <mock_bpa/MockBPA.h>#include <backend/SecParam.h>#include <backend/SecurityActionSet.h>#include <backend/UtilDefs_SeqReadWrite.h>#include <policy_provider/SamplePolicyProvider.h>#include <security_context/DefaultSecContext.h>#include "bsl_test_utils.h"#include <security_context/rfc9173.h>
Include dependency graph for bsl_test_utils.c:Data Structures | |
| struct | BSL_TestUtils_Flat_Data_s |
| Internal state for reader and writer. More... | |
Macros | |
| #define | quick_data(field, tgt) |
Functions | |
| void | BIBTestContext_Init (BIBTestContext *obj) |
| void | BIBTestContext_Deinit (BIBTestContext *obj) |
| void | BCBTestContext_Init (BCBTestContext *obj) |
| void | BCBTestContext_Deinit (BCBTestContext *obj) |
| void | BSL_TestUtils_InitBIB_AppendixA1 (BIBTestContext *context, BSL_SecRole_e role, const char *key_id) |
| void | BSL_TestUtils_InitBCB_Appendix2 (BCBTestContext *context, BSL_SecRole_e role) |
| BSL_SecurityActionSet_t * | BSL_TestUtils_InitMallocBIBActionSet (BIBTestContext *bib_context) |
| BSL_SecurityResponseSet_t * | BSL_TestUtils_MallocEmptyPolicyResponse (void) |
| int | rfc9173_byte_gen_fn_a1 (unsigned char *buf, int len) |
| int | rfc9173_byte_gen_fn_a2_kek (unsigned char *buf, int len) |
| int | rfc9173_byte_gen_fn_a2_cek (unsigned char *buf, int len) |
| int | rfc9173_byte_gen_fn_a4 (unsigned char *buf, int len) |
| void | BSL_TestUtils_SetupDefaultSecurityContext (BSL_LibCtx_t *bsl_lib) |
| bool | BSL_TestUtils_IsB16StrEqualTo (const char *b16_string, BSL_Data_t encoded_val) |
| void | BSL_TestUtils_PrintHexToBuffer (const char *message, uint8_t *buff, size_t bufflen) |
| int | BSL_TestUtils_LoadBundleFromCBOR (BSL_TestContext_t *test_ctx, const char *cbor_seq) |
| BSL_HostEIDPattern_t | BSL_TestUtils_GetEidPatternFromText (const char *text) |
| RFC9173_A1_Params | BSL_TestUtils_GetRFC9173_A1Params (const char *key_id) |
| int | BSL_TestUtils_EncodeBase16 (string_t out, const BSL_Data_t *in, bool uppercase) |
| Encode to base16 text form. | |
| static int | BSL_TestUtils_DecodeBase16_char (uint8_t chr) |
| Decode a single character. | |
| int | BSL_TestUtils_DecodeBase16 (BSL_Data_t *out, const string_t in) |
| Decode base16 text form. | |
| int | BSL_TestUtils_ModifyEIDs (BSL_BundleRef_t *input_bundle, const char *src_eid, const char *dest_eid, const char *report_to_eid) |
| Modify bundle's source eid, destination eid, and report-to eid. | |
| static int | BSL_TestUtils_ReadBTSD_Read (void *user_data, void *buf, size_t *bufsize) |
| static void | BSL_TestUtils_ReadBTSD_Deinit (void *user_data) |
| BSL_SeqReader_t * | BSL_TestUtils_FlatReader (const void *buf, size_t bufsize) |
| Initialize a flat-buffer reader object. | |
| static int | BSL_TestUtils_WriteBTSD_Write (void *user_data, const void *buf, size_t size) |
| static void | BSL_TestUtils_WriteBTSD_Deinit (void *user_data) |
| BSL_SeqWriter_t * | BSL_TestUtils_FlatWriter (void **buf, size_t *bufsize) |
| Initialize a flat-buffer reader object. | |
Variables | |
| static const size_t | BSL_TestUtils_DecodeBase16_lim = 0x80 |
Size of the BSL_TestUtils_DecodeBase16_table. | |
| static const int | BSL_TestUtils_DecodeBase16_table [0x80] |
| Decode table for base16. | |
| #define quick_data | ( | field, | |
| tgt | |||
| ) |
| void BCBTestContext_Deinit | ( | BCBTestContext * | obj | ) |
References BSL_SecOper_Deinit(), BSL_SecParam_Deinit(), BCBTestContext::param_aes_variant, BCBTestContext::param_auth_tag, BCBTestContext::param_content_enc_key, BCBTestContext::param_init_vec, BCBTestContext::param_key_enc_key, BCBTestContext::param_scope_flags, BCBTestContext::param_test_key_id, BCBTestContext::param_wrapped_key, BCBTestContext::sec_oper, and BCBTestContext::use_key_wrap.
Referenced by test_RFC9173_AppendixA_Example2_BCB_Acceptor(), test_RFC9173_AppendixA_Example2_BCB_Source(), test_RFC9173_AppendixA_Example3_Acceptor(), test_RFC9173_AppendixA_Example3_Source(), test_RFC9173_AppendixA_Example4_Acceptor(), test_RFC9173_AppendixA_Example4_Source(), test_sec_accept_keyunwrap(), and test_sec_source_keywrap().
| void BCBTestContext_Init | ( | BCBTestContext * | obj | ) |
References BSL_SecOper_Init(), BSL_SecParam_Init(), BCBTestContext::param_aes_variant, BCBTestContext::param_auth_tag, BCBTestContext::param_content_enc_key, BCBTestContext::param_init_vec, BCBTestContext::param_key_enc_key, BCBTestContext::param_scope_flags, BCBTestContext::param_test_key_id, BCBTestContext::param_wrapped_key, BCBTestContext::sec_oper, and BCBTestContext::use_key_wrap.
Referenced by test_RFC9173_AppendixA_Example2_BCB_Acceptor(), test_RFC9173_AppendixA_Example2_BCB_Source(), test_RFC9173_AppendixA_Example3_Acceptor(), test_RFC9173_AppendixA_Example3_Source(), test_RFC9173_AppendixA_Example4_Acceptor(), test_RFC9173_AppendixA_Example4_Source(), test_sec_accept_keyunwrap(), and test_sec_source_keywrap().
| void BIBTestContext_Deinit | ( | BIBTestContext * | obj | ) |
References BSL_SecOper_Deinit(), BSL_SecParam_Deinit(), BIBTestContext::param_hmac, BIBTestContext::param_scope_flags, BIBTestContext::param_sha_variant, BIBTestContext::param_test_key, BIBTestContext::param_wrapped_key, BIBTestContext::param_wrapped_key_aes, BIBTestContext::sec_oper, and BIBTestContext::use_key_wrap.
Referenced by test_RFC9173_AppendixA_Example1_BIB_Source(), test_RFC9173_AppendixA_Example3_Acceptor(), test_RFC9173_AppendixA_Example3_Source(), test_RFC9173_AppendixA_Example4_Acceptor(), test_RFC9173_AppendixA_Example4_Source(), test_sec_accept_keyunwrap(), test_sec_source_keywrap(), test_SecurityContext_BIB_Acceptor(), test_SecurityContext_BIB_Source(), test_SecurityContext_BIB_Verifier(), and test_SecurityContext_BIB_Verifier_Failure().
| void BIBTestContext_Init | ( | BIBTestContext * | obj | ) |
References BSL_SecOper_Init(), BSL_SecParam_Init(), BIBTestContext::param_hmac, BIBTestContext::param_scope_flags, BIBTestContext::param_sha_variant, BIBTestContext::param_test_key, BIBTestContext::param_wrapped_key, BIBTestContext::param_wrapped_key_aes, BIBTestContext::sec_oper, and BIBTestContext::use_key_wrap.
Referenced by test_RFC9173_AppendixA_Example1_BIB_Source(), test_RFC9173_AppendixA_Example3_Acceptor(), test_RFC9173_AppendixA_Example3_Source(), test_RFC9173_AppendixA_Example4_Acceptor(), test_RFC9173_AppendixA_Example4_Source(), test_sec_accept_keyunwrap(), test_sec_source_keywrap(), test_SecurityContext_BIB_Acceptor(), test_SecurityContext_BIB_Source(), test_SecurityContext_BIB_Verifier(), and test_SecurityContext_BIB_Verifier_Failure().
| int BSL_TestUtils_DecodeBase16 | ( | BSL_Data_t * | output, |
| const string_t | input | ||
| ) |
Decode base16 text form.
This is defined in Section 8 of RFC 4648 [15].
| [out] | output | The output buffer, which will be sized to its data. |
| [in] | input | The input buffer to read, which must be null terminated. Whitespace in the input must have already been removed with strip_space(). |
References BSL_CHKERR1, BSL_Data_Resize(), BSL_TestUtils_DecodeBase16_char(), and BSL_Data_t::ptr.
Referenced by BSL_TestUtils_IsB16StrEqualTo(), BSL_TestUtils_LoadBundleFromCBOR(), test_bsl_loopback_bundle(), test_bsl_loopback_eid(), test_bsl_mock_encode_canonical(), test_BSL_TestUtils_DecodeBase16_valid(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), test_DecodeBase16(), test_qcbor_decode_only_head(), test_qcbor_decode_with_head(), test_qcbor_decode_without_head(), test_sec_accept_keyunwrap(), and test_sec_source_keywrap().
|
static |
Decode a single character.
| chr | The character to decode. |
References BSL_TestUtils_DecodeBase16_lim, and BSL_TestUtils_DecodeBase16_table.
Referenced by BSL_TestUtils_DecodeBase16().
| int BSL_TestUtils_EncodeBase16 | ( | string_t | output, |
| const BSL_Data_t * | input, | ||
| bool | uppercase | ||
| ) |
Encode to base16 text form.
This is defined in Section 8 of RFC 4648 [15].
| [out] | output | The output buffer, which will be appended to. |
| [in] | input | The input buffer to read. |
| uppercase | True to use upper-case letters, false to use lower-case. |
References BSL_Data_t::len, and BSL_Data_t::ptr.
Referenced by printencoded().
| BSL_SeqReader_t * BSL_TestUtils_FlatReader | ( | const void * | buf, |
| size_t | bufsize | ||
| ) |
Initialize a flat-buffer reader object.
References ASSERT_PROPERTY, BSL_calloc(), BSL_malloc(), BSL_TestUtils_ReadBTSD_Deinit(), BSL_TestUtils_ReadBTSD_Read(), buf, BSL_TestUtils_Flat_Data_s::file, BSL_TestUtils_Flat_Data_s::origbuf, BSL_TestUtils_Flat_Data_s::origsize, BSL_TestUtils_Flat_Data_s::ptr, and BSL_TestUtils_Flat_Data_s::size.
Referenced by switch(), test_decrypt(), test_encrypt(), and test_SeqReader_flat().
| BSL_SeqWriter_t * BSL_TestUtils_FlatWriter | ( | void ** | buf, |
| size_t * | bufsize | ||
| ) |
Initialize a flat-buffer reader object.
References ASSERT_PROPERTY, BSL_calloc(), BSL_malloc(), BSL_TestUtils_WriteBTSD_Deinit(), BSL_TestUtils_WriteBTSD_Write(), buf, BSL_TestUtils_Flat_Data_s::file, BSL_TestUtils_Flat_Data_s::origbuf, BSL_TestUtils_Flat_Data_s::origsize, BSL_TestUtils_Flat_Data_s::ptr, and BSL_TestUtils_Flat_Data_s::size.
Referenced by test_decrypt(), test_encrypt(), and test_SeqWriter_flat().
| BSL_HostEIDPattern_t BSL_TestUtils_GetEidPatternFromText | ( | const char * | text | ) |
References BSL_HostEIDPattern_DecodeFromText(), and BSL_HostEIDPattern_Init().
Referenced by _setUp(), setUp(), TEST_CASE(), test_MultiplePolicyProviders(), test_PolicyProvider_Inspect_RFC9173_BIB(), test_PolicyProvider_InspectSingleBIBRuleset(), and test_SamplePolicyProvider_WildcardPolicyRuleVerifiesBIB().
| RFC9173_A1_Params BSL_TestUtils_GetRFC9173_A1Params | ( | const char * | key_id | ) |
References RFC9173_TestVectors_AppendixA1::bib_asb_scope_flags_key, RFC9173_TestVectors_AppendixA1::bib_asb_scope_flags_value, RFC9173_TestVectors_AppendixA1::bib_asb_sha_variant_key, RFC9173_TestVectors_AppendixA1::bib_asb_sha_variant_value, BSL_SecParam_InitInt64(), BSL_SecParam_InitTextstr(), BSL_SECPARAM_TYPE_KEY_ID, BSL_SECPARAM_USE_KEY_WRAP, RFC9173_A1_Params::scope_flags, RFC9173_A1_Params::sha_variant, RFC9173_A1_Params::test_key_id, and RFC9173_A1_Params::use_key_wrap.
Referenced by test_MultiplePolicyProviders(), and test_PolicyProvider_Inspect_RFC9173_BIB().
| void BSL_TestUtils_InitBCB_Appendix2 | ( | BCBTestContext * | context, |
| BSL_SecRole_e | role | ||
| ) |
References ApxA2_AuthTag, ApxA2_InitVec, ApxA2_KeyEncKey, ApxA2_WrappedKey, BCBTestContext::auth_tag, BSL_POLICYACTION_NOTHING, BSL_SECBLOCKTYPE_BCB, BSL_SecOper_AppendParam(), BSL_SecOper_Populate(), BSL_SecParam_InitBytestr(), BSL_SecParam_InitInt64(), BSL_SecParam_InitTextstr(), BSL_SECPARAM_TYPE_AUTH_TAG, BSL_SECPARAM_TYPE_KEY_ID, BSL_SECPARAM_USE_KEY_WRAP, BSL_SECROLE_SOURCE, BCBTestContext::init_vector, BCBTestContext::key_enc_key, BCBTestContext::param_aes_variant, BCBTestContext::param_auth_tag, BCBTestContext::param_init_vec, BCBTestContext::param_scope_flags, BCBTestContext::param_test_key_id, BCBTestContext::param_wrapped_key, quick_data, RFC9173_BCB_AES_VARIANT_A128GCM, RFC9173_BCB_SECPARAM_AADSCOPE, RFC9173_BCB_SECPARAM_AESVARIANT, RFC9173_BCB_SECPARAM_IV, RFC9173_BCB_SECPARAM_WRAPPEDKEY, RFC9173_EXAMPLE_A2_KEY, BCBTestContext::sec_oper, BCBTestContext::use_key_wrap, and BCBTestContext::wrapped_key.
Referenced by test_RFC9173_AppendixA_Example2_BCB_Acceptor(), and test_RFC9173_AppendixA_Example2_BCB_Source().
| void BSL_TestUtils_InitBIB_AppendixA1 | ( | BIBTestContext * | context, |
| BSL_SecRole_e | role, | ||
| const char * | key_id | ||
| ) |
References ApxA1_HMAC, BSL_POLICYACTION_DROP_BLOCK, BSL_SECBLOCKTYPE_BIB, BSL_SecOper_AppendParam(), BSL_SecOper_Populate(), BSL_SecParam_InitBytestr(), BSL_SecParam_InitInt64(), BSL_SecParam_InitTextstr(), BSL_SECPARAM_TYPE_AUTH_TAG, BSL_SECPARAM_TYPE_KEY_ID, BSL_SECPARAM_USE_KEY_WRAP, BIBTestContext::hmac, BIBTestContext::param_hmac, BIBTestContext::param_scope_flags, BIBTestContext::param_sha_variant, BIBTestContext::param_test_key, quick_data, RFC9173_BIB_PARAMID_INTEG_SCOPE_FLAG, RFC9173_BIB_PARAMID_SHA_VARIANT, RFC9173_BIB_SHA_HMAC512, BIBTestContext::sec_oper, and BIBTestContext::use_key_wrap.
Referenced by test_RFC9173_AppendixA_Example1_BIB_Source(), test_SecurityContext_BIB_Acceptor(), test_SecurityContext_BIB_Source(), test_SecurityContext_BIB_Verifier(), and test_SecurityContext_BIB_Verifier_Failure().
| BSL_SecurityActionSet_t * BSL_TestUtils_InitMallocBIBActionSet | ( | BIBTestContext * | bib_context | ) |
References action_set, BSL_calloc(), BSL_free(), BSL_SecOper_Init(), BSL_SecurityAction_AppendSecOper(), BSL_SecurityAction_Deinit(), BSL_SecurityAction_Init(), BSL_SecurityActionSet_AppendAction(), BSL_SecurityActionSet_Init(), and BIBTestContext::sec_oper.
Referenced by test_SecurityContext_BIB_Acceptor(), test_SecurityContext_BIB_Source(), test_SecurityContext_BIB_Verifier(), and test_SecurityContext_BIB_Verifier_Failure().
| bool BSL_TestUtils_IsB16StrEqualTo | ( | const char * | b16_string, |
| BSL_Data_t | encoded_val | ||
| ) |
References BSL_Data_Deinit(), BSL_Data_Init(), BSL_LOG_ERR, BSL_TestUtils_DecodeBase16(), BSL_TestUtils_PrintHexToBuffer(), BSL_Data_t::len, BSL_Data_t::owned, BSL_Data_t::ptr, string_clear(), and string_init_set_str().
Referenced by test_RFC9173_AppendixA_Example4_Acceptor(), test_SecurityContext_BIB_Acceptor(), test_SecurityContext_BIB_Source(), and test_SecurityContext_BIB_Verifier().
| int BSL_TestUtils_LoadBundleFromCBOR | ( | BSL_TestContext_t * | test_ctx, |
| const char * | cbor_seq | ||
| ) |
References MockBPA_Bundle_t::blocks, MockBPA_Bundle_t::blocks_num, BSL_Data_Deinit(), BSL_Data_Init(), BSL_TestUtils_DecodeBase16(), mock_bpa_ctr_t::bundle_ref, MockBPA_PrimaryBlock_t::crc_type, BSL_BundleRef_t::data, mock_bpa_ctr_t::encoded, MockBPA_PrimaryBlock_t::flags, MockBPA_PrimaryBlock_t::lifetime, BSL_TestContext_t::mock_bpa_ctr, mock_bpa_decode(), BSL_Data_t::owned, MockBPA_Bundle_t::primary_block, MockBPA_CreationTimestamp_t::seq_num, string_clear(), string_init_set_str(), MockBPA_PrimaryBlock_t::timestamp, and MockBPA_PrimaryBlock_t::version.
Referenced by n_test_BSL_6(), test_BSL_32(), TEST_CASE(), test_dyn_mem_cbs_BSL_32(), test_MultiplePolicyProviders(), test_PolicyProvider_Inspect_RFC9173_BIB(), test_PolicyProvider_InspectEmptyRuleset(), test_PolicyProvider_InspectSingleBIBRuleset(), test_RFC9173_AppendixA_Example1_BIB_Source(), test_RFC9173_AppendixA_Example2_BCB_Acceptor(), test_RFC9173_AppendixA_Example2_BCB_Source(), test_RFC9173_AppendixA_Example3_Acceptor(), test_RFC9173_AppendixA_Example3_Source(), test_RFC9173_AppendixA_Example4_Acceptor(), test_RFC9173_AppendixA_Example4_Source(), test_SamplePolicyProvider_WildcardPolicyRuleVerifiesBIB(), test_sec_accept_keyunwrap(), test_sec_source_keywrap(), test_SecurityContext_BIB_Acceptor(), test_SecurityContext_BIB_Source(), test_SecurityContext_BIB_Verifier(), and test_SecurityContext_BIB_Verifier_Failure().
| BSL_SecurityResponseSet_t * BSL_TestUtils_MallocEmptyPolicyResponse | ( | void | ) |
References BSL_calloc(), and BSL_SecurityResponseSet_Sizeof().
Referenced by test_MultiplePolicyProviders(), test_RFC9173_AppendixA_Example3_Acceptor(), test_RFC9173_AppendixA_Example3_Source(), test_RFC9173_AppendixA_Example4_Acceptor(), test_RFC9173_AppendixA_Example4_Source(), test_SecurityContext_BIB_Acceptor(), test_SecurityContext_BIB_Source(), test_SecurityContext_BIB_Verifier(), and test_SecurityContext_BIB_Verifier_Failure().
| int BSL_TestUtils_ModifyEIDs | ( | BSL_BundleRef_t * | input_bundle, |
| const char * | src_eid, | ||
| const char * | dest_eid, | ||
| const char * | report_to_eid | ||
| ) |
Modify bundle's source eid, destination eid, and report-to eid.
| [in,out] | input_bundle | bundle to modify |
| [in] | src_eid | EID to set bundle source EID to. Set to NULL if bundle source EID should remain unchanged. |
| [in] | dest_eid | EID to set bundle destination EID to. Set to NULL if bundle destination EID should remain unchanged. |
| [in] | report_to_eid | EID to set bundle report-to EID to. Set to NULL if bundle report-to EID should remain unchanged. |
References BSL_BundleCtx_GetBundleMetadata(), BSL_PrimaryBlock_deinit(), BSL_PrimaryBlock_t::field_dest_eid, BSL_PrimaryBlock_t::field_report_to_eid, BSL_PrimaryBlock_t::field_src_node_id, and mock_bpa_eid_from_text().
Referenced by n_test_BSL_6(), test_BSL_32(), TEST_CASE(), and test_dyn_mem_cbs_BSL_32().
| void BSL_TestUtils_PrintHexToBuffer | ( | const char * | message, |
| uint8_t * | buff, | ||
| size_t | bufflen | ||
| ) |
References BSL_Log_DumpAsHexString(), and BSL_LOG_INFO.
Referenced by BSL_TestUtils_IsB16StrEqualTo().
|
static |
References BSL_free(), and BSL_TestUtils_Flat_Data_s::file.
Referenced by BSL_TestUtils_FlatReader().
|
static |
References buf, and BSL_TestUtils_Flat_Data_s::file.
Referenced by BSL_TestUtils_FlatReader().
| void BSL_TestUtils_SetupDefaultSecurityContext | ( | BSL_LibCtx_t * | bsl_lib | ) |
|
static |
|
static |
References BSL_ERR_FAILURE, BSL_SUCCESS, buf, BSL_TestUtils_Flat_Data_s::file, and BSL_TestUtils_Flat_Data_s::size.
Referenced by BSL_TestUtils_FlatWriter().
| int rfc9173_byte_gen_fn_a1 | ( | unsigned char * | buf, |
| int | len | ||
| ) |
References buf.
Referenced by test_RFC9173_AppendixA_Example1_BIB_Source().
| int rfc9173_byte_gen_fn_a2_cek | ( | unsigned char * | buf, |
| int | len | ||
| ) |
References buf.
Referenced by test_RFC9173_AppendixA_Example2_BCB_Source().
| int rfc9173_byte_gen_fn_a2_kek | ( | unsigned char * | buf, |
| int | len | ||
| ) |
References buf.
| int rfc9173_byte_gen_fn_a4 | ( | unsigned char * | buf, |
| int | len | ||
| ) |
References buf.
Referenced by test_RFC9173_AppendixA_Example3_Acceptor(), test_RFC9173_AppendixA_Example4_Acceptor(), and test_RFC9173_AppendixA_Example4_Source().
|
static |
Size of the BSL_TestUtils_DecodeBase16_table.
Referenced by BSL_TestUtils_DecodeBase16_char().
|
static |
Decode table for base16.
Referenced by BSL_TestUtils_DecodeBase16_char().