I just want to use the FIDO Conformance Tools v1.6.33 to Test CTAP2.1. but the first step happened error. I don't known whats happened, the data dose not reached BLE service.
BLE-1 Test CTAP2 BLE support- P-1 Check that authenticator implements Device Information Service(0x180A), and check that: (a) It contains "Manufacturer Name String" characteristic(0x2A29). (b) It contains "Model Number String" characteristic(0x2A24). (c) It contains "Firmware Revision String" characteristic(0x2A26).‣
- P-2 Check that authenticator implements Generic Access Profile Service(0x1800), and check that: (a) It contains "Device Name" characteristic(Ox2A00). (b) It contains "Appearance" characteristic(0x2A01). [SKIPPED DUE TO NOBLE OSX ISSUES]
- P-3 Check that FIDO service is a primary service. [SKIPPED DUE TO NOBLE ISSUES]
- P-4 Get a list of FIDO characteristics and check that it contains: fidoControlPoint, fidoStatus, fidoControlPointLength and fidoServiceRevisionBitfield characteristics.‣
- P-5 Check that fidoControlPoint characteristic is for "write" and "writeWithoutResponse" only.‣
- P-6 Check that fidoStatus characteristic is for "notify" only.‣
- P-7 Check that fidoControlPointLength characteristic is for "read" only, and returned value is not below 20 and not higher than 512.‣
- P-8 Check that fidoServiceRevisionBitfield characteristic contains "read" and "write". Read the characteristic and check that authenticator returns 1 byte that has FIDO2(0x10) flag is set to true.‣
- P-9 Send a valid ping command, with a length less than max frame length, and check that authenticator successfully responds with the same frame back.‣TypeError: There should be 5 arguments: (String, String, String, Buffer, Boolean)
at Noble.write (/Applications/FIDO Alliance - Certification Conformance Testing Tools.app/Contents/Resources/app.asar/node_modules/@abandonware/noble/lib/noble.js:421:18)
at Characteristic.write (/Applications/FIDO Alliance - Certification Conformance Testing Tools.app/Contents/Resources/app.asar/node_modules/@abandonware/noble/lib/characteristic.js:75:15)
at writeToPeripheralFIDOCharacteristic (/Applications/FIDO Alliance - Certification Conformance Testing Tools.app/Contents/Resources/app.asar/dependencies/transports/noble-ipc.js:497:28)
at initialiseProtocol (/Applications/FIDO Alliance - Certification Conformance Testing Tools.app/Contents/Resources/app.asar/dependencies/transports/noble-ipc.js:515:9)
at BLERequestManager.executeNext (/Applications/FIDO Alliance - Certification Conformance Testing Tools.app/Contents/Resources/app.asar/dependencies/transports/noble-ipc.js:339:21)
at /Applications/FIDO Alliance - Certification Conformance Testing Tools.app/Contents/Resources/app.asar/dependencies/transports/noble-ipc.js:328:22
at new Promise (<anonymous>)
at BLERequestManager.addToQueue (/Applications/FIDO Alliance - Certification Conformance Testing Tools.app/Contents/Resources/app.asar/dependencies/transports/noble-ipc.js:319:20)
at IpcMainImpl.<anonymous> (/Applications/FIDO Alliance - Certification Conformance Testing Tools.app/Contents/Resources/app.asar/dependencies/transports/noble-ipc.js:585:43)
at IpcMainImpl.emit (events.js:310:20)
let maxWriteLen = navigator.fido.fido2.ble.getMaxWriteLength(getConnectionDeviceInfo());
let data = generateRandomBuffer(maxWriteLen - 3);
let frames = generateBLERequestFrames(CTAPBLE_CMD.PING, data, getConnectionDeviceInfo());
return navigator.fido.fido2.ble.sendFIDOBuffers(getConnectionDeviceInfo(), frames)
.then((response) => {
assert.strictEqual(response.CMD, CTAPBLE_CMD.PING, `Sent PING(0x81) command. Got ${CTAPBLE_CMD[response.CMD]}(${response.CMD})`)
assert.strictEqual(hex.encode(data), hex.encode(response.DATA), `Expected PING to return ${hex.encode(data)}. Got ${hex.encode(response.DATA)}`);
})