Skip to content

Conversation

@alexjba
Copy link
Contributor

@alexjba alexjba commented Dec 10, 2025

What does the PR do

Add https://github.com/status-im/status-keycard-qt lib as a keycard integration option.

This commit adds the status-keycard-qt submodule and updates the build configuration to support it.

In this initial version the status-keycard-qt option can be enabled by using the USE_STATUS_KEYCARD_QT flag.

  • desktop: USE_STATUS_KEYCARD_QT will enable/disable the qt implementation. By default the go version is used
  • ios: USE_STATUS_KEYCARD_QT will enable/disable the qt implementation. On IOS the developer experience is quite bad and I've tried not to make it worse here. When compiling the app with keycard support a paid apple developer account is needed to sign the app. For this reason the USE_STATUS_KEYCARD_QT is disabled by default in the mobile makefile. People with apple accounts can use the DEVELOPMENT_TEAM flag to configure the signing before running the app.
  • android: the qt implementation is enabled by default. Cannot be disabled by USE_STATUS_KEYCARD_QT

Acceptance criteria

  • The app compiles on all platforms
  • The keycard feature is not working properly when using the qt lib (specific fixes in the following PRs)

NOTE: Tests can be done in the final PR #19549

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

✔️ status-desktop/e2e/prspr19545 🔹 ~15 min 🔹 8bb7613 🔹 📦 tests/e2e package

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

✔️ status-desktop/e2e/prspr19545 🔹 ~16 min 🔹 450a51f 🔹 📦 tests/e2e package

@status-im-auto
Copy link
Member

✔️ status-desktop/prs/android/arm64/package/PR-19545#3 🔹 ~11 min 🔹 77b27f38 🔹 📦 android/arm64 package

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

✔️ status-desktop/e2e/prspr19545 🔹 ~32 min 🔹 adadfcd 🔹 📦 tests/e2e package

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

✔️ status-desktop/prs/android/arm64/package/PR-19545#4 🔹 ~11 min 🔹 e6338a7a 🔹 📦 android/arm64 package

@status-im-auto
Copy link
Member

✔️ status-app/prs/linux/x86_64/tests-ui/PR-19545#4 🔹 ~1 hr 6 min 🔹 7e8edd3 🔹 📦 tests/ui package

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

status-im-auto commented Dec 12, 2025

Jenkins Builds

