bitwarden / bitwarden/android

[PM-31493] Failed to create a new passkey for MyJCB Android app

Open
#6,454 14 comments 1 reaction 0 assignees View on GitHub
app:password-manager bug-passkey
Dominant language
Kotlin
Stars
9.4k
Forks
1.1k
Avg merge
1d 14h
Merged PRs (30d)
67

Description

### Origin

Native Application (non-browser app)

### Web URL or App name

jp.co.jcb.my

### Passkey Action

- [x] Creating new passkey (Registration)
- [ ] Signing in (Authentication)

### Build Information

Version: 2026.10 (21141)
Operating System: 16 (36)
Device: samsung SM-F956Q

### Additional Information

The app is for a credit card user issued by JCB, so it'd be difficult to reproduce this in developers' environment (unless they have a JCB issued credit card)

How to reproduce

1. Run MyJCB app
2. Click "MyPage" link in the bottom bar
3. Scroll down to "Application Config" menu, and click "Login configuration" menu
4. Click "Passkey" button
5. Click "Register" button
6. Bitwarden shows a pop up dialog to create a passkey
7. Fingerprint authentication to start Bitwarden app
8. Create a new login data and save it
9. Bitwarden app is closed, and move back to the MyJCB app
10. Failure dialog is shown

According to the flight log captured in Bitwarden Android app, Digital asset link validation succeeded.

```
Digital asset link validation result: linked = true
```

However, Bitwarden SDK throws an exception `com.bitwarden.fido.Fido2ClientException$InvalidOrigin: Invalid origin: InvalidAssetLinkUrl` immediately after that.

Full stack trace
```
WARNING – p0 – com.bitwarden.sdk.BitwardenException$Fido2Client: v1=com.bitwarden.fido.Fido2ClientException$InvalidOrigin: Invalid origin: InvalidAssetLinkUrl
at com.bitwarden.sdk.FfiConverterTypeBitwardenError.read(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:15)
at com.bitwarden.sdk.FfiConverterTypeBitwardenError.read(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:1)
at com.bitwarden.sdk.FfiConverter$DefaultImpls.liftFromRustBuffer(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:13)
at com.bitwarden.sdk.FfiConverterRustBuffer$DefaultImpls.liftFromRustBuffer(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:6)
at com.bitwarden.sdk.FfiConverterTypeBitwardenError.liftFromRustBuffer(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:1)
at com.bitwarden.sdk.FfiConverterTypeBitwardenError.liftFromRustBuffer(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:2)
at com.bitwarden.sdk.FfiConverterRustBuffer$DefaultImpls.lift(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:6)
at com.bitwarden.sdk.FfiConverterTypeBitwardenError.lift(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:1)
at com.bitwarden.sdk.FfiConverterTypeBitwardenError.lift(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:2)
at com.bitwarden.sdk.BitwardenException$ErrorHandler.lift(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:2)
at com.bitwarden.sdk.BitwardenException$ErrorHandler.lift(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:1)
at com.bitwarden.sdk.Bitwarden_uniffiKt.uniffiCheckCallStatus(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:79)
at com.bitwarden.sdk.Bitwarden_uniffiKt.access$uniffiCheckCallStatus(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:1)
at com.bitwarden.sdk.Bitwarden_uniffiKt.uniffiRustCallAsync(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:186)
at com.bitwarden.sdk.ClientFido2Client.register$suspendImpl(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:122)
at com.bitwarden.sdk.ClientFido2Client.register(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:1)
at androidx.lifecycle.n0.a(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:111)
at androidx.lifecycle.n0.invokeSuspend(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:104)
at androidx.lifecycle.n0.invoke(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:69)
at kv.e.c(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:51)
at kv.c.c(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:59)
at h4.q0.invokeSuspend(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:382)
at xr.a.resumeWith(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:8)
at hv.j0.run(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:115)
at hv.v0.v0(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:24)
at hv.k.o(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:93)
at hv.k.q(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:3)
at jv.i.a(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:7)
at jv.g.I(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:76)
at jv.g.i(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:53)
at jv.g.h(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:97)
at com.bitwarden.ui.platform.base.BaseViewModel.trySendAction(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:3)
at np.v4.invoke(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:145)
at com.bitwarden.ui.platform.components.util.ThrottledClickKt$throttledClick$1$1$1.invokeSuspend(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:41)
at xr.a.resumeWith(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:8)
at hv.j0.run(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:115)
at h4.u0.q0(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:24)
at h4.t0.run(r8-map-id-02fdf5f89272614ec878de7adda5f42926f9802f10b5d99996c77817a23b127e:3)
at android.os.Handler.handleCallback(Handler.java:995)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loopOnce(Looper.java:273)
at android.os.Looper.loop(Looper.java:363)
at android.app.ActivityThread.main(ActivityThread.java:10060)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
```

### Issue Tracking Info

- [x] I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.