Skip to main content

KYC — Citire date card

EidKit citește datele de identitate, fotografiile și informațiile despre adresă din cipul CEI românesc într-o singură sesiune NFC.

Ce poți citi

DateSursăNecesită
Nume, CNP, dată de naștere, sex, naționalitateApplet EDATAPIN autentificare 4 cifre
Localitate naștere, adresă, număr document, dată expirareApplet EDATAPIN autentificare 4 cifre
Fotografie față (JPEG, ~24 KB)DG2Fără PIN (~7s)
Imagine semnătură olografă (JPEG, ~2.6 KB)DG7Fără PIN (~1.5s)

Autentificarea pasivă rulează întotdeauna — SDK-ul verifică automat datele față de certificatul rădăcină MAI.

Citire de bază (doar identitate)

val result = EidKit.reader(can = canIntrodusDeutilizator)
.withPersonalData(pin = pinIntrodusDeutilizator)
.read(isoDep)

val identity = result.identity
// identity.firstName, identity.lastName
// identity.cnp — cod numeric personal
// identity.dateOfBirth
// identity.sex
// identity.nationality

val personal = result.personalData
// personal.address — adresă completă
// personal.documentNumber
// personal.expiryDate

Citire cu fotografie

Includerea fotografiei față adaugă ~7 secunde la sesiune. Solicită-o doar când este necesar.

val result = EidKit.reader(can = canIntrodusDeutilizator)
.withPersonalData(pin = pinIntrodusDeutilizator)
.withPhoto() // DG2 — ~7s
.withSignatureImage() // DG7 — ~1.5s (opțional)
.read(isoDep)

result.photo?.let { jpegBytes ->
val bitmap = BitmapFactory.decodeByteArray(jpegBytes, 0, jpegBytes.size)
imageView.setImageBitmap(bitmap)
}

Evenimente de progres

Folosește readFlow (Android) sau supraîncărcarea cu onEvent (iOS) pentru a actualiza o interfață wizard în timpul sesiunii.

EidKit.reader(can = canIntrodusDeutilizator)
.withPersonalData(pin = pinIntrodusDeutilizator)
.readFlow(isoDep)
.collect { event ->
when (event) {
is ReadEvent.PaceEstablished -> afiseazaPas("Canal securizat deschis")
is ReadEvent.PassiveAuthDone -> afiseazaPas("Date verificate")
is ReadEvent.EDataRead -> afiseazaPas("Identitate citită")
is ReadEvent.Done -> afiseazaRezultat(event.result)
}
}

Rezultatul autentificării pasive

result.passiveAuth este întotdeauna populat:

StatusSemnificație
ValidDatele sunt autentice — emise de MAI, nemodificate
InvalidVerificarea hash-ului sau a lanțului de certificate a eșuat
SkippedNu a fost posibilă (nu apare în operare normală)

Dacă passiveAuth este Valid și identitatea a fost citită, result.claim este un CeiIdentityClaim semnat pe care backend-ul tău îl poate verifica.