From 45c1c349820dc1c041d5bccff9b21e65946b340b Mon Sep 17 00:00:00 2001 From: Greg Pomerantz Date: Wed, 26 Aug 2026 20:47:13 -0400 Subject: [PATCH] Android: bind the IOpenPgpService2 service; declare in manifest. The v1 action (org.openintents.openpgp.IOpenPgpService) resolves in Keychain 6.0.4 but its binder does not implement the IOpenPgpService2 AIDL descriptor that OpenPgpApi calls through, so every call died with SecurityException: Binder invocation to an incorrect interface. Bind the IOpenPgpService2 service first (v1 and the very old api.OpenPgpService actions remain as fallbacks). Android 11+ package visibility also hid Keychain's services entirely: resolveService/bindService found nothing from the app even with MANAGE_EXTERNAL_STORAGE granted, so the build now injects a element (package + intent) into the decoded manifest. --- PgpConnect.jar | Bin 11951 -> 11582 bytes PgpConnect.java | 13 ++++++++----- scripts/build.sh | 15 ++++++++++++++- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/PgpConnect.jar b/PgpConnect.jar index a82fcfeca03d4953f0f395947bccc06c9ed01c15..9325c0595fe6d9c2f671626cc8bd6073f96d192a 100644 GIT binary patch delta 9410 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 CzhdwJ delta 9757 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 KP$*2lzx^N3Y=F}M diff --git a/PgpConnect.java b/PgpConnect.java index 65b3bf0..f93fb98 100644 --- a/PgpConnect.java +++ b/PgpConnect.java @@ -42,12 +42,15 @@ public class PgpConnect extends Fragment { IOpenPgpService2 mService; final int PERMISSIONS_REQUEST = 1; - // Keychain >= 11 (and the standalone "Keychain" 5.x/6.x releases) expose - // the OpenPGP API service under org.openintents.openpgp.IOpenPgpService; - // older releases used org.openintents.openpgp.api.OpenPgpService (the - // action hardcoded in OpenPgpServiceConnection). Try the new action - // first and fall back to the legacy one. + // The OpenPgpApi in openpgp-api.jar calls through the IOpenPgpService2 + // AIDL interface, so we must bind the service that implements that + // descriptor: org.openintents.openpgp.IOpenPgpService2 (Keychain >= 11 / + // standalone 5.x-6.x). The v1 action (IOpenPgpService) does not implement + // the v2 descriptor and dies with a SecurityException; the very old + // org.openintents.openpgp.api.OpenPgpService action (used by + // OpenPgpServiceConnection) no longer exists. Try in that order. static final String[] SERVICE_ACTIONS = { + "org.openintents.openpgp.IOpenPgpService2", "org.openintents.openpgp.IOpenPgpService", "org.openintents.openpgp.api.OpenPgpService", }; diff --git a/scripts/build.sh b/scripts/build.sh index 4684210..9a341b1 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -74,8 +74,21 @@ if perm not in t: t = t.replace(" the app cannot even +# resolve (let alone bind) Keychain's OpenPGP service. +queries = """ + + + + + +""" +if "" not in t: + t = t.replace(" " not in t: + sys.exit("ERROR: failed to inject ") p.write_text(t) -print("manifest: MANAGE_EXTERNAL_STORAGE present") +print("manifest: MANAGE_EXTERNAL_STORAGE + present") PYEOF echo "=== apktool rebuild ==="