Skip to content

Commit 579cb5e

Browse files
avoid setting flags twice
1 parent f4f3a3c commit 579cb5e

File tree

3 files changed

+8
-9
lines changed

3 files changed

+8
-9
lines changed

features/FEATURE_BLE/ble/generic/SecurityDb.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ struct SecurityDistributionFlags_t {
3636
encryption_key_size(0),
3737
peer_address_is_public(false),
3838
csrk_stored(false),
39-
csrk_sent(false),
4039
ltk_stored(false),
4140
ltk_sent(false),
4241
irk_stored(false),
@@ -56,7 +55,6 @@ struct SecurityDistributionFlags_t {
5655

5756
/** CSRK (Connection Signature Resolving Key) has been distributed and stored */
5857
uint8_t csrk_stored:1;
59-
uint8_t csrk_sent:1;
6058
/** LTK (Long Term Key) has been distributed and stored */
6159
uint8_t ltk_stored:1;
6260
uint8_t ltk_sent:1;

features/FEATURE_BLE/source/generic/FileSecurityDb.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,8 @@ void FileSecurityDb::set_entry_local_ltk(
170170
return;
171171
}
172172

173+
entry->flags.ltk_sent = true;
174+
173175
fseek(_db_file, entry->file_offset + DB_STORE_OFFSET_LOCAL_KEYS_LTK, SEEK_SET);
174176
fwrite(&ltk, sizeof(ltk_t), 1, _db_file);
175177
}
@@ -203,6 +205,8 @@ void FileSecurityDb::set_entry_peer_ltk(
203205
return;
204206
}
205207

208+
entry->flags.ltk_stored = true;
209+
206210
fseek(_db_file, entry->file_offset + DB_STORE_OFFSET_PEER_KEYS_LTK, SEEK_SET);
207211
fwrite(&ltk, sizeof(ltk_t), 1, _db_file);
208212
}
@@ -263,6 +267,8 @@ void FileSecurityDb::set_entry_peer_csrk(
263267
return;
264268
}
265269

270+
entry->flags.csrk_stored = true;
271+
266272
fseek(_db_file, entry->file_offset + DB_STORE_OFFSET_PEER_SIGNING, SEEK_SET);
267273
/* only write in the csrk */
268274
fwrite(&csrk, sizeof(csrk_t), 1, _db_file);

features/FEATURE_BLE/source/generic/GenericSecurityManager.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ ble_error_t GenericSecurityManager::enableSigning(
354354

355355
if (enabled && !cb->signing_requested && !_default_key_distribution.get_signing()) {
356356
cb->signing_requested = true;
357-
if (flags->csrk_stored && flags->csrk_sent) {
357+
if (flags->csrk_stored) {
358358
/* used the stored ones when available */
359359
_db->get_entry_peer_csrk(
360360
mbed::callback(this, &GenericSecurityManager::set_peer_csrk_cb),
@@ -1344,7 +1344,6 @@ void GenericSecurityManager::on_secure_connections_ltk_generated(
13441344

13451345
flags->ltk_mitm_protected = cb->mitm_performed;
13461346
flags->secure_connections_paired = true;
1347-
flags->ltk_stored = true;
13481347

13491348
_db->set_entry_peer_ltk(cb->db_entry, ltk);
13501349
}
@@ -1365,7 +1364,7 @@ void GenericSecurityManager::on_keys_distributed_ltk(
13651364
}
13661365

13671366
flags->ltk_mitm_protected = cb->mitm_performed;
1368-
flags->ltk_stored = true;
1367+
13691368
_db->set_entry_peer_ltk(cb->db_entry, ltk);
13701369
}
13711370

@@ -1398,7 +1397,6 @@ void GenericSecurityManager::on_keys_distributed_local_ltk(
13981397
return;
13991398
}
14001399

1401-
flags->ltk_sent = true;
14021400
_db->set_entry_local_ltk(cb->db_entry, ltk);
14031401
}
14041402

@@ -1431,7 +1429,6 @@ void GenericSecurityManager::on_keys_distributed_irk(
14311429
return;
14321430
}
14331431

1434-
flags->irk_stored = true;
14351432
_db->set_entry_peer_irk(cb->db_entry, irk);
14361433
}
14371434

@@ -1469,8 +1466,6 @@ void GenericSecurityManager::on_keys_distributed_csrk(
14691466
}
14701467

14711468
flags->csrk_mitm_protected = cb->mitm_performed;
1472-
flags->csrk_stored = true;
1473-
14741469
_db->set_entry_peer_csrk(cb->db_entry, csrk);
14751470

14761471
eventHandler->signingKey(

0 commit comments

Comments
 (0)