Click to see older builds (73)
Commit #️⃣ Finished (UTC) Duration Platform Result
8bb7613 #1 2025-12-10 08:25:18 ~8 min android/arm64 📄log
8bb7613 #1 2025-12-10 08:27:35 ~10 min ios/aarch64 📄log
8bb7613 #1 2025-12-10 08:27:52 ~10 min macos/aarch64-nwaku 📄log
✔️ 8bb7613 #1 2025-12-10 08:29:00 ~11 min tests/nim 📄log
✔️ 8bb7613 #1 2025-12-10 08:30:49 ~13 min tests/ui 📄log
✔️ 8bb7613 #1 2025-12-10 08:34:49 ~17 min macos/aarch64 🍎dmg
✔️ 8bb7613 #1 2025-12-10 08:37:44 ~20 min linux/x86_64 📦tgz
✔️ 8bb7613 #1 2025-12-10 08:42:01 ~24 min linux/x86_64-nwaku 📦tgz
✔️ 8bb7613 pr19545 2025-12-10 08:53:15 ~15 min tests/e2e 📊rpt
450a51f #2 2025-12-10 09:03:18 ~10 min macos/aarch64-nwaku 📄log
✔️ 450a51f #2 2025-12-10 09:03:54 ~11 min android/arm64 🤖apk 📲
✖️ 450a51f #2 2025-12-10 09:04:46 ~12 min ios/aarch64 📱ipa
✔️ 450a51f #2 2025-12-10 09:04:53 ~12 min tests/nim 📄log
✔️ 450a51f #2 2025-12-10 09:06:57 ~14 min tests/ui 📄log
✔️ 450a51f #2 2025-12-10 09:09:57 ~17 min macos/aarch64 🍎dmg
✔️ 450a51f #2 2025-12-10 09:13:55 ~21 min linux/x86_64 📦tgz
✔️ 450a51f #2 2025-12-10 09:16:59 ~24 min linux/x86_64-nwaku 📦tgz
✔️ 450a51f #2 2025-12-10 09:24:27 ~31 min windows/x86_64 💿exe
✖️ 450a51f PR19545 2025-12-10 09:25:39 ~1 min tests/e2e-windows 📊rpt
✔️ 450a51f pr19545 2025-12-10 09:30:59 ~16 min tests/e2e 📊rpt
adadfcd #3 2025-12-10 16:04:33 ~10 min macos/aarch64-nwaku 📄log
✔️ adadfcd #3 2025-12-10 16:06:03 ~12 min tests/nim 📄log
✖️ adadfcd #3 2025-12-10 16:06:34 ~12 min ios/aarch64 📱ipa
✔️ adadfcd #3 2025-12-10 16:07:46 ~13 min tests/ui 📄log
✔️ adadfcd #3 2025-12-10 16:12:54 ~18 min macos/aarch64 🍎dmg
✔️ adadfcd #3 2025-12-10 16:15:35 ~21 min linux/x86_64 📦tgz
✔️ adadfcd #3 2025-12-10 16:17:31 ~23 min linux/x86_64-nwaku 📦tgz
✔️ adadfcd #3 2025-12-10 16:29:15 ~35 min windows/x86_64 💿exe
✔️ adadfcd pr19545 2025-12-10 16:48:12 ~32 min tests/e2e 📊rpt
✔️ adadfcd PR19545 2025-12-10 16:52:31 ~23 min tests/e2e-windows 📊rpt
✔️ 77b27f38 #3 2025-12-10 16:05:02 ~11 min android/arm64 🤖apk 📲
✔️ e6338a7a #4 2025-12-10 21:27:23 ~11 min android/arm64 🤖apk 📲
91781ca3 #5 2025-12-11 09:25:47 ~56 min android/arm64 📄log
✖️ 7e8edd3 #4 2025-12-11 09:46:56 ~1 hr 3 min tests/nim 📄log
✔️ 7e8edd3 #4 2025-12-11 09:52:38 ~1 hr 6 min tests/ui 📄log
a39695ae #6 2025-12-11 12:51:31 ~7 min android/arm64 📄log
✔️ f23b896 #5 2025-12-11 12:54:26 ~10 min tests/nim 📄log
f23b896 #5 2025-12-11 12:56:15 ~12 min macos/aarch64-nwaku 📄log
f23b896 #5 2025-12-11 12:56:22 ~12 min windows/x86_64 📄log
✔️ f23b896 #5 2025-12-11 12:58:32 ~14 min tests/ui 📄log
✖️ f23b896 #5 2025-12-11 13:00:25 ~16 min ios/aarch64 📱ipa
✖️ f23b896 #5 2025-12-11 13:05:41 ~21 min linux/x86_64 📦tgz
✔️ f23b896 #5 2025-12-11 13:06:59 ~23 min linux/x86_64-nwaku 📦tgz
✔️ f23b896 #5 2025-12-11 13:09:24 ~25 min macos/aarch64 🍎dmg
a9a33001 #7 2025-12-12 05:26:59 ~8 min android/arm64 📄log
3ec03209 #8 2025-12-13 05:27:28 ~8 min android/arm64 📄log
✔️ 3c345d3c #10 2025-12-17 05:31:13 ~12 min android/arm64 🤖apk 📲
✔️ ef0e0a30 #11 2025-12-18 05:31:28 ~12 min android/arm64 🤖apk 📲
✔️ 6d71db4e #12 2025-12-19 05:30:45 ~12 min android/arm64 🤖apk 📲
✔️ 4d9ac882 #13 2025-12-20 05:31:12 ~12 min android/arm64 🤖apk 📲
✔️ 5c3e2de5 #14 2025-12-22 05:29:33 ~10 min android/arm64 🤖apk 📲
✔️ 8a34d73 #15 2025-12-22 08:51:49 ~11 min android/arm64 🤖apk 📲
✔️ 8a34d73 #6 2025-12-22 08:52:51 ~12 min tests/nim 📄log
✔️ 8a34d73 #6 2025-12-22 08:54:38 ~14 min tests/ui 📄log
✖️ 8a34d73 #6 2025-12-22 08:56:02 ~15 min ios/aarch64 📱ipa
8a34d73 #6 2025-12-22 08:57:33 ~17 min macos/aarch64-nwaku 📄log
✔️ 8a34d73 #6 2025-12-22 08:58:41 ~18 min macos/aarch64 🍎dmg
✔️ 8a34d73 #6 2025-12-22 09:02:39 ~22 min linux/x86_64 📦tgz
✔️ 8a34d73 #6 2025-12-22 09:02:53 ~22 min linux/x86_64-nwaku 📦tgz
8a34d73 pr19545 2025-12-22 09:20:44 ~17 min tests/e2e 📄log
✔️ 8a34d73 #6 2025-12-22 09:20:46 ~40 min windows/x86_64 💿exe
✖️ 8a34d73 PR19545 2025-12-22 09:47:59 ~27 min tests/e2e-windows 📊rpt
✔️ 70b80e6 #16 2025-12-22 13:52:19 ~9 min android/arm64 🤖apk 📲
✔️ 70b80e6 #7 2025-12-22 13:54:19 ~11 min tests/nim 📄log
✖️ 70b80e6 #7 2025-12-22 13:57:56 ~15 min ios/aarch64 📱ipa
✔️ 70b80e6 #7 2025-12-22 13:58:27 ~15 min tests/ui 📄log
✔️ 70b80e6 #7 2025-12-22 14:02:48 ~20 min linux/x86_64-nwaku 📦tgz
✔️ 70b80e6 #7 2025-12-22 14:03:11 ~20 min linux/x86_64 📦tgz
✔️ 70b80e6 #7 2025-12-22 14:03:45 ~21 min macos/aarch64 🍎dmg
✔️ 70b80e6 #7 2025-12-22 14:03:45 ~21 min macos/aarch64-nwaku 🍎dmg
✔️ 70b80e6 #7 2025-12-22 14:17:45 ~35 min windows/x86_64 💿exe
70b80e6 pr19545 2025-12-22 14:21:04 ~17 min tests/e2e 📄log
✔️ fd60c6c8 #17 2025-12-22 15:54:43 ~9 min android/arm64 🤖apk 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ ed3c5fe #8 2025-12-22 15:55:13 ~10 min tests/nim 📄log
✔️ ed3c5fe #8 2025-12-22 15:59:26 ~14 min tests/ui 📄log
✖️ ed3c5fe #8 2025-12-22 16:01:37 ~16 min ios/aarch64 📱ipa
✔️ ed3c5fe #8 2025-12-22 16:04:44 ~19 min linux/x86_64 📦tgz
ed3c5fe #8 2025-12-22 16:05:32 ~20 min macos/aarch64-nwaku 📄log
✔️ ed3c5fe #8 2025-12-22 16:06:19 ~21 min linux/x86_64-nwaku 📦tgz
✔️ ed3c5fe #8 2025-12-22 16:06:19 ~21 min macos/aarch64 🍎dmg
✔️ ed3c5fe #8 2025-12-22 16:20:41 ~35 min windows/x86_64 💿exe
✔️ ed3c5fe pr19545 2025-12-22 16:22:52 ~18 min tests/e2e 📊rpt
✖️ ed3c5fe PR19545 2025-12-22 16:46:53 ~26 min tests/e2e-windows 📊rpt
✔️ c8bcc3b3 #18 2025-12-23 05:31:31 ~12 min android/arm64 🤖apk 📲

