From b9f91f695abf9d4aac77e8a1ec469b374f657f42 Mon Sep 17 00:00:00 2001 From: Gilles Boccon-Gibod Date: Wed, 27 Nov 2024 12:58:03 -0800 Subject: [PATCH] fix oob support in pair.py --- apps/pair.py | 21 +++++++++++++-------- bumble/att.py | 1 + 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/apps/pair.py b/apps/pair.py index 67eec909..daf010a3 100644 --- a/apps/pair.py +++ b/apps/pair.py @@ -373,7 +373,9 @@ async def pair( shared_data = ( None if oob == '-' - else OobData.from_ad(AdvertisingData.from_bytes(bytes.fromhex(oob))) + else OobData.from_ad( + AdvertisingData.from_bytes(bytes.fromhex(oob)) + ).shared_data ) legacy_context = OobLegacyContext() oob_contexts = PairingConfig.OobConfig( @@ -381,16 +383,19 @@ async def pair( peer_data=shared_data, legacy_context=legacy_context, ) - oob_data = OobData( - address=device.random_address, - shared_data=shared_data, - legacy_context=legacy_context, - ) print(color('@@@-----------------------------------', 'yellow')) print(color('@@@ OOB Data:', 'yellow')) - print(color(f'@@@ {our_oob_context.share()}', 'yellow')) + if shared_data is None: + oob_data = OobData( + address=device.random_address, shared_data=our_oob_context.share() + ) + print( + color( + f'@@@ SHARE: {bytes(oob_data.to_ad()).hex()}', + 'yellow', + ) + ) print(color(f'@@@ TK={legacy_context.tk.hex()}', 'yellow')) - print(color(f'@@@ HEX: ({bytes(oob_data.to_ad()).hex()})', 'yellow')) print(color('@@@-----------------------------------', 'yellow')) else: oob_contexts = None diff --git a/bumble/att.py b/bumble/att.py index 15ad8c69..12672d35 100644 --- a/bumble/att.py +++ b/bumble/att.py @@ -57,6 +57,7 @@ if TYPE_CHECKING: # pylint: disable=line-too-long ATT_CID = 0x04 +ATT_PSM = 0x001F ATT_ERROR_RESPONSE = 0x01 ATT_EXCHANGE_MTU_REQUEST = 0x02