Skip to content

Instantly share code, notes, and snippets.

@jmkim
Created November 7, 2023 14:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jmkim/1f885d4ca0631d45444715435da18082 to your computer and use it in GitHub Desktop.
Save jmkim/1f885d4ca0631d45444715435da18082 to your computer and use it in GitHub Desktop.
Automatic GPG key generation script with fancy output
Key-Type: 1
Key-Length: 4096
Subkey-Type: 1
Subkey-Length: 4096
Name-Real: John Doe
Name-Email: john.doe@example.com
Expire-Date: 0
%no-protection
#!/bin/bash
# Key creation
GPG_REVOKE_LOCATE="$(gpg --batch --gen-key gen-key-script 2>&1)"
# Cut GPG keyID from the key creation output (revoke location msg)
GPG_KEYID="$(echo "$GPG_REVOKE_LOCATE" | cut -d '/' -f 6 | cut -d '.' -f 1)"
# ID Substrings from each 4 characters
GPG_KEYID4_1="${GPG_KEYID:0:4}"
GPG_KEYID4_2="${GPG_KEYID:4:4}"
GPG_KEYID4_3="${GPG_KEYID:8:4}"
GPG_KEYID4_4="${GPG_KEYID:12:4}"
GPG_KEYID4_5="${GPG_KEYID:16:4}"
GPG_KEYID4_6="${GPG_KEYID:20:4}"
GPG_KEYID4_7="${GPG_KEYID:24:4}"
GPG_KEYID4_8="${GPG_KEYID:28:4}"
GPG_KEYID4_9="${GPG_KEYID:32:4}"
GPG_KEYID4_10="${GPG_KEYID:36:4}"
# ID strings
GPG_KEYID_LAST8=" $GPG_KEYID4_9 $GPG_KEYID4_10"
GPG_KEYID_LAST16=" $GPG_KEYID4_7 $GPG_KEYID4_8 $GPG_KEYID4_9 $GPG_KEYID4_10"
GPG_KEYID_ALL="$GPG_KEYID4_1 $GPG_KEYID4_2 $GPG_KEYID4_3 $GPG_KEYID4_4 $GPG_KEYID4_5 $GPG_KEYID4_6 $GPG_KEYID4_7 $GPG_KEYID4_8 $GPG_KEYID4_9 $GPG_KEYID4_10"
# Show ID strings
echo "$GPG_KEYID_LAST8"
echo "$GPG_KEYID_LAST16"
echo "$GPG_KEYID_ALL"
E974 1914
4D4F 78F3 E974 1914
6C9A 2674 50A0 6B26 384C 4924 4D4F 78F3 E974 1914
@jmkim
Copy link
Author

jmkim commented Nov 7, 2023

Infinite loop example in bash:

$ while true; do ./gen-key.sh; echo ""; done

Output looks like:

                                        6D01 AD86
                              C82C E69F 6D01 AD86
EADF 6208 840C 46F6 3843 F414 C82C E69F 6D01 AD86

                                        8746 1B5B
                              1929 5E16 8746 1B5B
09C0 0483 637A 03AA CC06 FEF8 1929 5E16 8746 1B5B

                                        9F97 24DC
                              9077 70C2 9F97 24DC
7375 8A40 AEAD 7A52 6938 4F34 9077 70C2 9F97 24DC

(...snipped)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment