avoid setting flags twice

pull/6932/head
paul-szczepanek-arm 2018-05-14 10:26:44 +01:00
parent f4f3a3c697
commit 579cb5e222
3 changed files with 8 additions and 9 deletions

View File

@ -36,7 +36,6 @@ struct SecurityDistributionFlags_t {
encryption_key_size(0),
peer_address_is_public(false),
csrk_stored(false),
csrk_sent(false),
ltk_stored(false),
ltk_sent(false),
irk_stored(false),
@ -56,7 +55,6 @@ struct SecurityDistributionFlags_t {
/** CSRK (Connection Signature Resolving Key) has been distributed and stored */
uint8_t csrk_stored:1;
uint8_t csrk_sent:1;
/** LTK (Long Term Key) has been distributed and stored */
uint8_t ltk_stored:1;
uint8_t ltk_sent:1;

View File

@ -170,6 +170,8 @@ void FileSecurityDb::set_entry_local_ltk(
return;
}
entry->flags.ltk_sent = true;
fseek(_db_file, entry->file_offset + DB_STORE_OFFSET_LOCAL_KEYS_LTK, SEEK_SET);
fwrite(&ltk, sizeof(ltk_t), 1, _db_file);
}
@ -203,6 +205,8 @@ void FileSecurityDb::set_entry_peer_ltk(
return;
}
entry->flags.ltk_stored = true;
fseek(_db_file, entry->file_offset + DB_STORE_OFFSET_PEER_KEYS_LTK, SEEK_SET);
fwrite(&ltk, sizeof(ltk_t), 1, _db_file);
}
@ -263,6 +267,8 @@ void FileSecurityDb::set_entry_peer_csrk(
return;
}
entry->flags.csrk_stored = true;
fseek(_db_file, entry->file_offset + DB_STORE_OFFSET_PEER_SIGNING, SEEK_SET);
/* only write in the csrk */
fwrite(&csrk, sizeof(csrk_t), 1, _db_file);

View File

@ -354,7 +354,7 @@ ble_error_t GenericSecurityManager::enableSigning(
if (enabled && !cb->signing_requested && !_default_key_distribution.get_signing()) {
cb->signing_requested = true;
if (flags->csrk_stored && flags->csrk_sent) {
if (flags->csrk_stored) {
/* used the stored ones when available */
_db->get_entry_peer_csrk(
mbed::callback(this, &GenericSecurityManager::set_peer_csrk_cb),
@ -1344,7 +1344,6 @@ void GenericSecurityManager::on_secure_connections_ltk_generated(
flags->ltk_mitm_protected = cb->mitm_performed;
flags->secure_connections_paired = true;
flags->ltk_stored = true;
_db->set_entry_peer_ltk(cb->db_entry, ltk);
}
@ -1365,7 +1364,7 @@ void GenericSecurityManager::on_keys_distributed_ltk(
}
flags->ltk_mitm_protected = cb->mitm_performed;
flags->ltk_stored = true;
_db->set_entry_peer_ltk(cb->db_entry, ltk);
}
@ -1398,7 +1397,6 @@ void GenericSecurityManager::on_keys_distributed_local_ltk(
return;
}
flags->ltk_sent = true;
_db->set_entry_local_ltk(cb->db_entry, ltk);
}
@ -1431,7 +1429,6 @@ void GenericSecurityManager::on_keys_distributed_irk(
return;
}
flags->irk_stored = true;
_db->set_entry_peer_irk(cb->db_entry, irk);
}
@ -1469,8 +1466,6 @@ void GenericSecurityManager::on_keys_distributed_csrk(
}
flags->csrk_mitm_protected = cb->mitm_performed;
flags->csrk_stored = true;
_db->set_entry_peer_csrk(cb->db_entry, csrk);
eventHandler->signingKey(