{"id":42174469,"url":"https://github.com/eniocarboni/p7m","last_synced_at":"2026-01-26T21:42:11.296Z","repository":{"id":80743431,"uuid":"132921649","full_name":"eniocarboni/p7m","owner":"eniocarboni","description":"p7m è uno script per la gestione dei file con firma digitale nel formato CADES","archived":false,"fork":false,"pushed_at":"2023-04-26T10:12:26.000Z","size":118,"stargazers_count":37,"open_issues_count":0,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2023-10-20T19:41:31.964Z","etag":null,"topics":["bash-script","linux","openssl","p7m"],"latest_commit_sha":null,"homepage":"https://quoll.it/firma-digitale-p7m-come-estrarre-il-contenuto/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eniocarboni.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-05-10T15:44:40.000Z","updated_at":"2023-10-20T19:41:32.828Z","dependencies_parsed_at":null,"dependency_job_id":"95a0f732-7cae-428a-834a-5f1931dd4174","html_url":"https://github.com/eniocarboni/p7m","commit_stats":null,"previous_names":[],"tags_count":11,"template":null,"template_full_name":null,"purl":"pkg:github/eniocarboni/p7m","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eniocarboni%2Fp7m","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eniocarboni%2Fp7m/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eniocarboni%2Fp7m/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eniocarboni%2Fp7m/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eniocarboni","download_url":"https://codeload.github.com/eniocarboni/p7m/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eniocarboni%2Fp7m/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28788758,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T21:13:08.818Z","status":"ssl_error","status_checked_at":"2026-01-26T21:13:08.448Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash-script","linux","openssl","p7m"],"created_at":"2026-01-26T21:42:06.869Z","updated_at":"2026-01-26T21:42:11.279Z","avatar_url":"https://github.com/eniocarboni.png","language":"Shell","funding_links":["https://www.paypal.me/EnioCarboni"],"categories":[],"sub_categories":[],"readme":"## P7M\n\n[![GPL License](https://img.shields.io/badge/license-GPL-blue.svg)](https://www.gnu.org/licenses/) [![Release v 0.6.2](https://img.shields.io/badge/release-v.0.6.1-green.svg)](https://github.com/eniocarboni/p7m) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.me/EnioCarboni)\n\n**p7m** è un p7m viewer e uno script per la gestione dei file con [firma digitale nel formato CADES](https://quoll.it/firma-digitale-p7m-come-estrarre-il-contenuto/).\nPermette di:\n* verificare e visualizzare la firma digitale, \n* estrarre l'allegato e visualizzarlo (p7m viewer),\n* scaricare il i certificati dei certificatori (CA dal [CNIPA](http://archivio.cnipa.gov.it/site/it-IT/))\n* ispezionare il contenuto del file (debug per esperti)\n* estrarre l'allegato di una fattura elettronica e visualizzare l'xml con il foglio di stile xsl di fatturapa [**New** (vedi Nota 3 sotto)]\n\nQuesto script funziona sotto linux sia in modalità testuale che grafica (usare l'opzione -g)\n\n## SINOSSI\n```\n  p7m -g [-e]                   # Permettere di selezionare un file p7m per estrarne il contenuto\n  p7m [-x] [-g] [-e] [-h] \u003cfile.p7m\u003e # Per estrarre il contenuto\n  p7m -v [-g] [-e] [-h] \u003cfile.p7m\u003e   # Per verificare il p7m\n  p7m -c [-g] [-h] \u003cfile.p7m\u003e   # Per i certificati\n  p7m -d [-g] [-h] \u003cfile.p7m\u003e   # Per il debug (esperti)\n  p7m -p [-h]                   # Per scaricare la nuova CA\n  p7m -t                        # Per test o per poterla usare come libreria (source p7m -t)\n  p7m -e                        # Verifica anche le firme degli attributi CMS [New] \n```\n\n**dove**\n* -h visualizza questo messaggio;\n* -x estrae il file e non tenta di visualizzarlo;\n* -v per verificare il p7m e la validita dei certificati e delle firme;\n* -c visualizza i certificati di firma sia come testuali che come certificati binari (in formato PEM);\n* -p per forzare lo scaricamento dei nuovi certificati [CA](https://it.wikipedia.org/wiki/Certificate_authority) registrati al [CNIPA] (https://eidas.agid.gov.it/TL/TSL-IT.xml);\n* -d utili per il debug del p7m (per esperti);\n* -g con questo flag tutti i risultati vengono visualizzati su finestre grafiche altrimenti tutto finisce sullo standard output.\n  Come finestre di dialogo vengono prese in considerazione i comandi **kdialog** se presente, altrimenti **zenity** ed infine **xmessage**.\n  L'ordine di ricerca può essere modificato tramite file di configurazione impostando la variabile *DIALOG_ORDER*\n* -e Verifica anche le firme degli attributi CMS che non è più automatica.\n  Adesso per tale verifica bisogna aggiungere '-e' mentre nelle precedenti versioni veniva fatto in automatico.\n  Verifica non più automatica perché genera diverse verifiche fallite dovute forse all'uso di librerie un pochino vecchie.\n\nSe nessuno dei parametri **-v, -c o -d** viene utilizzato **p7m** controlla e verifica la firma ed estrae l'allegato visualizzandolo con il programma associato dal suo mime-type (p7m viewer).\nPer aprire il programma associato ad uno specifico mime type viene utilizzato il comando **xdg-open** se presente, altrimenti **gvfs-open** ed infine **gnome-open**.\nSe nessuno dei precedenti comandi esiste viene visualizzato un messaggio con l'indicazione del percorso esatto del file estratto.\n\n## Configurazione\nSi possono configurare la maggior parte delle opzioni nel file di configurazione in *$HOME/.config/p7m/p7m_config*\n## Scaricamento da github\n```\ncd $HOME \u0026\u0026 mkdir p7m \u0026\u0026 cd p7m\ngit clone https://github.com/eniocarboni/p7m .\n```\nse non abbiamo il progarmma *git* scarichiamo tutto in zip\n```\ncd $HOME \u0026\u0026 mkdir p7m \u0026\u0026 cd p7m\nwget https://github.com/eniocarboni/p7m/archive/master.zip\nunzip master.zip\nmv p7m-master p7m\n```\n## Integrazione con il file manager\nCopiare la directory bin .local e .config nella home\n```\ncd $HOME/p7m \u0026\u0026 cp -a {bin,.local,.config} $HOME\n# la directory p7m non serve più e si può eliminare\n# rmdir -rf p7m\n```\ndove p7m è la directory dei file dell'archivio p7m come scaricato da github.\n\nVerificare che nella variabile **PATH** sia presente $HOME/bin con\n```\necho $PATH | grep --color $HOME/bin\n```\nIn caso negativo aggiungiamolo in **.bash_profile** con il comando:\n  ``` echo 'PATH=$HOME/bin:$PATH' \u003e\u003e$HOME/.bashrc ```\n  A questo punto bisogna riavviare la sessione grafica o se si preferisce si può riavviare il computer.\n\nOra, sia che utilizziamo **KDE** con **Dolphin**, sia **GNOME** con **Nautilux** oppure **LXDE** con **Thunar** dovremmo avere come menù contestuale (tasto destro del mouse) delle voci in più che permettono di fare ogni operazione prevista da **p7m** se il file attivo è un vero .p7m\n\n### Note sull'integrazione\n\n#### Nota 1: xdg-mime\nPotrebbe esser utile in alcuni casi lanciare il comando:\n```xdg-mime default p7m.desktop application/pkcs7-mime```\nin modo tale da rendere **p7m** l'applicativo di default per il mime type application/pkcs7-mime, ovvero per i file .p7m\n\n#### Nota 2: Thunar (sotto Xfce)\nPer il file manager Thunar (sotto Xfce) per avere il menù contestuale **p7m** bisogna aggiungere al file standard delle azioni *.config/Thunar/uca.xml* tutte le ultime 6 **\u0026lt;action\u003e...\u0026lt;/action\u003e** del file *.config/Thunar/uca_p7m.xml*\n\nVanno aggiunte prima della chiusura del tag **\u0026lt;/actions\u003e**\nSe non sono state create in precedenza azioni personalizzate di Thunar si può semplicemente soprapporre il file con i seguenti comandi\n```\n  mkdir -p .config/Thunar\n  mv -f .config/Thunar/uca.xml .config/Thunar/uca.xml.orig\n  mv .config/Thunar/uca_p7m.xml .config/Thunar/uca.xml\n  xdg-mime default p7m.desktop application/pkcs7-mime\n```\n\n#### Nota 3: Fatture elettroniche\n\nSe il p7m corrisponde ad una fattura elettronica il programma **p7m** aprirà l'editor di default per i file xml aggiungendo, nella stessa directory, il file di foglio di style xsl per la visualizzazione come da standard SdI.\n\nSe il default è Firefox o Chrome viene visualizzata la fattura digitale in html e non viene visualizzato l'xml.\n\nPurtoppo (o per fortuna!), con i browser, da un po' di tempo non si può più utilizzare file esterni se si lavora in locale (sul proprio file system) per problemi di sicurezza.\n\nPer Firefox vedi [CVE-2019-11730](https://www.mozilla.org/en-US/security/advisories/mfsa2019-21/#CVE-2019-11730). \n\nSe vuoi puoi provare a tuo rischio ad eludere il controllo andando all'url **about:config** e mettendo (o aggiungendo) **privacy.file_unique_origin** da **true** a **false**.\n\nDa Firefix 95+ **privacy.file_unique_origin** non esiste più e si può utilizzare al suo posto **security.fileuri.strict_origin_policy**.\n\nPer Chrome, invece, non credo ci sia un'opzione di configurazione ma l'unico modo è lanciarlo con l'opzione **--allow-file-access-from-files**.\n\nPer aggiungere tale opzione, ad esempio in **kde**, basta modificare il file **/usr/share/applications/google-chrome.desktop** nella riga **Exec=** oppure, meglio, copiarlo in locale in **$HOME/.local/share/applications/** e poi modificarlo.\n\nNel caso in cui le fatture elettroniche sono state tutte estratte in **xml** in una cartella e si vuole vedere le fatture con il browser nel formato SdI allora basta scaricarsi il file xsl nella stessa cartella:\n```\n  wget -O fatturapa_v1.1.xsl https://gist.githubusercontent.com/eniocarboni/f9098a08abf03eefe632755aacf7f10b/raw/69f003ca80283f374aabaf42b3c4477941fa2bab/fatturapa_v1.1.xsl\n  wget -O fattura_PA_ver1.2.2.xsl https://www.fatturapa.gov.it/export/documenti/fatturapa/v1.2.2/Foglio_di_stile_fattura_PA_ver1.2.2.xsl\n  wget -O fattura_ordinaria_ver1.2.2.xsl https://www.fatturapa.gov.it/export/documenti/fatturapa/v1.2.2/Foglio_di_stile_fattura_ordinaria_ver1.2.2.xsl\n```\nPer funzionare, sia Firefox che Chrome, hanno bisogno del trucco visto poco sopra.\n\nSenza utilizzare il trucco basta aprire un terminale ed andare nella cartella dove sono gli xml (fatture elettroniche), supponiamo in **$HOME/fatture_in_xml**:\n\n```\n  cd $HOME/fatture_in_xml\n  python -m SimpleHTTPServer 8000\n```\n\nSe ottenete un errore del tipo: \n\n```\n  ... No module named SimpleHTTPServer\n  ... python not found (Comando python non trovato)\n```\nallora provare:\n\n```\n  cd $HOME/fatture_in_xml\n  python3 -m http.server 8000\n```\n\nche lancerà un semplice server web sulla porta locale 8000.\nBasterà quindi collegarsi con il browser su http://localhost:8000 e cliccare sul file xml che si vuole visualizzare.\nPer chiudere il server web in python basta premere su terminale **CTRL-C**.\nOra tutti i file xml dovrebbero esser visibili con il formato SdI, tranne quelli che non hanno la riga iniziale\n```\n  \u003c?xml-stylesheet type=\"text/xsl\" href=\"fatturapa_v1.2.1.xsl\"?\u003e\n```\n\n## FAQ\n\n### Ho Firefox installato con **snap** ed è il visualizzatore di *xml* ma estraendo le fatture elettroniche con **p7m** non trova il file\n\n**p7m** quando estrae il contenuto lo metto nella directory temporanea di sistema che in genere è /tmp.\nSnaps usa una directory temporanea isolata per ogni applicazione in modo da non sovrapporsi tra le varie snap e le applicazioni di sistema.\nQuindi per le app sotto **snap** non dovrebbe esser accessibile /tmp, vedi [forum snapcraft](https://forum.snapcraft.io/t/accessing-tmp-from-snaps/22384)\n\nPer superare questo problema basta utilizzare la variabile d'ambiente **TMPDIR** impostandola su una directory accessibile:\n```\nmkdir $HOME/tmp\nexport TMPDIR=$HOME/tmp\n```\ne poi utilizzare il comando **p7m** (sulla stessa shell).\n\nPer rendere definitivo e valido solo per **p7m** basta aggiungere\n```\nexport TMPDIR=$HOME/tmp\n```\nal suo file di configurazione *$HOME/.config/p7m/p7m_config*\n\n## COPYRIGHT\n\n      Copyright (c) 2018 Enio Carboni - Italy\n\n      This file is part of p7m.\n\n      p7m is free software: you can redistribute it and/or modify it under the \n      terms of the GNU General Public License as published by the Free Software \n      Foundation, either version 3 of the License, or (at your option) any later\n      version.\n\n      p7m is distributed in the hope that it will be useful, but WITHOUT ANY \n      WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS \n      FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more \n      details.\n\n      You should have received a copy of the GNU General Public License along \n      with p7m.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feniocarboni%2Fp7m","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feniocarboni%2Fp7m","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feniocarboni%2Fp7m/lists"}