Added hit suite list to config, is now read into program on startup

This commit is contained in:
Niklas Granberg 2019-10-13 16:00:16 +02:00
parent 65388703e0
commit ca640aa94b
4 changed files with 65 additions and 4 deletions

View File

@ -11,6 +11,12 @@
<dh_lifetime>900</dh_lifetime>
<r1_lifetime>300</r1_lifetime>
<failure_timeout>50</failure_timeout>
<available_hit_suites>
<suites>
<suite>1</suite>
<suite>2</suite>
</suites>
</available_hit_suites>
<msl>5</msl>
<ual>600</ual>
<hip_sa>

View File

@ -192,9 +192,9 @@ int main_loop(int argc, char **argv)
HCNF.dh_group_list[1] = DH_MODP_1536;
HCNF.hip_ciphers[0] = HIP_CIPHER_AES128_CBC;
HCNF.hip_ciphers[1] = HIP_CIPHER_AES256_CBC;
HCNF.hit_suite_list[0] = HIT_SUITE_4BIT_RSA_DSA_SHA256;
HCNF.hit_suite_list[1] = HIT_SUITE_4BIT_ECDSA_SHA384;
HCNF.hit_suite_list[2] = HIT_SUITE_4BIT_ECDSA_LOW_SHA1;
//HCNF.hit_suite_list[0] = HIT_SUITE_4BIT_RSA_DSA_SHA256;
//HCNF.hit_suite_list[1] = HIT_SUITE_4BIT_ECDSA_SHA384;
//HCNF.hit_suite_list[2] = HIT_SUITE_4BIT_ECDSA_LOW_SHA1;
HCNF.dh_lifetime = 900;
HCNF.r1_lifetime = 300;
HCNF.msl = 5;

View File

@ -1187,6 +1187,59 @@ int read_conf_file(char *filename)
{
sscanf(data, "%d", &HCNF.ual);
}
else if (strcmp((char *)node->name, "available_hit_suites") == 0) {
done = FALSE;
for(child = node->children; child && !done; child = child->next)
{
if (strcmp((char *)child->name,
"suites") == 0)
{
child = child->children;
done = TRUE;
}
}
//15 is the current maximum amount of allowed hit suites.
//Should be set in hip_proto.h
//But 4 bits without 0000 is the same....
//TODO: TDDE21
memset(HCNF.hit_suite_list, 0, sizeof(__u8) * HIT_SUITE_4BIT_MAX);
int listLocation = 0;
for(t = 0; child && (t < HIT_SUITE_4BIT_MAX); child = child->next) {
data2 = (char*) xmlNodeGetContent(child);
if (strcmp((char *)child->name, "suite") == 0)
{
sscanf(data2, "%d", &tmp);
__u8 suite = 0;
switch (tmp)
{
case 1 :
suite = HIT_SUITE_8BIT_RSA_DSA_SHA256;
break;
case 2 :
suite = HIT_SUITE_8BIT_ECDSA_SHA384;
break;
case 3 :
suite = HIT_SUITE_8BIT_ECDSA_LOW_SHA1;
break;
default:
log_ (WARN, "Invalid hit suite id found in config: %d", tmp);
break;
}
if(suite != 0) {
HCNF.hit_suite_list[listLocation] = suite;
listLocation++;
}
t++;
}
printf("Hit suite list\n");
for(int i = 0; i < sizeof(HCNF.hit_suite_list); i++) {
printf("%d\n", HCNF.hit_suite_list[i]);
}
xmlFree(data2);
}
}
else if ((strcmp((char *)node->name, "hip_sa") == 0) ||
(strcmp((char *)node->name, "esp_sa") == 0))
{

View File

@ -507,6 +507,9 @@ void generate_conf_file(char *filename)
xmlNewChild(root_node, NULL, BAD_CAST "ual", BAD_CAST "600");
xmlNewChild(root_node, NULL, BAD_CAST "min_reg_lifetime",BAD_CAST "96");
xmlNewChild(root_node, NULL,BAD_CAST "max_reg_lifetime",BAD_CAST "255");
node = xmlNewChild(root_node, NULL, BAD_CAST "available_hit_suites", NULL);
node = xmlNewChild(node, NULL, BAD_CAST "suites", NULL);
xmlNewChild(node, NULL, BAD_CAST "suite", BAD_CAST "1");
node = xmlNewChild(root_node, NULL, BAD_CAST "hip_sa", NULL);
node = xmlNewChild(node, NULL, BAD_CAST "transforms", NULL);
xmlNewChild(node, NULL, BAD_CAST "id", BAD_CAST "1");
@ -610,7 +613,6 @@ int main(int argc, char *argv[])
xmlDocPtr doc = NULL;
xmlNodePtr root_node = NULL, node;
int my_filename_exists = 0;
printf("sup");
#ifndef __WIN32__
struct stat stbuf;