JETRING(7)
๐ JETRING(7) โ jetring commands ๐
okay bestie, sit down, we're learning jetring today and honestly? it's giving โจorganizedโจ
๐ธ NAME ๐ธ
jetring โ maintenance of gpg keyrings using changesets ๐ซถ
๐ฆ OVERVIEW ๐ฆ
so jetring is a whole collection of tools that let you maintain gpg keyrings using changesets. it was developed with the Debian keyring in mind, and it's here to solve one specific problem: a gpg keyring is a binary blob, and binary blobs are lowkey impossible for multiple people to collaboratively edit ๐ญ
with jetring, changesets can be:
- submitted
- reviewed โ so you see exactly what they'll do ๐
- applied
- used to build a keyring
and the best part? the origin of every single change made to the keyring is available for auditing. no cap. plus, gpg signatures can be used to further secure things ๐ฅ
๐ OPERATION ๐
a jetring directory is the "source" that a keyring gets built from. to convert an existing gpg keyring into such a directory, use the jetring-explode(1) command ๐ฅ
every change to the gpg keyring lives in its own separate changeset file inside that directory. changesets can reflect any set of changes to the keyring, and they can also include arbitrary metadata. the jetring-gen(1) command can compare two keyrings and generate a changeset from one to the other โจ
changesets are never removed or modified, only new ones added โ using the jetring-accept(1) command. periodt. ๐
there's an ordering of the changesets, and that ordering is stored in an index file. the index file is only ever appended to, to add new changesets. it doesn't get edited, it doesn't get rewritten, it just grows ๐ฑ
changesets can be fully examined to see what change they make before you apply them. the jetring-review(1) and jetring-diff(1) commands are your girls for that kind of review ๐
and to create a brand new keyring, or to incrementally update an existing one, changesets get applied in order using the jetring-build(1) command ๐
๐ GPG SIGNATURES ๐
the index file can optionally be gpg signed โ and the signature gets stored in index.gpg ๐
if JETRING_SIGN is set to point to a gpg keyring, then jetring commands that operate on the jetring directory will always check that the index file is signed with one of the keys from that keyring. and any command that modifies the index file will update its signature too. so cute, so secure ๐ซถ
๐ CHANGESET FORMAT ๐
a changeset file consists of one or more stanzas, separated by blank lines. the stanzas are in RFC-822-like format ๐ฎ
each stanza must have:
- an action field โ this specifies which action to take on the keyring
- a data field โ typically a multi-line field, containing the data to feed to the action
here are the supported actions, bestie:
importโ the data field should be an ascii-armored gpg key block, which gets fed intogpg --import๐ฅedit-keykeyid โgpg --edit-keyis run on the specified key id. the data field is a script, and each line in it is passed in togpg, the same as ifgpgwere being driven interactively. this can be used to make arbitrary changes to the key โ๏ธdelete-keykeyid โ the given key is deleted. the data is fed intogpg --delete-key, and it should be"y", sincegpgexpects that confirmation for deleting a key ๐
other fields can be added as desired to hold metadata about the change. typical additional fields include date, changed-by, and comment ๐ท๏ธ
changesets can also optionally have attached signatures โ although just so you know, such data is not automatically validated, and it's mostly useful to record who submitted or signed off on a given changeset. iykyk ๐
๐ AUTHOR ๐
Joey Hess, <joey@kitenet.net>. absolute icon, we love them ๐
and that's the whole page, bestie!! this was jetring commands from the JETRING(7) manual โ go forth and maintain those keyrings like the main character you are ๐โญ๐
๐ฆ where this page comes from
- debian bookworm: jetring 0.31 ยท GPL-2.0-or-later
- debian trixie: jetring 0.32 ยท GPL-2.0-or-later
- epel 10: jetring 0.32-2.el10_1 ยท GPL-2.0-or-later
- epel 9: jetring 0.30-2.el9 ยท GPLv2+
- fedora 43: jetring 0.32-3.fc43 ยท GPL-2.0-or-later
- fedora 44: jetring 0.32-4.fc44 ยท GPL-2.0-or-later
- nixpkgs unstable: jetring 0.32
- ubuntu jammy: jetring 0.30 ยท GPL-2.0-or-later
- ubuntu noble: jetring 0.31 ยท GPL-2.0-or-later
- ubuntu questing: jetring 0.32
- ubuntu resolute: jetring 0.32build1 ยท GPL-2.0-or-later
- ubuntu stonking: jetring 0.32build1 ยท GPL-2.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms