GmsCore: [FIDO] Fido doesn't seem to work anywhere

Describe the bug Whenever I try to use the new FIDO functionality via USB on v0.2.25.223616 or 2a19ef4, the transport handler crashes when indicating presence on the FIDO device. In the Android UI, nothing graphical can be seen, but the results of logcat show what is happening. The ultimate result is that FIDO doesn’t work in any context. The system UI will allow me to attempt to add keys in Firefox or Chromium, but will not do anything when I press the key.

Logcat

11-09 13:11:25.648  9321  9321 D FidoCtapHidConnection: Received packet YY4IcAInZHR5cGVqcHVibGljLWtleQ0EDhoABQQDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
11-09 13:11:25.648  9321  9321 D FidoCtapHidConnection: Received CtapHidCborResponse(statusCode=0x0, payload=rAGDZlUyRl9WMmhGSURPXzJfMGxGSURPXzJfMV9QUkUCgmtjcmVkUHJvdGVjdGtobWFjLXNlY3JldANQ7ogoeXIcSROXdT38zpcHKgSlYnJr9WJ1cPVkcGxhdPRpY2xpZW50UGlu9XVjcmVkZW50aWFsTWdtdFByZXZpZXf1BRkEsAaCAgEHCAgYgAmBY3VzYgqComNhbGcmZHR5cGVqcHVibGljLWtleaJjYWxnJ2R0eXBlanB1YmxpYy1rZXkNBA4aAAUEAw==) in 4 packets
11-09 13:11:25.648  9321  9321 D UsbRequestJNI: close
11-09 13:11:25.650  9321  9321 D FidoCtapHidConnection: Got info: AuthenticatorGetInfoResponse(versions=[], extensions=[], aaguid=[-18, -120, 40, 121, 114, 28, 73, 19, -105, 117, 61, -4, -50, -105, 7, 42], options=Options[platformDevice=false, residentKey=true, clientPin=true, userPresence=true, noMcGaPermissionsWithClientPin=false, credentialMgmtPreview=true, makeCredUvNotRqd=false], maxMsgSize=1200, pinProtocols=[])
11-09 13:11:25.650  9321  9321 D UsbDeviceConnectionJNI: close
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at org.microg.gms.fido.core.transport.TransportHandler.register$play_services_fido_core_release(TransportHandler.kt:156)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at org.microg.gms.fido.core.transport.usb.UsbTransportHandler$register$2.invokeSuspend(UsbTransportHandler.kt:87)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at org.microg.gms.fido.core.transport.usb.UsbTransportHandler$register$2.invoke(Unknown Source:8)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at org.microg.gms.fido.core.transport.usb.UsbTransportHandler$register$2.invoke(Unknown Source:4)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at org.microg.gms.fido.core.transport.usb.ctaphid.CtapHidConnection.open(CtapHidConnection.kt:176)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at org.microg.gms.fido.core.transport.usb.ctaphid.CtapHidConnection$open$2.invokeSuspend(Unknown Source:15)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at androidx.lifecycle.DispatchQueue.drainQueue(DispatchQueue.kt:75)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at androidx.lifecycle.DispatchQueue.enqueue(DispatchQueue.kt:112)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at androidx.lifecycle.DispatchQueue.dispatchAndEnqueue$lambda-2$lambda-1(DispatchQueue.kt:100)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at androidx.lifecycle.DispatchQueue.$r8$lambda$G2ay370n_s_ksSHUJaD9zIU8eCw(Unknown Source:0)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at androidx.lifecycle.DispatchQueue$$ExternalSyntheticLambda0.run(Unknown Source:4)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at android.os.Handler.handleCallback(Handler.java:938)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at android.os.Handler.dispatchMessage(Handler.java:99)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at android.os.Looper.loopOnce(Looper.java:201)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at android.os.Looper.loop(Looper.java:288)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at android.app.ActivityThread.main(ActivityThread.java:7870)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at java.lang.reflect.Method.invoke(Native Method)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
11-09 13:11:25.651  9321  9321 W FidoUsbHandler: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
11-09 13:11:25.652  9321  9321 D FidoUi  : USB status set to waiting-for-device (null)

To Reproduce Steps to reproduce the behavior:

  1. Open Firefox/Chromium
  2. Go to webauthn.io
  3. Try to register a username
  4. Observe that Firefox/Chromium will prompt you for your key
  5. Observe that tapping the FIDO key when asked results in no activity and no progress being made

Expected behavior I expect tapping the FIDO key to do something, but it does nothing.

System Android Version: 12 Custom ROM: LineageOS 19.1

Additional context I am using a Yubikey 5 NFC, and NFC/USB. NFC does not work either.

More Logcat that proves data is being sent back from the Yubikey and being handled

