Milestone 6. kage 0.4.0 over Jagged: Android-first (explicitly supports API 26, matching minSdk), Kotlin, ships its own primitives through BouncyCastle instead of relying on JCA ChaCha20-Poly1305 which Android only provides from API 28. AgeBackupCrypto sits behind the same BackupCrypto interface as the JCE baseline; age is now first in all() so new encrypted backups are written as binary age v1 files, decryptable anywhere with 'age -d' (decision #7). Old MDS1/JCE backups keep decrypting via format auto-detection. The C2SP/CCTV scrypt vector subset (19 files) is vendored into test resources: both success vectors decrypt with matching payload SHA-256, all 17 failure vectors are rejected. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
335 B
335 B