KEYCARD_LIB := $(STATUSKEYCARD_QT_LIB)
KEYCARD_LIBDIR := $(STATUSKEYCARD_QT_LIBDIR)
KEYCARD_LINKNAME := status-keycard-qt
KEYCARD_DYLIB_NAME := libstatus-keycard-qt.dylib
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That looks like a macOS specific libname

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Linux will look like "libstatus-keycard-qt.so"

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should use a variant of STATUSKEYCARD_QT_LIB?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still a valid question imo :)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ahh, lol! Just pushed the fix to the next PR that sits on top of this. 6352ad8

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alright, up to you and how you want to deal with merging the whole chain :)

This commit adds the status-keycard-qt submodule and updates the build configuration to support it.

In this initial version the `status-keycard-qt` option can be enabled by using the `USE_STATUS_KEYCARD_QT` flag.
- desktop: `USE_STATUS_KEYCARD_QT` will enable/disable the qt implementation. By default the go version is used
- ios: `USE_STATUS_KEYCARD_QT` will enable/disable the qt implementation
- android: the qt implementation is enabled by default
If the app needs the nfc channel at startup qt will enter in a race-condition. The result is that qt cannot enable the reader since the java infrastructure-setup is not ready for qt. The nfc can be enabled afterwards only by placing the app in the background and then back to foreground.

To workaround this issue we'll make sure the foregroundDispatch gets enabled at startup.
GlobalPlatform crypto needs the legacy providers. While it will potentially work OOTB with android since we're using dynamic linking, for IOS we need to compile with `no-module`. This will bundle the providers in the lib.
@alexjba
Copy link
Contributor Author

alexjba commented Dec 22, 2025

Thanks @caybro. Updated the makefile and added some documentation for the makefile flags we use.

KEYCARD_LIB := $(STATUSKEYCARD_QT_LIB)
KEYCARD_LIBDIR := $(STATUSKEYCARD_QT_LIBDIR)
KEYCARD_LINKNAME := status-keycard-qt
KEYCARD_DYLIB_NAME := libstatus-keycard-qt.dylib
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still a valid question imo :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants