Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/italia/cie-nis-python-sdk
SDK for reading the NIS code from an Italian Electronic Identity Card (CIE) using Python
https://github.com/italia/cie-nis-python-sdk
cie pyscard smartcard
Last synced: about 4 hours ago
JSON representation
SDK for reading the NIS code from an Italian Electronic Identity Card (CIE) using Python
- Host: GitHub
- URL: https://github.com/italia/cie-nis-python-sdk
- Owner: italia
- License: bsd-3-clause
- Created: 2017-10-04T11:22:08.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2023-07-18T13:20:28.000Z (over 1 year ago)
- Last Synced: 2024-08-03T02:04:03.003Z (3 months ago)
- Topics: cie, pyscard, smartcard
- Language: Python
- Homepage:
- Size: 77.1 KB
- Stars: 30
- Watchers: 11
- Forks: 10
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- .github - cie-nis-python-sdk
README
# Python CIE3 SDK [![Build Status](https://travis-ci.org/italia/cie-nis-python-sdk.svg?branch=master)](https://travis-ci.org/italia/cie-nis-python-sdk) [![Open Source Love](https://badges.frapsoft.com/os/v1/open-source.svg?v=103)](https://github.com/ellerbrock/open-source-badges/)
Libreria leggera e portabile in Python per l'estrazione delle informazioni contenute nella CIE 3.0, con e senza autenticazione EAC.
## Installazione
Per iniziare installa tutte le dipendenze tramite il gestore di pacchetti `pip`, con il comando:
```
pip install -r requirements.txt
```## Esempio
Il file `main.py` contiene un brevissimo esempio che mostra l'estrazione dei dati dalla CIE tramite autenticazione EAC.
## Struttura
L'intera libreria è strutturata attorno alla classe `CIEInterface` che espone molti metodi utili per inviare comandi alla CIE.
Al momento della creazione di un'istanza di `CIEInterface`, il costruttore tenterà di aprire una connessione con un lettore NFC compatibile e si metterà in attesa di rilevare una carta. Il massimo tempo di attesa è attualmente di 3 secondi.
Una volta rilevata la carta il costruttore termina l'esecuzione.
I metodi a disposizione dell'utilizzatore sono i seguenti:
* `CIEInterface.readNIS()`: Legge la sezione `EF.ID_Servizi` della carta, ovvero l'id univoco della carta.
* `CIEInterface.randomNumber()`: Invia un APDU alla carta chiedendo al microprocessore di generare un numero casuale.
* `CIEInterface.mrtdAuth(birthStr, expireStr, pnStr)`: esegue l'autenticazione tramite i dati contenuti nell'MRZ, per poter accedere alle informazioni aggiuntive presenti sulla carta. I parametri sono stringhe, nel caso delle date in formato `YYMMDD`, mentre `pnStr` è semplicemente il numero della CIE.
* `CIEInterface.extractData()`: estrae i dati aggiuntivi disponibili dopo l'unlock della carta. A secodna delle informazioni disponibili vengono estratti:
* `mrz`: Stringa identica all'`MRZ` stampato sulla carta
* `additional_details`: Informazioni aggiuntive sul cittadino, come ad esempio l'indirizzo di residenza
* `photo`: `bytearray` contenete l'immagine in formato JPEG2000. Per comodità l'immagine viene anche salvata su disco nel file `img.jpeg`.## Supporto
La libreria è stata testata con successo su Python `2.7.16` e Python `3.8.2` su sistema `macOS 10.15.7`, ma vista la semplicità è molto probabile che funzioni nativamente anche su altre versioni.