This product includes the following open-source dependencies. Each component remains subject to its own license.
The main source code of the project is placed under Apache License 2.0.
Versions are those declared in pubspec.yaml for Pass Tech v2.0.2.
| # | Package | Version | License |
|---|---|---|---|
| 1 | flutter_lints |
^6.0.0 | BSD-3-Clause |
| 2 | image |
^4.1.3 | MIT |
Pass Tech uses standard, well-reviewed cryptographic primitives via the cryptography / cryptography_flutter packages (with native FFI acceleration on Android) and the Android Keystore:
- Argon2id (RFC 9106) — m = 19 MiB, t = 2, p = 1, L = 32 — vault and
.ptbakkey derivation (OWASP 2024). - AES-256-GCM (NIST SP 800-38D) — vault and
.ptbakauthenticated encryption (96-bit nonce, 128-bit tag, AAD bound to version + KEK alias + KDF parameters). - HKDF-SHA256 — derives the final encryption key from
pwHash || hwSecret. - Android Keystore AES/GCM/NoPadding 256 — KEK alias
pt_vault_kek_v1(andpt_vault_kek_decoy_v1for plausible deniability), StrongBox-backed when available, TEE software fallback. The KEK never leaves the secure element. - HMAC-SHA256 (
cryptopackage) — used for legacy v3 vault read path during one-shot v3 → v4 migration only. - PBKDF2-HMAC-SHA256 (
cryptopackage) — used for legacy v3 vault read path during one-shot v3 → v4 migration only. Not used for any new encryption. - SHA-1 (5-char prefix) — only for the k-anonymity HIBP query.
No custom cryptography is implemented in this application.
Audited 2026-08-03 against the merged release manifest. Some Flutter plugins
pull in native Android artifacts that never appear in pubspec.yaml.
As of 2026-08-03 the app contains no Google artifacts at all. The previous
entry documented Google ML Kit, Play Services and datatransport, all pulled in
by mobile_scanner for QR code scanning; that dependency was removed. See
THREAT_MODEL.md §5.2.
The only remaining transitive manifest contribution:
| Pulled in by | Contribution | Note |
|---|---|---|
biometric_storage |
re-declares android.permission.USE_FINGERPRINT (no maxSdkVersion) |
Required by androidx.biometric on API 24-27 |
The permission set is pinned in android/expected-permissions.txt and verified
against the built APK on every commit by .github/workflows/promesses.yml.
To re-check after any dependency bump:
grep -E "gms|mlkit|datatransport|firebase" build/app/intermediates/manifest_merge_blame_file/release/processReleaseMainManifest/manifest-merger-blame-release-report.txt- GitHub Releases API —
https://api.github.com/repos/gitubpatrice/pass_tech/releases/latest. Public, anonymous, HTTPS, no cookie. - Have I Been Pwned API —
https://api.pwnedpasswords.com/range/<5-char-SHA1-prefix>. K-anonymity, HTTPS, opt-in.
A copy of the Apache License 2.0 is provided in the LICENSE file. The NOTICE file contains attribution notices for this project.