126 lines
3.7 KiB
Markdown
126 lines
3.7 KiB
Markdown
# 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).
|
|
|