Preskoči na sadržaj

Projekat 12 · Identitet i dokumenti

React Native moduli za čipove u pasošima i POS terminale

Na dva projekta protokol za hardver napisao sam nativno i React Nativeu dao jedan API za njega: za NFC čip u njemačkom pasošu i za preko 100 platnih terminala.

AngažmanDva angažmana · njemačka finansijska institucija, 2020 · prekogranične novčane doznake, 2022 · oba preko agencijeObjavljeno

100+ terminala

glavna brojka

1 ograničenje

Ni za čip u pasošu ni za platni terminal nije postojala biblioteka vrijedna upotrebe.

Priča u 5 koraka

Stack

  • Java
  • Kotlin
  • Swift
  • Turbo Modules
  • React Native
  • Android
  • NFC / ICAO 9303

01 · Kontekst

Dvaput sam morao natjerati React Native da komunicira s hardverom za koji nije postojala biblioteka vrijedna upotrebe: s NFC čipom u njemačkom pasošu i s kineskim platnim terminalom na Androidu.

U oba slučaja protokol sam implementirao u nativnom jeziku platforme i JavaScriptu dao uzak sloj, pa su detalji platforme ostali izvan JavaScript koda.

02 · Nije se smjelo mijenjati

React Native radi dobro dok aplikaciji ne zatreba nešto što platforma može, a do čega JavaScript ne dopire.

Čitanje e-pasoša znači implementirati protokol ICAO 9303, koji traži handshake za autentikaciju prije nego što čip vrati bilo kakve podatke.
S kineskim platnim terminalom bilo je još teže, jer je dokumentacija za njegov SDK bila oskudna i napisana na španskom.
U oba slučaja sav je posao bio u sloju između nativnog koda i JavaScripta.

03 · Šta sam uradio

Čitač pasoša (2020). Protokol čipa implementirao sam u Javi za Android, istu logiku prenio u Swift za iOS i izložio je React Nativeu kroz Turbo Module.

Najvažnija odluka bila je da istu logiku prenesem, umjesto da drugu implementaciju pišem od nule.
Pročitane podatke dekodirao je vanjski servis, a moj dio bio je čitanje podataka s čipa.
Platni terminal (2022)Funkcije terminala za kartice, štampač i hardver izložio sam React Nativeu kroz Turbo Module u Javi.

04 · Rezultat

Kriptografski potpisani podaci iz pasoša pročitani s čipa na obje platforme, iz jedne implementacije protokola

Preko 100 platnih terminala zaključanih na jednu aplikaciju i ažuriranih preko mreže
Neuspjela ažuriranja koja nisu ništa koštala: terminal je nastavljao raditi i ponovo pokušavao

05 · Šta bih uradio drugačije

Na modulu za pasoš Java implementaciju sam ručno prenio u Swift i provjerio je testiranjem.

Povezane usluge

Usluge koje se oslanjaju na ovaj projekat.

Povezani tekstovi

Tekstovi nastali iz ovog projekta.

Projekat 12

Radite na sličnom problemu? Odgovaramo u roku od jednog radnog dana.

Prvi poziv traje 30 minuta i ni na šta vas ne obavezuje.

Opišite nam svoj projekatcontact@microtech.consulting