fido-alliance / conformance-test-tools-resources

Certification Test Tools Resources. For security and privacy related issues email tools@certification.fidoalliance.org
https://fidoalliance.org/certification/functional-certification/conformance/
40 stars 14 forks source link

BLE Authenticator : Uncaught ReferenceError: maxTimeout is not defined on Get getInfo. #724

Closed ghislaindemael closed 9 months ago

ghislaindemael commented 10 months ago

By submitting this issue you are acknowledging that any information regarding this issue will be publicly available.

If you have privacy concerns, please email conformance-tools@fidoalliance.org

FIRST PRE CHECK

What protocol are you implementing?

NOTE: UAF 1.0 certification have been officially sunset. U2F 1.2 only supported version of U2F.

What is your implementation class?

If you are platform authenticator vendor, please email conformance-tools@fidoalliance.org

What is the version of the tool are you using?

v 1.7.14 & v 1.7.15

What is the OS and the version are you running?

For desktop tools

For UAF mobile tools

Issue description

Hi all !

I am trying to develop an android application that advertises a BLE GATT server with the Fido service.

The server generation works well, the Fido Conformance Testing Tools application (shortened to Tools) detects the app properly as a BLE authenticator.

Before implementing the whole protocol, I'd like to validate the first step, which is returning the basic authenticator information with a getInfo. On the Tools, when selecting "Get GetInfo Snapshot" in "MENU", the menu shows up properly. However, excluding the fact that when selecting the radio button corresponding to the authenticator, it unselects itself after 1 to 5 seconds, clicking on "GET GETINFO", causes an error.

To view this error, you must click on "Open inspector" in "MENU" and go to the "Console" tab. The error present is :

Uncaught ReferenceError: maxTimeout is not defined at BLEGracePeriod (C:\Users\XXX\AppData\Local\Temp\2WIuzDpaOD4Aqf6RE2GmA8hJv4j\resources\app.asar\dependencies\ctap2dep.js:833) at sendCTAPBLE_Command (C:\Users\XXX\AppData\Local\Temp\2WIuzDpaOD4Aqf6RE2GmA8hJv4j\resources\app.asar\dependencies\ctap2dep.js:804) at sendCTAPBLE_CBORCommand (C:\Users\XXX\AppData\Local\Temp\2WIuzDpaOD4Aqf6RE2GmA8hJv4j\resources\app.asar\dependencies\ctap2dep.js:824) at sendCTAP_CBOR (C:\Users\XXX\AppData\Local\Temp\2WIuzDpaOD4Aqf6RE2GmA8hJv4j\resources\app.asar\dependencies\ctap2dep.js:1718) at sendValidCTAP_CBOR (C:\Users\XXX\AppData\Local\Temp\2WIuzDpaOD4Aqf6RE2GmA8hJv4j\resources\app.asar\dependencies\ctap2dep.js:1731) at Object.getGetInfo (C:\Users\XXX\AppData\Local\Temp\2WIuzDpaOD4Aqf6RE2GmA8hJv4j\resources\app.asar\dependencies\ctap2dep.js:1741) at HTMLButtonElement. (controller.js:259) at HTMLButtonElement.dispatch (jquery.min.js:3) at HTMLButtonElement.q.handle (jquery.min.js:3)

Clicking on the first link auto-navigates to the "Sources tab" and the "ctap2dep.js" file. The problematic function is :

let BLEGracePeriod = (maxTimeoutMs) => { maxTimeout = maxTimeoutMs || window.config.test.CustomBLEGracePeriod || 750; return new Promise((resolve, reject) => { if(window.getConnectionDeviceInfo().transport === 'BLE') setInterval(() => resolve(), maxTimeoutMs || 2000); else resolve(); }) }

getInfo3

As you may see on the image above or linked here, the faulty line is C:\Users\XXX\AppData\Local\Temp\2WIuzDpaOD4Aqf6RE2GmA8hJv4j\resources\app.asar\dependencies\ctap2dep.js:833 maxTimeout = maxTimeoutMs || window.config.test.CustomBLEGracePeriod || 750;, which seems to be missing a let to compile properly. It is to be noted maxTimeout is not used after its declaration.

Since it is written at the top of the file

ANY MODIFICATION OF THIS CODE WITHOUT PRIOR CONCENT BY FIDO ALLIANCE WILL BE TREATED AS A BREACH OF THE FIDO ALLIANCE END USER LICENSE AGREEMENT AND WILL RESULT IN CANCELATION OF THE CONFORMANCE TEST RESULTS AND TOTAL AND COMPLETE BAN FROM THE FIDO CERTIFICATION PROGRAMME I chose to not try to fix this error myself, and instead write this issue here, hoping someone is capable of fixing it relatively quickly.

Sincirely, Ghislain

iirachek commented 10 months ago

Seems like a small fix. This will be patched in the upcoming build.

iirachek commented 10 months ago

@ghislaindemael This issue should be resolved in the latest v1.7.16 update.