Files
Brizzi-HCE/HCE_BRIZZI_SMOKE_TEST.md

3.7 KiB

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

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

"$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

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:

adb shell am start -n com.korancrew.brizzi/.MainActivity

3) Verifikasi file konfigurasi AID Service

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:

adb shell cmd package resolve-activity --brief com.korancrew.brizzi/.MainActivity

4) Siapkan logcat khusus HCE sebelum nempel ke reader

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:

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)

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