bluetooth-lowenergy - 身份验证器评估请求并通过 fidoStatus 特征发送通知来响应

标签 bluetooth-lowenergy authenticator cbor

我正在制作一个支持 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)概述如下:

  1. 身份验证器宣传 FIDO 服务。

  2. 客户端扫描广告 FIDO 服务的身份验证器。

  3. 客户端对验证器执行特征发现。

  4. 如果尚未配对,客户端和验证器应执行 BLE 配对并创建 LTK。身份验证器应仅允许来自先前绑定(bind)的客户端的连接,而无需用户干预。

  5. 客户端检查 fidoServiceRevisionBitfield 特征是否存在。如果是这样,客户端通过写入一个设置了单个位的值来选择支持的版本。

  6. 客户端读取 fidoControlPointLength 特征。

  7. 客户端注册 fidoStatus 特征的通知。

  8. 客户端将请求(例如注册请求)写入 fidoControlPoint 特征。

  9. (可选)客户端向 fidoControlPoint 特征写入 CANCEL 命令以取消待处理的请求。

  10. 身份验证器评估请求并通过 fidoStatus 特征发送通知来响应。

  11. 协议(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

enter image description here

关于bluetooth-lowenergy - 身份验证器评估请求并通过 fidoStatus 特征发送通知来响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55448710/

相关文章:

Android addAccount明确使用 "com.google"类型

google-authenticator - 为什么 Microsoft Authenticator 在使用电子邮件作为标签而不是颁发者时显示电子邮件域?

用于谷歌身份 validator 的 Java API

java - 将固定大小的 Map 序列化为 CBOR

Java - 如何解码 CBOR 编码的 byte[] 数组?

c# - 如何使用 C# .Net 核心对 CBOR 二进制文档进行 COSE 签名?

java - Android 蓝牙 LE 屏蔽 UUID 过滤器

c++ - 如何使用 Qt 检测蓝牙崩溃或关机?

ios - BLE 设备在 cancelPeripheralConnection 后重新连接(如何忘记 BLE 设备?)

GATT 以外的蓝牙低功耗 (BLE) 协议(protocol)