Initial import of Brizzi HCE project

This commit is contained in:
2026-05-03 10:23:41 +07:00
commit 9994823fb3
693 changed files with 51541 additions and 0 deletions

125
HCE_BRIZZI_SMOKE_TEST.md Normal file
View File

@ -0,0 +1,125 @@
# Uji Cepat Brizzi HCE (1x Smoke Test)
Tujuan:
- memastikan APK bisa dipasang,
- service HCE aktif,
- AID terpasang,
- lalu validasi interaksi dasar saat ditempel ke reader Brizzi.
> Path AID di app ini:
> - `F0010203040506`
> - `5A00000301000000`
> - `5A00000303000000`
## 0) Setup environment
```bash
cd /Users/wirabasalamah/Documents/Codex/brizzi-hce
export ANDROID_SDK_ROOT=/opt/android-sdk
export JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-21.jdk/Contents/Home
```
## 1) Build & install ke device
```bash
"$JAVA_HOME"/bin/java -version >/dev/null 2>&1
./gradlew clean assembleDebug
adb devices -l
adb install -r app/build/outputs/apk/debug/app-debug.apk
```
Kalau install gagal karena versi mismatch:
- pastikan package belum terpasang versi lama: `adb uninstall com.korancrew.brizzi`
- lalu install ulang.
## 2) Pastikan app dan HCE service terpasang
```bash
adb shell pm list packages | rg com.korancrew.brizzi
adb shell dumpsys package com.korancrew.brizzi | rg -n "HostApduService|BrizziHostApduService|permission.BIND_NFC_SERVICE"
```
Jalankan app sekali untuk inisialisasi:
```bash
adb shell am start -n com.korancrew.brizzi/.MainActivity
```
## 3) Verifikasi file konfigurasi AID Service
```bash
adb shell cat /data/data/com.korancrew.brizzi/files/../shared_prefs/app_preferences.xml
```
> Catatan: isi ini tidak selalu menampilkan XML service AID secara langsung karena AID service ada di manifest/resource.
> Verifikasi cepat AID lewat:
```bash
adb shell cmd package resolve-activity --brief com.korancrew.brizzi/.MainActivity
```
## 4) Siapkan logcat khusus HCE sebelum nempel ke reader
```bash
adb logcat -c
adb logcat | rg -n "BrizziHce|HOST_APDU|processCommandApdu|BrizziHostApduService|BrizziSecurityMetrics"
```
Biarkan logging berjalan.
## 5) Tes interaksi manual dengan reader Brizzi
1. Pastikan Android **sudah unlock** (karena `requireDeviceUnlock="true"`).
2. Nyalakan NFC.
3. Nempelkan device ke reader Brizzi.
4. Pantau logcat:
- harus ada response terhadap APDU masuk dari `processCommandApdu`.
- kamu akan melihat event seperti:
- `ISO_SELECT_OK`
- `SELECT_AID1 / SELECT_AID3`
- `AUTH_SUCCESS` (kalau workflow auth dipakai)
- `GET_BALANCE`, `DEBIT_PREPARED`, `COMMIT_OK`, dll.
Jika perlu lihat ringkasan metrik setelah transaksi:
```bash
adb shell am start -n com.korancrew.brizzi/.MainActivity -a com.korancrew.brizzi.ACTION_DUMP_METRICS
```
## 6) Skenario “minimal berhasil” yang harus terlihat
Urutan sehat ideal:
1. Reader kirim select AID (`AID1`/`AID3`) → app balas sukses (SW `9100`).
2. Pada AID3: key request + auth challenge → balasan valid.
3. `GET_BALANCE` → balasan sesuai saldo.
4. Jika ada debit/credit:
- command transaksi dipersiapkan,
- `COMMIT` menyimpan perubahan.
## 7) Skenario gagal yang harus muncul (normal saat kondisi salah)
- Reader kirim debit tanpa auth → `CONDITIONS_NOT_SATISFIED` (`6985`).
- Perintah salah format / malformed → `COMMAND_REJECTED_INVALID_SIZE` di log.
- Akses komando tidak diizinkan tanpa flow yang benar → event `AUTH_DENIED`/`*_DENIED`.
## 8) Reset metrik cepat (untuk pengujian ulang)
```bash
adb shell am start -n com.korancrew.brizzi/.MainActivity -a com.korancrew.brizzi.ACTION_RESET_METRICS
adb shell logcat -c
```
---
## Penilaian akhir (hasil pass/fail)
Pass jika:
- app bisa install dan service aktif,
- logcat menangkap proses APDU saat reader nempel,
- reader melakukan response sesuai flow AID → auth → command,
- tidak terjadi crash setelah beberapa siklus tap.
Fail jika:
- tidak ada satu pun log `BrizziHce` saat transaksi,
- APK tidak menerima command sama sekali saat NFC dipakai,
- response selalu `6FFF`/`6700` secara permanen (kemungkinan AID/routing atau format APDU mismatch).