1
0
mirror of https://github.com/CovidBraceletPrj/CovidBracelet.git synced 2024-12-05 00:55:43 +01:00

Add fixture test to nrf code and fix heap allocation

This commit is contained in:
Patrick Rathje 2020-09-13 20:42:20 +02:00
parent b99f373de1
commit 4a7fcafdbb
3 changed files with 54 additions and 1 deletions

View File

@ -75,6 +75,12 @@ static period_contacts_t period_contacts[PERIODS];
static int period_index = 0;
static int32_t next_infected_key_id = 0;
void print_key(_ENBaseKey* key){
for( int i = 0; i < sizeof(key->b); i++){
printk("%02x", key->b[i]);
}
}
void print_rpi(rolling_proximity_identifier_t* rpi){
for( int i = 0; i < sizeof(rolling_proximity_identifier_t); i++){
printk("%02x", rpi->data[i]);

View File

@ -87,6 +87,46 @@ static associated_encrypted_metadata_t encryptedMetadata;
static bool init = 1;
static bool infected = 0;
static void test_against_fixtures(void) {
// First define base values
ENIntervalNumber intervalNumber = 2642976;
ENPeriodKey periodKey = {.b = {0x75, 0xc7, 0x34, 0xc6, 0xdd, 0x1a, 0x78, 0x2d, 0xe7, 0xa9, 0x65, 0xda, 0x5e, 0xb9, 0x31, 0x25}};
unsigned char metadata[4] = {0x40, 0x08, 0x00, 0x00};
// define the expected values
ENPeriodIdentifierKey expectedPIK = {.b = {0x18, 0x5a, 0xd9, 0x1d, 0xb6, 0x9e, 0xc7, 0xdd, 0x04, 0x89, 0x60, 0xf1, 0xf3, 0xba, 0x61, 0x75}};
ENPeriodMetadataEncryptionKey expectedPMEK = {.b = {0xd5, 0x7c, 0x46, 0xaf, 0x7a, 0x1d, 0x83, 0x96, 0x5b, 0x9b, 0xed, 0x8b, 0xd1, 0x52, 0x93, 0x6a}};
ENIntervalIdentifier expectedIntervalIdentifier = {.b = {0x8b, 0xe6, 0xcd, 0x37, 0x1c, 0x5c, 0x89, 0x16, 0x04, 0xbf, 0xbe, 0x49, 0xdf, 0x84, 0x50, 0x96}};
unsigned char expectedEncryptedMetadata[4] = {0x72, 0x03, 0x38, 0x74};
ENPeriodIdentifierKey pik;
en_derive_period_identifier_key(&pik, &periodKey);
printk("expectedPIK: "); print_key(&expectedPIK); printk(", ");
printk("actualPIK: "); print_key(&pik); printk(", ");
ENIntervalIdentifier intervalIdentifier;
en_derive_interval_identifier(&intervalIdentifier, &pik, intervalNumber);
printk("expectedRPI: "); print_key(&expectedIntervalIdentifier); printk(", ");
printk("actualRPI: "); print_key(&intervalIdentifier); printk(", ");
/*ENPeriodMetadataEncryptionKey pmek;
en_derive_period_metadata_encryption_key(&pmek, &periodKey);
TEST_ASSERT_EQUAL_KEY(expectedPMEK, pmek);
unsigned char encryptedMetadata[sizeof(metadata)] = {0};
en_encrypt_interval_metadata(&pmek, &intervalIdentifier, metadata, encryptedMetadata, sizeof(metadata));
TEST_ASSERT_EQUAL_CHAR_ARRAY(expectedEncryptedMetadata, encryptedMetadata, sizeof(expectedEncryptedMetadata));*/
}
static void new_period_key(time_t currentTime ){
printk("\n----------------------------------------\n\n");
printk("\n----------------------------------------\n\n");
@ -121,6 +161,7 @@ static void check_keys(struct k_work *work){
//printk("\n----------------------------------------\n\n");
printk("Time: %llu, ", currentTime);
printk("Interval: %u, ", currentInterval);
printk("TEK: "); print_rpi((rolling_proximity_identifier_t*)&periods[current_period_index].periodKey); printk(", ");
printk("RPI: "); print_rpi((rolling_proximity_identifier_t*)&intervalIdentifier); printk(", ");
printk("AEM: "); print_aem(&encryptedMetadata); printk("\n");
@ -133,7 +174,6 @@ static void check_keys(struct k_work *work){
key_change(current_period_index);
}
init = 0;
}
}
@ -155,10 +195,14 @@ static const struct bt_le_scan_param scan_param = {
#define KEY_CHECK_INTERVAL (K_MSEC(EN_INTERVAL_LENGTH * 1000 / 10))
int init_covid(){
// TODO: Use real unix timestamp!: currentTime = time(NULL);
init = 1;
period_cnt = 0;
infected = 0;
test_against_fixtures();
check_keys(NULL);
int err = 0;
@ -168,6 +212,7 @@ int init_covid(){
return err;
}
k_timer_start(&my_timer, KEY_CHECK_INTERVAL, KEY_CHECK_INTERVAL);
return 0;
}

View File

@ -10,6 +10,8 @@ CONFIG_ENTROPY_GENERATOR=y
CONFIG_MBEDTLS=y
CONFIG_MBEDTLS_USER_CONFIG_ENABLE=y
CONFIG_MBEDTLS_USER_CONFIG_FILE="user-tls.conf"
CONFIG_MBEDTLS_ENABLE_HEAP=y
CONFIG_MBEDTLS_HEAP_SIZE=16384
#CONFIG_BT_HCI_TX_STACK_SIZE=1024
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048