mirror of
https://github.com/google/bumble.git
synced 2026-05-08 03:58:01 +00:00
Merge pull request #526 from Gopi-SB/oob
DH Key compute check modification for OOB Pairing
This commit is contained in:
@@ -764,7 +764,9 @@ class Session:
|
|||||||
self.peer_io_capability = SMP_NO_INPUT_NO_OUTPUT_IO_CAPABILITY
|
self.peer_io_capability = SMP_NO_INPUT_NO_OUTPUT_IO_CAPABILITY
|
||||||
|
|
||||||
# OOB
|
# OOB
|
||||||
self.oob_data_flag = 0 if pairing_config.oob is None else 1
|
self.oob_data_flag = (
|
||||||
|
1 if pairing_config.oob and pairing_config.oob.peer_data else 0
|
||||||
|
)
|
||||||
|
|
||||||
# Set up addresses
|
# Set up addresses
|
||||||
self_address = connection.self_resolvable_address or connection.self_address
|
self_address = connection.self_resolvable_address or connection.self_address
|
||||||
@@ -1014,8 +1016,10 @@ class Session:
|
|||||||
self.send_command(response)
|
self.send_command(response)
|
||||||
|
|
||||||
def send_pairing_confirm_command(self) -> None:
|
def send_pairing_confirm_command(self) -> None:
|
||||||
self.r = crypto.r()
|
|
||||||
logger.debug(f'generated random: {self.r.hex()}')
|
if self.pairing_method != PairingMethod.OOB:
|
||||||
|
self.r = crypto.r()
|
||||||
|
logger.debug(f'generated random: {self.r.hex()}')
|
||||||
|
|
||||||
if self.sc:
|
if self.sc:
|
||||||
|
|
||||||
@@ -1735,7 +1739,6 @@ class Session:
|
|||||||
if self.pairing_method in (
|
if self.pairing_method in (
|
||||||
PairingMethod.JUST_WORKS,
|
PairingMethod.JUST_WORKS,
|
||||||
PairingMethod.NUMERIC_COMPARISON,
|
PairingMethod.NUMERIC_COMPARISON,
|
||||||
PairingMethod.OOB,
|
|
||||||
):
|
):
|
||||||
ra = bytes(16)
|
ra = bytes(16)
|
||||||
rb = ra
|
rb = ra
|
||||||
@@ -1743,6 +1746,22 @@ class Session:
|
|||||||
assert self.passkey
|
assert self.passkey
|
||||||
ra = self.passkey.to_bytes(16, byteorder='little')
|
ra = self.passkey.to_bytes(16, byteorder='little')
|
||||||
rb = ra
|
rb = ra
|
||||||
|
elif self.pairing_method == PairingMethod.OOB:
|
||||||
|
if self.is_initiator:
|
||||||
|
if self.peer_oob_data:
|
||||||
|
rb = self.peer_oob_data.r
|
||||||
|
ra = self.r
|
||||||
|
else:
|
||||||
|
rb = bytes(16)
|
||||||
|
ra = self.r
|
||||||
|
else:
|
||||||
|
if self.peer_oob_data:
|
||||||
|
ra = self.peer_oob_data.r
|
||||||
|
rb = self.r
|
||||||
|
else:
|
||||||
|
ra = bytes(16)
|
||||||
|
rb = self.r
|
||||||
|
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user