sig2dot2 is a bash shell script wrapper that uses sig2dot-custom, a Perl script that generates DOT graph visualizations of GPG key signature relationships. It processes GPG key data and creates a graph where nodes represent GPG keys and edges represent signatures between keys.
- Processes GPG's colon-delimited output format
- Generates GraphViz DOT format output
- Supports visualization of key signature relationships
- Handles both regular signatures and self-signatures (optional)
- Provides clear node labeling with key owner information
- Perl
- GPG (GnuPG)
- GraphViz (for rendering the DOT output)
$ sig2dot2 #creates keysigs.png
$ sig2dot2 -s #creates keysigs_self_sig.png
$ sig2dot2 --debug #extra debugging
- Reads GPG's colon-delimited format
- Processes pub, uid, and sig record types
- Extracts key IDs and user information
- Tracks signature relationships between keys
- Creates nodes for each unique key ID
- Labels nodes with user information (name and email)
- Generates edges for signature relationships
- Supports optional inclusion of self-signatures
- Uses hash tables for efficient key-value lookups
- Maintains separate structures for:
- Key IDs
- User names/labels
- Signature relationships
- Temporary signature storage
- The script currently requires a keyring with cross-signatures between different keys to generate meaningful graphs
- Self-signatures are excluded by default to reduce visual clutter
- The current implementation focuses on basic signature relationships and doesn't yet visualize:
- Trust levels
- Key validity periods
- Signature timestamps
- Revocation certificates
During testing, we discovered that a typical personal GPG keyring often contains primarily self-signatures. To generate more interesting visualizations, you should:
- Create multiple GPG keys
- Exchange and sign keys with other users
- Import signed keys back into your keyring
This will create the cross-signature relationships needed for meaningful visualization.
- Add support for trust visualization
- Implement signature timestamp visualization
- Add filtering options for different types of signatures
- Include key validity period information
- Add support for revocation certificate visualization
- Implement more advanced graph styling options
- Add configuration file support for customization
Contributions are welcome! Please feel free to submit pull requests or open issues for:
- Bug reports
- Feature requests
- Documentation improvements
- Code optimizations
This project is licensed under the GPL License - see the LICENSE.md file for details.