5050** Crypto Version
5151*/
5252#define CRYPTO_LIB_MAJOR_VERSION 1
53- #define CRYPTO_LIB_MINOR_VERSION 4
54- #define CRYPTO_LIB_REVISION 3
53+ #define CRYPTO_LIB_MINOR_VERSION 5
54+ #define CRYPTO_LIB_REVISION 0
5555#define CRYPTO_LIB_MISSION_REV 0
5656
57- #define GVCID_MAX_PARAM_SIZE 250
57+ #define GVCID_MAX_PARAM_SIZE 100
5858#define CRC32TBL_SIZE 256
5959#define CRC16TBL_SIZE 256
6060
@@ -65,10 +65,15 @@ uint8_t Crypto_gf_mul(uint8_t a, uint8_t b);
6565
6666// Crypto Library Configuration functions
6767extern int32_t Crypto_Config_CryptoLib (uint8_t key_type , uint8_t mc_type , uint8_t sa_type , uint8_t cryptography_type ,
68- uint8_t iv_type , uint8_t crypto_create_fecf , uint8_t process_sdls_pdus ,
69- uint8_t has_pus_hdr , uint8_t ignore_sa_state , uint8_t ignore_anti_replay ,
70- uint8_t unique_sa_per_mapid , uint8_t crypto_check_fecf , uint8_t vcid_bitmask ,
71- uint8_t crypto_increment_nontransmitted_iv );
68+ uint8_t iv_type );
69+ extern int32_t Crypto_Config_TC (uint8_t crypto_create_fecf , uint8_t process_sdls_pdus , uint8_t has_pus_hdr ,
70+ uint8_t ignore_anti_replay , uint8_t ignore_sa_state , uint8_t unique_sa_per_mapid ,
71+ uint8_t crypto_check_fecf , uint8_t vcid_bitmask ,
72+ uint8_t crypto_increment_nontransmitted_iv );
73+ extern int32_t Crypto_Config_TM (uint8_t crypto_create_fecf , uint8_t ignore_anti_replay , uint8_t crypto_check_fecf ,
74+ uint8_t vcid_bitmask , uint8_t crypto_increment_nontransmitted_iv );
75+ extern int32_t Crypto_Config_AOS (uint8_t crypto_create_fecf , uint8_t ignore_anti_replay , uint8_t crypto_check_fecf ,
76+ uint8_t vcid_bitmask , uint8_t crypto_increment_nontransmitted_iv );
7277extern int32_t Crypto_Config_MariaDB (char * mysql_hostname , char * mysql_database , uint16_t mysql_port ,
7378 uint8_t mysql_require_secure_transport , uint8_t mysql_tls_verify_server ,
7479 char * mysql_tls_ca , char * mysql_tls_capath , char * mysql_mtls_cert ,
@@ -81,11 +86,13 @@ extern int32_t Crypto_Config_Kmc_Crypto_Service(char *protocol, char *kmc_crypto
8186 char * mtls_client_key_pass , char * mtls_issuer_cert );
8287extern int32_t Crypto_Config_Cam (uint8_t cam_enabled , char * cookie_file_path , char * keytab_file_path ,
8388 uint8_t login_method , char * access_manager_uri , char * username , char * cam_home );
84- extern int32_t Crypto_Config_Add_Gvcid_Managed_Parameters (GvcidManagedParameters_t mp_struct );
89+ extern int32_t Crypto_Config_Add_TC_Gvcid_Managed_Parameters (TCGvcidManagedParameters_t mp_struct );
90+ extern int32_t Crypto_Config_Add_TM_Gvcid_Managed_Parameters (TMGvcidManagedParameters_t mp_struct );
91+ extern int32_t Crypto_Config_Add_AOS_Gvcid_Managed_Parameters (AOSGvcidManagedParameters_t mp_struct );
8592// Initialization
8693extern int32_t Crypto_Init (void ); // Initialize CryptoLib After Configuration Calls
8794extern int32_t Crypto_Init_With_Configs (
88- CryptoConfig_t * crypto_config_p , GvcidManagedParameters_t * gvcid_managed_parameters_p ,
95+ CryptoConfigGlobal_t * crypto_config_p , TCGvcidManagedParameters_t * gvcid_managed_parameters_p ,
8996 SadbMariaDBConfig_t * sa_mariadb_config_p ,
9097 CryptographyKmcCryptoServiceConfig_t
9198 * cryptography_kmc_crypto_config_p ); // Initialize CryptoLib With Application Defined Configuration
@@ -128,7 +135,7 @@ void Crypto_TC_Get_Ciper_Mode_TCP(uint8_t sa_service_type, uint32_t *encryption_
128135 SecurityAssociation_t * sa_ptr );
129136int32_t Crypto_TC_Get_Ciper_Mode_TCA (uint8_t sa_service_type , uint32_t * encryption_cipher ,
130137 uint8_t * ecs_is_aead_algorithm , SecurityAssociation_t * sa_ptr );
131- void Crypto_TC_Calc_Lengths (uint8_t * fecf_len , uint8_t * segment_hdr_len , uint8_t * ocf_len );
138+ void Crypto_TC_Calc_Lengths (uint8_t * fecf_len , uint8_t * segment_hdr_len );
132139void Crypto_TC_Set_Segment_Header (TC_t * tc_sdls_processed_frame , uint8_t * ingest , int * byte_idx );
133140int32_t Crypto_TC_Check_CMD_Frame_Flag (uint8_t header_cc );
134141int32_t Crypto_TC_Validate_SA_Service_Type (uint8_t sa_service_type );
@@ -185,6 +192,9 @@ extern char *Crypto_Get_Error_Code_Enum_String(int32_t crypto_error_code);
185192int32_t Crypto_Get_Security_Header_Length (SecurityAssociation_t * sa_ptr );
186193int32_t Crypto_Get_Security_Trailer_Length (SecurityAssociation_t * sa_ptr );
187194
195+ int32_t crypto_handle_incrementing_nontransmitted_counter (uint8_t * dest , uint8_t * src , int src_full_len ,
196+ int transmitted_len , int window );
197+
188198/*
189199** Internal Prototypes
190200*/
@@ -245,14 +255,16 @@ uint16_t Crypto_Calc_FECF(const uint8_t *ingest, int len_ingest);
245255uint16_t Crypto_Calc_FHECF (uint8_t * data );
246256int32_t Crypto_Calc_CRC_Init_Table (void );
247257uint16_t Crypto_Calc_CRC16 (uint8_t * data , int size );
248- int32_t Crypto_Check_Anti_Replay (SecurityAssociation_t * sa_ptr , uint8_t * arsn , uint8_t * iv );
258+ int32_t Crypto_Check_Anti_Replay (SecurityAssociation_t * sa_ptr , uint8_t * arsn , uint8_t * iv ,
259+ uint8_t increment_nontransmitted );
249260int32_t Crypto_Get_ECS_Algo_Keylen (uint8_t algo );
250261int32_t Crypto_Get_ACS_Algo_Keylen (uint8_t algo );
251262uint8_t Crypto_Is_ACS_Only_Algo (uint8_t algo );
252263
253264int32_t Crypto_Check_Anti_Replay_Verify_Pointers (SecurityAssociation_t * sa_ptr , uint8_t * arsn , uint8_t * iv );
254265int32_t Crypto_Check_Anti_Replay_ARSNW (SecurityAssociation_t * sa_ptr , uint8_t * arsn , int8_t * arsn_valid );
255- int32_t Crypto_Check_Anti_Replay_GCM (SecurityAssociation_t * sa_ptr , uint8_t * iv , int8_t * iv_valid );
266+ int32_t Crypto_Check_Anti_Replay_GCM (SecurityAssociation_t * sa_ptr , uint8_t * iv , int8_t * iv_valid ,
267+ uint8_t increment_nontransmitted );
256268
257269// SDLS Related Functions
258270extern uint8_t Crypto_Prep_Reply (uint8_t * ingest , uint8_t appID );
@@ -300,9 +312,15 @@ int32_t Crypto_SEC_MON_CTRL(uint8_t *ingest);
300312int32_t Crypto_USER_DEFINED_CMD (uint8_t * ingest );
301313
302314// Managed Parameter Functions
303- int32_t Crypto_Get_Managed_Parameters_For_Gvcid (uint8_t tfvn , uint16_t scid , uint8_t vcid ,
304- GvcidManagedParameters_t * managed_parameters_in ,
305- GvcidManagedParameters_t * managed_parameters_out );
315+ int32_t Crypto_Get_TC_Managed_Parameters_For_Gvcid (uint8_t tfvn , uint16_t scid , uint8_t vcid ,
316+ TCGvcidManagedParameters_t * managed_parameters_in ,
317+ TCGvcidManagedParameters_t * managed_parameters_out );
318+ int32_t Crypto_Get_TM_Managed_Parameters_For_Gvcid (uint8_t tfvn , uint16_t scid , uint8_t vcid ,
319+ TMGvcidManagedParameters_t * managed_parameters_in ,
320+ TMGvcidManagedParameters_t * managed_parameters_out );
321+ int32_t Crypto_Get_AOS_Managed_Parameters_For_Gvcid (uint8_t tfvn , uint16_t scid , uint8_t vcid ,
322+ AOSGvcidManagedParameters_t * managed_parameters_in ,
323+ AOSGvcidManagedParameters_t * managed_parameters_out );
306324// Project-wide support functions
307325extern int32_t crypto_deep_copy_string (char * src_string , char * * dst_string );
308326
@@ -327,27 +345,30 @@ extern AOS_FrameSecurityHeader_t aos_frame_sec_hdr; // Used to reduce bit math d
327345extern uint8_t parity [4 ]; // Used in FHECF calc
328346
329347// Global configuration structs
330- extern CryptoConfig_t crypto_config ;
348+ extern CryptoConfigGlobal_t crypto_config_global ;
349+ extern CryptoConfigTC_t crypto_config_tc ;
350+ extern CryptoConfigTM_t crypto_config_tm ;
351+ extern CryptoConfigAOS_t crypto_config_aos ;
331352extern SadbMariaDBConfig_t * sa_mariadb_config ;
332- extern char * mariadb_table_name ;
353+ extern char mariadb_table_name [ 26 ] ;
333354extern CryptographyKmcCryptoServiceConfig_t * cryptography_kmc_crypto_config ;
334355extern CamConfig_t * cam_config ;
335- extern GvcidManagedParameters_t * gvcid_managed_parameters ;
336- extern GvcidManagedParameters_t * current_managed_parameters ;
337- extern GvcidManagedParameters_t gvcid_managed_parameters_array [GVCID_MAX_PARAM_SIZE ];
338- extern GvcidManagedParameters_t tc_current_managed_parameters_struct ;
339- extern GvcidManagedParameters_t tm_current_managed_parameters_struct ;
340- extern GvcidManagedParameters_t aos_current_managed_parameters_struct ;
341- extern int gvcid_counter ;
356+ extern TCGvcidManagedParameters_t tc_gvcid_managed_parameters_array [GVCID_MAX_PARAM_SIZE ];
357+ extern TMGvcidManagedParameters_t tm_gvcid_managed_parameters_array [GVCID_MAX_PARAM_SIZE ];
358+ extern AOSGvcidManagedParameters_t aos_gvcid_managed_parameters_array [GVCID_MAX_PARAM_SIZE ];
359+ extern TCGvcidManagedParameters_t tc_current_managed_parameters_struct ;
360+ extern TMGvcidManagedParameters_t tm_current_managed_parameters_struct ;
361+ extern AOSGvcidManagedParameters_t aos_current_managed_parameters_struct ;
362+ extern int tc_gvcid_counter ;
363+ extern int tm_gvcid_counter ;
364+ extern int aos_gvcid_counter ;
342365extern KeyInterface key_if ;
343366extern McInterface mc_if ;
344367extern SaInterface sa_if ;
345368extern CryptographyInterface cryptography_if ;
346369
347370// extern crypto_key_t ak_ring[NUM_KEYS];
348- extern SadbMariaDBConfig_t * sa_mariadb_config ;
349- extern GvcidManagedParameters_t * gvcid_managed_parameters ;
350- extern GvcidManagedParameters_t * current_managed_parameters ;
371+ extern SadbMariaDBConfig_t * sa_mariadb_config ;
351372
352373// OCF
353374extern uint8_t ocf ;
0 commit comments