androidandroid-authenticatorwebauthncborfido

MAKE CREDENTIAL request is partially received


I can able to send GET_INFO to the webauthn.io . After that, I can able to read MAKE_CREDENTIAL request partially. Total MAKE_CREDENTIAL data length is 400+. But I am getting just 90+ bytes. I am not getting entire request for MAKE_CREDENTIAL.

The request I have received is

[-125, 1, 95, 1, -91, 1, 88, 32, 75, 1, 9, -33, -61, -39, 69, -54, -3, 113, -4, -77, 29, 83, 121, 14, -83, -123, 70, -121, -15, -106, -17, 121, 107, -118, -7, 32, -44, -74, 71, 20, 2, -94, 98, 105, 100, 107, 119, 101, 98, 97, 117, 116, 104, 110, 46, 105, 111, 100, 110, 97, 109, 101, 107, 119, 101, 98, 97, 117, 116, 104, 110, 46, 105, 111, 3, -93, 98, 105, 100, 74, -44, -98, 1, 0, 0, 0, 0, 0, 0, 0, 100, 110, 97, 109, 101, 100, 117, 115, 101]

As per length data total bytes should be 405. But I am receiving just 94 bytes. I debugged and analysed the code, I couldn't able to figure out the issue.

Please help me to proceed. Thanks in advance.


Solution

  • Please check this spec

    When WebAuthn reads Control Point Length characteristic, you should return MTU - 3 bytes. Later, whenever WebAuthn wants to send data to authenticator, WebAuthn will consider to split the data to many chunks which its length will be equal to or less than MTU - 1. The frame you received is just the first frame. There will be many more frames after that, you should handle it.

    Note:

    3 in MTU - 3 is bytes: MSG byte, HLEN byte, LLEN byte

    1 in MTU - 1 is serial number of each packet