文章目录
- 1. 触发条件(何时充当显示方)
- 2. BlueZ Agent API 的核心方法:`DisplayPasskey`
- 3. 显示方的完整工作流程图
- 4. 显示方的 Cancel(取消)处理
- 5. 安全性分析(为何能防 MITM)
- 6. 与 Legacy(传统)PIN Code 显示的区别(工程避坑)
- 总结一句话
Passkey Entry 模型(显示方)是蓝牙 SSP 中专门用于解决“一端有屏幕(但没键盘),另一端有键盘(但没屏幕)”这一不对称场景的配对方案。
它的核心逻辑是:有屏幕的设备(显示方)负责“出示”一个随机的 6 位密码,用户把这个密码手动敲进另一台只有键盘的设备(输入方)里。在这个过程中,显示方全程只负责显示和进度反馈,完全不需要用户点击确认或拒绝。
结合 BlueZ 的 Agent API,我为你拆解显示方的底层实现和交互细节:
1. 触发条件(何时充当显示方)
协议栈根据 I/O 能力自动分配角色。如果你的设备注册的 Capability 为DisplayOnly或KeyboardDisplay,且对端注册为KeyboardOnly,则你的设备被定为显示方。
典型场景:
- 蓝牙键盘配对电脑:电脑屏幕(显示方)显示
123456,用户在蓝牙键盘(输入方)上敲入这 6 位数字并回车。- 智能门锁连接手机:门锁小屏幕(显示方)显示动态码,用户在手机 App(输入方)中输入该数字。