# 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).