Skip to content

Commit 4dd9665

Browse files
committed
[#487] Confirm working with 1 and 3 tables, add initial UTs
1 parent 8ac2259 commit 4dd9665

17 files changed

+1430
-516
lines changed

src/core/crypto_config.c

Lines changed: 58 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -277,35 +277,77 @@ int32_t Crypto_Init(void)
277277
if (crypto_config.key_type == KEY_TYPE_CUSTOM)
278278
{
279279
key_if = get_key_interface_custom();
280+
if (key_if == NULL)
281+
{
282+
return CRYPTO_LIB_ERROR;
283+
}
280284
}
281285
else if (crypto_config.key_type == KEY_TYPE_INTERNAL)
282286
{
283287
key_if = get_key_interface_internal();
288+
if (key_if == NULL)
289+
{
290+
return CRYPTO_LIB_ERROR;
291+
}
284292
}
285-
else // KEY_TYPE_KMC
293+
else if (crypto_config.key_type == KEY_TYPE_KMC)
286294
{
287295
key_if = get_key_interface_kmc();
296+
if (key_if == NULL)
297+
{
298+
return CRYPTO_LIB_ERROR;
299+
}
288300
}
301+
else
302+
{
303+
return CRYPTO_LIB_ERROR;
304+
}
305+
}
306+
status = key_if->key_init();
307+
if (status != CRYPTO_LIB_SUCCESS)
308+
{
309+
return status;
289310
}
290-
key_if->key_init();
311+
291312
// TODO: Check and return status on error
292313
/* MC Interface */
293314
if (mc_if == NULL)
294315
{
295316
if (crypto_config.mc_type == MC_TYPE_CUSTOM)
296317
{
297318
mc_if = get_mc_interface_custom();
319+
if (mc_if == NULL)
320+
{
321+
return CRYPTO_LIB_ERROR;
322+
}
298323
}
299324
else if (crypto_config.mc_type == MC_TYPE_DISABLED)
300325
{
301326
mc_if = get_mc_interface_disabled();
327+
if (mc_if == NULL)
328+
{
329+
return CRYPTO_LIB_ERROR;
330+
}
302331
}
303-
else // MC_TYPE_INTERNAL
332+
else if (crypto_config.mc_type == MC_TYPE_INTERNAL)
304333
{
305334
mc_if = get_mc_interface_internal();
335+
if (mc_if == NULL)
336+
{
337+
return CRYPTO_LIB_ERROR;
338+
}
306339
}
340+
else
341+
{
342+
return CRYPTO_LIB_ERROR;
343+
}
344+
}
345+
status = mc_if->mc_initialize();
346+
if (status != CRYPTO_LIB_SUCCESS)
347+
{
348+
return status;
307349
}
308-
mc_if->mc_initialize();
350+
309351
// TODO: Check and return status on error
310352
/* SA Interface */
311353
if (sa_if == NULL)
@@ -314,10 +356,18 @@ int32_t Crypto_Init(void)
314356
if (crypto_config.sa_type == SA_TYPE_CUSTOM)
315357
{
316358
sa_if = get_sa_interface_custom();
359+
if (sa_if == NULL)
360+
{
361+
return CRYPTO_LIB_ERROR;
362+
}
317363
}
318364
else if (crypto_config.sa_type == SA_TYPE_INMEMORY)
319365
{
320366
sa_if = get_sa_interface_inmemory();
367+
if (sa_if == NULL)
368+
{
369+
return CRYPTO_LIB_ERROR;
370+
}
321371
}
322372
else if (crypto_config.sa_type == SA_TYPE_MARIADB)
323373
{
@@ -328,6 +378,10 @@ int32_t Crypto_Init(void)
328378
return status; // MariaDB connection specified but no configuration exists, return!
329379
}
330380
sa_if = get_sa_interface_mariadb();
381+
if (sa_if == NULL)
382+
{
383+
return CRYPTO_LIB_ERROR;
384+
}
331385
}
332386
else
333387
{

src/crypto/kmc/cryptography_interface_kmc_crypto_service.template.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1345,8 +1345,13 @@ static int32_t cryptography_aead_encrypt(uint8_t *data_out, size_t len_data_out,
13451345
memcpy(ciphertext_token_base64, token, cipher_text_token_len);
13461346
#ifdef DEBUG
13471347
printf("IV LENGTH: %d\n", iv_len);
1348-
printf("IV ENCODED Text: %s\nIV ENCODED TEXT LEN: %ld\n", ciphertext_token_base64,
1349-
cipher_text_token_len);
1348+
printf("IV ENCODED TEXT LEN: %ld\n", cipher_text_token_len);
1349+
printf("IV ENCODED Text: \n");
1350+
for (uint32_t i = 0; i < cipher_text_token_len; i++)
1351+
{
1352+
printf("%c", ciphertext_token_base64[i]);
1353+
}
1354+
printf("\n");
13501355
#endif
13511356
char *iv_decoded = malloc((iv_len)*2 + 1);
13521357
size_t iv_decoded_len = 0;
@@ -1357,7 +1362,7 @@ static int32_t cryptography_aead_encrypt(uint8_t *data_out, size_t len_data_out,
13571362
printf("Decoded IV Text: \n");
13581363
for (uint32_t i = 0; i < iv_decoded_len; i++)
13591364
{
1360-
printf("%02x ", (uint8_t)iv_decoded[i]);
1365+
printf("%02x", (uint8_t)iv_decoded[i]);
13611366
}
13621367
printf("\n");
13631368
#endif

src/sa/mariadb/sa_interface_mariadb.template.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ static int32_t sa_save_sa(SecurityAssociation_t *sa)
223223
char *arsn_h = malloc(sa->arsn_len * 2 + 1);
224224
convert_byte_array_to_hexstring(sa->arsn, sa->arsn_len, arsn_h);
225225

226-
snprintf(update_sa_query, sizeof(update_sa_query), SQL_SADB_UPDATE_IV_ARC_BY_SPI, iv_h, arsn_h, sa->spi,
226+
snprintf(update_sa_query, sizeof(update_sa_query), SQL_SADB_UPDATE_IV_ARC_BY_SPI, mariadb_table_name, iv_h, arsn_h, sa->spi,
227227
sa->gvcid_blk.tfvn, sa->gvcid_blk.scid, sa->gvcid_blk.vcid, sa->gvcid_blk.mapid);
228228

229229
free(iv_h);

src/sa/sadb_mariadb_sql/create_sadb.sql

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,66 @@ CREATE TABLE IF NOT EXISTS security_associations
3434
,arsnw SMALLINT NOT NULL DEFAULT 0 -- ARSNW_SIZE=1
3535
);
3636

37+
CREATE TABLE IF NOT EXISTS security_associations_tm
38+
(
39+
spi INT NOT NULL
40+
,ekid VARCHAR(100) CHARACTER SET utf8 DEFAULT NULL -- 'EG, for KMC Crypto KeyRef, 'kmc/test/KEY130', for libgcrypt '130'
41+
,akid VARCHAR(100) CHARACTER SET utf8 DEFAULT NULL -- Same as ekid
42+
,sa_state SMALLINT NOT NULL DEFAULT 0
43+
,tfvn TINYINT NOT NULL
44+
,scid SMALLINT NOT NULL
45+
,vcid TINYINT NOT NULL
46+
,mapid TINYINT NOT NULL DEFAULT 0
47+
,lpid SMALLINT
48+
,est SMALLINT NOT NULL DEFAULT 0
49+
,ast SMALLINT NOT NULL DEFAULT 0
50+
,shivf_len SMALLINT NOT NULL DEFAULT 0
51+
,shsnf_len SMALLINT NOT NULL DEFAULT 0
52+
,shplf_len SMALLINT NOT NULL DEFAULT 0
53+
,stmacf_len SMALLINT NOT NULL DEFAULT 0
54+
,ecs_len SMALLINT NOT NULL DEFAULT 1
55+
,ecs VARBINARY(4) NOT NULL DEFAULT X'01' -- ECS_SIZE=4
56+
,iv_len SMALLINT NOT NULL DEFAULT 0
57+
,iv VARBINARY(20) DEFAULT NULL -- IV_SIZE=12
58+
,acs_len SMALLINT NOT NULL DEFAULT 0
59+
,acs VARBINARY(4) NOT NULL DEFAULT X'00'
60+
,abm_len MEDIUMINT
61+
,abm VARBINARY(1024) NOT NULL DEFAULT X'0000FC0000FFFF000000000000000000000000' -- ABM_SIZE=1024
62+
,arsn_len SMALLINT NOT NULL DEFAULT 0
63+
,arsn VARBINARY(20) NOT NULL DEFAULT X'0000000000000000000000000000000000000000' -- ARSN_SIZE=20 , TBD why so large...
64+
,arsnw SMALLINT NOT NULL DEFAULT 0 -- ARSNW_SIZE=1
65+
);
66+
67+
CREATE TABLE IF NOT EXISTS security_associations_aos
68+
(
69+
spi INT NOT NULL
70+
,ekid VARCHAR(100) CHARACTER SET utf8 DEFAULT NULL -- 'EG, for KMC Crypto KeyRef, 'kmc/test/KEY130', for libgcrypt '130'
71+
,akid VARCHAR(100) CHARACTER SET utf8 DEFAULT NULL -- Same as ekid
72+
,sa_state SMALLINT NOT NULL DEFAULT 0
73+
,tfvn TINYINT NOT NULL
74+
,scid SMALLINT NOT NULL
75+
,vcid TINYINT NOT NULL
76+
,mapid TINYINT NOT NULL DEFAULT 0
77+
,lpid SMALLINT
78+
,est SMALLINT NOT NULL DEFAULT 0
79+
,ast SMALLINT NOT NULL DEFAULT 0
80+
,shivf_len SMALLINT NOT NULL DEFAULT 0
81+
,shsnf_len SMALLINT NOT NULL DEFAULT 0
82+
,shplf_len SMALLINT NOT NULL DEFAULT 0
83+
,stmacf_len SMALLINT NOT NULL DEFAULT 0
84+
,ecs_len SMALLINT NOT NULL DEFAULT 1
85+
,ecs VARBINARY(4) NOT NULL DEFAULT X'01' -- ECS_SIZE=4
86+
,iv_len SMALLINT NOT NULL DEFAULT 0
87+
,iv VARBINARY(20) DEFAULT NULL -- IV_SIZE=12
88+
,acs_len SMALLINT NOT NULL DEFAULT 0
89+
,acs VARBINARY(4) NOT NULL DEFAULT X'00'
90+
,abm_len MEDIUMINT
91+
,abm VARBINARY(1024) NOT NULL DEFAULT X'0000FC0000FFFF000000000000000000000000' -- ABM_SIZE=1024
92+
,arsn_len SMALLINT NOT NULL DEFAULT 0
93+
,arsn VARBINARY(20) NOT NULL DEFAULT X'0000000000000000000000000000000000000000' -- ARSN_SIZE=20 , TBD why so large...
94+
,arsnw SMALLINT NOT NULL DEFAULT 0 -- ARSNW_SIZE=1
95+
);
96+
3797
create unique index if not exists main_spi on security_associations (spi,scid,vcid,tfvn,mapid);
98+
create unique index if not exists main_spi on security_associations_tm (spi,scid,vcid,tfvn,mapid);
99+
create unique index if not exists main_spi on security_associations_aos (spi,scid,vcid,tfvn,mapid);
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
USE sadb;
2+
3+
TRUNCATE TABLE security_associations_aos;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
USE sadb;
2+
3+
TRUNCATE TABLE security_associations_tm;

0 commit comments

Comments
 (0)