11-09 12:51:30.553  9321  9321 D FidoUsbHandler: YubiKey OTP+FIDO+CCID has permission
11-09 12:51:30.554  1376  9292 W InputManager-JNI: Input channel object '6443bd5 com.android.systemui/com.android.systemui.usb.UsbPermissionActivity (client)' was disposed without first being removed with the input manager!
11-09 12:51:30.556  9321  9321 D FidoUsbHandler: Signature: BtDxCQGhAQkgFQAm/wB1CJVAgQIJIRUAJv8AdQiVQJECwA==
11-09 12:51:30.556  9321  9321 D UsbDeviceConnectionJNI: close
11-09 12:51:30.556  9321  9321 D FidoUsbHandler: Trying to use YubiKey OTP+FIDO+CCID for SIGN
11-09 12:51:30.557  9321  9321 D AuthFidoHandler: onStatusChanged: USB, waiting-for-user
11-09 12:51:30.557  9321  9321 D FidoCtapHidConnection: Opening connection
11-09 12:51:30.560  9321  9321 D FidoCtapHidConnection: Sending CtapHidInitRequest(nonce=KDkQEd4b9Mo=) in 1 packets
11-09 12:51:30.560  9321  9321 D UsbRequestJNI: init
11-09 12:51:30.549     0     0 D tas2562 2-004c: tas2562_dev_read: BOOK:PAGE:REG 0:0:36
11-09 12:51:30.549     0     0 I tas2562 2-004c: IRQ reg is: irq_work_routine, 0, 559
11-09 12:51:30.549     0     0 D tas2562 2-004c: PowSts B: 0x2, check again after 10ms
11-09 12:51:30.564  9321  9321 D FidoCtapHidConnection: Sent packet /////4YACCg5EBHeG/TKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
11-09 12:51:30.564  9321  9321 D UsbRequestJNI: close
11-09 12:51:30.566  9321  9321 D UsbRequestJNI: init
11-09 12:51:30.566  9321  9321 D FidoCtapHidConnection: Reading 64 bytes from usb
11-09 12:51:30.568  9321  9321 D FidoCtapHidConnection: Received packet /////4YAESg5EBHeG/TKALYAAQIFAgYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
11-09 12:51:30.569  9321  9321 D FidoCtapHidConnection: Received CtapHidInitResponse(nonce=0xKDkQEd4b9Mo=, channelId=0xb60001, protocolVersion=0x2, version=5.2.6, capabilities=0x5) in 1 packets
11-09 12:51:30.569  9321  9321 D UsbRequestJNI: close
11-09 12:51:30.570  9321  9321 D FidoCtapHidConnection: Sending CtapHidCborRequest(Ctap2Request(command=0x4, payload=)) in 1 packets
11-09 12:51:30.570  9321  9321 D UsbRequestJNI: init
11-09 12:51:30.569     0     0 D tas2562 2-004c: tas2562_dev_read: BOOK:PAGE:REG 0:0:2
11-09 12:51:30.569     0     0 D tas2562 2-004c: tas2562_dev_write: BOOK:PAGE:REG 0:0:26, VAL: 0xf8
11-09 12:51:30.572  9321  9321 D FidoCtapHidConnection: Sent packet ALYAAZAAAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
11-09 12:51:30.572  9321  9321 D UsbRequestJNI: close
11-09 12:51:30.572  9321  9321 D UsbRequestJNI: init
11-09 12:51:30.572  9321  9321 D FidoCtapHidConnection: Reading 64 bytes from usb
11-09 12:51:30.569     0     0 D tas2562 2-004c: tas2562_dev_write: BOOK:PAGE:REG 0:0:27, VAL: 0xb1
11-09 12:51:30.569     0     0 I tas2562 2-004c: tas2562_enableIRQ, Enable irq
11-09 12:51:30.569     0     0 I tas2562 2-004c: tas2562_set_bitwidth 6
11-09 12:51:30.569     0     0 D tas2562 2-004c: tas2562_dev_update_bits: BOOK:PAGE:REG 0:0:8, mask: 0xc, val=0x8
11-09 12:51:30.570     0     0 D tas2562 2-004c: tas2562_dev_update_bits: BOOK:PAGE:REG 0:0:8, mask: 0x3, val=0x2
11-09 12:51:30.570     0     0 I tas2562 2-004c: mnCh_size: 24,  slot_width_tmp: 32
11-09 12:51:30.570     0     0 I tas2562 2-004c: blr_clk_ratio: 48
11-09 12:51:30.574  9321  9321 D FidoCtapHidConnection: Received packet ALYAAZAAwwCqAYNmVTJGX1YyaEZJRE9fMl8wbEZJRE9fMl8xX1BSRQKCa2NyZWRQcm90ZWN0a2htYWMtc2Vjcg==
11-09 12:51:30.574  9321  9321 D FidoCtapHidConnection: Reading 64 bytes from usb
11-09 12:51:30.570     0     0 D tas2562 2-004c: tas2562_dev_update_bits: BOOK:PAGE:REG 0:0:11, mask: 0xff, val=0x44
11-09 12:51:30.570     0     0 D tas2562 2-004c: tas2562_dev_update_bits: BOOK:PAGE:REG 0:0:12, mask: 0xff, val=0x40
11-09 12:51:30.570     0     0 I tas2562 2-004c: tas2562_hw_params, sample rate: 48000
11-09 12:51:30.570     0     0 D tas2562 2-004c: tas2562_dev_update_bits: BOOK:PAGE:REG 0:0:6, mask: 0x20, val=0x0
11-09 12:51:30.571     0     0 D tas2562 2-004c: tas2562_dev_update_bits: BOOK:PAGE:REG 0:0:6, mask: 0xe, val=0x8
11-09 12:51:30.572     0     0 E afe_callback: cmd = 0x100ef returned error = 0x2
11-09 12:51:30.572     0     0 E afe_apr_send_pkt: DSP returned error[ADSP_EBADPARAM]
11-09 12:51:30.572     0     0 E afe_send_port_topology_id: AFE set topology id enable for port 0x1000 failed -22
11-09 12:51:30.576  9321  9321 D FidoCtapHidConnection: Received packet ALYAAQBldANQL8BXn4ETR+qxFrtajbkgKgSlYnJr9WJ1cPVkcGxhdPRpY2xpZW50UGlu9XVjcmVkZW50aWFsTQ==
11-09 12:51:30.577  9321  9321 D FidoCtapHidConnection: Reading 64 bytes from usb
11-09 12:51:30.578  9321  9321 D FidoCtapHidConnection: Received packet ALYAAQFnbXRQcmV2aWV39QUZBLAGgQEHCAgYgAmCY25mY2N1c2IKgqJjYWxnJmR0eXBlanB1YmxpYy1rZXmiYw==
11-09 12:51:30.578  9321  9321 D FidoCtapHidConnection: Reading 64 bytes from usb
11-09 12:51:30.580  9321  9321 D FidoCtapHidConnection: Received packet ALYAAQJhbGcnZHR5cGVqcHVibGljLWtleQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
11-09 12:51:30.580  9321  9321 D FidoCtapHidConnection: Received CtapHidCborResponse(statusCode=0x0, payload=qgGDZlUyRl9WMmhGSURPXzJfMGxGSURPXzJfMV9QUkUCgmtjcmVkUHJvdGVjdGtobWFjLXNlY3JldANQL8BXn4ETR+qxFrtajbkgKgSlYnJr9WJ1cPVkcGxhdPRpY2xpZW50UGlu9XVjcmVkZW50aWFsTWdtdFByZXZpZXf1BRkEsAaBAQcICBiACYJjbmZjY3VzYgqComNhbGcmZHR5cGVqcHVibGljLWtleaJjYWxnJ2R0eXBlanB1YmxpYy1rZXk=) in 4 packets
11-09 12:51:30.580  9321  9321 D UsbRequestJNI: close
11-09 12:51:30.575     0     0 D tas2562 2-004c: tas2562_mute, 0
11-09 12:51:30.575     0     0 E tas2562 2-004c: set power state: 0
11-09 12:51:30.575     0     0 D tas2562 2-004c: tas2562_dev_write: BOOK:PAGE:REG 0:0:4, VAL: 0xcf
11-09 12:51:30.575     0     0 D tas2562 2-004c: tas2562_dev_write: BOOK:PAGE:REG 0:0:10, VAL: 0x01
11-09 12:51:30.575     0     0 D tas2562 2-004c: tas2562_dev_write: BOOK:PAGE:REG 0:0:56, VAL: 0x0c
11-09 12:51:30.576     0     0 D tas2562 2-004c: tas2562_dev_bulk_write: BOOK:PAGE:REG 100:7:72, len: 0x04
11-09 12:51:30.576     0     0 D tas2562 2-004c: tas2562_dev_bulk_write: BOOK:PAGE:REG 100:7:76, len: 0x04
11-09 12:51:30.577     0     0 D tas2562 2-004c: tas2562_dev_bulk_write: BOOK:PAGE:REG 100:5:76, len: 0x04
11-09 12:51:30.577     0     0 D tas2562 2-004c: tas2562_dev_write: BOOK:PAGE:REG 0:0:59, VAL: 0x38
11-09 12:51:30.577     0     0 D tas2562 2-004c: tas2562_dev_write: BOOK:PAGE:REG 0:0:60, VAL: 0x3c
11-09 12:51:30.577     0     0 D tas2562 2-004c: tas2562_dev_write: BOOK:PAGE:REG 0:0:53, VAL: 0x78
11-09 12:51:30.578     0     0 D tas2562 2-004c: tas2562_dev_write: BOOK:PAGE:REG 0:253:13, VAL: 0x0d
11-09 12:51:30.578     0     0 D tas2562 2-004c: tas2562_dev_write: BOOK:PAGE:REG 0:253:51, VAL: 0x8e
11-09 12:51:30.578     0     0 D tas2562 2-004c: tas2562_dev_write: BOOK:PAGE:REG 0:253:50, VAL: 0x49
11-09 12:51:30.578     0     0 D tas2562 2-004c: tas2562_dev_write: BOOK:PAGE:REG 0:253:63, VAL: 0x21
11-09 12:51:30.578     0     0 D tas2562 2-004c: tas2562_dev_write: BOOK:PAGE:REG 0:253:25, VAL: 0x80
11-09 12:51:30.578     0     0 D tas2562 2-004c: tas2562_dev_write: BOOK:PAGE:REG 0:253:95, VAL: 0xc1
11-09 12:51:30.578     0     0 I tas2562 2-004c: INV format: IBNF
11-09 12:51:30.584  9321  9321 D FidoCtapHidConnection: Got info: AuthenticatorGetInfoResponse(versions=[], extensions=[], aaguid=[47, -64, 87, -97, -127, 19, 71, -22, -79, 22, -69, 90, -115, -71, 32, 42], options=Options[platformDevice=false, residentKey=true, clientPin=true, userPresence=true, noMcGaPermissionsWithClientPin=false, credentialMgmtPreview=true, makeCredUvNotRqd=false], maxMsgSize=1200, pinProtocols=[])
11-09 12:51:30.586  9321  9321 D FidoCtapHidConnection: Sending CtapHidCborRequest(AuthenticatorGetAssertionRequest(rpId=google.com,clientDataHash=0xI6pYMBwJYlRUn3/npKJ07R4ndvS9Rnf3NvV8JhBbLwI=, allowList=[PublicKeyCredentialDescriptor[q3el6NHQWcY-LiPg8ZDCgZ8u0AG3h_OijjSS6-S8mmguc_0KFIGESe9RxUz9UIRPjGuIzy-zdYCX0T5psXP1qw, type=public-key, transports=[]], PublicKeyCredentialDescriptor[lIeS-zvbFl108C1Jt3_9jerwE3TznCD9WQA6HyXUoC24lxM6jyGfuLVLJoBac-YvDezmlgCHG2XY3HDjXm6rpA, type=public-key, transports=[]]],extensions=[],options=org.microg.gms.fido.core.protocol.msgs.AuthenticatorGetAssertionRequest$Companion$Options@540a99c,pinAuth=null,pinProtocol=null)) in 5 packets
11-09 12:51:30.586  9321  9321 D UsbRequestJNI: init
11-09 12:51:30.588  9321  9321 D FidoCtapHidConnection: Sent packet ALYAAZAA+QKkAWpnb29nbGUuY29tAlggI6pYMBwJYlRUn3/npKJ07R4ndvS9Rnf3NvV8JhBbLwIDgqNiaWRYQA==
11-09 12:51:30.579     0     0 D tas2562 2-004c: tas2562_dev_update_bits: BOOK:PAGE:REG 0:0:7, mask: 0x1, val=0x1
11-09 12:51:30.579     0     0 D tas2562 2-004c: tas2562_dev_update_bits: BOOK:PAGE:REG 0:0:7, mask: 0x3e, val=0x2
11-09 12:51:30.579     0     0 D tas2562 2-004c: tas2562_dev_write: BOOK:PAGE:REG 0:0:10, VAL: 0x01
11-09 12:51:30.580     0     0 D tas2562 2-004c: tas2562_dev_update_bits: BOOK:PAGE:REG 0:0:48, mask: 0x4, val=0x4
11-09 12:51:30.580     0     0 D tas2562 2-004c: tas2562_dev_read: BOOK:PAGE:REG 0:0:36
11-09 12:51:30.580     0     0 I tas2562 2-004c: IRQ reg is: tas2562_set_power_state 0, 307
11-09 12:51:30.590  9321  9321 D FidoCtapHidConnection: Sent packet ALYAAQCrd6Xo0dBZxj4uI+DxkMKBny7QAbeH86KONJLr5LyaaC5z/QoUgYRJ71HFTP1QhE+Ma4jPL7N1gJfRPg==

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 22 (9 by maintainers)

Most upvoted comments

It looks to work in exactly the same way with Firefox 107.1.0 from FFDownloader from F-Droid

@ale5000-git @mar-v-in I can confirm that https://github.com/microg/GmsCore/commit/d01f3719426be7f5237b098d53548eeeb7806119 fixes each and every one of my use-cases. Signing into Tailscale via Chromium via Google with NFC works fine, as does webauthn via my self-hosted Bitwarden. This is really great. I have also tested that it works fine with USB.