From 6c9a4ef62ab7f2fbfecad63ac998669072cca31e Mon Sep 17 00:00:00 2001 From: Donnie-Ice <77851621+Donnie-Ice@users.noreply.github.com> Date: Fri, 30 May 2025 14:59:40 +0000 Subject: [PATCH 01/15] style: auto-format via clang-format --- include/crypto.h | 6 +++--- src/core/crypto_aos.c | 10 ++++++---- src/core/crypto_config.c | 12 ++++++------ src/core/crypto_tm.c | 13 +++++++------ support/standalone/standalone.c | 15 ++++----------- test/unit/ut_tm_process.c | 3 ++- 6 files changed, 28 insertions(+), 31 deletions(-) diff --git a/include/crypto.h b/include/crypto.h index 189125e1..aeb738ab 100644 --- a/include/crypto.h +++ b/include/crypto.h @@ -329,9 +329,9 @@ extern CamConfig_t *cam_config; extern GvcidManagedParameters_t *gvcid_managed_parameters; extern GvcidManagedParameters_t *current_managed_parameters; extern GvcidManagedParameters_t gvcid_managed_parameters_array[GVCID_MAX_PARAM_SIZE]; -extern GvcidManagedParameters_t tc_current_managed_parameters_struct; -extern GvcidManagedParameters_t tm_current_managed_parameters_struct; -extern GvcidManagedParameters_t aos_current_managed_parameters_struct; +extern GvcidManagedParameters_t tc_current_managed_parameters_struct; +extern GvcidManagedParameters_t tm_current_managed_parameters_struct; +extern GvcidManagedParameters_t aos_current_managed_parameters_struct; extern int gvcid_counter; extern KeyInterface key_if; extern McInterface mc_if; diff --git a/src/core/crypto_aos.c b/src/core/crypto_aos.c index fc6b1324..6d717822 100644 --- a/src/core/crypto_aos.c +++ b/src/core/crypto_aos.c @@ -131,8 +131,8 @@ int32_t Crypto_AOS_ApplySecurity(uint8_t *pTfBuffer, uint16_t len_ingest) return status; } - if ((len_ingest < aos_current_managed_parameters_struct.max_frame_size) && (sa_ptr->ecs != CRYPTO_CIPHER_AES256_CBC) && - (sa_ptr->ecs != CRYPTO_CIPHER_AES256_CBC_MAC)) + if ((len_ingest < aos_current_managed_parameters_struct.max_frame_size) && + (sa_ptr->ecs != CRYPTO_CIPHER_AES256_CBC) && (sa_ptr->ecs != CRYPTO_CIPHER_AES256_CBC_MAC)) { status = CRYPTO_LIB_ERR_AOS_FL_LT_MAX_FRAME_SIZE; mc_if->mc_log(status); @@ -280,7 +280,8 @@ int32_t Crypto_AOS_ApplySecurity(uint8_t *pTfBuffer, uint16_t len_ingest) // Section 4.1.3.2.3 - All bits of the Insert Zone shall be set by the sending end // Based on the managed parameter configuration, we're not modifying the Insert Zone contents #ifdef AOS_DEBUG - printf(KYEL "Insert Zone present with length %d octets\n" RESET, aos_current_managed_parameters_struct.aos_iz_len); + printf(KYEL "Insert Zone present with length %d octets\n" RESET, + aos_current_managed_parameters_struct.aos_iz_len); #endif idx += aos_current_managed_parameters_struct.aos_iz_len; @@ -927,7 +928,8 @@ int32_t Crypto_AOS_ProcessSecurity(uint8_t *p_ingest, uint16_t len_ingest, uint8 // Section 4.1.3.2.3 - All bits of the Insert Zone shall be set by the sending end // Based on the managed parameter configuration, we're not modifying the Insert Zone contents #ifdef AOS_DEBUG - printf(KYEL "Insert Zone present with length %d octets\n" RESET, aos_current_managed_parameters_struct.aos_iz_len); + printf(KYEL "Insert Zone present with length %d octets\n" RESET, + aos_current_managed_parameters_struct.aos_iz_len); #endif byte_idx += aos_current_managed_parameters_struct.aos_iz_len; diff --git a/src/core/crypto_config.c b/src/core/crypto_config.c index a40aa797..1c0131be 100644 --- a/src/core/crypto_config.c +++ b/src/core/crypto_config.c @@ -45,10 +45,10 @@ CryptographyKmcCryptoServiceConfig_t *cryptography_kmc_crypto_config = NULL; CamConfig_t *cam_config = NULL; GvcidManagedParameters_t gvcid_managed_parameters_array[GVCID_MAN_PARAM_SIZE]; -int gvcid_counter = 0; -GvcidManagedParameters_t gvcid_null_struct = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -GvcidManagedParameters_t tc_current_managed_parameters_struct = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -GvcidManagedParameters_t tm_current_managed_parameters_struct = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +int gvcid_counter = 0; +GvcidManagedParameters_t gvcid_null_struct = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +GvcidManagedParameters_t tc_current_managed_parameters_struct = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +GvcidManagedParameters_t tm_current_managed_parameters_struct = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; GvcidManagedParameters_t aos_current_managed_parameters_struct = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // GvcidManagedParameters_t* gvcid_managed_parameters = NULL; @@ -396,8 +396,8 @@ int32_t Crypto_Shutdown(void) int32_t status = CRYPTO_LIB_SUCCESS; // current_managed_parameters = NULL; - tc_current_managed_parameters_struct = gvcid_null_struct; - tm_current_managed_parameters_struct = gvcid_null_struct; + tc_current_managed_parameters_struct = gvcid_null_struct; + tm_current_managed_parameters_struct = gvcid_null_struct; aos_current_managed_parameters_struct = gvcid_null_struct; for (int i = 0; i <= gvcid_counter; i++) { diff --git a/src/core/crypto_tm.c b/src/core/crypto_tm.c index daebfd7e..cbcaf961 100644 --- a/src/core/crypto_tm.c +++ b/src/core/crypto_tm.c @@ -687,7 +687,8 @@ int32_t Crypto_TM_Do_Encrypt(uint8_t sa_service_type, SecurityAssociation_t *sa_ { *new_fecf = Crypto_Calc_FECF((uint8_t *)pTfBuffer, tm_current_managed_parameters_struct.max_frame_size - 2); - pTfBuffer[tm_current_managed_parameters_struct.max_frame_size - 2] = (uint8_t)((*new_fecf & 0xFF00) >> 8); + pTfBuffer[tm_current_managed_parameters_struct.max_frame_size - 2] = + (uint8_t)((*new_fecf & 0xFF00) >> 8); pTfBuffer[tm_current_managed_parameters_struct.max_frame_size - 1] = (uint8_t)(*new_fecf & 0x00FF); } else // CRYPTO_TC_CREATE_FECF_FALSE @@ -845,8 +846,8 @@ int32_t Crypto_TM_ApplySecurity(uint8_t *pTfBuffer, uint16_t len_ingest) return status; } - if ((len_ingest < tm_current_managed_parameters_struct.max_frame_size) && (sa_ptr->ecs != CRYPTO_CIPHER_AES256_CBC) && - (sa_ptr->ecs != CRYPTO_CIPHER_AES256_CBC_MAC)) + if ((len_ingest < tm_current_managed_parameters_struct.max_frame_size) && + (sa_ptr->ecs != CRYPTO_CIPHER_AES256_CBC) && (sa_ptr->ecs != CRYPTO_CIPHER_AES256_CBC_MAC)) { status = CRYPTO_LIB_ERR_TM_FL_LT_MAX_FRAME_SIZE; mc_if->mc_log(status); @@ -1105,9 +1106,9 @@ int32_t Crypto_TM_Process_Setup(uint16_t len_ingest, uint16_t *byte_idx, uint8_t // Lookup-retrieve managed parameters for frame via gvcid: if (status == CRYPTO_LIB_SUCCESS) { - status = - Crypto_Get_Managed_Parameters_For_Gvcid(tm_frame_pri_hdr.tfvn, tm_frame_pri_hdr.scid, tm_frame_pri_hdr.vcid, - gvcid_managed_parameters_array, &tm_current_managed_parameters_struct); + status = Crypto_Get_Managed_Parameters_For_Gvcid(tm_frame_pri_hdr.tfvn, tm_frame_pri_hdr.scid, + tm_frame_pri_hdr.vcid, gvcid_managed_parameters_array, + &tm_current_managed_parameters_struct); } if (status != CRYPTO_LIB_SUCCESS) diff --git a/support/standalone/standalone.c b/support/standalone/standalone.c index 5b1c27a8..c9f179b8 100644 --- a/support/standalone/standalone.c +++ b/support/standalone/standalone.c @@ -373,20 +373,13 @@ void crypto_standalone_tc_frame(uint8_t *in_data, uint16_t in_length, uint8_t *o if (DYNAMIC_LENGTHS) { uint8_t segment_hdr_len = tc_current_managed_parameters_struct.has_segmentation_hdr ? 1 : 0; - uint8_t fecf_len = tc_current_managed_parameters_struct.has_fecf ? 2 : 0; + uint8_t fecf_len = tc_current_managed_parameters_struct.has_fecf ? 2 : 0; SecurityAssociation_t *sa_ptr; sa_if->sa_get_from_spi(tc_vcid, &sa_ptr); - *out_length = TC_FRAME_HEADER_SIZE + - segment_hdr_len + - sa_ptr->arsn_len + - sa_ptr->shivf_len + - sa_ptr->shplf_len + - sa_ptr->shsnf_len + - in_length + - sa_ptr->stmacf_len + - fecf_len; + *out_length = TC_FRAME_HEADER_SIZE + segment_hdr_len + sa_ptr->arsn_len + sa_ptr->shivf_len + + sa_ptr->shplf_len + sa_ptr->shsnf_len + in_length + sa_ptr->stmacf_len + fecf_len; } else { @@ -587,7 +580,7 @@ void crypto_standalone_spp_telem_or_idle(int32_t *status_p, uint8_t *tm_ptr, uin udp_info_t *tm_write_sock = &tm_socks->write; if ((tm_ptr[0] == 0x08) || (tm_ptr[0] == 0x09) || ((tm_ptr[0] == 0x07) && (tm_ptr[1] == 0xff)) || - (tm_ptr[0] == 0x0F && tm_ptr[1] == 0xFD) || (tm_ptr[0] == 0x1F && tm_ptr[1] == 0xFD)) + (tm_ptr[0] == 0x0F && tm_ptr[1] == 0xFD) || (tm_ptr[0] == 0x1F && tm_ptr[1] == 0xFD)) { spp_len = (((0xFFFF & tm_ptr[4]) << 8) | tm_ptr[5]) + 7; #ifdef CRYPTO_STANDALONE_TM_PROCESS_DEBUG diff --git a/test/unit/ut_tm_process.c b/test/unit/ut_tm_process.c index 076fc96d..450e8a38 100644 --- a/test/unit/ut_tm_process.c +++ b/test/unit/ut_tm_process.c @@ -1981,7 +1981,8 @@ UTEST(TM_PROCESS_ENC_VAL, AEAD_AES_GCM_BITMASK_1) // Determine managed parameters by GVCID, which nominally happens in TO // status = // Crypto_Get_Managed_Parameters_For_Gvcid(tm_frame_pri_hdr.tfvn, tm_frame_pri_hdr.scid, tm_frame_pri_hdr.vcid, - // gvcid_managed_parameters_array, &tm_current_managed_parameters_struct); + // gvcid_managed_parameters_array, + // &tm_current_managed_parameters_struct); // Expose/setup SAs for testing SecurityAssociation_t ta; From 90b782ba1293868d94da76928565bbd400a80a69 Mon Sep 17 00:00:00 2001 From: Donnie-Ice Date: Tue, 3 Jun 2025 16:37:59 -0400 Subject: [PATCH 02/15] [nasa/nos3#619] Apply a few memory leak fixes, need to remove debug prints --- src/core/crypto_config.c | 4 +- src/core/crypto_tc.c | 9 ++- src/core/crypto_tm.c | 2 +- ...ryptography_interface_libgcrypt.template.c | 54 ++++++++--------- support/standalone/standalone.c | 60 +++++++++---------- 5 files changed, 67 insertions(+), 62 deletions(-) diff --git a/src/core/crypto_config.c b/src/core/crypto_config.c index a40aa797..c588151a 100644 --- a/src/core/crypto_config.c +++ b/src/core/crypto_config.c @@ -79,7 +79,7 @@ int32_t Crypto_SC_Init(void) TC_CHECK_FECF_TRUE, 0x3F, SA_INCREMENT_NONTRANSMITTED_IV_TRUE); // TC GvcidManagedParameters_t TC_UT_Managed_Parameters = { - 0, 0x0003, 0, TC_HAS_FECF, AOS_FHEC_NA, AOS_IZ_NA, 0, TC_HAS_SEGMENT_HDRS, 1024, TC_OCF_NA, 1}; + 0, 0x0003, 0, TC_NO_FECF, AOS_FHEC_NA, AOS_IZ_NA, 0, TC_HAS_SEGMENT_HDRS, 1024, TC_OCF_NA, 1}; Crypto_Config_Add_Gvcid_Managed_Parameters(TC_UT_Managed_Parameters); TC_UT_Managed_Parameters.vcid = 2; Crypto_Config_Add_Gvcid_Managed_Parameters(TC_UT_Managed_Parameters); @@ -88,7 +88,7 @@ int32_t Crypto_SC_Init(void) // TM GvcidManagedParameters_t TM_UT_Managed_Parameters = { - 0, 0x0003, 1, TM_HAS_FECF, AOS_FHEC_NA, AOS_IZ_NA, 0, TM_SEGMENT_HDRS_NA, 1786, TM_NO_OCF, 1}; + 0, 0x0003, 1, TM_NO_FECF, AOS_FHEC_NA, AOS_IZ_NA, 0, TM_SEGMENT_HDRS_NA, 1786, TM_NO_OCF, 1}; Crypto_Config_Add_Gvcid_Managed_Parameters(TM_UT_Managed_Parameters); TM_UT_Managed_Parameters.vcid = 4; Crypto_Config_Add_Gvcid_Managed_Parameters(TM_UT_Managed_Parameters); diff --git a/src/core/crypto_tc.c b/src/core/crypto_tc.c index 8c1f16ef..885ccf58 100644 --- a/src/core/crypto_tc.c +++ b/src/core/crypto_tc.c @@ -399,12 +399,14 @@ int32_t Crypto_TC_Encrypt(uint8_t sa_service_type, SecurityAssociation_t *sa_ptr { status = CRYPTO_LIB_ERR_KEY_ID_ERROR; mc_if->mc_log(status); + free(p_new_enc_frame); return status; } if (ekp->key_state != KEY_ACTIVE) { status = CRYPTO_LIB_ERR_KEY_STATE_INVALID; mc_if->mc_log(status); + free(p_new_enc_frame); return status; } } @@ -418,12 +420,14 @@ int32_t Crypto_TC_Encrypt(uint8_t sa_service_type, SecurityAssociation_t *sa_ptr { status = CRYPTO_LIB_ERR_KEY_ID_ERROR; mc_if->mc_log(status); + free(p_new_enc_frame); return status; } if (akp->key_state != KEY_ACTIVE) { status = CRYPTO_LIB_ERR_KEY_STATE_INVALID; mc_if->mc_log(status); + free(p_new_enc_frame); return status; } } @@ -1107,7 +1111,7 @@ int32_t Crypto_TC_ApplySecurity_Cam(const uint8_t *p_in_frame, const uint16_t in Crypto_TC_Calc_Lengths(&fecf_len, &segment_hdr_len, &ocf_len); // Calculate tf_payload length here to be used in other logic - int16_t payload_calc = temp_tc_header.fl - TC_FRAME_HEADER_SIZE - segment_hdr_len - fecf_len + 1; + int16_t payload_calc = (temp_tc_header.fl + 1) - TC_FRAME_HEADER_SIZE - segment_hdr_len - ocf_len - fecf_len; // check if payload length underflows if (payload_calc < 0) { @@ -1133,8 +1137,9 @@ int32_t Crypto_TC_ApplySecurity_Cam(const uint8_t *p_in_frame, const uint16_t in */ // Calculate frame lengths based on SA fields + // fecf is added after the frame during apply *p_enc_frame_len = - temp_tc_header.fl + 1 + 2 + sa_ptr->shivf_len + sa_ptr->shsnf_len + sa_ptr->shplf_len + sa_ptr->stmacf_len; + temp_tc_header.fl + 1 + SPI_LEN + sa_ptr->shivf_len + sa_ptr->shsnf_len + sa_ptr->shplf_len + sa_ptr->stmacf_len + ocf_len; new_enc_frame_header_field_length = (*p_enc_frame_len) - 1; // Finalize frame setup diff --git a/src/core/crypto_tm.c b/src/core/crypto_tm.c index daebfd7e..4f726cc3 100644 --- a/src/core/crypto_tm.c +++ b/src/core/crypto_tm.c @@ -926,7 +926,7 @@ int32_t Crypto_TM_ApplySecurity(uint8_t *pTfBuffer, uint16_t len_ingest) printf("Actual secondary header length: %d\n", secondary_hdr_len); #endif // Only validate SHVN if secondary header is present - if (idx > secondary_hdr_start && shvn > 3) // SHVN is 2 bits, so max value is 3 + if (idx > secondary_hdr_start && shvn != 0) // SHVN is 2 bits, so max value is 3 { status = CRYPTO_LIB_ERR_TM_SECONDARY_HDR_VN; mc_if->mc_log(status); diff --git a/src/crypto/libgcrypt/cryptography_interface_libgcrypt.template.c b/src/crypto/libgcrypt/cryptography_interface_libgcrypt.template.c index 7d4c846a..d5e38dfd 100644 --- a/src/crypto/libgcrypt/cryptography_interface_libgcrypt.template.c +++ b/src/crypto/libgcrypt/cryptography_interface_libgcrypt.template.c @@ -304,33 +304,33 @@ static int32_t cryptography_validate_authentication(uint8_t *data_out, size_t le } #ifdef MAC_DEBUG - uint32_t *tmac_size = &mac_size; - uint8_t *tmac = calloc(1, *tmac_size); - gcry_error = gcry_mac_read(tmp_mac_hd, - tmac, // tag output - (size_t *)tmac_size // tag size - ); - if ((gcry_error & GPG_ERR_CODE_MASK) != GPG_ERR_NO_ERROR) - { - printf(KRED "ERROR: gcry_mac_read error code %d\n" RESET, gcry_error & GPG_ERR_CODE_MASK); - status = CRYPTO_LIB_ERR_MAC_RETRIEVAL_ERROR; - return status; - } - - printf("Calculated Mac Size: %d\n", *tmac_size); - printf("Calculated MAC (full length):\n\t"); - for (uint32_t i = 0; i < *tmac_size; i++) - { - printf("%02X", tmac[i]); - } - printf("\nCalculated MAC (truncated to sa_ptr->stmacf_len):\n\t"); - for (uint32_t i = 0; i < mac_size; i++) - { - printf("%02X", tmac[i]); - } - printf("\n"); - if (!tmac) - free(tmac); + // uint32_t *tmac_size = &mac_size; + // uint8_t *tmac = calloc(1, *tmac_size); + // gcry_error = gcry_mac_read(tmp_mac_hd, + // tmac, // tag output + // (size_t *)tmac_size // tag size + // ); + // if ((gcry_error & GPG_ERR_CODE_MASK) != GPG_ERR_NO_ERROR) + // { + // printf(KRED "ERROR: gcry_mac_read error code %d\n" RESET, gcry_error & GPG_ERR_CODE_MASK); + // status = CRYPTO_LIB_ERR_MAC_RETRIEVAL_ERROR; + // return status; + // } + + // printf("Calculated Mac Size: %d\n", *tmac_size); + // printf("Calculated MAC (full length):\n\t"); + // for (uint32_t i = 0; i < *tmac_size; i++) + // { + // printf("%02X", tmac[i]); + // } + // printf("\nCalculated MAC (truncated to sa_ptr->stmacf_len):\n\t"); + // for (uint32_t i = 0; i < mac_size; i++) + // { + // printf("%02X", tmac[i]); + // } + // printf("\n"); + // if (!tmac) + // free(tmac); printf("Received MAC:\n\t"); for (uint32_t i = 0; i < mac_size; i++) diff --git a/support/standalone/standalone.c b/support/standalone/standalone.c index 5b1c27a8..04398488 100644 --- a/support/standalone/standalone.c +++ b/support/standalone/standalone.c @@ -372,20 +372,12 @@ void crypto_standalone_tc_frame(uint8_t *in_data, uint16_t in_length, uint8_t *o /* TC Length */ if (DYNAMIC_LENGTHS) { - uint8_t segment_hdr_len = tc_current_managed_parameters_struct.has_segmentation_hdr ? 1 : 0; + uint8_t segment_hdr_len = 1; uint8_t fecf_len = tc_current_managed_parameters_struct.has_fecf ? 2 : 0; - SecurityAssociation_t *sa_ptr; - sa_if->sa_get_from_spi(tc_vcid, &sa_ptr); - *out_length = TC_FRAME_HEADER_SIZE + segment_hdr_len + - sa_ptr->arsn_len + - sa_ptr->shivf_len + - sa_ptr->shplf_len + - sa_ptr->shsnf_len + in_length + - sa_ptr->stmacf_len + fecf_len; } else @@ -598,10 +590,19 @@ void crypto_standalone_spp_telem_or_idle(int32_t *status_p, uint8_t *tm_ptr, uin } printf("\n"); #endif - + if ((tm_ptr[0] == 0x0f && tm_ptr[1] == 0xfd) || (tm_ptr[0] == 0x1f && tm_ptr[1] == 0xfd) || (tm_ptr[0] == 0x18)) + { + printf("crypto_standalone_tm_process - SPP[%d]: 0x", spp_len); + for (int i = 0; i < spp_len; i++) + { + printf("%02x", tm_ptr[i]); + } + printf("\n"); + } // Send all SPP telemetry packets // 0x09 for HK/Device TLM Packets (Generic Components) - if (tm_ptr[0] == 0x08 || tm_ptr[0] == 0x09 || (tm_ptr[0] == 0x0f && tm_ptr[1] == 0xfd)) + // 0x(0/1)FFD = CFDP + if (tm_ptr[0] == 0x08 || tm_ptr[0] == 0x09 || (tm_ptr[0] == 0x0f && tm_ptr[1] == 0xfd) || (tm_ptr[0] == 0x1f && tm_ptr[1] == 0xfd) || (tm_ptr[0] == 0x1F && tm_ptr[1] == 0xFE)) { status = sendto(tm_write_sock->sockfd, tm_ptr, spp_len, 0, (struct sockaddr *)&tm_write_sock->saddr, sizeof(tm_write_sock->saddr)); @@ -627,8 +628,7 @@ void crypto_standalone_spp_telem_or_idle(int32_t *status_p, uint8_t *tm_ptr, uin tm_process_len = tm_process_len - spp_len; } else if ((tm_ptr[0] == 0xFF && tm_ptr[1] == 0x48) || (tm_ptr[0] == 0x00 && tm_ptr[1] == 0x00) || - (tm_ptr[0] == 0x02 && tm_ptr[1] == 0x00) || (tm_ptr[0] == 0xFF && tm_ptr[1] == 0xFF) || - (tm_ptr[0] == 0x1F && tm_ptr[1] == 0xFE)) + (tm_ptr[0] == 0x02 && tm_ptr[1] == 0x00) || (tm_ptr[0] == 0xFF && tm_ptr[1] == 0xFF)) { // TODO: Why 0x0200? // Idle Frame @@ -696,10 +696,10 @@ void *crypto_standalone_tm_process(void *socks) status = Crypto_TM_ProcessSecurity(tm_process_in + 4, (const uint16_t)tm_process_len - 4, &tm_ptr, &tm_out_len); #else - if (tm_debug == 1) - { - printf("Processing frame without ASM...\n"); - } + // if (tm_debug == 1) + // { + // printf("Processing frame without ASM...\n"); + // } status = Crypto_TM_ProcessSecurity(tm_process_in, (const uint16_t)tm_process_len, &tm_ptr, &tm_out_len); #endif if (status == CRYPTO_LIB_SUCCESS) @@ -712,12 +712,12 @@ void *crypto_standalone_tm_process(void *socks) } else { - printf("crypto_standalone_tm_process: 1 - status = %d, decrypted[%d]: 0x", status, tm_out_len); - for (int i = 0; i < tm_out_len; i++) - { - printf("%02x", tm_ptr[i]); - } - printf("\n"); + // printf("crypto_standalone_tm_process: 1 - status = %d, decrypted[%d]: 0x", status, tm_out_len); + // for (int i = 0; i < tm_out_len; i++) + // { + // printf("%02x", tm_ptr[i]); + // } + // printf("\n"); } } @@ -737,13 +737,13 @@ void *crypto_standalone_tm_process(void *socks) if (tm_debug == 1) // Note: Need logic to allow broken packet assembly { - printf("crypto_standalone_tm_process: 2 - beginning after first header pointer - deframed[%d]: 0x", - tm_process_len); - for (int i = 0; i < tm_process_len; i++) - { - printf("%02x", tm_framed[i]); - } - printf("\n"); + // printf("crypto_standalone_tm_process: 2 - beginning after first header pointer - deframed[%d]: 0x", + // tm_process_len); + // for (int i = 0; i < tm_process_len; i++) + // { + // printf("%02x", tm_framed[i]); + // } + // printf("\n"); } #endif From 71e4b3df1f6cc35379870d8eb1d421dacfe28d5a Mon Sep 17 00:00:00 2001 From: Donnie-Ice <77851621+Donnie-Ice@users.noreply.github.com> Date: Tue, 3 Jun 2025 20:40:20 +0000 Subject: [PATCH 03/15] style: auto-format via clang-format --- src/core/crypto_tc.c | 4 ++-- support/standalone/standalone.c | 17 ++++++++--------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/core/crypto_tc.c b/src/core/crypto_tc.c index 885ccf58..4b6233b9 100644 --- a/src/core/crypto_tc.c +++ b/src/core/crypto_tc.c @@ -1138,8 +1138,8 @@ int32_t Crypto_TC_ApplySecurity_Cam(const uint8_t *p_in_frame, const uint16_t in // Calculate frame lengths based on SA fields // fecf is added after the frame during apply - *p_enc_frame_len = - temp_tc_header.fl + 1 + SPI_LEN + sa_ptr->shivf_len + sa_ptr->shsnf_len + sa_ptr->shplf_len + sa_ptr->stmacf_len + ocf_len; + *p_enc_frame_len = temp_tc_header.fl + 1 + SPI_LEN + sa_ptr->shivf_len + sa_ptr->shsnf_len + sa_ptr->shplf_len + + sa_ptr->stmacf_len + ocf_len; new_enc_frame_header_field_length = (*p_enc_frame_len) - 1; // Finalize frame setup diff --git a/support/standalone/standalone.c b/support/standalone/standalone.c index 42e98446..80e13379 100644 --- a/support/standalone/standalone.c +++ b/support/standalone/standalone.c @@ -373,12 +373,9 @@ void crypto_standalone_tc_frame(uint8_t *in_data, uint16_t in_length, uint8_t *o if (DYNAMIC_LENGTHS) { uint8_t segment_hdr_len = 1; - uint8_t fecf_len = tc_current_managed_parameters_struct.has_fecf ? 2 : 0; + uint8_t fecf_len = tc_current_managed_parameters_struct.has_fecf ? 2 : 0; - *out_length = TC_FRAME_HEADER_SIZE + - segment_hdr_len + - in_length + - fecf_len; + *out_length = TC_FRAME_HEADER_SIZE + segment_hdr_len + in_length + fecf_len; } else { @@ -602,7 +599,8 @@ void crypto_standalone_spp_telem_or_idle(int32_t *status_p, uint8_t *tm_ptr, uin // Send all SPP telemetry packets // 0x09 for HK/Device TLM Packets (Generic Components) // 0x(0/1)FFD = CFDP - if (tm_ptr[0] == 0x08 || tm_ptr[0] == 0x09 || (tm_ptr[0] == 0x0f && tm_ptr[1] == 0xfd) || (tm_ptr[0] == 0x1f && tm_ptr[1] == 0xfd) || (tm_ptr[0] == 0x1F && tm_ptr[1] == 0xFE)) + if (tm_ptr[0] == 0x08 || tm_ptr[0] == 0x09 || (tm_ptr[0] == 0x0f && tm_ptr[1] == 0xfd) || + (tm_ptr[0] == 0x1f && tm_ptr[1] == 0xfd) || (tm_ptr[0] == 0x1F && tm_ptr[1] == 0xFE)) { status = sendto(tm_write_sock->sockfd, tm_ptr, spp_len, 0, (struct sockaddr *)&tm_write_sock->saddr, sizeof(tm_write_sock->saddr)); @@ -712,8 +710,8 @@ void *crypto_standalone_tm_process(void *socks) } else { - // printf("crypto_standalone_tm_process: 1 - status = %d, decrypted[%d]: 0x", status, tm_out_len); - // for (int i = 0; i < tm_out_len; i++) + // printf("crypto_standalone_tm_process: 1 - status = %d, decrypted[%d]: 0x", status, + // tm_out_len); for (int i = 0; i < tm_out_len; i++) // { // printf("%02x", tm_ptr[i]); // } @@ -737,7 +735,8 @@ void *crypto_standalone_tm_process(void *socks) if (tm_debug == 1) // Note: Need logic to allow broken packet assembly { - // printf("crypto_standalone_tm_process: 2 - beginning after first header pointer - deframed[%d]: 0x", + // printf("crypto_standalone_tm_process: 2 - beginning after first header pointer - deframed[%d]: + // 0x", // tm_process_len); // for (int i = 0; i < tm_process_len; i++) // { From 335fb13bb83a0056f68cd4682492e2746b5f68ed Mon Sep 17 00:00:00 2001 From: Donnie-Ice Date: Wed, 2 Jul 2025 10:00:50 -0400 Subject: [PATCH 04/15] [nasa/cryptolib#385] Fixed SPP parsing issue in standalone --- support/standalone/standalone.c | 62 +++++++++++++++------------------ 1 file changed, 29 insertions(+), 33 deletions(-) diff --git a/support/standalone/standalone.c b/support/standalone/standalone.c index 42e98446..96ceeee3 100644 --- a/support/standalone/standalone.c +++ b/support/standalone/standalone.c @@ -524,7 +524,8 @@ void crypto_standalone_tm_frame(uint8_t *in_data, uint16_t in_length, uint8_t *o // Calculate security headers and trailers uint8_t header_length = TM_PRI_HDR_LENGTH + SDLS_SPI_LENGTH + sa_ptr->shivf_len + sa_ptr->shplf_len + - sa_ptr->shsnf_len; // TODO: Why +40? + sa_ptr->shsnf_len; + uint8_t trailer_length = sa_ptr->stmacf_len; if (tm_current_managed_parameters_struct.has_fecf == TM_HAS_FECF) { @@ -569,31 +570,27 @@ void crypto_standalone_tm_debug_process(uint8_t *tm_process_in) } } -void crypto_standalone_spp_telem_or_idle(int32_t *status_p, uint8_t *tm_ptr, uint16_t *spp_len_p, - udp_interface_t *tm_socks, int *tm_process_len_p) +void crypto_standalone_spp_telem_or_idle(int32_t *status, uint8_t *tm_ptr, uint16_t *spp_len, + udp_interface_t *tm_socks, int *tm_process_len) { - int32_t status = *status_p; - uint16_t spp_len = *spp_len_p; - int tm_process_len = *tm_process_len_p; - udp_info_t *tm_write_sock = &tm_socks->write; if ((tm_ptr[0] == 0x08) || (tm_ptr[0] == 0x09) || ((tm_ptr[0] == 0x07) && (tm_ptr[1] == 0xff)) || (tm_ptr[0] == 0x0F && tm_ptr[1] == 0xFD) || (tm_ptr[0] == 0x1F && tm_ptr[1] == 0xFD)) { - spp_len = (((0xFFFF & tm_ptr[4]) << 8) | tm_ptr[5]) + 7; + *spp_len = (((0xFFFF & tm_ptr[4]) << 8) | tm_ptr[5]) + 7; #ifdef CRYPTO_STANDALONE_TM_PROCESS_DEBUG - printf("crypto_standalone_tm_process - SPP[%d]: 0x", spp_len); - for (int i = 0; i < spp_len; i++) + printf("crypto_standalone_tm_process - SPP[%d]: 0x", *spp_len); + for (int i = 0; i < *spp_len; i++) { printf("%02x", tm_ptr[i]); } printf("\n"); #endif - if ((tm_ptr[0] == 0x0f && tm_ptr[1] == 0xfd) || (tm_ptr[0] == 0x1f && tm_ptr[1] == 0xfd) || (tm_ptr[0] == 0x18)) + if ((tm_ptr[0] == 0x0f && tm_ptr[1] == 0xfd) || (tm_ptr[0] == 0x08 && tm_ptr[1] == 0xb3)) { - printf("crypto_standalone_tm_process - SPP[%d]: 0x", spp_len); - for (int i = 0; i < spp_len; i++) + printf("crypto_standalone_tm_process - SPP[%d]: 0x", *spp_len); + for (int i = 0; i < *spp_len; i++) { printf("%02x", tm_ptr[i]); } @@ -601,10 +598,10 @@ void crypto_standalone_spp_telem_or_idle(int32_t *status_p, uint8_t *tm_ptr, uin } // Send all SPP telemetry packets // 0x09 for HK/Device TLM Packets (Generic Components) - // 0x(0/1)FFD = CFDP - if (tm_ptr[0] == 0x08 || tm_ptr[0] == 0x09 || (tm_ptr[0] == 0x0f && tm_ptr[1] == 0xfd) || (tm_ptr[0] == 0x1f && tm_ptr[1] == 0xfd) || (tm_ptr[0] == 0x1F && tm_ptr[1] == 0xFE)) + // 0x0FFD = CFDP + if (tm_ptr[0] == 0x08 || tm_ptr[0] == 0x09 || (tm_ptr[0] == 0x0f && tm_ptr[1] == 0xfd)) { - status = sendto(tm_write_sock->sockfd, tm_ptr, spp_len, 0, (struct sockaddr *)&tm_write_sock->saddr, + *status = sendto(tm_write_sock->sockfd, tm_ptr, *spp_len, 0, (struct sockaddr *)&tm_write_sock->saddr, sizeof(tm_write_sock->saddr)); } // Only send idle packets if configured to do so @@ -612,20 +609,20 @@ void crypto_standalone_spp_telem_or_idle(int32_t *status_p, uint8_t *tm_ptr, uin { #ifdef CRYPTO_STANDALONE_DISCARD_IDLE_PACKETS // Don't forward idle packets - status = spp_len; + *status = *spp_len; #else - status = sendto(tm_write_sock->sockfd, tm_ptr, spp_len, 0, (struct sockaddr *)&tm_write_sock->saddr, + status = sendto(tm_write_sock->sockfd, tm_ptr, *spp_len, 0, (struct sockaddr *)&tm_write_sock->saddr, sizeof(tm_write_sock->saddr)); #endif } // Check status - if ((status == -1) || (status != spp_len)) + if ((*status == -1) || (*status != *spp_len)) { - printf("crypto_standalone_tm_process - Reply error %d \n", status); + printf("crypto_standalone_tm_process - Reply error %d \n", *status); } - tm_ptr = &tm_ptr[spp_len]; - tm_process_len = tm_process_len - spp_len; + + *tm_process_len -= *spp_len; } else if ((tm_ptr[0] == 0xFF && tm_ptr[1] == 0x48) || (tm_ptr[0] == 0x00 && tm_ptr[1] == 0x00) || (tm_ptr[0] == 0x02 && tm_ptr[1] == 0x00) || (tm_ptr[0] == 0xFF && tm_ptr[1] == 0xFF)) @@ -635,27 +632,24 @@ void crypto_standalone_spp_telem_or_idle(int32_t *status_p, uint8_t *tm_ptr, uin // Idle Frame is entire length of remaining data #ifdef CRYPTO_STANDALONE_DISCARD_IDLE_FRAMES // Don't forward idle frame - status = spp_len; + *status = *spp_len; #else - status = sendto(tm_write_sock->sockfd, tm_ptr, spp_len, 0, (struct sockaddr *)&tm_write_sock->saddr, + status = sendto(tm_write_sock->sockfd, tm_ptr, *spp_len, 0, (struct sockaddr *)&tm_write_sock->saddr, sizeof(tm_write_sock->saddr)); - if ((status == -1) || (status != spp_len)) + if ((status == -1) || (status != *spp_len)) { - printf("crypto_standalone_tm_process - Reply error %d \n", status); + printf("crypto_standalone_tm_process - Reply error %d \n", *status); } - tm_ptr = &tm_ptr[spp_len]; + tm_ptr = &tm_ptr[*spp_len]; #endif - tm_process_len = 0; + *tm_process_len = 0; } else { printf("crypto_standalone_tm_process - SPP loop error, expected idle packet or frame! tm_ptr = 0x%02x%02x \n", tm_ptr[0], tm_ptr[1]); - tm_process_len = 0; + *tm_process_len = 0; } - *status_p = status; - *spp_len_p = spp_len; - *tm_process_len_p = tm_process_len; } void *crypto_standalone_tm_process(void *socks) @@ -753,6 +747,7 @@ void *crypto_standalone_tm_process(void *socks) { // SPP Telemetry OR SPP Idle Packet crypto_standalone_spp_telem_or_idle(&status, tm_ptr, &spp_len, tm_socks, &tm_process_len); + tm_ptr = &tm_ptr[spp_len]; } } else @@ -763,13 +758,14 @@ void *crypto_standalone_tm_process(void *socks) /* Reset */ memset(tm_process_in, 0x00, sizeof(tm_process_in)); tm_process_len = 0; + memset(tm_ptr, 0x00, sizeof(tm_process_in)); #ifdef CRYPTO_STANDALONE_TM_PROCESS_DEBUG printf("\n"); #endif } /* Delay */ - usleep(100); + usleep(10); } close(tm_read_sock->port); close(tm_write_sock->port); From b44bce5e9f69326b5eeb246165b36eb5cc7c6d5d Mon Sep 17 00:00:00 2001 From: Donnie-Ice Date: Wed, 2 Jul 2025 10:16:14 -0400 Subject: [PATCH 05/15] [nasa/cryptolib#385] remove merge remnants --- support/standalone/standalone.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/support/standalone/standalone.c b/support/standalone/standalone.c index 836c1096..8d5d582c 100644 --- a/support/standalone/standalone.c +++ b/support/standalone/standalone.c @@ -595,14 +595,8 @@ void crypto_standalone_spp_telem_or_idle(int32_t *status, uint8_t *tm_ptr, uint1 } // Send all SPP telemetry packets // 0x09 for HK/Device TLM Packets (Generic Components) -<<<<<<< HEAD // 0x0FFD = CFDP if (tm_ptr[0] == 0x08 || tm_ptr[0] == 0x09 || (tm_ptr[0] == 0x0f && tm_ptr[1] == 0xfd)) -======= - // 0x(0/1)FFD = CFDP - if (tm_ptr[0] == 0x08 || tm_ptr[0] == 0x09 || (tm_ptr[0] == 0x0f && tm_ptr[1] == 0xfd) || - (tm_ptr[0] == 0x1f && tm_ptr[1] == 0xfd) || (tm_ptr[0] == 0x1F && tm_ptr[1] == 0xFE)) ->>>>>>> 71e4b3df1f6cc35379870d8eb1d421dacfe28d5a { *status = sendto(tm_write_sock->sockfd, tm_ptr, *spp_len, 0, (struct sockaddr *)&tm_write_sock->saddr, sizeof(tm_write_sock->saddr)); From 216121c0d162da93dae1c2d8fc93f96354017959 Mon Sep 17 00:00:00 2001 From: Donnie-Ice <77851621+Donnie-Ice@users.noreply.github.com> Date: Wed, 2 Jul 2025 15:31:53 +0000 Subject: [PATCH 06/15] style: auto-format via clang-format --- support/standalone/standalone.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/support/standalone/standalone.c b/support/standalone/standalone.c index a8663485..b25ba884 100644 --- a/support/standalone/standalone.c +++ b/support/standalone/standalone.c @@ -521,8 +521,8 @@ void crypto_standalone_tm_frame(uint8_t *in_data, uint16_t in_length, uint8_t *o } // Calculate security headers and trailers - uint8_t header_length = TM_PRI_HDR_LENGTH + SDLS_SPI_LENGTH + sa_ptr->shivf_len + sa_ptr->shplf_len + - sa_ptr->shsnf_len; + uint8_t header_length = + TM_PRI_HDR_LENGTH + SDLS_SPI_LENGTH + sa_ptr->shivf_len + sa_ptr->shplf_len + sa_ptr->shsnf_len; uint8_t trailer_length = sa_ptr->stmacf_len; if (tm_current_managed_parameters_struct.has_fecf == TM_HAS_FECF) @@ -568,8 +568,8 @@ void crypto_standalone_tm_debug_process(uint8_t *tm_process_in) } } -void crypto_standalone_spp_telem_or_idle(int32_t *status, uint8_t *tm_ptr, uint16_t *spp_len, - udp_interface_t *tm_socks, int *tm_process_len) +void crypto_standalone_spp_telem_or_idle(int32_t *status, uint8_t *tm_ptr, uint16_t *spp_len, udp_interface_t *tm_socks, + int *tm_process_len) { udp_info_t *tm_write_sock = &tm_socks->write; @@ -600,7 +600,7 @@ void crypto_standalone_spp_telem_or_idle(int32_t *status, uint8_t *tm_ptr, uint1 if (tm_ptr[0] == 0x08 || tm_ptr[0] == 0x09 || (tm_ptr[0] == 0x0f && tm_ptr[1] == 0xfd)) { *status = sendto(tm_write_sock->sockfd, tm_ptr, *spp_len, 0, (struct sockaddr *)&tm_write_sock->saddr, - sizeof(tm_write_sock->saddr)); + sizeof(tm_write_sock->saddr)); } // Only send idle packets if configured to do so else @@ -619,7 +619,7 @@ void crypto_standalone_spp_telem_or_idle(int32_t *status, uint8_t *tm_ptr, uint1 { printf("crypto_standalone_tm_process - Reply error %d \n", *status); } - + *tm_process_len -= *spp_len; } else if ((tm_ptr[0] == 0xFF && tm_ptr[1] == 0x48) || (tm_ptr[0] == 0x00 && tm_ptr[1] == 0x00) || From 3d39219915418f47a67b9f688f2e8920073a6b6e Mon Sep 17 00:00:00 2001 From: Donnie-Ice Date: Wed, 2 Jul 2025 11:48:00 -0400 Subject: [PATCH 07/15] [nasa/cryptolib#385] Uncomment TM debugs --- support/standalone/standalone.c | 46 ++++++++++++--------------------- 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/support/standalone/standalone.c b/support/standalone/standalone.c index 8d5d582c..88720903 100644 --- a/support/standalone/standalone.c +++ b/support/standalone/standalone.c @@ -573,7 +573,7 @@ void crypto_standalone_spp_telem_or_idle(int32_t *status, uint8_t *tm_ptr, uint1 udp_info_t *tm_write_sock = &tm_socks->write; if ((tm_ptr[0] == 0x08) || (tm_ptr[0] == 0x09) || ((tm_ptr[0] == 0x07) && (tm_ptr[1] == 0xff)) || - (tm_ptr[0] == 0x0F && tm_ptr[1] == 0xFD) || (tm_ptr[0] == 0x1F && tm_ptr[1] == 0xFD)) + (tm_ptr[0] == 0x0F && tm_ptr[1] == 0xFD)) { *spp_len = (((0xFFFF & tm_ptr[4]) << 8) | tm_ptr[5]) + 7; #ifdef CRYPTO_STANDALONE_TM_PROCESS_DEBUG @@ -584,15 +584,6 @@ void crypto_standalone_spp_telem_or_idle(int32_t *status, uint8_t *tm_ptr, uint1 } printf("\n"); #endif - if ((tm_ptr[0] == 0x0f && tm_ptr[1] == 0xfd) || (tm_ptr[0] == 0x08 && tm_ptr[1] == 0xb3)) - { - printf("crypto_standalone_tm_process - SPP[%d]: 0x", *spp_len); - for (int i = 0; i < *spp_len; i++) - { - printf("%02x", tm_ptr[i]); - } - printf("\n"); - } // Send all SPP telemetry packets // 0x09 for HK/Device TLM Packets (Generic Components) // 0x0FFD = CFDP @@ -637,7 +628,6 @@ void crypto_standalone_spp_telem_or_idle(int32_t *status, uint8_t *tm_ptr, uint1 { printf("crypto_standalone_tm_process - Reply error %d \n", *status); } - tm_ptr = &tm_ptr[*spp_len]; #endif *tm_process_len = 0; } @@ -687,10 +677,10 @@ void *crypto_standalone_tm_process(void *socks) status = Crypto_TM_ProcessSecurity(tm_process_in + 4, (const uint16_t)tm_process_len - 4, &tm_ptr, &tm_out_len); #else - // if (tm_debug == 1) - // { - // printf("Processing frame without ASM...\n"); - // } + if (tm_debug == 1) + { + printf("Processing frame without ASM...\n"); + } status = Crypto_TM_ProcessSecurity(tm_process_in, (const uint16_t)tm_process_len, &tm_ptr, &tm_out_len); #endif if (status == CRYPTO_LIB_SUCCESS) @@ -703,12 +693,12 @@ void *crypto_standalone_tm_process(void *socks) } else { - // printf("crypto_standalone_tm_process: 1 - status = %d, decrypted[%d]: 0x", status, - // tm_out_len); for (int i = 0; i < tm_out_len; i++) - // { - // printf("%02x", tm_ptr[i]); - // } - // printf("\n"); + printf("crypto_standalone_tm_process: 1 - status = %d, decrypted[%d]: 0x", status, + tm_out_len); for (int i = 0; i < tm_out_len; i++) + { + printf("%02x", tm_ptr[i]); + } + printf("\n"); } } @@ -728,14 +718,12 @@ void *crypto_standalone_tm_process(void *socks) if (tm_debug == 1) // Note: Need logic to allow broken packet assembly { - // printf("crypto_standalone_tm_process: 2 - beginning after first header pointer - deframed[%d]: - // 0x", - // tm_process_len); - // for (int i = 0; i < tm_process_len; i++) - // { - // printf("%02x", tm_framed[i]); - // } - // printf("\n"); + printf("crypto_standalone_tm_process: 2 - beginning after first header pointer - deframed[%d]: 0x", tm_process_len); + for (int i = 0; i < tm_process_len; i++) + { + printf("%02x", tm_framed[i]); + } + printf("\n"); } #endif From 845d9221edf0b8929c07ad2dc4f7f955ae9a84d4 Mon Sep 17 00:00:00 2001 From: Donnie-Ice <77851621+Donnie-Ice@users.noreply.github.com> Date: Wed, 2 Jul 2025 15:49:00 +0000 Subject: [PATCH 08/15] style: auto-format via clang-format --- support/standalone/standalone.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/support/standalone/standalone.c b/support/standalone/standalone.c index cd2e16dc..0fa7a846 100644 --- a/support/standalone/standalone.c +++ b/support/standalone/standalone.c @@ -694,8 +694,8 @@ void *crypto_standalone_tm_process(void *socks) } else { - printf("crypto_standalone_tm_process: 1 - status = %d, decrypted[%d]: 0x", status, - tm_out_len); for (int i = 0; i < tm_out_len; i++) + printf("crypto_standalone_tm_process: 1 - status = %d, decrypted[%d]: 0x", status, tm_out_len); + for (int i = 0; i < tm_out_len; i++) { printf("%02x", tm_ptr[i]); } @@ -719,7 +719,8 @@ void *crypto_standalone_tm_process(void *socks) if (tm_debug == 1) // Note: Need logic to allow broken packet assembly { - printf("crypto_standalone_tm_process: 2 - beginning after first header pointer - deframed[%d]: 0x", tm_process_len); + printf("crypto_standalone_tm_process: 2 - beginning after first header pointer - deframed[%d]: 0x", + tm_process_len); for (int i = 0; i < tm_process_len; i++) { printf("%02x", tm_framed[i]); From c80ceaa3cee1bfca1f958b9487629980f1888353 Mon Sep 17 00:00:00 2001 From: Donnie-Ice Date: Wed, 2 Jul 2025 13:56:27 -0400 Subject: [PATCH 09/15] [nasa/cryptolib#385] Restore internal SAs --- .../internal/sa_interface_inmemory.template.c | 73 ++++++++++--------- 1 file changed, 37 insertions(+), 36 deletions(-) diff --git a/src/sa/internal/sa_interface_inmemory.template.c b/src/sa/internal/sa_interface_inmemory.template.c index dd0c3502..5b86da69 100644 --- a/src/sa/internal/sa_interface_inmemory.template.c +++ b/src/sa/internal/sa_interface_inmemory.template.c @@ -255,11 +255,11 @@ void sa_populate(void) sa[1].sa_state = SA_OPERATIONAL; sa[1].est = 0; sa[1].ast = 0; - sa[1].shivf_len = 12; - sa[1].iv_len = 12; + sa[1].shivf_len = 0; + sa[1].iv_len = 0; sa[1].shsnf_len = 0; - sa[1].arsnw = 5; - sa[1].arsnw_len = 1; + sa[1].arsnw = 0; + sa[1].arsnw_len = 0; sa[1].arsn_len = 0; sa[1].gvcid_blk.tfvn = 0; sa[1].gvcid_blk.scid = SCID & 0x3FF; @@ -291,13 +291,14 @@ void sa_populate(void) // AKID = 3 sa[3].spi = 3; sa[3].akid = 3; - sa[3].sa_state = SA_KEYED; + sa[3].sa_state = SA_OPERATIONAL; sa[3].acs_len = 1; - sa[3].acs = CRYPTO_MAC_HMAC_SHA512; + sa[3].acs = CRYPTO_MAC_HMAC_SHA256; sa[3].est = 0; sa[3].ast = 1; - sa[3].shivf_len = 12; - sa[3].iv_len = 12; + sa[3].shivf_len = 0; + sa[3].iv_len = 0; + sa[3].abm_len = ABM_SIZE; sa[3].shsnf_len = 2; sa[3].arsn_len = 2; sa[3].arsnw_len = 1; @@ -305,7 +306,7 @@ void sa_populate(void) sa[3].stmacf_len = 16; sa[3].gvcid_blk.tfvn = 0; sa[3].gvcid_blk.scid = SCID & 0x3FF; - sa[3].gvcid_blk.vcid = 0; + sa[3].gvcid_blk.vcid = 3; sa[3].gvcid_blk.mapid = TYPE_TC; // TC - Authenticated Encryption - AES-GCM-256 (Keyed) @@ -334,50 +335,50 @@ void sa_populate(void) // IV = 0...0, IV-Len = 12, MAC-Len = 0, TFVN = 0, VCID = 0, ARSNW = 5 // EKID = 5 sa[5].spi = 5; - sa[5].sa_state = SA_KEYED; + sa[5].sa_state = SA_OPERATIONAL; sa[5].est = 0; sa[5].ast = 0; - sa[5].shivf_len = 12; - sa[5].iv_len = 12; - sa[5].shsnf_len = 2; - sa[5].arsnw = 5; - sa[5].arsnw_len = 1; - sa[5].arsn_len = 2; + sa[5].shivf_len = 0; + sa[5].iv_len = 0; + sa[5].shsnf_len = 0; + sa[5].arsnw = 0; + sa[5].arsnw_len = 0; + sa[5].arsn_len = 0; sa[5].gvcid_blk.tfvn = 0; sa[5].gvcid_blk.scid = SCID & 0x3FF; sa[5].gvcid_blk.vcid = 1; - sa[5].gvcid_blk.mapid = TYPE_TM; + sa[5].gvcid_blk.mapid = TYPE_TC; // TM - Encryption Only - AES-CBC-256 (Keyed) // IV = 0...0, IV-Len = 16, TFVN = 0, VCID = 0; MAC-Len = 0, ARSNW = 5 // EKID = 6 sa[6].spi = 6; sa[6].ekid = 6; - sa[6].sa_state = SA_KEYED; + sa[6].sa_state = SA_OPERATIONAL; sa[6].ecs_len = 1; - sa[6].ecs = CRYPTO_CIPHER_AES256_CBC; + sa[6].ecs = CRYPTO_CIPHER_AES256_GCM; sa[6].est = 1; sa[6].ast = 0; - sa[6].shivf_len = 16; - sa[6].iv_len = 16; - sa[6].shplf_len = 1; + sa[6].shivf_len = 12; + sa[6].iv_len = 12; + sa[6].shplf_len = 0; sa[6].stmacf_len = 0; - sa[6].arsn_len = 2; - sa[6].arsnw_len = 1; - sa[6].arsnw = 5; + sa[6].arsn_len = 0; + sa[6].arsnw_len = 0; + sa[6].arsnw = 0; sa[6].gvcid_blk.tfvn = 0; sa[6].gvcid_blk.scid = SCID & 0x3FF; - sa[6].gvcid_blk.vcid = 0; - sa[6].gvcid_blk.mapid = TYPE_TM; + sa[6].gvcid_blk.vcid = 4; + sa[6].gvcid_blk.mapid = TYPE_TC; // TM - Authentication Only HMAC_SHA512 (Keyed) // IV = 0...0, IV-Len = 12, MAC-Len = 16, TFVN = 0, VCID = 0, ARSNW = 5 // AKID = 7 sa[7].spi = 7; sa[7].akid = 7; - sa[7].sa_state = SA_KEYED; + sa[7].sa_state = SA_OPERATIONAL; sa[7].acs_len = 1; - sa[7].acs = CRYPTO_MAC_HMAC_SHA512; + sa[7].acs = CRYPTO_MAC_HMAC_SHA256; sa[7].est = 0; sa[7].ast = 1; sa[7].shivf_len = 12; @@ -389,8 +390,8 @@ void sa_populate(void) sa[7].stmacf_len = 16; sa[7].gvcid_blk.tfvn = 0; sa[7].gvcid_blk.scid = SCID & 0x3FF; - sa[7].gvcid_blk.vcid = 0; - sa[7].gvcid_blk.mapid = TYPE_TM; + sa[7].gvcid_blk.vcid = 5; + sa[7].gvcid_blk.mapid = TYPE_TC; // TM - Authenticated Encryption AES-CBC-256 (Keyed) // IV = 0...0, IV-Len = 16, MAC-Len = 16, TFVN = 0, VCID = 0, ARSNW = 5 @@ -413,13 +414,13 @@ void sa_populate(void) sa[8].gvcid_blk.tfvn = 0; sa[8].gvcid_blk.scid = SCID & 0x3FF; sa[8].gvcid_blk.vcid = 0; - sa[8].gvcid_blk.mapid = TYPE_TM; + sa[8].gvcid_blk.mapid = TYPE_TC; // AOS - Clear Mode // IV = 0...0, IV-Len = 12, MAC-Len = 0, TFVN = 1, VCID = 0, ARSNW = 5 // EKID = 9 sa[9].spi = 9; - sa[9].sa_state = SA_KEYED; + sa[9].sa_state = SA_OPERATIONAL; sa[9].est = 0; sa[9].ast = 0; sa[9].shivf_len = 12; @@ -450,7 +451,7 @@ void sa_populate(void) sa[10].abm_len = ABM_SIZE; sa[10].gvcid_blk.tfvn = 0x01; sa[10].gvcid_blk.scid = SCID & 0x3FF; - sa[10].gvcid_blk.vcid = 0; + sa[10].gvcid_blk.vcid = 6; sa[10].gvcid_blk.mapid = 0; // AOS - Encryption Only, AES-GCM-256 (Keyed) @@ -458,7 +459,7 @@ void sa_populate(void) // EKID = 11 sa[11].spi = 11; sa[11].ekid = 11; - sa[11].sa_state = SA_KEYED; + sa[11].sa_state = SA_OPERATIONAL; sa[11].est = 1; sa[11].ast = 0; sa[11].ecs_len = 1; @@ -546,7 +547,7 @@ void sa_populate(void) sa[15].arsn_len = 2; sa[15].gvcid_blk.tfvn = 2; sa[15].gvcid_blk.scid = SCID & 0x3FF; - sa[15].gvcid_blk.vcid = 3; + sa[15].gvcid_blk.vcid = 7; sa[15].gvcid_blk.mapid = TYPE_TC; sa_perform_save(&sa[0]); From 15b8f734ac61ea1283c88e40bc7b1058b6b9d09f Mon Sep 17 00:00:00 2001 From: Donnie-Ice Date: Wed, 2 Jul 2025 15:19:48 -0400 Subject: [PATCH 10/15] [nasa/cryptolib#385] Try to find happy medium between dev and nos3 SAs --- src/core/crypto_config.c | 15 +++++++ .../internal/sa_interface_inmemory.template.c | 43 ++++++++++--------- support/standalone/standalone.c | 2 +- 3 files changed, 38 insertions(+), 22 deletions(-) diff --git a/src/core/crypto_config.c b/src/core/crypto_config.c index 0582493c..5f6437eb 100644 --- a/src/core/crypto_config.c +++ b/src/core/crypto_config.c @@ -95,6 +95,21 @@ int32_t Crypto_SC_Init(void) TM_UT_Managed_Parameters.vcid = 5; Crypto_Config_Add_Gvcid_Managed_Parameters(TM_UT_Managed_Parameters); status = Crypto_Init(); + + SecurityAssociation_t *sa_ptr = NULL; + sa_if->sa_get_from_spi(1, &sa_ptr); + sa_ptr->gvcid_blk.vcid = 0; + sa_if->sa_get_from_spi(2, &sa_ptr); + sa_ptr->gvcid_blk.vcid = 2; + sa_if->sa_get_from_spi(3, &sa_ptr); + sa_ptr->gvcid_blk.vcid = 3; + sa_if->sa_get_from_spi(5, &sa_ptr); + sa_ptr->gvcid_blk.vcid = 1; + sa_if->sa_get_from_spi(6, &sa_ptr); + sa_ptr->gvcid_blk.vcid = 4; + sa_if->sa_get_from_spi(7, &sa_ptr); + sa_ptr->gvcid_blk.vcid = 5; + return status; } diff --git a/src/sa/internal/sa_interface_inmemory.template.c b/src/sa/internal/sa_interface_inmemory.template.c index 5b86da69..0bdb2b06 100644 --- a/src/sa/internal/sa_interface_inmemory.template.c +++ b/src/sa/internal/sa_interface_inmemory.template.c @@ -255,11 +255,11 @@ void sa_populate(void) sa[1].sa_state = SA_OPERATIONAL; sa[1].est = 0; sa[1].ast = 0; - sa[1].shivf_len = 0; - sa[1].iv_len = 0; + sa[1].shivf_len = 12; + sa[1].iv_len = 12; sa[1].shsnf_len = 0; - sa[1].arsnw = 0; - sa[1].arsnw_len = 0; + sa[1].arsnw = 5; + sa[1].arsnw_len = 1; sa[1].arsn_len = 0; sa[1].gvcid_blk.tfvn = 0; sa[1].gvcid_blk.scid = SCID & 0x3FF; @@ -293,11 +293,11 @@ void sa_populate(void) sa[3].akid = 3; sa[3].sa_state = SA_OPERATIONAL; sa[3].acs_len = 1; - sa[3].acs = CRYPTO_MAC_HMAC_SHA256; + sa[3].acs = CRYPTO_MAC_HMAC_SHA512; sa[3].est = 0; sa[3].ast = 1; - sa[3].shivf_len = 0; - sa[3].iv_len = 0; + sa[3].shivf_len = 12; + sa[3].iv_len = 12; sa[3].abm_len = ABM_SIZE; sa[3].shsnf_len = 2; sa[3].arsn_len = 2; @@ -306,7 +306,7 @@ void sa_populate(void) sa[3].stmacf_len = 16; sa[3].gvcid_blk.tfvn = 0; sa[3].gvcid_blk.scid = SCID & 0x3FF; - sa[3].gvcid_blk.vcid = 3; + sa[3].gvcid_blk.vcid = 0; sa[3].gvcid_blk.mapid = TYPE_TC; // TC - Authenticated Encryption - AES-GCM-256 (Keyed) @@ -338,11 +338,11 @@ void sa_populate(void) sa[5].sa_state = SA_OPERATIONAL; sa[5].est = 0; sa[5].ast = 0; - sa[5].shivf_len = 0; - sa[5].iv_len = 0; + sa[5].shivf_len = 12; + sa[5].iv_len = 12; sa[5].shsnf_len = 0; - sa[5].arsnw = 0; - sa[5].arsnw_len = 0; + sa[5].arsnw = 5; + sa[5].arsnw_len = 1; sa[5].arsn_len = 0; sa[5].gvcid_blk.tfvn = 0; sa[5].gvcid_blk.scid = SCID & 0x3FF; @@ -356,19 +356,19 @@ void sa_populate(void) sa[6].ekid = 6; sa[6].sa_state = SA_OPERATIONAL; sa[6].ecs_len = 1; - sa[6].ecs = CRYPTO_CIPHER_AES256_GCM; + sa[6].ecs = CRYPTO_CIPHER_AES256_CBC; sa[6].est = 1; sa[6].ast = 0; - sa[6].shivf_len = 12; - sa[6].iv_len = 12; - sa[6].shplf_len = 0; + sa[6].shivf_len = 16; + sa[6].iv_len = 16; + sa[6].shplf_len = 1; sa[6].stmacf_len = 0; sa[6].arsn_len = 0; - sa[6].arsnw_len = 0; - sa[6].arsnw = 0; + sa[6].arsnw_len = 1; + sa[6].arsnw = 5; sa[6].gvcid_blk.tfvn = 0; sa[6].gvcid_blk.scid = SCID & 0x3FF; - sa[6].gvcid_blk.vcid = 4; + sa[6].gvcid_blk.vcid = 0; sa[6].gvcid_blk.mapid = TYPE_TC; // TM - Authentication Only HMAC_SHA512 (Keyed) @@ -378,11 +378,12 @@ void sa_populate(void) sa[7].akid = 7; sa[7].sa_state = SA_OPERATIONAL; sa[7].acs_len = 1; - sa[7].acs = CRYPTO_MAC_HMAC_SHA256; + sa[7].acs = CRYPTO_MAC_HMAC_SHA512; sa[7].est = 0; sa[7].ast = 1; sa[7].shivf_len = 12; sa[7].iv_len = 12; + sa[7].abm_len = ABM_SIZE; sa[7].shsnf_len = 2; sa[7].arsn_len = 2; sa[7].arsnw_len = 1; @@ -390,7 +391,7 @@ void sa_populate(void) sa[7].stmacf_len = 16; sa[7].gvcid_blk.tfvn = 0; sa[7].gvcid_blk.scid = SCID & 0x3FF; - sa[7].gvcid_blk.vcid = 5; + sa[7].gvcid_blk.vcid = 0; sa[7].gvcid_blk.mapid = TYPE_TC; // TM - Authenticated Encryption AES-CBC-256 (Keyed) diff --git a/support/standalone/standalone.c b/support/standalone/standalone.c index 0fa7a846..e9aa8e01 100644 --- a/support/standalone/standalone.c +++ b/support/standalone/standalone.c @@ -163,7 +163,7 @@ int32_t crypto_standalone_process_command(int32_t cc, int32_t num_tokens, char * { Crypto_saPrint(test_association); } - + printf("Get_SA_Status: %d\n", status); if ((status == CRYPTO_LIB_SUCCESS) && (test_association->sa_state == SA_OPERATIONAL) && (test_association->gvcid_blk.mapid == TYPE_TC) && (test_association->gvcid_blk.scid == SCID)) { From 7a380f0e35a32b7aab5d4792e948a348327b4a8b Mon Sep 17 00:00:00 2001 From: Donnie-Ice <77851621+Donnie-Ice@users.noreply.github.com> Date: Wed, 2 Jul 2025 19:21:17 +0000 Subject: [PATCH 11/15] style: auto-format via clang-format --- src/core/crypto_config.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/crypto_config.c b/src/core/crypto_config.c index 5f6437eb..800a17a0 100644 --- a/src/core/crypto_config.c +++ b/src/core/crypto_config.c @@ -95,7 +95,7 @@ int32_t Crypto_SC_Init(void) TM_UT_Managed_Parameters.vcid = 5; Crypto_Config_Add_Gvcid_Managed_Parameters(TM_UT_Managed_Parameters); status = Crypto_Init(); - + SecurityAssociation_t *sa_ptr = NULL; sa_if->sa_get_from_spi(1, &sa_ptr); sa_ptr->gvcid_blk.vcid = 0; From 996e6f82b6b3d430d763f49d73c5da2b0037e8da Mon Sep 17 00:00:00 2001 From: Donnie-Ice Date: Wed, 2 Jul 2025 20:14:42 +0000 Subject: [PATCH 12/15] [nasa/cryptolib#385] Restore SAs to dev --- .../internal/sa_interface_inmemory.template.c | 24 +++++++++---------- test/unit/ut_sa_save.c | 2 +- test/unit/ut_tm_apply.c | 3 ++- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/sa/internal/sa_interface_inmemory.template.c b/src/sa/internal/sa_interface_inmemory.template.c index 0bdb2b06..05b316f4 100644 --- a/src/sa/internal/sa_interface_inmemory.template.c +++ b/src/sa/internal/sa_interface_inmemory.template.c @@ -291,14 +291,14 @@ void sa_populate(void) // AKID = 3 sa[3].spi = 3; sa[3].akid = 3; - sa[3].sa_state = SA_OPERATIONAL; + sa[3].sa_state = SA_KEYED; sa[3].acs_len = 1; sa[3].acs = CRYPTO_MAC_HMAC_SHA512; sa[3].est = 0; sa[3].ast = 1; sa[3].shivf_len = 12; sa[3].iv_len = 12; - sa[3].abm_len = ABM_SIZE; + sa[3].abm_len = 0; sa[3].shsnf_len = 2; sa[3].arsn_len = 2; sa[3].arsnw_len = 1; @@ -335,15 +335,15 @@ void sa_populate(void) // IV = 0...0, IV-Len = 12, MAC-Len = 0, TFVN = 0, VCID = 0, ARSNW = 5 // EKID = 5 sa[5].spi = 5; - sa[5].sa_state = SA_OPERATIONAL; + sa[5].sa_state = SA_KEYED; sa[5].est = 0; sa[5].ast = 0; sa[5].shivf_len = 12; sa[5].iv_len = 12; - sa[5].shsnf_len = 0; + sa[5].shsnf_len = 2; sa[5].arsnw = 5; sa[5].arsnw_len = 1; - sa[5].arsn_len = 0; + sa[5].arsn_len = 2; sa[5].gvcid_blk.tfvn = 0; sa[5].gvcid_blk.scid = SCID & 0x3FF; sa[5].gvcid_blk.vcid = 1; @@ -354,7 +354,7 @@ void sa_populate(void) // EKID = 6 sa[6].spi = 6; sa[6].ekid = 6; - sa[6].sa_state = SA_OPERATIONAL; + sa[6].sa_state = SA_KEYED; sa[6].ecs_len = 1; sa[6].ecs = CRYPTO_CIPHER_AES256_CBC; sa[6].est = 1; @@ -363,7 +363,7 @@ void sa_populate(void) sa[6].iv_len = 16; sa[6].shplf_len = 1; sa[6].stmacf_len = 0; - sa[6].arsn_len = 0; + sa[6].arsn_len = 2; sa[6].arsnw_len = 1; sa[6].arsnw = 5; sa[6].gvcid_blk.tfvn = 0; @@ -376,14 +376,14 @@ void sa_populate(void) // AKID = 7 sa[7].spi = 7; sa[7].akid = 7; - sa[7].sa_state = SA_OPERATIONAL; + sa[7].sa_state = SA_KEYED; sa[7].acs_len = 1; sa[7].acs = CRYPTO_MAC_HMAC_SHA512; sa[7].est = 0; sa[7].ast = 1; sa[7].shivf_len = 12; sa[7].iv_len = 12; - sa[7].abm_len = ABM_SIZE; + //sa[7].abm_len = ABM_SIZE; sa[7].shsnf_len = 2; sa[7].arsn_len = 2; sa[7].arsnw_len = 1; @@ -421,7 +421,7 @@ void sa_populate(void) // IV = 0...0, IV-Len = 12, MAC-Len = 0, TFVN = 1, VCID = 0, ARSNW = 5 // EKID = 9 sa[9].spi = 9; - sa[9].sa_state = SA_OPERATIONAL; + sa[9].sa_state = SA_KEYED; sa[9].est = 0; sa[9].ast = 0; sa[9].shivf_len = 12; @@ -452,7 +452,7 @@ void sa_populate(void) sa[10].abm_len = ABM_SIZE; sa[10].gvcid_blk.tfvn = 0x01; sa[10].gvcid_blk.scid = SCID & 0x3FF; - sa[10].gvcid_blk.vcid = 6; + sa[10].gvcid_blk.vcid = 0; sa[10].gvcid_blk.mapid = 0; // AOS - Encryption Only, AES-GCM-256 (Keyed) @@ -460,7 +460,7 @@ void sa_populate(void) // EKID = 11 sa[11].spi = 11; sa[11].ekid = 11; - sa[11].sa_state = SA_OPERATIONAL; + sa[11].sa_state = SA_KEYED; sa[11].est = 1; sa[11].ast = 0; sa[11].ecs_len = 1; diff --git a/test/unit/ut_sa_save.c b/test/unit/ut_sa_save.c index fce67aef..44a55a72 100644 --- a/test/unit/ut_sa_save.c +++ b/test/unit/ut_sa_save.c @@ -622,7 +622,7 @@ UTEST(SA_SAVE, VERIFY_SAVE_ADJACENT) ASSERT_EQ(test_association->gvcid_blk.tfvn, 0); ASSERT_EQ(test_association->gvcid_blk.scid, 3); ASSERT_EQ(test_association->gvcid_blk.vcid, 1); - ASSERT_EQ(test_association->gvcid_blk.mapid, 2); + ASSERT_EQ(test_association->gvcid_blk.mapid, 0); ASSERT_EQ(test_association->est, 0); ASSERT_EQ(test_association->ast, 0); ASSERT_EQ(test_association->shivf_len, 12); diff --git a/test/unit/ut_tm_apply.c b/test/unit/ut_tm_apply.c index d9823ea1..64e183be 100644 --- a/test/unit/ut_tm_apply.c +++ b/test/unit/ut_tm_apply.c @@ -2087,7 +2087,8 @@ UTEST(TM_APPLY_ENC_VAL, AEAD_AES_GCM_BITMASK_1) hex_conversion(next_iv_h, &next_iv_b, &next_iv_len); ASSERT_EQ(next_iv_len, iv_len); - Crypto_TM_ApplySecurity((uint8_t *)framed_tm_b, framed_tm_len); + status = Crypto_TM_ApplySecurity((uint8_t *)framed_tm_b, framed_tm_len); + ASSERT_EQ(status, CRYPTO_LIB_SUCCESS); printf("Static frame contents:\n\t"); for (int i = 0; i < 1786; i++) From c4c20d44fce1262cefae775da468b42ad2ff0d5a Mon Sep 17 00:00:00 2001 From: Donnie-Ice <77851621+Donnie-Ice@users.noreply.github.com> Date: Wed, 2 Jul 2025 20:15:21 +0000 Subject: [PATCH 13/15] style: auto-format via clang-format --- .../internal/sa_interface_inmemory.template.c | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/sa/internal/sa_interface_inmemory.template.c b/src/sa/internal/sa_interface_inmemory.template.c index 05b316f4..752f31f5 100644 --- a/src/sa/internal/sa_interface_inmemory.template.c +++ b/src/sa/internal/sa_interface_inmemory.template.c @@ -374,16 +374,16 @@ void sa_populate(void) // TM - Authentication Only HMAC_SHA512 (Keyed) // IV = 0...0, IV-Len = 12, MAC-Len = 16, TFVN = 0, VCID = 0, ARSNW = 5 // AKID = 7 - sa[7].spi = 7; - sa[7].akid = 7; - sa[7].sa_state = SA_KEYED; - sa[7].acs_len = 1; - sa[7].acs = CRYPTO_MAC_HMAC_SHA512; - sa[7].est = 0; - sa[7].ast = 1; - sa[7].shivf_len = 12; - sa[7].iv_len = 12; - //sa[7].abm_len = ABM_SIZE; + sa[7].spi = 7; + sa[7].akid = 7; + sa[7].sa_state = SA_KEYED; + sa[7].acs_len = 1; + sa[7].acs = CRYPTO_MAC_HMAC_SHA512; + sa[7].est = 0; + sa[7].ast = 1; + sa[7].shivf_len = 12; + sa[7].iv_len = 12; + // sa[7].abm_len = ABM_SIZE; sa[7].shsnf_len = 2; sa[7].arsn_len = 2; sa[7].arsnw_len = 1; From 700fb8873b625b082cb89d92d218ab9ae1892c60 Mon Sep 17 00:00:00 2001 From: Donnie-Ice Date: Wed, 2 Jul 2025 16:54:48 -0400 Subject: [PATCH 14/15] [nasa/cryptolib#385] Think CryptoLib and Nos should be happy now --- src/core/crypto_config.c | 8 ++++++++ src/sa/internal/sa_interface_inmemory.template.c | 2 -- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/core/crypto_config.c b/src/core/crypto_config.c index 800a17a0..2cd5e05a 100644 --- a/src/core/crypto_config.c +++ b/src/core/crypto_config.c @@ -102,12 +102,20 @@ int32_t Crypto_SC_Init(void) sa_if->sa_get_from_spi(2, &sa_ptr); sa_ptr->gvcid_blk.vcid = 2; sa_if->sa_get_from_spi(3, &sa_ptr); + sa_ptr->sa_state = SA_OPERATIONAL; sa_ptr->gvcid_blk.vcid = 3; + sa_ptr->abm_len = ABM_SIZE; sa_if->sa_get_from_spi(5, &sa_ptr); + sa_ptr->sa_state = SA_OPERATIONAL; + sa_ptr->shsnf_len = 0; + sa_ptr->arsn_len = 0; sa_ptr->gvcid_blk.vcid = 1; sa_if->sa_get_from_spi(6, &sa_ptr); + sa_ptr->sa_state = SA_OPERATIONAL; sa_ptr->gvcid_blk.vcid = 4; sa_if->sa_get_from_spi(7, &sa_ptr); + sa_ptr->sa_state = SA_OPERATIONAL; + sa_ptr->abm_len = ABM_SIZE; sa_ptr->gvcid_blk.vcid = 5; return status; diff --git a/src/sa/internal/sa_interface_inmemory.template.c b/src/sa/internal/sa_interface_inmemory.template.c index 752f31f5..4d7dec1e 100644 --- a/src/sa/internal/sa_interface_inmemory.template.c +++ b/src/sa/internal/sa_interface_inmemory.template.c @@ -298,7 +298,6 @@ void sa_populate(void) sa[3].ast = 1; sa[3].shivf_len = 12; sa[3].iv_len = 12; - sa[3].abm_len = 0; sa[3].shsnf_len = 2; sa[3].arsn_len = 2; sa[3].arsnw_len = 1; @@ -383,7 +382,6 @@ void sa_populate(void) sa[7].ast = 1; sa[7].shivf_len = 12; sa[7].iv_len = 12; - // sa[7].abm_len = ABM_SIZE; sa[7].shsnf_len = 2; sa[7].arsn_len = 2; sa[7].arsnw_len = 1; From 4a054a1ac0561280dbd2335fb3b2856bd0b844ec Mon Sep 17 00:00:00 2001 From: Donnie-Ice <77851621+Donnie-Ice@users.noreply.github.com> Date: Wed, 2 Jul 2025 20:55:29 +0000 Subject: [PATCH 15/15] style: auto-format via clang-format --- src/core/crypto_config.c | 16 ++++++++-------- .../internal/sa_interface_inmemory.template.c | 18 +++++++++--------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/core/crypto_config.c b/src/core/crypto_config.c index 2cd5e05a..d0e8c7e6 100644 --- a/src/core/crypto_config.c +++ b/src/core/crypto_config.c @@ -102,20 +102,20 @@ int32_t Crypto_SC_Init(void) sa_if->sa_get_from_spi(2, &sa_ptr); sa_ptr->gvcid_blk.vcid = 2; sa_if->sa_get_from_spi(3, &sa_ptr); - sa_ptr->sa_state = SA_OPERATIONAL; + sa_ptr->sa_state = SA_OPERATIONAL; sa_ptr->gvcid_blk.vcid = 3; - sa_ptr->abm_len = ABM_SIZE; + sa_ptr->abm_len = ABM_SIZE; sa_if->sa_get_from_spi(5, &sa_ptr); - sa_ptr->sa_state = SA_OPERATIONAL; - sa_ptr->shsnf_len = 0; - sa_ptr->arsn_len = 0; + sa_ptr->sa_state = SA_OPERATIONAL; + sa_ptr->shsnf_len = 0; + sa_ptr->arsn_len = 0; sa_ptr->gvcid_blk.vcid = 1; sa_if->sa_get_from_spi(6, &sa_ptr); - sa_ptr->sa_state = SA_OPERATIONAL; + sa_ptr->sa_state = SA_OPERATIONAL; sa_ptr->gvcid_blk.vcid = 4; sa_if->sa_get_from_spi(7, &sa_ptr); - sa_ptr->sa_state = SA_OPERATIONAL; - sa_ptr->abm_len = ABM_SIZE; + sa_ptr->sa_state = SA_OPERATIONAL; + sa_ptr->abm_len = ABM_SIZE; sa_ptr->gvcid_blk.vcid = 5; return status; diff --git a/src/sa/internal/sa_interface_inmemory.template.c b/src/sa/internal/sa_interface_inmemory.template.c index 4d7dec1e..bf3b1989 100644 --- a/src/sa/internal/sa_interface_inmemory.template.c +++ b/src/sa/internal/sa_interface_inmemory.template.c @@ -373,15 +373,15 @@ void sa_populate(void) // TM - Authentication Only HMAC_SHA512 (Keyed) // IV = 0...0, IV-Len = 12, MAC-Len = 16, TFVN = 0, VCID = 0, ARSNW = 5 // AKID = 7 - sa[7].spi = 7; - sa[7].akid = 7; - sa[7].sa_state = SA_KEYED; - sa[7].acs_len = 1; - sa[7].acs = CRYPTO_MAC_HMAC_SHA512; - sa[7].est = 0; - sa[7].ast = 1; - sa[7].shivf_len = 12; - sa[7].iv_len = 12; + sa[7].spi = 7; + sa[7].akid = 7; + sa[7].sa_state = SA_KEYED; + sa[7].acs_len = 1; + sa[7].acs = CRYPTO_MAC_HMAC_SHA512; + sa[7].est = 0; + sa[7].ast = 1; + sa[7].shivf_len = 12; + sa[7].iv_len = 12; sa[7].shsnf_len = 2; sa[7].arsn_len = 2; sa[7].arsnw_len = 1;