我正在为 FIDO2 构建一个 Android 身份验证器。我被读/写特性卡住了。我正在使用 Mac - Chrome 75。Chrome 可以检测到我的 Android BLE 身份验证器。在检测到我的 BLE Authenticator 后,onCharacteristicReadRequest()
从验证器端调用。在里面onCharacteristicReadRequest()
我正在使用下面编写的代码,但之后没有来自客户端的响应。
我已经尝试过版本为 0b01000000 的 U2F。它工作正常。当我移动 FIDO2 版本 0b100000 时,我遇到了这个问题。我正在从身份验证器宣传 fido 服务和设备信息服务。这两个服务都添加了 Thread.sleep(1000) 间隔。我无法按顺序添加这两项服务。当我按顺序添加这两个服务时,我得到ArrayIndexOutofBoundException
.
我不知道这两个问题是否相互关联。如果我做错了什么,请纠正我。
{
...
}else if (characteristic.getUuid().equals(FidoUUIDConstants.FIDO_SERVICE_REVISION_BITFIELD)) {
status = BluetoothGatt.GATT_SUCCESS;
ByteBuffer bb = ByteBuffer.allocate(1);
bb.order(ByteOrder.BIG_ENDIAN);
bb.put((byte) (1 << 5));
bytes = bb.array();
}
mGattServer.sendResponse(device, requestId, status, 0, bytes);
客户端应在预期 fidoServiceBitFieldversion 之后读取/写入特征。