diff options
Diffstat (limited to 'gpg-key-generator')
-rwxr-xr-x | gpg-key-generator | 209 |
1 files changed, 0 insertions, 209 deletions
diff --git a/gpg-key-generator b/gpg-key-generator deleted file mode 100755 index 54d29fb..0000000 --- a/gpg-key-generator +++ /dev/null @@ -1,209 +0,0 @@ -#!/bin/bash -############################################################################## -# -# gpg-key-generator -# ------------------- -# Create batch processed keys for dummy users in the CouchDB, for testing. -# see -# www.gnupg.org/documentation/manuals/gnupg-devel/Unattended-GPG-key-generation.html -# for syntax specification. -# -# @author Isis Agora Lovecruft, 0x2cdb8b35 -# @date 11 February 2013 -# @version 0.1.0 -############################################################################## - - -here="${PWD}" -test_dir="${here}/gpg-keys" -batch_file="${test_dir}/gpg-batch-key-script" -default_keypair_password="leap" -default_keypair_email="blackhole@leap.se" - -function usage () -{ - echo -e "\033[40m\033[36m Usage: $0 [-n <N> [-c|-a]] | [-d|-h]\033[0m" - echo -e "\033[40m\033[36m --------------------------------------------------------\033[0m" - echo -e "\033[40m\033[36m Creates a set of GPG dummy keys for unittesting purposes.\033[0m" - echo - echo -e "\033[40m\033[36m Keys will be created in ${test_dir}, \033[0m" - echo -e "\033[40m\033[36m and a GnuPG batch file named ${batch_file##*/} \033[0m" - echo -e "\033[40m\033[36m will also be created in that same directory. \033[0m" - echo -e "\033[40m\033[36m The default password to all keys is: "'"'"${default_keypair_passwd}"'"'" \033[0m" - echo - echo -e "\033[40m\033[36m Options:\033[0m" - echo -e "\033[40m\033[36m -n,--number <N> Number of keys (to create/append) \033[0m" - echo -e "\033[40m\033[36m -c,--create Create a fresh set of N test keys \033[0m" - echo -e "\033[40m\033[36m -a,--append Append another set of N test keys \033[0m" - echo -e "\033[40m\033[36m -d,--delete Delete the test keys and directory\033[0m" - echo -e "\033[40m\033[36m -h,--help This cruft\033[0m" -} - -## @param $1: the filename to write to -## @param $2: the directory to place test keys and batch files in -## @param $3: the number of keypairs to create -function write_gpg_batch_file () -{ - ## if the test directory doesn't exist, create it: - if ! test -w "${1}" ; then - if ! test -d "${2}"; then - mkdir $2 - fi - fi - - # if the batch file is already there, ask to back it up: - if test -r "${1}" ; then - read -ers -N 1 -t 60 \ - -p"Should we keep a backup copy the previous batch file? (Y/n) " bak - case $bak in - n|N ) echo -e "\033[40m\033[31m Overwriting ${1}...\033[0m" ;; - * ) iii=0 - backup="${1}.${iii}-"$(date +"%F")".bak" - while ! test -r "$backup" ; do - echo -e"\033[40m\033[36m Backing up to: \033[0m" - echo -e"\033[40m\033[36m ${backup} \033[0m" - cp $1 $backup - iii=$(( $iii + 1 )) - done ;; - esac - ## then always delete the old otherwise we'll append to that and generate - ## the previous batch's keys too: - ! test -r "${1}" || rm $1 - fi - - ## and whether we backed up or not, make our file if it doesn't exist: - if ! test -w "${1}" ; then - touch $1 && chmod +rw $1 - fi - echo -e "\033[40m\033[36m Writing GPG key generation batch file to: \033[0m" - echo -e "\033[40m\033[36m ${1}... \033[0m" - - total_keypairs=$(printf "%03d" ${3}) - echo "Total keypairs to be generated: ${total_keypairs}" - - this_month=$(date +"%m") # ## this is awkward...isn't there - expire_soon=$(( ${this_month} + 1 )) ## a better way? - next_month=$(printf "%02d" ${expire_soon}) - expiry_date=$(date +"%Y-")${next_month}$(date +"-%d") - echo "Expiry date for keypairs: ${expiry_date}" - - for i in $(seq -f "%03g" 1 $3 ) ; do - now=$(date +"%Y-%m-%d_%H-%M") - echo "Writing generation parameters for keypair #${i}..." - cat >> $1 <<EOF -%echo Generating keypair ${i}/${total_keypairs}... -Key-Type: RSA -Key-Length: 4096 -Subkey-Type: RSA -Subkey-Length: 4096 -Name-Real: Louis Lingg -Name-Email: $default_keypair_email -Name-Comment: Test Key ${i}/${total_keypairs} -Expire-Date: $expiry_date -Passphrase: $default_keypair_password -%pubring generated-${now}-${i}.pub -%secring generated-${now}-${i}.sec -%commit -%echo done. $i keys out of ${total_keypairs} completed. - -EOF - done -} - -## @param $1: the filename to write to -## @param $2: the directory to place test keys and batch files in -function run_gpg_batch_file () -{ - our_gpg=$(which gpg) - - if ! test -r "${batch_file}" ; then - echo -e "\033[40m\033[31m Could not find ${batch_file}. Exiting...\033[0m" - exit 1 - fi - - if test -z "$our_gpg" ; then - echo -e "\033[40m\033[31m Could not find gnupg. Exiting...\033[0m" - exit 1 - fi - - if test -n "${our_gpg}" ; then - cd ${2} && $($our_gpg --batch --gen-key ${1}) - fi -} - -## @param $1: the test dir -function delete_batch_keys () -{ - if test -d "$1" ; then - read -ers -N 1 -t 60 \ - -p'Delete the current GPG test keys directory? (Y/n) ' delkeys - if test -n "$delkeys" ; then - case $delkeys in - n|N ) - echo -e "\033[40m\033[31m Skipping deletion. \033[0m" ;; - *) - echo -e "\033[40m\033[36m Deleting old test keys...\033[0m" - if test -d "$1" ; then - rm -r $1 - else - echo -e "\033[40m\033[31m Cannot delete: $1\033[0m" - fi ;; - esac - fi - fi -} - -function finish () -{ - cat<<FIN -To use the generated GnuPG keys, assuming you do not wish to use -the default keyrings in your home directory, you should do: - - \$ useradd -N -m keytester - \$ cd ${test_dir} - \$ for key in \`find . -name "generated-*"\`; do chown keytester:$USER \$key; done - \$ for key in \`find . -name *.sec\`; do chown keytester:$USER \$key; done - \$ sudo -i -u keytester - \$ cd ${test_dir} - \$ for key in \`find . -name "generated-*"\`; do gpg --import \$key; done - \$ gpg --list-keys - -FIN -} - -## main -if [[ "$#" > 0 ]] ; then - SHORTS="hcadn:" - LONGS="help,create,append,destroy,number:" - ARGS=$(getopt -s bash --options $SHORTS --longoptions $LONGS \ - --name ${0##*/} -- "$@") - - if [ $? != 0 ] ; then - echo -e "\033[40m\033[31m Unable to parse options. \033[0m">&2 - exit 1 - fi - eval set -- "$ARGS" - while test -n "$1" ; do - case $1 in - -n|--number ) export CREATE_N="$2" - if test -z "$CREATE_N"; then CREATE_N="3"; fi; - shift 2 ;; - -c|--create ) delete_batch_keys ${test_dir} - write_gpg_batch_file ${batch_file} ${test_dir} \ - ${CREATE_N} - run_gpg_batch_file ${batch_file} ${test_dir} - shift ;; - -a|--append ) run_gpg_batch_file ${batch_file} ${test_dir} - shift ;; - -d|--destroy ) delete_batch_keys ${test_dir} ; shift ;; - --) shift ; break ;; - * ) usage ; shift ;; - esac - done - finish -else - usage -fi - -unset here test_dir batch_file CREATE_N - |