我正在制作一个支持 CTAP BLE 与 WebAuthn 通信的移动身份验证器。 我关注这个文档:https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#ble-protocol-overview
协议(protocol)概述如下:
身份验证器宣传 FIDO 服务。
客户端扫描广告 FIDO 服务的身份验证器。
客户端对验证器执行特征发现。
如果尚未配对,客户端和验证器应执行 BLE 配对并创建 LTK。身份验证器应仅允许来自先前绑定(bind)的客户端的连接,而无需用户干预。
客户端检查 fidoServiceRevisionBitfield 特征是否存在。如果是这样,客户端通过写入一个设置了单个位的值来选择支持的版本。
客户端读取 fidoControlPointLength 特征。
客户端注册 fidoStatus 特征的通知。
客户端将请求(例如注册请求)写入 fidoControlPoint 特征。
(可选)客户端向 fidoControlPoint 特征写入 CANCEL 命令以取消待处理的请求。
身份验证器评估请求并通过 fidoStatus 特征发送通知来响应。
协议(protocol)在以下任一情况下完成:
- 客户端取消注册 fidoStatus 特征的通知,或者:
- 连接超时并被身份验证器关闭。
在第 8 步,我收到如下消息:0x83000700030000000000,我明白
0x83是MSG命令
0x0007为数据长度
00030000000000 是数据
当我收到这样的消息时,我不知道如何响应 WebAuthn,因为第 10 步显示“身份验证器评估请求并通过通过 fidoStatus 特征发送通知来响应。”
最佳答案
查了好久,终于找到答案了。原因是我正在支持 CTAP1/U2F 的 Android Chrome 上与 WebAuthn 交互。现在,当我在支持 CTAP2 的桌面上使用 Chrome(版本 75)时,它工作正常。
识别WebAuthn支持CTAP2的要点是发送给authenticator的AuthenticatorGetInfo。它是0x83000104
0x83是MSG命令
0x0001是内容长度
04是AuthenticatorGetInfo
关于bluetooth-lowenergy - 身份验证器评估请求并通过 fidoStatus 特征发送通知来响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55448710/