Da quando lavoro con la firma digitale qualificata mi sono spesso scontrato con una realtà fastidiosa: i software di firma per Linux che davvero coprono tutto lo stack ETSI/eIDAS si contano sulle dita di una mano, e nessuno di quelli italiani è veramente open source. C'è chi distribuisce solo binari proprietari, chi richiede un'attivazione, chi smette di aggiornarsi quando il vendor di turno cambia direzione.
Per questo ho scritto Sigillum: un'applicazione desktop Linux in Python + GTK, GPL-3, che firma, verifica, marca temporalmente e cifra documenti secondo gli standard ETSI/eIDAS. Funziona sia da GUI sia da CLI, senza dipendere da nessun servizio o componente proprietario lato server.
Tutto quello che serve per gestire un documento firmato sotto eIDAS:
.p7m) e XAdES (XML) — livelli B e T
(signature + timestamp RFC 3161)..tsr (solo evidenza RFC 3161) e .tsd
(ETSI TS 119 422, contenuto + evidenza in un unico file, utile per la
conservazione a lungo termine)..p7e, compatibile con Aruba Sign / Dike / InfoCamere).libykcs11, Bit4id Digital-DNA Key (CCIAA / InfoCamere / Aruba /
Namirial) via libbit4xpki, smartcard generiche tramite OpenSC. Il token
viene rilevato automaticamente.Sigillum scarica e valida le Trusted List nazionali di tutti gli Stati membri EU/EEA dinamicamente dalla EU LOTL — nessun URL hardcoded. La firma XMLDSig della TSL viene verificata risalendo alla catena ancorata nella LOTL stessa (ETSI TS 119 612), con supporto sia a RSA-PKCS1v15 sia a RSA-PSS/MGF1 — quest'ultimo è quello usato dalla Germania, per dirne uno che spesso rompe i verificatori "italiani-centrici".
Il paese principale viene dedotto dal $LANG di sistema (it_IT → Italia) ma può essere cambiato, e si possono attivare più paesi in parallelo nel trust store di verifica. Per gli italiani: la TSL AgID viene importata automaticamente all'avvio se manca o ha più di 30 giorni.
Disponibile su PyPI (per chi vuole tenerlo in un virtualenv) e come pacchetti nativi .rpm (Fedora/RHEL) e .deb (Debian/Ubuntu/Mint), pubblicati come asset di ogni release GitHub.
# PyPI (consigliato per sviluppatori e utenti pipx)
pip install sigillum
# Fedora / RHEL
sudo dnf install ./sigillum-0.2.1-1.fc44.noarch.rpm
# Debian / Ubuntu / Mint
sudo apt install ./sigillum_0.2.1-1_all.deb
I pacchetti nativi tirano dentro tutte le runtime dependencies (GTK 3, Poppler, python3-endesive, ecc.) e mettono sigillum nel $PATH. Da GUI: lancialo e basta. Da CLI: sigillum --help.
Le CNS italiane sono un mondo a sé. Su molti modelli (Athena, IDEMIA, Bit4id JS) il certificato di firma qualificata è protetto da Secure Messaging con una chiave statica embeddata nel driver del vendor. OpenSC quindi vede solo il certificato di autenticazione CNS, non quello DS che serve davvero per firmare. È un limite tracciato a monte e l'unica soluzione attuale è installare il middleware proprietario del vendor (Aruba Sign, InfoCamere Sign Desktop, Dike), Sigillum lo rileva automaticamente se è installato.
Repo: GitHub - sigillum · Licenza GPL-3.0-or-later · Issue, PR e feedback ben accetti.
Se sei finito qui perché cerchi un'alternativa libera ad Aruba Sign o Dike, provalo e fammi sapere cosa ne pensi.