GPGSIGS(1)
π GPGSIGS(1) β the group chat version
ok so real talk, this is gpgsigs from the User Contributed Perl Documentation β¨ it's a lil Perl bestie that lives in your terminal and helps you not lose your whole entire mind at a keysigning party π
β¨ NAME β¨
gpgsigs β annotate a list of GnuPG keys with the signatures you've already done, bestie π
π¦ SYNOPSIS π¦
gpgsigs [options] keyid[,keyid[,...]] keytxt [outfile]
that's the whole vibe. options, then your keyid(s), then your keytxt, and optionally where you wanna dump the output π
πΈ DESCRIPTION πΈ
okay so picture this: you're at a keysigning party and everyone's standing around with their little key slips and it's giving chaos π. gpgsigs was literally written to help you get through signing keys at one of those. it reads an input file full of keys in gpg --list-keys format, and it prepends every single line with a tag that tells you whether you've already signed that uid or not. no cap. every line. π«Ά
and the β¨magicβ¨ part: when the file has ALGO Checksum: lines and placeholders written as __ __, it slots the checksum right in there for you. iconic.
ALGO can be set to any of these algorithms, and yes we're listing all of them because we don't gatekeep:
MD5SHA1SHA256RIPEMD160
π OPTIONS π
-rβ runsgpg --recv-keysbefore creating the output. like, go fetch first, then write π-f charsetβ convertskeytxtfrom charset. the default?ISO-8859-1. that's the starting charset bestie, don't @ me π-t charsetβ converts the UIDs to charset. the default is derived fromLC_ALL,LC_CTYPE, andLANGβ and if literally all of those are unset, the default isISO-8859-1. so it's a whole vibe check on your environment first, then it falls back π§--refreshβ refreshes the UID lists per key fromgpg. super useful when UIDs were added or revoked since you generated that input text. it's giving "keep up, bestie" π₯--latexβ generates LaTeX output, and yes it includes photo IDs πΈ. this one implies--refresh, so it refreshes whether you asked or not.
β οΈ heads up bestie: this writes jpg files to the current directory. the current one. right there. no warning, no folder, just vibes and jpgs π
keyidβ use this keyid for annotation. it can be 8 or 16 bytes, or a full fingerprint. multiple keyids? separate them with a comma (,). yes, a comma. exactly that one πkeytxtβ read input fromkeytxt. that's the whole job. it's the input. love that for it πoutfileβ write output tooutfile. and if you don't give one? default isstdout, so it just spills out into your terminal like a little waterfall π§
π ENVIRONMENT π
HOMEβ the default home directory. yes, thatHOME. house of the home πGNUPGBINβ thegpgbinary. default:"gpg". so if you've got gpg living somewhere weird, this is where you tell it π«ΆGNUPGHOMEβ the default working directory forgpg. default:"$HOME/.gnupg". that lil folder. the one. πΈ
π EXAMPLES π
these key signing parties are out here using gpgsigs, and honestly? taste π
π BUGS π
so GnuPG is known to change its output format quite often π like it wakes up and chooses chaos. this version has been tested with gpg 1.4.18 and gpg 2.0.26. YMMV β your mileage may vary, bestie, and it may vary a LOT π
π¦ SEE ALSO π¦
go read those too, they're part of the friend group π
π AUTHORS AND COPYRIGHT π
giving credit where credit is due, as we always do:
- (c) 2004 Uli Martens
<uli@youam.net> - (c) 2004, 2005 Peter Palfrader
<peter@palfrader.org> - (c) 2004, 2005, 2006, 2007 Christoph Berg
<cb@df7cb.de> - (c) 2014, 2015 Guilhem Moulin
<guilhem@debian.org>
β LICENSE β
All rights reserved. periodt. π
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission.
π¨ okay this next part is ALL CAPS ON PURPOSE and it is not a drill, do not skip it:
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
and that's the whole page, bestie π«Ά this iconic lil manpage is running on perl v5.40.1 and it's dated 2026-02-09 β go forth and sign some keys, you absolute main character πβ¨
π¦ where this page comes from
- ubuntu resolute: signing-party 2.12-1build1 Β· BSD-3-Clause
- ubuntu stonking: signing-party 2.12-1build1 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms