
firmina: a tool to make legally binding digital signatures using italian smart keys. Works with PADES and CADES signatures
Making legally binding digital signatures on linux is a hassle when using Italian smart keys. They have proprietary drivers and the desktop apps that support it barely work on linux, they are very heavy electron apps supported by private companies and with bad distribution practices (installation scripts that assume you're using ubuntu).
I made it better for me by building a Rust CLI for CAdES/PAdES digital signatures on Linux.
The tool targets InfoCert bit4id smart cards through PKCS#11 (this is the only kind of key I have so I only tested this one) and exposes a small clap-based interface capable of:
- CAdES attached and detached signing
- CAdES parallel or higher level signatures
- PAdES signing
- p7m content extraction
I'm a Rust newbie, so this was a learning project and I feel like I learned a lot. I also ended up with a tool that feels good to use and I feel is a genuinely better alternative than what I've tried before, although simpler.
I feel like this could be a nice example for anyone looking to learn more about digital signatures and rust.
AI disclaimer: No agent ever wrote code in my files. I only used LLM chats for research and asking for suggestions about libraries, patterns, and so on... I typed all my code manually and I'm aware of every line I committed.
Repository: https://github.com/buonhobo/firmina