aAmSemnat
§DSDK-uri AmSemnat

SDK-uri open source pentru CEI.

Trei platforme, un API comun. Citire, verificare, semnare PAdES - pe Android (Maven Central), iOS (CocoaPods + SwiftPM) și Expo / React Native (npm). Apache 2.0, gratuit, fără chei de licență.

$ npm install @amsemnat/expo-sdk
@amsemnat/expo-sdkv ^0.1.1

Selectează platforma · Apache 2.0

§01Capabilități

Citire, verificare, semnare.

Un API comun în trei limbaje. Aceleași tipuri de erori, aceeași normalizare a datelor (toate datele ISO yyyy-mm-dd), aceleași etape de progres.

01 / 03

Citire

Scanare MRZ, handshake PACE-CAN, citire eDATA. Toate CEI emise după 2025. NFC nativ pe Android și iOS, plus modul low-level pentru când vrei să controlezi sesiunea.

02 / 03

Verificare

Passive authentication completă cu CSCA furnizat de tine. Chip Authentication ca semnal (chipAuthenticated: Bool).

03 / 03

Semnare

Semnături PAdES native cu certificatul de pe applet-ul de semnătură al CEI-ului. eIDAS-conform, fără server, fără intermediari, fără chei stocate undeva.

§02Pachete

Trei platforme, o singură versiune.

Versiunile cresc împreună când se schimbă API-ul public. Fix-urile interne rămân independente.

§03Quick start

Cinci linii de cod și ai un RomanianIdentity.

Pune CAN-ul (cele 6 cifre de pe CEI), apropie-l de spatele telefonului, primești obiectul tipizat. Progres emis pe etape, gata pentru UI.

import { AmSemnat } from '@amsemnat/expo-sdk';

const identity = await AmSemnat.read({
  can: '123456',
  onProgress: (progress) => {
    console.log(progress.stage);
  },
});

console.log(identity.firstName);
console.log(identity.documentNumber);
TypeScript · Expo / React Native

Fluxurile de semnare PAdES și verificare passive sunt în README-uri - vezi linkurile de la pachete.

§04Passive authentication

Verifici că documentul vine de la stat, nu de la un dispozitiv fals.

Passive authentication confirmă că semnătura statului (Document Signer Certificate) e validă și se validează până la o autoritate (CSCA) în care ai încredere.

SDK-urile fac toată verificarea - calculează hash-urile pe datele citite din chip, le compară cu Document Security Object semnat de stat, validează lanțul de certificate. Singurul lucru pe care ți-l cerem: trust list-ul. Nu împachetăm certificate CSCA în SDK - nu vrem să decidem noi în cine ai încredere când codul tău rulează în 2030.

Practic: descarci CSCA-ul publicat de DGP / MAI, îl pasezi ca parametru la verifyPassiveOffline(), și SDK-ul îți spune dacă chip-ul e autentic plus dacă lanțul s-a închis. Dacă nu vrei să faci asta on-device - verifier-node (planificat) îți permite să muți validarea pe server.

§05Roadmap

Ce urmează.

  • 01în progres

    Active Authentication

    Complementar la passive auth - semnătură challenge-response cu cheia chip-ului.

  • 02planificat

    verifier-node

    Pachet Node.js pentru verificarea passive a unei semnături produse pe device - pentru servere care nu vor să implementeze passive auth de la zero.

  • 03planificat

    Documentație dedicată

    docs.amsemnat.ro cu API reference structurată, generată din KDoc / DocC. Până atunci: README-urile pe GitHub.

§06Licență

Apache 2.0, cu o stea mică.

Tot codul AmSemnat e Apache 2.0 - folosire comercială, modificare, redistribuție, totul permis. Singura cerință e să păstrezi notițele de copyright și să incluzi licența.

Steaua: SDK-ul Android depinde tranzitiv de JMRTD și SCUBA (LGPL-2.1+) pentru parsing-ul ICAO 9303 și BAC/PACE. Compatibilitatea LGPL cu produsul tău (mai ales pentru redistribuție compilată) merită verificată.

Mai multe informații în secțiunea de licență a fiecărui repo de pe GitHub - vezi linkurile de la pachete.

SDK-urile iOS și Expo nu au dependențe LGPL.