Skip to content

Commit f9a79be

Browse files
fixed initiator distribution bug and setting LINK distribution field based on SC
1 parent d20c4ef commit f9a79be

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

features/FEATURE_BLE/ble/SecurityManager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
* may be called as a result of the application requiring encryption or encryption through
6969
* requestAuthentication() or setLinkEncryption().
7070
*
71-
* All these can be implicitly called by useing setLinkSecurity() to conveniently set the required
71+
* All these can be implicitly called by using setLinkSecurity() to conveniently set the required
7272
* security for the link. The SecurityManager will trigger all the process required to achieve the set
7373
* security level.
7474
*

features/FEATURE_BLE/source/generic/GenericSecurityManager.cpp

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ ble_error_t GenericSecurityManager::init(
5656
_default_authentication.set_secure_connections(secure_connections);
5757
_default_authentication.set_keypress_notification(true);
5858

59+
_default_key_distribution.set_link(secure_connections);
60+
5961
_default_key_distribution.set_signing(signing);
6062
if (signing) {
6163
init_signing();
@@ -126,7 +128,7 @@ ble_error_t GenericSecurityManager::requestPairing(connection_handle_t connectio
126128

127129
/* by default the initiator doesn't send any keys other then identity */
128130
KeyDistribution initiator_distribution(
129-
KeyDistribution::KEY_DISTRIBUTION_IDENTITY | KeyDistribution::KEY_DISTRIBUTION_LINK
131+
KeyDistribution::KEY_DISTRIBUTION_IDENTITY | _default_key_distribution.get_link()
130132
);
131133

132134
/* if requested the initiator may send all the default keys for later
@@ -171,28 +173,28 @@ ble_error_t GenericSecurityManager::acceptPairingRequest(connection_handle_t con
171173
link_authentication.set_mitm(true);
172174
}
173175

174-
KeyDistribution initiator_dist = cb->get_initiator_key_distribution();
176+
KeyDistribution initiator_distribution = cb->get_initiator_key_distribution();
175177

176178
if (_master_sends_keys) {
177-
initiator_dist &= _default_key_distribution;
179+
initiator_distribution &= _default_key_distribution;
178180
} else {
179-
initiator_dist &= KeyDistribution(KeyDistribution::KEY_DISTRIBUTION_IDENTITY | KeyDistribution::KEY_DISTRIBUTION_LINK);
181+
initiator_distribution &= KeyDistribution(KeyDistribution::KEY_DISTRIBUTION_IDENTITY | KeyDistribution::KEY_DISTRIBUTION_LINK);
180182
}
181183

182184
/* signing has to be offered and enabled on the link */
183-
if (initiator_dist.get_signing()) {
184-
initiator_dist.set_signing(
185+
if (initiator_distribution.get_signing()) {
186+
initiator_distribution.set_signing(
185187
cb->signing_override_default ? cb->signing_requested : _default_key_distribution.get_signing()
186188
);
187189
}
188190

189-
KeyDistribution responder_dist(cb->get_responder_key_distribution());
191+
KeyDistribution responder_distribution(cb->get_responder_key_distribution());
190192

191-
responder_dist &= _default_key_distribution;
193+
responder_distribution &= _default_key_distribution;
192194

193195
/* signing has to be requested and enabled on the link */
194-
if (responder_dist.get_signing()) {
195-
responder_dist.set_signing(
196+
if (responder_distribution.get_signing()) {
197+
responder_distribution.set_signing(
196198
cb->signing_override_default ? cb->signing_requested : _default_key_distribution.get_signing()
197199
);
198200
}
@@ -201,8 +203,8 @@ ble_error_t GenericSecurityManager::acceptPairingRequest(connection_handle_t con
201203
connection,
202204
cb->oob_present,
203205
link_authentication,
204-
responder_dist,
205-
responder_dist
206+
initiator_distribution,
207+
responder_distribution
206208
);
207209
}
208210

0 commit comments

Comments
 (0)