aboutsummaryrefslogtreecommitdiffstats
path: root/AGENTS.md
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-11-03 09:48:36 +0100
committerDanilo M. <danix@danix.xyz>2026-11-03 09:49:56 +0100
commita3c105af9adb2b45ad52fe47218cc8827741dca9 (patch)
tree9cc96c54598262e217a5227cbb6deaeb57339511 /AGENTS.md
parentcb10a78f9de660be32c16f08404137334541d4c0 (diff)
downloadHardenedPass-a3c105af9adb2b45ad52fe47218cc8827741dca9.tar.gz
HardenedPass-a3c105af9adb2b45ad52fe47218cc8827741dca9.zip
fix(git): get sshj's Ed25519 keys from Bouncy Castle
Recent Conscrypt (Android 14 mainline updates) registers a KeyFactory for Ed25519. With sshj leaving provider selection to the JCA, its Ed25519KeyFactory now gets Conscrypt's key class, whose algorithm name sshj does not map to ssh-ed25519: KeyType.fromKey returns UNKNOWN and every Ed25519 host key fails with "Don't know how to encode key", so clone and sync over SSH break. 0.1.4 is affected since the sshj 0.41.2 update. Register a provider at position 1 that serves only KeyFactory.Ed25519 from Bouncy Castle (kept by the existing R8 rule). Everything else, including signatures with Android Keystore keys, still goes through normal JCA provider selection. Verified on an Android 14 tablet: clone over SSH failed before and works with the fix. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit ad3c63f665e6264ed1db42d6ae2dfc0947e33393)
Diffstat (limited to 'AGENTS.md')
-rw-r--r--AGENTS.md4
1 files changed, 4 insertions, 0 deletions
diff --git a/AGENTS.md b/AGENTS.md
index 91c0857b..f2e32456 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -122,6 +122,10 @@ passed.
- `LaunchActivity` is exported and forwards `FILE_PATH` to `MainActivity` (not exported) only
after `isFileInRepo` checks it canonically resolves inside the store; `MainActivity` opens it as
`EntryRoute`, whose destination checks it again before decrypting.
+- sshj gets Ed25519 keys from Bouncy Castle: `SshjConfig.kt` pins `KeyFactory.Ed25519` to it at
+ provider position 1. Conscrypt from Android 14 mainline updates serves that factory with keys
+ sshj maps to `KeyType.UNKNOWN` ("Don't know how to encode key"), breaking every Ed25519 host
+ and user key. The emulator image does not show it; a 2026-03 Android 14 tablet does.
- AGP 9 applies packaging excludes (`AndroidCommon`, e.g. `**/*.txt`) to unit-test java
resources as well. A module whose tests load such a file must remove the exclude locally
(see `passgen/diceware/build.gradle.kts`).