androidbluetooth-lowenergyandroid-authenticatorwebauthnfido

FIDO2 - Get Authenticator Info issue


I am developing Android authenticator.I am getting {-125,0,1,4} byte array from webauthn client after pairing. When I decoding this array

-125 (0x83) - MSG
1 (0x01) - length of the data
4 (0x04) - AuthenticatorGetInfo

I am not sure about 0 in this array. Please let me know is there any meaning for this 0.

For this request, I am sending response as CBOR data.

00a60182684649444f5f325f30665532465f563202816b686d61632d73656372657403506435323965353235383533343133663304a462726bf5627570f564706c6174f469636c69656e7450696ef505190400069f01ff

I am notifying above data by using Fido Status as follows.

for (byte[] frame : response.toFrames(mMTU)) {
    getFidoStatus().setValue(frame);
    mGattServer.notifyCharacteristicChanged(device, getFidoStatus(), true);
}

After that I am not getting any request/response from webauthn client. I am sending KEEPALIVE(0x82) command with value PROCESSING(0x01) for every kKeepAliveMillis(500ms). Is there any issue with my implementation?

Please help me to proceed this. Thanks in advance.


Solution

  • This speciciation fully explains for you

    https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#ble-framing-fragmentation

    enter image description here

    CMD is 0x83 (MSG)

    Length of DATA is 2 bytes: HLEN byte and LLEN byte.

    In your case, length of DATA is 0x0001 (= 1). The DATA is 0x04