From da860abaa6bb35889ada25f2810b7d17e674302d Mon Sep 17 00:00:00 2001 From: NicoHood Date: Tue, 23 Jan 2018 12:22:14 +0100 Subject: [PATCH 01/19] Initital release of GPGit 1.3 bash script remake --- gpgit.sh | 585 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 585 insertions(+) create mode 100755 gpgit.sh diff --git a/gpgit.sh b/gpgit.sh new file mode 100755 index 0000000..84ee3ac --- /dev/null +++ b/gpgit.sh @@ -0,0 +1,585 @@ +#!/bin/bash +VERSION="1.3.0" + +# Avoid any encoding problems +export LANG=C + +function setcolors() +{ + # Prefer terminal safe colored and bold text when tput is supported + unset ALL_OFF BOLD BLUE GREEN RED YELLOW MAGENTA CYAN + if tput setaf 0 &>/dev/null; then + ALL_OFF="$(tput sgr0)" + BOLD="$(tput bold)" + BLUE="${BOLD}$(tput setaf 4)" + GREEN="${BOLD}$(tput setaf 2)" + RED="${BOLD}$(tput setaf 1)" + YELLOW="${BOLD}$(tput setaf 3)" + MAGENTA="${BOLD}$(tput setaf 5)" + CYAN="${BOLD}$(tput setaf 6)" + else + ALL_OFF="\\e[1;0m" + BOLD="\\e[1;1m" + BLUE="${BOLD}\\e[1;34m" + GREEN="${BOLD}\\e[1;32m" + RED="${BOLD}\\e[1;31m" + YELLOW="${BOLD}\\e[1;33m" + MAGENTA="${BOLD}\\e[1;35m" + CYAN="${BOLD}\\e[1;36m" + fi +} + +# Check if messages are to be printed using color +if [[ -t 2 ]]; then + setcolors +fi + +# Help page +USAGE_SHORT="Usage: gpgit [-h] [-m ] [-C ] [-o ] [-p] [-n] [-i] " +read -r -d '' USAGE << EOF +Usage: gpgit [options] + +GPGit ${VERSION} https://github.com/NicoHood/gpgit +A shell script that automates the process of signing Git sources via GPG. + +${BOLD}Mandatory arguments:${ALL_OFF} + The name of the tag to create. + +${BOLD}Optional arguments:${ALL_OFF} + -h, --help Show this help message and exit. + -m, --message Use the given as the commit message. + If multiple -m options are given, their values are + concatenated as separate paragraphs. + -C, --directory Run as if GPGit was started in instead of the + current working directory. + -S, --signingkey Use the given GPG key. + -o, --output Safe all release assets to the specified . + -p, --pre-release Flag as Github pre-release. + -n, --no-github Disable Github API functionallity. + -i, --interactive Run in interactive mode, step-by-step. + +${BOLD}Examples:${ALL_OFF} + gpgit 1.0.0 + gpgit -p -m "First alpha release." 0.1.0 + gpgit -C git/myproject/ -o /tmp/gpgit -n -m "Internal test release." 0.0.1 + +${BOLD}Configuration options:${ALL_OFF} + gpgit.signingkey , user.signingkey + gpgit.output + gpgit.token + gpgit.compression + gpgit.hash + gpgit.keyserver + gpgit.githubrepo + gpgit.project + + Note: All 'gpgit.option' configuration options are also available as temporary + command line parameter '--option' or captical environment variable 'OPTION'. + +${BOLD}Examples:${ALL_OFF} + git config --global gpgit.output ~/gpgit + git config --local user.signingkey 97312D5EB9D7AE7D0BD4307351DAE9B7C1AE9161 + git config --local compression gzip +EOF + +function interactive() +{ + if [[ "${INTERACTIVE}" == "true" ]]; then + [[ "${#}" -gt 0 ]] && echo "${*}" >&2 + read -rp "Continue? [Y/n]" yesno + if [[ "${yesno}" != [Yy]"es" && "${yesno}" != [Yy] && -n "${yesno}" ]]; then + INTERACTIVE="false" + warning "Aborted by user." + exit 0 + fi + fi +} + +function msg() +{ + echo "${GREEN}==>${ALL_OFF}${BOLD} ${1}${ALL_OFF}" >&2 +} + +function msg2() +{ + echo "${BLUE} ->${ALL_OFF}${BOLD} ${1}${ALL_OFF}" >&2 +} + +function plain() +{ + echo " ${1}" >&2 +} + +function warning() +{ + echo "${YELLOW}==> WARNING:${ALL_OFF}${BOLD} ${1}${ALL_OFF}" >&2 + interactive +} + +function error() +{ + echo "${RED}==> ERROR:${ALL_OFF}${BOLD} ${1}${ALL_OFF}" >&2 +} + +function die() +{ + error "${1}" + exit 1 +} + +function kill_exit +{ + echo "" + INTERACTIVE="false" + warning "Exited due to user intervention." + exit 1 +} + +function command_not_found_handle +{ + die "${BASH_SOURCE[0]}: line ${BASH_LINENO[0]}: ${1}: command not found." +} + +function check_dependency() +{ + local RET=0 + for dependency in "${@}" + do + if ! command -v "${dependency}" &> /dev/null; then + error "Required dependency '${dependency}' not found." + RET=1 + fi + done + return "${RET}" +} + +# Trap errors +set -o errexit -o errtrace -u +trap 'die "Error on or near line ${LINENO}. Please report this issue: https://github.com/NicoHood/gpgit/issues"' ERR +trap kill_exit SIGTERM SIGINT SIGHUP + +# Parse input params an ovrwrite possible default or config loaded options +GETOPT_ARGS=$(getopt -o "hm:C:k:u:s:S:o:O:pndi" \ + -l "help,message:,directory:,signingkey:,local-user:,gpg-sign:,output:,pre-release,no-github,interactive,token:,compression:,hash:,keyserver:,githubrepo:,project:,debug,color:"\ + -n "gpgit" -- "${@}") || die "${USAGE_SHORT}" +eval set -- "$GETOPT_ARGS" + +# Handle all params +while true ; do + case "$1" in + # Command line options + -h|--help) + echo "${USAGE}" >&2 + exit 0 + ;; + -m|--message) + MESSAGE+="$2\\n" + shift + ;; + -C|--directory) + cd "${2}" + shift + ;; + -o|-O|--output) + OUTPUT="${2}" + shift + ;; + -k|-u|-s|-S|--signingkey|--local-user|--gpg-sign) + SIGNINGKEY="${2}" + shift + ;; + -p|--prerelease) + PRERELEASE="true" + ;; + -n|--no-github) + GITHUB="" + ;; + -i|--interactive) + INTERACTIVE="true" + ;; + # Additional config options + --token) + TOKEN="${2}" + shift + ;; + --compression) + COMPRESSION="${2}" + shift + ;; + --hash) + HASH="${HASH}" + shift + ;; + --keyserver) + KEYSERVER="${2}" + shift + ;; + --githubrepo) + GITHUBREPO="${2}" + shift + ;; + --project) + PROJECT="${2}" + shift + ;; + # Internal + --color) + # En/disable colors + if [[ "${2}" == "never" ]]; then + ALL_OFF="" BOLD="" BLUE="" GREEN="" RED="" YELLOW="" MAGENTA="" CYAN="" + elif [[ "${2}" == "force" ]]; then + setcolors + fi + shift + ;; + -d|--debug) + set -x + ;; + --) + # No more options left. + shift + break + ;; + *) + die "Internal error." + ;; + esac + shift +done +readonly ALL_OFF BOLD BLUE GREEN RED YELLOW MAGENTA CYAN + +# Get tag parameter +if [[ "$#" -lt 1 ]]; then + die "${USAGE_SHORT}" +fi +TAG="${1}" +shift + +# Check if run inside Git directory +check_dependency git sed grep awk || die "Please check your \$PATH variable or install the missing dependency." +if [[ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" != "true" ]]; then + die "Not a Git repository: $(pwd)" +fi + +# Initialize variable config/defaults +INTERACTIVE=${INTERACTIVE:-"$(git config gpgit.interactive || true)"} +MESSAGE="${MESSAGE:-"Release ${TAG}"$'\n\nCreated with GPGit\nhttps://github.com/NicoHood/gpgit'}" +KEYSERVER="${KEYSERVER:-"$(git config gpgit.keyserver || true)"}" +KEYSERVER="${KEYSERVER:-"hkps://pgp.mit.edu"}" +COMPRESSION="${COMPRESSION:-"$(git config gpgit.compression || true)"}" +COMPRESSION="${COMPRESSION:-xz}" +HASH="${HASH:-"$(git config gpgit.hash || true)"}" +HASH="${HASH:-sha512}" +GPG_BIN="${GPG_BIN:-"$(git config gpg.program || true)"}" +GPG_BIN="${GPG_BIN:-gpg2}" +OUTPUT="${OUTPUT:-"$(git config gpgit.output || true)"}" +OUTPUT="${OUTPUT:-"./gpgit"}" +PROJECT="${PROJECT:-"$(git config gpgit.project || true)"}" +PROJECT="${PROJECT:-"$(git config --local remote.origin.url | sed -n 's#.*/\([^.]*\)\.git#\1#p')"}" +FILENAME="${FILENAME:-"${PROJECT}-${TAG}"}" +SIGNINGKEY="${SIGNINGKEY:-"$(git config gpgit.signingkey || true)"}" +SIGNINGKEY="${SIGNINGKEY:-"$(git config user.signingkey || true)"}" +TOKEN="${TOKEN:-"$(git config gpgit.token || true)"}" +GPG_USER="${GPG_USER:-"$(git config user.name || true)"}" +GPG_USER="${GPG_USER:-"${USER}"}" +GPG_EMAIL="${GPG_EMAIL:-"$(git config user.email || true)"}" +FILE="${OUTPUT}/${FILENAME}.tar.${COMPRESSION}" +GITHUBREPO="${GITHUBREPO:-"$(git config gpgit.githubrepo || true)"}" +GITHUBREPO="${GITHUBREPO:-"$(git config --local remote.origin.url | sed -e 's/.*github.com[:/]//' | sed -e 's/.git$//')"}" +GITHUB="${GITHUB:-"$(git config --local remote.origin.url | grep -i 'github.com')"}" +PRERELEASE="${PRERELEASE:-"false"}" +BRANCH="$(git rev-parse --abbrev-ref HEAD)" +NEW_SIGNINGKEY="false" + +# Check if dependencies are available +# Dependencies: bash, gnupg2, git, tar, xz, coreutils, gawk, grep, sed +# Optional dependencies: gzip, bzip2, lzip, file, jq, curl +check_dependency "${GPG_BIN}" "${COMPRESSION}" "${HASH}sum" \ + || die "Please check your \$PATH variable or install the missing dependencies." + +# Print initial welcome message with version information +echo "${BOLD}GPGit ${VERSION} https://github.com/NicoHood/gpgit${ALL_OFF}" >&2 +echo "" >&2 + +if [[ -z "${INTERACTIVE}" ]]; then + INTERACTIVE=true + interactive "Running GPGit for the first time. This will guide you through all steps of secure source code signing once. If you wish to run interactively again pass the -i option to GPGit. For more options see --help." + git config --global gpgit.interactive "false" +fi + +#################################################################################################### +msg "1. Generate a new GPG key" +#################################################################################################### + +msg2 "1.1 Strong, unique, secret passphrase" +plain "See: https://github.com/NicoHood/gpgit#11-strong-unique-secret-passphrase" + +# Create new GPG key if required +msg2 "1.2 Key generation" +if [[ -z "${SIGNINGKEY}" ]]; then + # Ask user about used name and email + plain "No GPG key registered with Git. Generating a new GPG key." + if [[ -n "$(${GPG_BIN} --list-secret-keys)" ]]; then + warning "Detected existing GPG keys." + plain "You can abort the script and set an existing key with:" + plain "${GPG_BIN} --list-secret-keys" + plain "git config --global user.signingkey " + fi + read -rp "Enter username: " -e -i "${GPG_USER}" GPG_USER + [[ -z "${GPG_USER}" ]] && die "Empty username specified" + read -rp "Enter email: " -e -i "${GPG_EMAIL}" GPG_EMAIL + [[ -z "${GPG_EMAIL}" ]] && die "Empty email specified" + echo "" + + # Generate strongest possible GPG key (ECC or RSA4096, depending on gnupg version) + interactive "Will generate the new GPG key with the selected parameters now." + ${GPG_BIN} --quick-generate-key "${GPG_USER} <${GPG_EMAIL}>" future-default default 1y \ + &> /dev/null || die "GPG key generation aborted." + SIGNINGKEY=$(${GPG_BIN} --with-colons --list-secret-keys | grep "${GPG_USER} <${GPG_EMAIL}>" -B 2 | awk -F: '$1 == "fpr" {print $10;}') + NEW_SIGNINGKEY="true" + plain "Your new GPG fingerprint is: '${SIGNINGKEY}'" +else + # Check if the full fingerprint is used + if [[ ${#SIGNINGKEY} -ne 40 ]]; then + die "Invalid GPG key fingerprint: '${SIGNINGKEY}'" + fi + + # Print email and key information + SIGNINGKEY_OUTPUT="$(${GPG_BIN} --with-colons -k "${SIGNINGKEY}" 2>/dev/null)" || die "No public GPG key for fingerprint '${SIGNINGKEY}' found." + GPG_USER_EMAIL="$(echo "${SIGNINGKEY_OUTPUT}" | awk -F: '$1 == "uid" {print $10; exit}')" + plain "Using existing GPG key: '${GPG_USER_EMAIL}'" + plain "Fingerprint: '${SIGNINGKEY}'" + interactive +fi + + +#################################################################################################### +msg "2. Publish your key" +#################################################################################################### + +if [[ "${NEW_SIGNINGKEY}" == "true" ]]; then + msg2 "2.1 Send GPG key to a key server" + plain "Registering new GPG key with Git and uploading it to keyserver '${KEYSERVER}'." + interactive + ${GPG_BIN} --keyserver "${KEYSERVER}" --send-keys "${SIGNINGKEY}" &> /dev/null +else + msg2 "2.1 Send GPG key to a key server" + plain "Make sure your key is available on a keyserver:" + plain "${GPG_BIN} --search-keys ${SIGNINGKEY}" + plain "${GPG_BIN} --keyserver ${KEYSERVER} --send-keys ${SIGNINGKEY}" + interactive +fi + +msg2 "2.2 Publish full fingerprint" +plain "Please publish the full GPG fingerprint on the project page." +interactive + +msg2 "2.3 Associate GPG key with Github" +plain "Paste the following command output to your Github profile GPG key settings:" +plain "https://github.com/settings/keys" +plain "${GPG_BIN} --armor --export ${SIGNINGKEY}" +if [[ "${NEW_SIGNINGKEY}" == "true" ]]; then + ${GPG_BIN} --armor --export "${SIGNINGKEY}" +fi +interactive + + +#################################################################################################### +msg "3. Use Git with GPG" +#################################################################################################### + +# Set new signingkey +msg2 "3.1 Configure Git GPG key" +if [[ "${NEW_SIGNINGKEY}" == "true" ]]; then + plain "Configuring Git with the new GPG key." + interactive + git config --global user.signingkey "${SIGNINGKEY}" +else + plain "Git already configured with your GPG key." + interactive +fi + +# Enable commit signing +msg2 "3.2 Enable commit signing" +if [[ "$(git config --global commit.gpgsign || true)" != "true" ]]; then + # Enable global commit signing. Can be still disabled locally. + plain "Enabling global commit signing." + git config --global commit.gpgsign true +else + plain "Commit signing already enabled." +fi + +# Check if tag exists +msg2 "3.3 Create signed Git tag" +plain "Fetching Git tags from origin." +interactive +git fetch origin --tags &> /dev/null +if [[ -z "$(git tag -l "${TAG}")" ]] ; then + plain "Creating signed tag '${TAG}' and pushing it to the remote Git." + interactive + git tag -s "${TAG}" -m "${MESSAGE}" -u "${SIGNINGKEY}" + git push origin "${TAG}" &> /dev/null +else + warning "Tag '${TAG}' already exists." +fi + + +#################################################################################################### +msg "4. Create a signed release archive" +#################################################################################################### + +# Create output directory +interactive "Creating output directory if not existing." +mkdir -p "${OUTPUT}" + +# Create new archive +msg2 "4.1 Create compressed archive" +if [[ ! -f "${FILE}" ]]; then + plain "Creating new release archive: '${FILE}'" + interactive + git archive --format=tar --prefix "${FILENAME}/" "${TAG}" | "${COMPRESSION}" --best > "${FILE}" +else + warning "Found existing archive '${FILE}'." +fi + +# Sign archive +msg2 "4.2 Sign the archive" +if [[ ! -f "${FILE}.asc" ]]; then + plain "Creating GPG signature: '${FILE}.asc'" + interactive + ${GPG_BIN} --digest-algo SHA512 -u "${SIGNINGKEY}" --output "${FILE}.asc" --armor --detach-sign "${FILE}" +else + warning "Found existing signature '${FILE}.asc'." +fi + +# Creating hash +msg2 "4.3 Create the message digest" +if [[ ! -f "${FILE}.${HASH}" ]]; then + plain "Creating message digest: '${FILE}.${HASH}'" + interactive + "${HASH}sum" "${FILE}" > "${FILE}.${HASH}" +else + warning "Found existing message digest '${FILE}.${HASH}'." +fi + + +#################################################################################################### +msg "5. Upload the release" +#################################################################################################### + +msg2 "5.1 Configure HTTPS download server" +if [[ -z "${GITHUB}" ]]; then + plain "Please configure HTTPS for your download server." +else + plain "Github uses well configured https." +fi +interactive + +function get_token() +{ + if [[ -z "${TOKEN}" ]]; then + plain "Please enter your Github token or generate a new one (permission: 'public_repo'):" + plain "https://github.com/settings/tokens" + plain "Tip: Configure your Github token permanant with:" + plain "git config --global gpgit.token " + read -rs TOKEN + fi +} + +function github_upload_asset() +{ + local filename="${1}" + local file="${2}" + local message + local mimetype + mimetype="$(file -b --mime-type "${filename}")" + + # Upload Github asset + get_token + plain "Uploading release asset '${filename}'" + interactive + if ! RESULT=$(curl --proto-redir =https -s \ + "https://uploads.github.com/repos/${GITHUBREPO}/releases/${GITHUB_RELEASE_ID}/assets?name=${filename}" \ + -H "Content-Type: ${mimetype}" \ + -H "Accept: application/vnd.github.v3+json" \ + -H "Authorization: token ${TOKEN}" \ + --data-binary @"${file}"); then + die "Uploading file ${filename} to Github failed." + fi + + # Abort in API error + message="$(echo "${RESULT}" | jq -r .message)" + if [[ "${message}" != "null" ]]; then + die "Github API message: ${message}" + fi +} + +# Upload to Github +msg2 "5.2 Upload to Github" +if [[ -z "${GITHUB}" ]]; then + plain "Please upload the release files manually" + interactive +else + if check_dependency jq file curl; then + # Parse existing Github release + if ! GITHUB_RELEASE="$(curl --proto-redir =https -s \ + "https://api.github.com/repos/${GITHUBREPO}/releases/tags/${TAG}")"; then + die "Accessing Github failed." + fi + + # Check for existing release and assets + GITHUB_RELEASE_ID="$(echo "${GITHUB_RELEASE}" | jq -r .id)" + GITHUB_ASSETS="$(echo "${GITHUB_RELEASE}" | jq -r .assets[]?.name)" + + # Create new Github release + if [[ "${GITHUB_RELEASE_ID}" == "null" ]]; then + plain "Creating new Github release '${TAG}'." + interactive + API_JSON=$(printf '{"tag_name": "%s","target_commitish": "%s","name": "%s","body": "%s","draft": false,"prerelease": %s}' \ + "${TAG}" "${BRANCH}" "${TAG}" "${MESSAGE//$'\n'/'\n'}" "${PRERELEASE}") + get_token + if ! GITHUB_RELEASE=$(curl --proto-redir =https -s --data "${API_JSON}" \ + "https://api.github.com/repos/${GITHUBREPO}/releases" \ + -H "Accept: application/vnd.github.v3+json" \ + -H "Authorization: token ${TOKEN}" ); then + die "Uploading release to Github failed" + fi + + # Abort on API error + message="$(echo "${GITHUB_RELEASE}" | jq -r .message)" + if [[ "${message}" != "null" ]]; then + die "Github API message: ${message}" + fi + + # Safe new ID + GITHUB_RELEASE_ID="$(echo "${GITHUB_RELEASE}" | jq -r .id)" + else + warning "Found existing release on Github." + fi + + # Upload archive + if grep -q "^${FILENAME}.tar.${COMPRESSION}$" <(echo "${GITHUB_ASSETS}"); then + warning "Found existing archive on Github." + else + github_upload_asset "${FILENAME}.tar.${COMPRESSION}" "${FILE}" + fi + + # Upload signature + if grep -q "^${FILENAME}.tar.${COMPRESSION}.asc$" <(echo "${GITHUB_ASSETS}"); then + warning "Found existing signature on Github." + else + github_upload_asset "${FILENAME}.tar.${COMPRESSION}.asc" "${FILE}.asc" + fi + + # Upload message digest + if grep -q "^${FILENAME}.tar.${COMPRESSION}.${HASH}$" <(echo "${GITHUB_ASSETS}"); then + warning "Found existing message digest on Github." + else + github_upload_asset "${FILENAME}.tar.${COMPRESSION}.${HASH}" "${FILE}.${HASH}" + fi + else + warning "Please upload the release files manually to Github." + fi +fi + +msg "Finished without errors." From 63ff67fb0a073c6f8d13160d421fe79e26358d4d Mon Sep 17 00:00:00 2001 From: NicoHood Date: Tue, 23 Jan 2018 12:37:58 +0100 Subject: [PATCH 02/19] Updated makefile for bash script --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d4d2ae3..80efb8a 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ all: @echo "Run 'make uninstall' for uninstallation." install: - install -Dm755 gpgit.py $(DESTDIR)$(PREFIX)/bin/gpgit + install -Dm755 gpgit.sh $(DESTDIR)$(PREFIX)/bin/gpgit install -Dm644 Readme.md $(DESTDIR)$(PREFIX)/share/doc/gpgit/Readme.md uninstall: From 652e6ed856ada19336020c8c910b396fc212a713 Mon Sep 17 00:00:00 2001 From: NicoHood Date: Tue, 23 Jan 2018 12:41:42 +0100 Subject: [PATCH 03/19] Updated readme --- Readme.md | 228 +++++++++++++++++++++++++----------------------------- 1 file changed, 105 insertions(+), 123 deletions(-) diff --git a/Readme.md b/Readme.md index 5e575f1..b27edaa 100644 --- a/Readme.md +++ b/Readme.md @@ -6,16 +6,16 @@ As we all know, today more than ever before, it is crucial to be able to trust our computing environments. One of the main difficulties that package maintainers of GNU/Linux distributions face, is the difficulty to verify the authenticity and the integrity of the source code. With GPG signatures it is possible for packagers to verify source code releases quickly and easily. #### Overview of the required tasks: -* Create and/or use a **[4096-bit RSA keypair][1]** for the file signing +* Create and/or use a **[4096-bit RSA/Ed25519 ECC keypair][1]** for the file signing * Use a **[strong, unique, secret passphrase][2]** for the key * Upload the public key to a **[key server][3]** and **[publish the full fingerprint][4]** * **[Sign][5]** every new Git **[commit][6]** and **[tag][7]** -* Create **[signed][8], [compressed][9]** (xz --best) release **archives** -* Upload a **[strong message digest][10]** (sha512) of the archive +* Create **[signed][8], [compressed release archives][9]** +* Upload a **[strong message digest][10]** of the archive * Configure **[HTTPS][11]** for your download server ### GPGit -[GPGit][12] is meant to bring GPG to the masses. It is not only a Python script that automates the process of [creating new signed Git releases with GPG][13], but also a [quick-start-guide][14] for learning how to use GPG. GPGit integrates perfectly with the [Github Release API][15] for uploading. +[GPGit][12] is meant to bring GPG to the masses. It is not only a shell script that automates the process of [creating new signed Git releases with GPG][13], but also includes a [quick-start-guide][14] for learning how to use GPG. GPGit integrates perfectly with the [Github Release API][15] for uploading. The security status of GNU/Linux projects will be tracked in the [Linux Security Database][16]. If you have any further questions, do not hesitate to [contact me][17] personally. Thanks for your help in making GNU/Linux projects more secure by using GPG signatures. @@ -37,7 +37,7 @@ The security status of GNU/Linux projects will be tracked in the [Linux Security [16]: https://github.com/NicoHood/LSD [17]: http://contact.nicohood.de -## Index +# Index * [Introduction](#introduction) * [GPGit Documentation](#gpgit-documentation) * [GPG Quick Start Guide](#gpg-quick-start-guide) @@ -45,103 +45,82 @@ The security status of GNU/Linux projects will be tracked in the [Linux Security # GPGit Documentation ## Installation -### ArchLinux -You can install GPGit from [AUR](https://aur.archlinux.org/packages/gpgit/). Make sure to [build in a clean chroot](https://wiki.archlinux.org/index.php/DeveloperWiki:Building_in_a_Clean_Chroot). Please give the package a vote so I can move it to the official ArchLinux [community] repository for even simpler installation. -### Ubuntu/Debian/Other -GPGit dependencies can be easily installed via [pip](https://pypi.python.org/pypi/pip). +### Distribution Packages +* [Arch Linux (AUR)](https://aur.archlinux.org/packages/gpgit/) +### Manual Installation ```bash -# Install dependencies -sudo apt-get install python3 python3-pip gnupg2 git -VERSION=2.0.7 +# Install dependencies and optional dependencies +sudo apt-get install bash gnupg2 git tar xz-utils coreutils gawk grep sed +sudo apt-get install gzip bzip lzip file jq curl # Download and verify source -wget https://github.com/NicoHood/gpgit/releases/download/${VERSION}/gpgit-${VERSION}.tar.xz -wget https://github.com/NicoHood/gpgit/releases/download/${VERSION}/gpgit-${VERSION}.tar.xz.asc +VERSION=1.3.0 +wget "https://github.com/NicoHood/gpgit/releases/download/${VERSION}/gpgit-${VERSION}.tar.xz" +wget "https://github.com/NicoHood/gpgit/releases/download/${VERSION}/gpgit-${VERSION}.tar.xz.asc" gpg2 --keyserver hkps://pgp.mit.edu --recv-keys 97312D5EB9D7AE7D0BD4307351DAE9B7C1AE9161 -gpg2 --verify gpgit-${VERSION}.tar.xz.asc gpgit-${VERSION}.tar.xz +gpg2 --verify "gpgit-${VERSION}.tar.xz.asc" "gpgit-${VERSION}.tar.xz" -# Extract and install dependencies -tar -xf gpgit-${VERSION}.tar.xz -cd gpgit-${VERSION} -pip3 install --user -r requirements.txt - -# Install and run GPGit -sudo cp gpgit.py /usr/local/bin/gpgit +# Extract, install and run GPGit +tar -xf "gpgit-${VERSION}.tar.xz" +sudo make -C "gpgit-${VERSION}" PREFIX=/usr/local install gpgit --help ``` ## Script Usage -The script guides you through all 5 steps of the [GPG quick start guide](#gpg-quick-start-guide). **By default no extra arguments beside the tag are required.** Follow the instructions and you are good to go. +The script guides you through all 5 steps of the [GPG quick start guide](#gpg-quick-start-guide). **Only the tag name is a required parameter, the tag message can be specified optionally.** +### Sample Usage ![screenshot](img/screenshot.png) -### Parameters - -#### -h, --help -Show help message and exit. - -#### -v, --version -Show program's version and exit. - -#### tag -Tagname of the release. E.g. `1.0.0` or `20170521` with `$(date +%Y%m%d)`. - -#### -m , --message -Use the given as the commit message. - -#### -o , --output -Output path of the archive, signature and message digest. You can also set this option via configuration. - -#### -g , --git-dir -Path to the Git project. - -#### -n, --no-github -Disable Github API functionality. Github releases need to be created manually and release assets need to be uploaded manually. GPGit will not prompt for a Github token anymore. - -#### -p, --prerelease -Flag as Github prerelease. - -### Configuration -Additional configuration can be made via [git config](https://git-scm.com/docs/git-config). Example usage: - -```bash -git config --global gpgit.token -git config --global gpgit.output ~/gpgit -git config --local gpgit.compression gzip +### Parameters and Configuration +``` +$ gpgit --help +Usage: gpgit [options] + +GPGit 1.3.0 https://github.com/NicoHood/gpgit +A shell script that automates the process of signing Git sources via GPG. + +Mandatory arguments: + The name of the tag to create. + +Optional arguments: + -h, --help Show this help message and exit. + -m, --message Use the given as the commit message. + If multiple -m options are given, their values are + concatenated as separate paragraphs. + -C, --directory Run as if GPGit was started in instead of the + current working directory. + -S, --signingkey Use the given GPG key. + -o, --output Safe all release assets to the specified . + -p, --pre-release Flag as Github pre-release. + -n, --no-github Disable Github API functionallity. + -i, --interactive Run in interactive mode, step-by-step. + +Examples: + gpgit 1.0.0 + gpgit -p -m "First alpha release." 0.1.0 + gpgit -C git/myproject/ -o /tmp/gpgit -n -m "Internal test release." 0.0.1 + +Configuration options: + gpgit.signingkey , user.signingkey + gpgit.output + gpgit.token + gpgit.compression + gpgit.hash + gpgit.keyserver + gpgit.githubrepo + gpgit.project + + Note: All 'gpgit.option' configuration options are also available as temporary + command line parameter '--option' or captical environment variable 'OPTION'. + +Examples: + git config --global gpgit.output ~/gpgit + git config --local user.signingkey 97312D5EB9D7AE7D0BD4307351DAE9B7C1AE9161 + git config --local compression gzip ``` - -#### user.signingkey -Full GPG fingerprint to use for signing/verifying. - -#### gpgit.output -Output path of the archive, signature and message digest. You can also set this option via parameter. - -#### gpgit.compression -Archive compression option. Chose between "gzip,xz,bzip2,lzip". Default: "xz" - -#### gpgit.sha -Message digest algorithm. chose between "sha256,sha384,sha512". Default: "sha512" - -#### gpgit.keyserver -Keyserver to use for GPG key check. Automatically set to "skip" after the first check was successfull. Default: "hkps://pgp.mit.edu" - -#### gpgit.github -Enable or disable Github functionality with "true|false". Default: "true" (enabled) - -#### gpgit.user -Username used for github uploading. - -#### gpgit.project -Project name used for github uploading and archive naming. - -#### gpgit.armor -Use ascii armored output of GPG (.asc instead of .sig) with "true|false". Default: "true" (armored output). - -#### gpgit.token -Specify the Github token for Github API release uploading. - # GPG Quick Start Guide GPGit guides you through 5 simple steps to get your software project ready with GPG signatures. Further details can be found below. @@ -177,36 +156,30 @@ Here are a few examples how to keep a passphrase strong but easy to remember: * [PasswordCard](https://www.passwordcard.org/en) ### 1.2 Key generation -If you don't have a GPG key yet, create a new one first. You can use RSA (4096 bits) or ECC (Curve 25519) for a strong key. The latter one does currently not work with Github. You want to stay with RSA for now. +If you don't have a GPG key yet, create a new one first. You can use RSA (4096 bits) or ECC (Curve 25519) for a strong key. GPG offers you the option to use the most future-proof key algorithm available. Use the most recent version gnupg2, not gnupg1! -**Make sure that your secret key is stored somewhere safe and use a unique strong password.** +Ed25519 ECC GPG keys are currently [not supported by Github](https://help.github.com/articles/generating-a-new-gpg-key/#supported-gpg-key-algorithms). To generate an ECC key use `future-default` instead of `rsa4096` as parameter. -Crucial key generation settings: -* (1) RSA and RSA -* 4096 bit key size -* 4096 bit subkey size -* Valid for 1 year (1y) -* Username and email +**Make sure that your secret key is stored somewhere safe and use a unique strong password.** ##### Example key generation: -``` -$ gpg --full-gen-key --expert -[...] -gpg: /tmp/trustdb.gpg: trustdb created -gpg: key 61D68FF6279DF9A6 marked as ultimately trusted -gpg: directory '/tmp/openpgp-revocs.d' created -gpg: revocation certificate stored as -'/tmp/openpgp-revocs.d/3D6B9B41CCDC16D0E4A66AC461D68FF6279DF9A6.rev' +```bash +$ gpg2 --quick-generate-key "John Doe " future-default default 1y +We need to generate a lot of random bytes. It is a good idea to perform +some other action (type on the keyboard, move the mouse, utilize the +disks) during the prime generation; this gives the random number +generator a better chance to gain enough entropy. +gpg: key 2F8E73B1D445CCD3 marked as ultimately trusted +gpg: revocation certificate stored as '/home/john/.gnupg/openpgp-revocs.d/6718A9A63030E182A86FEE152F8E73B1D445CCD3.rev' public and secret key created and signed. -pub rsa4096 2017-01-04 [SC] [expires: 2018-01-04] - 3D6B9B41CCDC16D0E4A66AC461D68FF6279DF9A6 - 3D6B9B41CCDC16D0E4A66AC461D68FF6279DF9A6 +pub ed25519 2017-09-24 [SC] [expires: 2018-09-24] + 6718A9A63030E182A86FEE152F8E73B1D445CCD3 uid John Doe -sub rsa4096 2017-01-04 [E] [expires: 2018-01-04] +sub cv25519 2017-09-24 [E] ``` -The generated key has the fingerprint `3D6B9B41CCDC16D0E4A66AC461D68FF6279DF9A6` in this example. Share it with others so they can verify your source. [[Read more]](https://wiki.archlinux.org/index.php/GnuPG#Create_key_pair) +The generated key has the fingerprint `6718A9A63030E182A86FEE152F8E73B1D445CCD3` in this example. Share it with others so they can verify your source. [[Read more]](https://wiki.archlinux.org/index.php/GnuPG#Create_key_pair) If you ever move your installation make sure to backup `~/.gnupg/` as it contains the **private key** and the **revocation certificate**. Handle it with care. [[Read more]](https://wiki.archlinux.org/index.php/GnuPG#Revoking_a_key) @@ -217,11 +190,11 @@ To make the public key widely available, upload it to a key server. Now the user ```bash # Publish key -gpg --keyserver hkps://pgp.mit.edu --send-keys +gpg2 --keyserver hkps://pgp.mit.edu --send-keys # Import key # Alternative keyserver: hkps://hkps.pool.sks-keyservers.net -gpg --keyserver hkps://pgp.mit.edu --recv-keys +gpg2 --keyserver hkps://pgp.mit.edu --recv-keys ``` ### 2.2 Publish full fingerprint @@ -232,10 +205,10 @@ To make Github display your commits as "verified" you also need to add your publ ```bash # List keys + full fingerprint -gpg --list-secret-keys --keyid-format LONG +gpg2 --list-secret-keys --keyid-format LONG # Generate public key -gpg --armor --export +gpg2 --armor --export ``` ## 3. Use Git with GPG @@ -244,7 +217,7 @@ In order to make Git use your GPG key you need to set the default signing key fo ```bash # List keys + full fingerprint -gpg --list-secret-keys --keyid-format LONG +gpg2 --list-secret-keys --keyid-format LONG git config --global user.signingkey ``` @@ -276,22 +249,22 @@ You can use `git archive` to create archives of your tagged Git release. It is h ```bash # .tar.gz -git archive --format=tar.gz -o gpgit-1.0.0.tar.gz --prefix gpgit-1.0.0 1.0.0 +git archive --format=tar.gz -o gpgit-1.0.0.tar.gz --prefix gpgit-1.0.0/ 1.0.0 # .tar.xz -git archive --format=tar --prefix gpgit-1.0.0 1.0.0 | xz > gpgit-1.0.0.tar.xz +git archive --format=tar --prefix gpgit-1.0.0/ 1.0.0 | xz > gpgit-1.0.0.tar.xz # .tar.lz -git archive --format=tar --prefix gpgit-1.0.0 1.0.0 | lzip --best > gpgit-1.0.0.tar.xz +git archive --format=tar --prefix gpgit-1.0.0/ 1.0.0 | lzip --best > gpgit-1.0.0.tar.xz # Verify an existing archive -git archive --format=tar --prefix gpgit-1.0.0 1.0.0 | cmp <(xz -dc gpgit-1.0.0.tar.xz) +git archive --format=tar --prefix gpgit-1.0.0/ 1.0.0 | cmp <(xz -dc gpgit-1.0.0.tar.xz) ``` ### 4.2 Sign the archive Type the filename of the tarball that you want to sign and then run: ```bash -gpg --digest-algo SHA512 --armor --detach-sign gpgit-1.0.0.tar.xz +gpg2 --digest-algo SHA512 --armor --detach-sign gpgit-1.0.0.tar.xz ``` **Do not blindly sign the Github source downloads** unless you have compared its content with the local files via `diff.` [[Read more]](https://wiki.archlinux.org/index.php/GnuPG#Make_a_detached_signature) @@ -300,7 +273,7 @@ To not need to retype your password every time for signing you can also use [gpg This gives you a file called `gpgit-1.0.0.tar.xz.asc` which is the GPG signature. Release it along with your source tarball and let everyone know to first verify the signature after downloading. [[Read more]](https://wiki.archlinux.org/index.php/GnuPG#Verify_a_signature) ```bash -gpg --verify gpgit-1.0.0.tar.xz.asc +gpg2 --verify gpgit-1.0.0.tar.xz.asc ``` ### 4.3 Create the message digest @@ -319,9 +292,7 @@ sha512 gpgit-1.0.0.tar.xz > gpgit-1.0.0.tar.xz.sha512 ### 5.2 Upload to Github Create a new "Github Release" to add additional data to the tag. Then drag the .tar.xz .sig and .sha512 files onto the release. -The script also supports [uploading to Github](https://developer.github.com/v3/repos/releases/) directly. Create a new Github token first and then follow the instructions of the script. - -How to generate a Github token: +The script also supports [uploading to Github](https://developer.github.com/v3/repos/releases/) directly. Create a new Github token first and then follow the instructions of the script. How to generate a Github token: * Go to ["Settings - Personal access tokens"](https://github.com/settings/tokens) * Generate a new token with permissions "public_repo" and "admin:gpg_key" * Store it safely @@ -332,10 +303,21 @@ How to generate a Github token: You can also use your GPG key for email encryption with [enigmail and thunderbird](https://wiki.archlinux.org/index.php/thunderbird#EnigMail_-_Encryption). [[Read more]](https://www.enigmail.net/index.php/en/) ## Contact -You can get securely in touch with me [here](http://contact.nicohood.de). Don't hesitate to [file a bug at Github](https://github.com/NicoHood/gpgit/issues). More cool projects from me can be found [here](http://www.nicohood.de). +You can get securely in touch with me [here](http://contact.nicohood.de). My GPG key ID is `9731 2D5E B9D7 AE7D 0BD4 3073 51DA E9B7 C1AE 9161`. Don't hesitate to [file a bug at Github](https://github.com/NicoHood/gpgit/issues). More cool projects from me can be found [here](http://www.nicohood.de). ## Version History ``` +1.3.0 (24.01.2018) +* Reworked bash script completely +* Simplified parameters +* Added environment variable and git config support +* Reduced output verbosity +* Generate archive from local git source rather than downloading it from github +* Do less unnecessary error checking, but simplify the code instead +* Create signatures with strongest hash algorithm +* Use ECC keys for GPG key generation if available +* Added color output options + 2.0.7 (27.06.2017) * Switch to Python3 from bash * New user interface with preview From aa09d9b0a1fed8793e565decc7d2691370fc3c94 Mon Sep 17 00:00:00 2001 From: NicoHood Date: Tue, 23 Jan 2018 12:52:04 +0100 Subject: [PATCH 04/19] Moved python script to legacy folder --- gpgit.py => legacy/gpgit.py | 0 requirements.txt => legacy/requirements.txt | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename gpgit.py => legacy/gpgit.py (100%) rename requirements.txt => legacy/requirements.txt (100%) diff --git a/gpgit.py b/legacy/gpgit.py similarity index 100% rename from gpgit.py rename to legacy/gpgit.py diff --git a/requirements.txt b/legacy/requirements.txt similarity index 100% rename from requirements.txt rename to legacy/requirements.txt From 6b5809dd085b951ba44f66a6d84c310e75ab9b0d Mon Sep 17 00:00:00 2001 From: NicoHood Date: Tue, 23 Jan 2018 12:52:36 +0100 Subject: [PATCH 05/19] Removed legacy script, as bash is now the main script again --- legacy/gpgit.sh | 681 ------------------------------------------------ 1 file changed, 681 deletions(-) delete mode 100755 legacy/gpgit.sh diff --git a/legacy/gpgit.sh b/legacy/gpgit.sh deleted file mode 100755 index ce47187..0000000 --- a/legacy/gpgit.sh +++ /dev/null @@ -1,681 +0,0 @@ -#!/bin/bash - -# Avoid any encoding problems -export LANG=C - -shopt -s extglob -set -u - -PROGNAME=$(basename "$0") -VERSION=1.2.0 - -################################################################################ -# Functions -################################################################################ - -function usage() -{ - echo "${PROGNAME} ${VERSION}" - echo "Usage: ${PROGNAME} [options]" - echo - echo 'Mandatory parameters:' - echo ' Tagname' - echo - echo 'Actions:' - echo '-h --help Show this help message' - echo - echo 'Options:' - echo '-o, --output The output path of the compressed archive, signature and message digest.' - echo ' Default: "git rev-parse --show-toplevel)/archive"' - echo '-u, --username Username of the user. Used for GPG key generation.' - echo ' Default: git config user.name' - echo '-e, --email Email of the user. Used for GPG key generation.' - echo ' Default: "git config user.email"' - echo '-p, --project The name of the project. Used for archive geneation.' - echo " Default: \"git config --local remote.origin.url \\" - echo " | sed -n 's#.*/\([^.]*\)\.git#\1#p'\"" - echo '-g, --gpg Specify (full) GPG fingerprint to use for signing.' - echo ' Default: "git config user.signingkey"' - echo '-w, --wget Download source from a user-specified URL.' - echo ' Default: Auto detection for Github URL' - echo "-t, --tar Valid compression options: ${config[COMPRESSION_ALGS]}" - echo ' Default: gz' - echo "-s, --sha Valid message digest options: ${config[HASH_ALGS]}" - echo ' Default: sha512' - echo '-m, --message Specify the tag message.' - echo ' Default: "Release "' - echo '-y, --yes Assume "yes" on all questions.' -} - -# Check if messages are to be printed using color -unset ALL_OFF BOLD BLUE GREEN RED YELLOW MAGENTA CYAN -if [[ -t 2 ]]; then - # prefer terminal safe colored and bold text when tput is supported - if tput setaf 0 &>/dev/null; then - ALL_OFF="$(tput sgr0)" - BOLD="$(tput bold)" - BLUE="${BOLD}$(tput setaf 4)" - GREEN="${BOLD}$(tput setaf 2)" - RED="${BOLD}$(tput setaf 1)" - YELLOW="${BOLD}$(tput setaf 3)" - MAGENTA="${BOLD}$(tput setaf 5)" - CYAN="${BOLD}$(tput setaf 6)" - else - ALL_OFF="\e[1;0m" - BOLD="\e[1;1m" - BLUE="${BOLD}\e[1;34m" - GREEN="${BOLD}\e[1;32m" - RED="${BOLD}\e[1;31m" - YELLOW="${BOLD}\e[1;33m" - MAGENTA="${BOLD}\e[1;35m" - CYAN="${BOLD}\e[1;36m" - fi -fi -readonly ALL_OFF BOLD BLUE GREEN RED YELLOW MAGENTA CYAN - -function msg() { - local mesg=$1; shift - printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 -} - -function msg2() { - local mesg=$1; shift - printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 -} - -function plain() { - local mesg=$1; shift - printf "${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 -} - -function warning() { - local mesg=$1; shift - printf "${YELLOW}==> WARNING:${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 -} - -function error() { - local mesg=$1; shift - printf "${RED}==> ERROR:${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 -} - -function info() { - local mesg=$1; shift - printf "${YELLOW}[!]:${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 -} - -function error_exit -{ - local parent_lineno="$1" - local message="$2" - local code="${3:-1}" - if [[ -n "${message}" ]] ; then - error "Error on or near line ${parent_lineno}: ${message}; exiting with status ${code}" - else - error "Error on or near line ${parent_lineno}; exiting with status ${code}" - fi - plain "Please report this error with the full bash output to:" - plain "https://github.com/NicoHood/gpgit/issues" - exit "${code}" -} - -function kill_exit -{ - error "Exited due to user intervention." - exit 1 -} - -function gpgit_yesno() { - [[ "${config[YES]}" == true ]] && return - while read -r -t 0; do read -r; done - read -rp "${BOLD} Continue? [Y/n]${ALL_OFF}" yesno - if [[ "${yesno}" != [Yy]"es" && "${yesno}" != [Yy] && -n "${yesno}" ]]; then - warning "Aborted by user" - exit 0 - fi -} - -function gpgit_check_tool() { - if ! command -v "$1" &> /dev/null; then - error "Required tool $1 not found. Please check your PATH variable or install the missing dependency." - exit 1 - fi -} - -################################################################################ -# Parameters -################################################################################ - -# Trap errors -trap 'error_exit ${LINENO}' ERR -trap kill_exit SIGTERM SIGINT SIGHUP - -# Check for gpg version. On some distribution gpg 2.x is installed as gpg2. -if ! gpg --version | grep "gpg (GnuPG) 2" -q; then - if ! gpg2 --version | grep "gpg (GnuPG) 2" -q; then - error "No gpg version 2.x available. Please install the newest gpg version." - exit 1 - else - GPG_BIN=gpg2 - fi -else - GPG_BIN=gpg -fi - -# Check if inside a git folder -if [[ "$(git rev-parse --is-inside-work-tree)" != "true" ]]; then - error "Not a git repository." - exit 1 -fi - -# Check input param number -if [[ $# -lt 1 ]]; then - error "Usage: ${PROGNAME} " 1>&2 - plain "Use --help for more information." - exit 1 -fi - -# Set default values in config array -declare -A config -config=( - [OUTPUT]="$(git rev-parse --show-toplevel)/archive" - [USERNAME]="$(git config user.name)" - [EMAIL]="$(git config user.email)" - [PROJECT]="$(git config --local remote.origin.url \ - | sed -n 's#.*/\([^.]*\)\.git#\1#p')" - [GPG]="$(git config user.signingkey)" - [MESSAGE]="Release $1" - [COMPRESSION]="gz" - [COMPRESSION_ALGS]="gz|xz|lz" - [HASH]="sha512" - [HASH_ALGS]="sha256|sha384|sha512" - [URL]="" - [YES]=false - [BRANCH]=$(git rev-parse --abbrev-ref HEAD) -) - -# Print help -if [[ "$1" == "-h" || "$1" == "--help" ]]; then - usage 1>&2 - exit 0 -fi - -# Parse input params an ovrwrite possible default or config loaded options -GETOPT_ARGS=$(getopt -o "ho:u:e:p:g:w:t:s:m:y" \ - -l "help,output:,username:,email:,project:,gpg:,wget:,tar:,sha:,message:,yes"\ - -n "$PROGNAME" -- $@) -eval set -- "$GETOPT_ARGS" - -# Handle all params -while true ; do - case "$1" in - # Options - -o|--output) - config[OUTPUT]="$2" - shift - ;; - -u|--username) - config[USERNAME]="$2" - shift - ;; - -e|--email) - config[EMAIL]="$2" - shift - ;; - -p|--project) - config[PROJECT]="$2" - shift - ;; - -g|--gpg) - config[GPG]="$2" - shift - ;; - -w|--wget) - config[URL]="$2" - shift - ;; - -t|--tar) - config[COMPRESSION]="$2" - shift - ;; - -s|--sha) - config[HASH]="$2" - shift - ;; - -m|--message) - config[MESSAGE]="$2" - shift - ;; - -y|--yes) - config[YES]=true - ;; - # Internal - -h|--help) - usage 1>&2 - exit 0 - ;; - --) - # No more options left. - shift - break - ;; - *) - error "Internal error!" - exit 1 - ;; - esac - shift -done - -config[TAG]=$1 - -declare -A compression_utility -compression_utility=( - [gz]="gzip" - [xz]="xz" - [lz]="lzip" -) - -# Validate compression parameter -case "${config[COMPRESSION]}" in - @(${config[COMPRESSION_ALGS]})) - # Check if compression programm is available - gpgit_check_tool "${compression_utility[${config[COMPRESSION]}]}" - ;; - *) - error "Invalid compression option. Available compressions: ${config[COMPRESSION_ALGS]}" - exit 1 - ;; -esac - -# Validate hash parameter -case "${config[HASH]}" in - @(${config[HASH_ALGS]})) - # Check if hash programm is available - gpgit_check_tool "${config[HASH]}sum" - ;; - *) - error "Invalid message digest option. Available message digests: ${config[HASH_ALGS]}" - exit 1 - ;; -esac - -################################################################################ -msg "1. Generate new GPG key" -################################################################################ - -# Check for existing key -if [[ -z "${config[GPG]}" ]]; then - if $GPG_BIN --list-secret-keys | grep uid | grep -v -q revoked; then - error "GPG seems to be already configured on your system but git is not." - plain "Please use gpg --list-secret-keys to show existing keys." - plain "Afterwards set the key with git config --global user.signingkey ." - plain "See the readme for more information." - exit 1 - else - plain "Generating an RSA 4096 GPG key for ${config[USERNAME]} <${config[EMAIL]}> valid for 3 years." - gpgit_yesno - - # Generate ECC key command (currently not supported by Github) - #$GPG_BIN --quick-generate-key "testuser (comment) " future-default default 3y - - # Generate RSA key command - # https://www.gnupg.org/documentation/manuals/gnupg/Unattended-GPG-key-generation.html - # gpg: revocation certificate stored as '/tmp/tmp.81v03YSxmI/openpgp-revocs.d/F4EDF85EFF03D746D17094D3C28B8F6BCCDF8671.rev' - config[GPG]="$($GPG_BIN --batch --generate-key <( cat << EOF - Key-Type: RSA - Key-Length: 4096 - Key-Usage: cert sign auth - Subkey-Type: RSA - Subkey-Length: 4096 - Subkey-Usage: encrypt - Name-Real: ${config[USERNAME]} - #Name-Comment: Generated with gpgit - Name-Email: ${config[EMAIL]} - Expire-Date: 3y - # Preferences: TODO https://security.stackexchange.com/questions/82216/how-to-change-default-cipher-in-gnupg-on-both-linux-and-windows - %ask-passphrase - %echo We need to generate a lot of random bytes. It is a good idea to perform - %echo some other action (type on the keyboard, move the mouse, utilize the - %echo disks) during the prime generation; this gives the random number - %echo generator a better chance to gain enough entropy. - %commit - %echo Key generation finished -EOF - ) 2>&1 | tee -a /dev/fd/2 | grep "revocation certificate stored as " \ - | sed 's,.*/\(.*\).rev.*,\1,')" - NEW_GPG_KEY=true - - # Print new fingerprint - plain "Your new GPG fingerprint is: ${config[GPG]}" - $GPG_BIN -u "${config[GPG]}" --list-secret-keys --keyid-format LONG - fi -else - plain "Key already generated. Using key: ${config[GPG]}" - NEW_GPG_KEY=false - - # Check if the full fingerprint is used - if [[ ${#config[GPG]} -ne 40 ]]; then - error "Please specify the full fingerprint." - exit 1 - fi - - # Check if key exists - if ! GPG_KEY=$($GPG_BIN --keyid-format LONG --list-secret-keys "0x${config[GPG]}"); then - error "This GPG key is not known on this system." - plain "Check your git config or your GNUPGHOME variable." - exit 1 - fi - - # Check key algorithm for key - if grep -iq "[rd]sa1024" <(echo "${GPG_KEY}"); then - error "This key uses an insecure key algorithm. Please generate a new, secure key." - exit 1 - fi -fi - -################################################################################ -msg "2. Publish your key" -################################################################################ - -# Check if key was just created -if [[ "${NEW_GPG_KEY}" = true ]]; then - # Refresh setting - config[GPG]="$(git config --global user.signingkey)" - - # Upload key - msg2 "2.1 Submit your key to a key server" - plain "Uploading key ${config[GPG]} to hkps://hkps.pool.sks-keyservers.net" - gpgit_yesno - $GPG_BIN --keyserver hkps://hkps.pool.sks-keyservers.net --send-keys "${config[GPG]}" - - # Generate public key - msg2 "2.2 Associate GPG key with github" - plain "Please visit Github and add the following GPG key to your profile." - plain "https://github.com/settings/keys" - gpgit_yesno - $GPG_BIN --armor --export "${config[GPG]}" - - msg2 "2.3 Publish your fingerprint" - plain "Publish your GPG fingerprint (${config[GPG]}) on your project site." - plain "Also see https://wiki.debian.org/Keysigning" - gpgit_yesno -else - plain "Assuming key was already published after its creation. If not please do so." -fi - -################################################################################ -msg "3. Usage of GPG by git" -################################################################################ - -# Differenciate between new created key and (temporary) different key -if [[ "${NEW_GPG_KEY}" = true ]]; then - GIT_CONFIG="global" -else - GIT_CONFIG="local" -fi - -# 3.1 Configure git GPG key -msg2 "3.1 Configure git GPG key" -if [[ "${config[GPG]}" != "$(git config user.signingkey)" ]]; then - # If the key differs from the local>global>system configured key, set it locally - plain "Git is not configured with this key." - plain "Configuring ${GIT_CONFIG} git settings with your GPG key." - gpgit_yesno - git config --"${GIT_CONFIG}" user.signingkey "${config[GPG]}" -else - plain "Git already configured with your GPG key" -fi - -# Check if commit signing is enabled for this repo and ask for a switch if not -msg2 "3.2 Commit signing" -if [[ $(git config commit.gpgsign) != true ]]; then - warning "Commit signing is disabled. Will enable it now ${GIT_CONFIG}ly." - gpgit_yesno - git config --"${GIT_CONFIG}" commit.gpgsign true -else - plain "Commit signing already enabled." -fi - -# Refresh tags -msg2 "3.3 Create signed git tag" -plain "Refreshing tags from upstream." -gpgit_yesno -git fetch origin --tags - -# Check if tag exists -if ! git tag | grep -Fxq "${config[TAG]}"; then - # Check if every added file has been commited - if ! git diff --cached --exit-code > /dev/null; then - warning 'You have added new changes but did not commit them yet. See "git status" or "git diff".' - gpgit_yesno - fi - - # Create new tag if not existant - plain "Creating signed tag ${config[TAG]} and pushing it to the remote git." - gpgit_yesno - - # Create and push new git tag - git tag -s "${config[TAG]}" -m "${config[MESSAGE]}" - git push origin "${config[TAG]}" -else - plain "Tag ${config[TAG]} already exists." -fi - -################################################################################ -msg "4. Creation of a signed compressed release archive" -################################################################################ - -# Check if output path exists and ask for creation -if [[ ! -d "${config[OUTPUT]}" ]]; then - plain "Output path does not exist. Create ${config[OUTPUT]} ?" - gpgit_yesno - mkdir -p "${config[OUTPUT]}" -fi - -# Build archive path -config[FILENAME]="${config[PROJECT]}-${config[TAG]}" -config[EXTENSION]=".tar" -config[FILE]="${config[FILENAME]}${config[EXTENSION]}" -config[COMPRESSED_FILE]="${config[FILE]}.${config[COMPRESSION]}" -config[TAR]="${config[OUTPUT]}/${config[FILE]}" -config[COMPRESSED_TAR]="${config[TAR]}.${config[COMPRESSION]}" - -# Set github URL if not otherwise specified -if [[ -z "${config[URL]}" ]]; then - # Download the github generated archive if available - if [[ "${config[COMPRESSION]}" == "gz" ]] && \ - git config --local remote.origin.url | grep 'github.com' -q; then - GITHUB_REPO=`git config --local remote.origin.url | sed -e 's/.*github.com[:/]//' | sed -e 's/.git$//'` - config[URL]="https://github.com/$GITHUB_REPO/archive/${config[TAG]}.tar.gz" - fi -fi - -# Download archive from URL -if [[ ! -f "${config[COMPRESSED_TAR]}" && -n "${config[URL]}" ]]; then - msg2 "4.0 Download archive from online source" - # Check if compression algorithm is valid - if [[ "${config[COMPRESSION]}" != "${config[URL]##*.}" ]]; then - error "Online binary format (${config[URL]##*.}) does not match selected compression format (${config[COMPRESSION]})." - exit 1 - fi - gpgit_check_tool wget - - plain "Downloading source from URL ${config[URL]}" - gpgit_yesno - wget -O "${config[COMPRESSED_TAR]}" "${config[URL]}" -fi - -# Create or verify archive -msg2 "4.1 Create compressed archive" -if [[ -f "${config[COMPRESSED_TAR]}" ]]; then - plain "Archive ${config[COMPRESSED_TAR]} already exists." - plain "Verifying git against local source." - gpgit_yesno - - # Verify local source against existing tar - if git archive --format=tar --prefix "${config[FILENAME]}/" "${config[TAG]}" \ - | cmp <(${compression_utility[${config[COMPRESSION]}]} -dc ${config[COMPRESSED_TAR]}); then - plain "Existing archive successfully verified against local source." - else - error "Archive differs from local source." - exit 1 - fi -else - plain "Creating release archive file ${config[COMPRESSED_TAR]}" - gpgit_yesno - - # Create new archive - git archive --format=tar --prefix "${config[FILENAME]}/" "${config[TAG]}" \ - | ${compression_utility[${config[COMPRESSION]}]} --best > "${config[COMPRESSED_TAR]}" -fi - -# Create hash of the .tar.xz -msg2 "4.2 Create message digest" -if [[ -f "${config[COMPRESSED_TAR]}.${config[HASH]}" ]]; then - plain "Message digest ${config[COMPRESSED_TAR]}.${config[HASH]} already exists. Verifying it now." - gpgit_yesno - if ! "${config[HASH]}sum" -c "${config[COMPRESSED_TAR]}.${config[HASH]}"; then - error "Message digest could not be verified." - exit 1 - fi -else - plain "Creating message digest ${config[COMPRESSED_TAR]}.${config[HASH]}" - gpgit_yesno - "${config[HASH]}sum" "${config[COMPRESSED_TAR]}" > "${config[COMPRESSED_TAR]}.${config[HASH]}" -fi - -# Sign .tar.xz if not existant -msg2 "4.3 Sign the sources" -if [[ -f "${config[COMPRESSED_TAR]}.sig" ]]; then - plain "Signature ${config[COMPRESSED_TAR]}.sig already exists. Verifying it with gpg." - gpgit_yesno - if ! $GPG_BIN --verify "${config[COMPRESSED_TAR]}.sig"; then - error "Signature could not be verified with gpg." - exit 1 - fi -else - plain "Creating signature ${config[COMPRESSED_TAR]}.sig" - gpgit_yesno - $GPG_BIN --local-user "${config[GPG]}" --output "${config[COMPRESSED_TAR]}.sig" --armor --detach-sign "${config[COMPRESSED_TAR]}" -fi - -################################################################################ -msg "5. Upload the release" -################################################################################ - -# Github -if git config --local remote.origin.url | grep 'github.com' -q; then - msg2 "5.1 Github" - gpgit_check_tool curl - plain "Uploading to Github. Please setup a Github token first:" - plain "(Github->Settings->Personal access tokens; public repo access)" - gpgit_yesno - - # Create github release and upload the signature - # http://www.barrykooij.com/create-github-releases-via-command-line/ - # https://developer.github.com/v3/repos/releases/ - # https://developer.github.com/changes/2013-09-25-releases-api/ - # https://developer.github.com/guides/getting-started/ - while read -r -t 0; do read -r; done - read -rsp "${BOLD} Enter your Github token:${ALL_OFF}" TOKEN - plain "" - API_JSON=$(printf '{"tag_name": "%s","target_commitish": "%s","name": "%s","body": "Release %s","draft": false,"prerelease": false}' \ - "${config[TAG]}" "${config[BRANCH]}" "${config[TAG]}" "${config[TAG]}") - if ! RESULT=$(curl -s --data "${API_JSON}" "https://api.github.com/repos/${config[USERNAME]}/${config[PROJECT]}/releases" \ - -H "Accept: application/vnd.github.v3+json" -H "Authorization: token ${TOKEN}" ); then - error "Uploading release to Github failed." - exit 1 - fi - - # Check for error - if grep -Eq '"message": ?"Bad credentials"' <(echo "${RESULT}"); then - error "Bad Github credentials." - exit 1 - fi - - # Check if release already exists - if grep -Eq '"message": ?"Validation Failed"' <(echo "${RESULT}"); then - if grep -Eq '"code": ?"already_exists"' <(echo "${RESULT}"); then - warning "Release already exists." - - # Get release id for an existing release - # https://developer.github.com/v3/repos/releases/#get-a-release-by-tag-name - if ! RELEASE_ID=$(curl -s "https://api.github.com/repos/${config[USERNAME]}/${config[PROJECT]}/releases/tags/${config[TAG]}" \ - | grep '^ "id": ' | tr -dc '[:digit:]'); then - error "Accessing Github Release failed." - exit 1 - fi - elif grep -Eq '"message": ?"Published releases must have a valid tag"' <(echo "${RESULT}"); then - error "Published releases must have a valid tag. Please try again later." - exit 1 - else - error "Unknown Github error: $(grep '"message":' <(echo "${RESULT}"))" - exit 1 - fi - else - # Parse release ID - RELEASE_ID=$(echo "${RESULT}" | grep '^ "id": ' | tr -dc '[:digit:]') - plain "Github release created." - fi - - # Upload the generated archive if its not gz - if [[ "${config[COMPRESSION]}" != "gz" ]]; then - # Upload archive - if ! RESULT=$(curl -s "https://uploads.github.com/repos/${config[USERNAME]}/${config[PROJECT]}/releases/${RELEASE_ID}/assets?name=${config[COMPRESSED_FILE]}" \ - -H "Content-Type: application/tar" \ - -H "Accept: application/vnd.github.v3+json" \ - -H "Authorization: token ${TOKEN}" \ - --data-binary @"${config[COMPRESSED_TAR]}"); then - error "Uploading archive to Github failed." - exit 1 - fi - - # Check if archive already exists - if grep -Eq '"message": ?"Validation Failed"' <(echo "${RESULT}") && \ - grep -Eq '"code": ?"already_exists"' <(echo "${RESULT}"); then - warning "Archive already exists." - else - plain "Archive uploaded." - fi - fi - - # Upload signature - if ! RESULT=$(curl -s "https://uploads.github.com/repos/${config[USERNAME]}/${config[PROJECT]}/releases/${RELEASE_ID}/assets?name=${config[COMPRESSED_FILE]}.sig" \ - -H "Content-Type: application/pgp-signature" \ - -H "Accept: application/vnd.github.v3+json" \ - -H "Authorization: token ${TOKEN}" \ - --data-binary @"${config[COMPRESSED_TAR]}.sig"); then - error "Uploading signature to Github failed." - exit 1 - fi - - # Check if signature already exists - if grep -Eq '"message": ?"Validation Failed"' <(echo "${RESULT}") && \ - grep -Eq '"code": ?"already_exists"' <(echo "${RESULT}"); then - warning "Signature already exists." - else - plain "Signature uploaded." - fi - - # Upload message digest - if ! RESULT=$(curl -s "https://uploads.github.com/repos/${config[USERNAME]}/${config[PROJECT]}/releases/${RELEASE_ID}/assets?name=${config[COMPRESSED_FILE]}.${config[HASH]}" \ - -H "Content-Type: text/sha512" \ - -H "Accept: application/vnd.github.v3+json" \ - -H "Authorization: token ${TOKEN}" \ - --data-binary @"${config[COMPRESSED_TAR]}.${config[HASH]}"); then - error "Uploading message digest to Github failed." - exit 1 - fi - - # Check if message digest already exists - if grep -Eq '"message": ?"Validation Failed"' <(echo "${RESULT}") && \ - grep -Eq '"code": ?"already_exists"' <(echo "${RESULT}"); then - warning "Message digest already exists." - else - plain "Message digest uploaded." - fi -else - plain "Please upload the compressed archive, signature and message digest manually." -fi - -msg "Finished without errors" From fcc940b72e71a8ddd51e28b6674728afa50f3280 Mon Sep 17 00:00:00 2001 From: NicoHood Date: Tue, 23 Jan 2018 13:07:42 +0100 Subject: [PATCH 06/19] Updated image --- img/screenshot.png | Bin 96194 -> 166781 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/img/screenshot.png b/img/screenshot.png index 2d5c1e9e77bd8c5556e4e02b099e1244bf760db2..d819cd073f32e788e7560da3fd84840abc572182 100644 GIT binary patch literal 166781 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 Cer-M!1$9b>g2strj{7tXLdB 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 z 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 pc|Gp(w~W7l Date: Tue, 23 Jan 2018 13:08:10 +0100 Subject: [PATCH 07/19] Fix pushing tag if a branch with the same name also exists --- gpgit.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gpgit.sh b/gpgit.sh index 84ee3ac..c5d5389 100755 --- a/gpgit.sh +++ b/gpgit.sh @@ -418,7 +418,7 @@ if [[ -z "$(git tag -l "${TAG}")" ]] ; then plain "Creating signed tag '${TAG}' and pushing it to the remote Git." interactive git tag -s "${TAG}" -m "${MESSAGE}" -u "${SIGNINGKEY}" - git push origin "${TAG}" &> /dev/null + git push origin "refs/tags/${TAG}" &> /dev/null else warning "Tag '${TAG}' already exists." fi From 560ece03d6595fa6621fa70b1cb00819f62f8349 Mon Sep 17 00:00:00 2001 From: NicoHood Date: Tue, 23 Jan 2018 13:10:24 +0100 Subject: [PATCH 08/19] Improve Github API error message --- gpgit.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gpgit.sh b/gpgit.sh index c5d5389..ada8e5e 100755 --- a/gpgit.sh +++ b/gpgit.sh @@ -510,7 +510,7 @@ function github_upload_asset() # Abort in API error message="$(echo "${RESULT}" | jq -r .message)" if [[ "${message}" != "null" ]]; then - die "Github API message: ${message}" + die "Github API message: '${message}' Check your token configuration: https://github.com/settings/tokens" fi } @@ -542,13 +542,13 @@ else "https://api.github.com/repos/${GITHUBREPO}/releases" \ -H "Accept: application/vnd.github.v3+json" \ -H "Authorization: token ${TOKEN}" ); then - die "Uploading release to Github failed" + die "Uploading release to Github failed." fi # Abort on API error message="$(echo "${GITHUB_RELEASE}" | jq -r .message)" if [[ "${message}" != "null" ]]; then - die "Github API message: ${message}" + die "Github API message: '${message}' Check your token configuration: https://github.com/settings/tokens" fi # Safe new ID From 74f705dd121ca7daabf766e9a5a6edc77d9f9820 Mon Sep 17 00:00:00 2001 From: NicoHood Date: Tue, 23 Jan 2018 13:13:10 +0100 Subject: [PATCH 09/19] Also fix tag ref for git archive command --- gpgit.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gpgit.sh b/gpgit.sh index ada8e5e..8c61f09 100755 --- a/gpgit.sh +++ b/gpgit.sh @@ -437,7 +437,7 @@ msg2 "4.1 Create compressed archive" if [[ ! -f "${FILE}" ]]; then plain "Creating new release archive: '${FILE}'" interactive - git archive --format=tar --prefix "${FILENAME}/" "${TAG}" | "${COMPRESSION}" --best > "${FILE}" + git archive --format=tar --prefix "${FILENAME}/" "refs/tags/${TAG}" | "${COMPRESSION}" --best > "${FILE}" else warning "Found existing archive '${FILE}'." fi From c51e1def2aa3bb9569cb0498309c17fdee70ec6b Mon Sep 17 00:00:00 2001 From: NicoHood Date: Tue, 23 Jan 2018 15:05:28 +0100 Subject: [PATCH 10/19] Check if output directory exists --- gpgit.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gpgit.sh b/gpgit.sh index 8c61f09..cdd2b94 100755 --- a/gpgit.sh +++ b/gpgit.sh @@ -429,8 +429,10 @@ msg "4. Create a signed release archive" #################################################################################################### # Create output directory -interactive "Creating output directory if not existing." -mkdir -p "${OUTPUT}" +if [[ ! -d "${OUTPUT}" ]]; then + interactive "Creating not existing output directory: '${OUTPUT}'." + mkdir "${OUTPUT}" +fi # Create new archive msg2 "4.1 Create compressed archive" From eea241c904cb9ab07c51ea0df9bbbef0bb0af7f7 Mon Sep 17 00:00:00 2001 From: NicoHood Date: Tue, 23 Jan 2018 15:09:50 +0100 Subject: [PATCH 11/19] Added support for multiple compression algorithms --- gpgit.sh | 98 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 51 insertions(+), 47 deletions(-) diff --git a/gpgit.sh b/gpgit.sh index cdd2b94..47bf2b6 100755 --- a/gpgit.sh +++ b/gpgit.sh @@ -203,7 +203,7 @@ while true ; do shift ;; --compression) - COMPRESSION="${2}" + COMPRESSION+=("${2}") shift ;; --hash) @@ -266,8 +266,8 @@ INTERACTIVE=${INTERACTIVE:-"$(git config gpgit.interactive || true)"} MESSAGE="${MESSAGE:-"Release ${TAG}"$'\n\nCreated with GPGit\nhttps://github.com/NicoHood/gpgit'}" KEYSERVER="${KEYSERVER:-"$(git config gpgit.keyserver || true)"}" KEYSERVER="${KEYSERVER:-"hkps://pgp.mit.edu"}" -COMPRESSION="${COMPRESSION:-"$(git config gpgit.compression || true)"}" -COMPRESSION="${COMPRESSION:-xz}" +COMPRESSION=(${COMPRESSION[@]:-"$(git config gpgit.compression || true)"}) +COMPRESSION=(${COMPRESSION[@]:-xz}) HASH="${HASH:-"$(git config gpgit.hash || true)"}" HASH="${HASH:-sha512}" GPG_BIN="${GPG_BIN:-"$(git config gpg.program || true)"}" @@ -283,18 +283,18 @@ TOKEN="${TOKEN:-"$(git config gpgit.token || true)"}" GPG_USER="${GPG_USER:-"$(git config user.name || true)"}" GPG_USER="${GPG_USER:-"${USER}"}" GPG_EMAIL="${GPG_EMAIL:-"$(git config user.email || true)"}" -FILE="${OUTPUT}/${FILENAME}.tar.${COMPRESSION}" GITHUBREPO="${GITHUBREPO:-"$(git config gpgit.githubrepo || true)"}" GITHUBREPO="${GITHUBREPO:-"$(git config --local remote.origin.url | sed -e 's/.*github.com[:/]//' | sed -e 's/.git$//')"}" GITHUB="${GITHUB:-"$(git config --local remote.origin.url | grep -i 'github.com')"}" PRERELEASE="${PRERELEASE:-"false"}" BRANCH="$(git rev-parse --abbrev-ref HEAD)" NEW_SIGNINGKEY="false" +declare -A GITHUB_ASSET # Check if dependencies are available # Dependencies: bash, gnupg2, git, tar, xz, coreutils, gawk, grep, sed # Optional dependencies: gzip, bzip2, lzip, file, jq, curl -check_dependency "${GPG_BIN}" "${COMPRESSION}" "${HASH}sum" \ +check_dependency "${GPG_BIN}" "${COMPRESSION[@]}" "${HASH}sum" \ || die "Please check your \$PATH variable or install the missing dependencies." # Print initial welcome message with version information @@ -436,34 +436,48 @@ fi # Create new archive msg2 "4.1 Create compressed archive" -if [[ ! -f "${FILE}" ]]; then - plain "Creating new release archive: '${FILE}'" - interactive - git archive --format=tar --prefix "${FILENAME}/" "refs/tags/${TAG}" | "${COMPRESSION}" --best > "${FILE}" -else - warning "Found existing archive '${FILE}'." -fi +for util in "${COMPRESSION[@]}" +do + FILE="${OUTPUT}/${FILENAME}.tar.${util}" + if [[ ! -f "${FILE}" ]]; then + plain "Creating new release archive: '${FILE}'" + interactive + git archive --format=tar --prefix "${FILENAME}/" "refs/tags/${TAG}" | "${util}" --best > "${FILE}" + else + warning "Found existing archive '${FILE}'." + fi + GITHUB_ASSET["${FILENAME}.tar.${util}"]="${FILE}" +done # Sign archive msg2 "4.2 Sign the archive" -if [[ ! -f "${FILE}.asc" ]]; then - plain "Creating GPG signature: '${FILE}.asc'" - interactive - ${GPG_BIN} --digest-algo SHA512 -u "${SIGNINGKEY}" --output "${FILE}.asc" --armor --detach-sign "${FILE}" -else - warning "Found existing signature '${FILE}.asc'." -fi +for util in "${COMPRESSION[@]}" +do + FILE="${OUTPUT}/${FILENAME}.tar.${util}" + if [[ ! -f "${FILE}.asc" ]]; then + plain "Creating GPG signature: '${FILE}.asc'" + interactive + ${GPG_BIN} --digest-algo SHA512 -u "${SIGNINGKEY}" --output "${FILE}.asc" --armor --detach-sign "${FILE}" + else + warning "Found existing signature '${FILE}.asc'." + fi + GITHUB_ASSET["${FILENAME}.tar.${util}.asc"]="${FILE}.asc" +done # Creating hash msg2 "4.3 Create the message digest" -if [[ ! -f "${FILE}.${HASH}" ]]; then - plain "Creating message digest: '${FILE}.${HASH}'" - interactive - "${HASH}sum" "${FILE}" > "${FILE}.${HASH}" -else - warning "Found existing message digest '${FILE}.${HASH}'." -fi - +for util in "${COMPRESSION[@]}" +do + FILE="${OUTPUT}/${FILENAME}.tar.${util}" + if [[ ! -f "${FILE}.${HASH}" ]]; then + plain "Creating message digest: '${FILE}.${HASH}'" + interactive + "${HASH}sum" "${FILE}" > "${FILE}.${HASH}" + else + warning "Found existing message digest '${FILE}.${HASH}'." + fi + GITHUB_ASSET["${FILENAME}.tar.${util}.${HASH}"]="${FILE}.${HASH}" +done #################################################################################################### msg "5. Upload the release" @@ -559,26 +573,16 @@ else warning "Found existing release on Github." fi - # Upload archive - if grep -q "^${FILENAME}.tar.${COMPRESSION}$" <(echo "${GITHUB_ASSETS}"); then - warning "Found existing archive on Github." - else - github_upload_asset "${FILENAME}.tar.${COMPRESSION}" "${FILE}" - fi - - # Upload signature - if grep -q "^${FILENAME}.tar.${COMPRESSION}.asc$" <(echo "${GITHUB_ASSETS}"); then - warning "Found existing signature on Github." - else - github_upload_asset "${FILENAME}.tar.${COMPRESSION}.asc" "${FILE}.asc" - fi - - # Upload message digest - if grep -q "^${FILENAME}.tar.${COMPRESSION}.${HASH}$" <(echo "${GITHUB_ASSETS}"); then - warning "Found existing message digest on Github." - else - github_upload_asset "${FILENAME}.tar.${COMPRESSION}.${HASH}" "${FILE}.${HASH}" - fi + # Upload release assets + for filename in "${!GITHUB_ASSET[@]}" + do + if grep -q "^${filename}$" <(echo "${GITHUB_ASSETS}"); then + warning "Found existing asset on Github: '${filename}'." + else + github_upload_asset "${filename}" "${GITHUB_ASSET[$filename]}" + fi + done + exit else warning "Please upload the release files manually to Github." fi From 8c447135f9208a227c4171f568491a06ac853c4d Mon Sep 17 00:00:00 2001 From: NicoHood Date: Tue, 23 Jan 2018 15:30:33 +0100 Subject: [PATCH 12/19] Added note when creating new output dir --- gpgit.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gpgit.sh b/gpgit.sh index 47bf2b6..366374e 100755 --- a/gpgit.sh +++ b/gpgit.sh @@ -430,7 +430,8 @@ msg "4. Create a signed release archive" # Create output directory if [[ ! -d "${OUTPUT}" ]]; then - interactive "Creating not existing output directory: '${OUTPUT}'." + plain "Creating not existing output directory: '${OUTPUT}'." + interactive mkdir "${OUTPUT}" fi From 21f06ef98f41840260d90b4ebbc5a0dfa020c401 Mon Sep 17 00:00:00 2001 From: NicoHood Date: Tue, 23 Jan 2018 15:31:14 +0100 Subject: [PATCH 13/19] Added zip support, fix #8 --- gpgit.sh | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/gpgit.sh b/gpgit.sh index 366374e..c786fb2 100755 --- a/gpgit.sh +++ b/gpgit.sh @@ -67,7 +67,7 @@ ${BOLD}Configuration options:${ALL_OFF} gpgit.signingkey , user.signingkey gpgit.output gpgit.token - gpgit.compression + gpgit.compression gpgit.hash gpgit.keyserver gpgit.githubrepo @@ -79,7 +79,7 @@ ${BOLD}Configuration options:${ALL_OFF} ${BOLD}Examples:${ALL_OFF} git config --global gpgit.output ~/gpgit git config --local user.signingkey 97312D5EB9D7AE7D0BD4307351DAE9B7C1AE9161 - git config --local compression gzip + git config --local compression "xz zip" EOF function interactive() @@ -439,11 +439,19 @@ fi msg2 "4.1 Create compressed archive" for util in "${COMPRESSION[@]}" do - FILE="${OUTPUT}/${FILENAME}.tar.${util}" + if [[ "${util}" == zip ]]; then + FILE="${OUTPUT}/${FILENAME}.${util}" + else + FILE="${OUTPUT}/${FILENAME}.tar.${util}" + fi if [[ ! -f "${FILE}" ]]; then plain "Creating new release archive: '${FILE}'" interactive - git archive --format=tar --prefix "${FILENAME}/" "refs/tags/${TAG}" | "${util}" --best > "${FILE}" + if [[ "${util}" == zip ]]; then + git archive --format=zip --prefix "${FILENAME}/" "refs/tags/${TAG}" > "${FILE}" + else + git archive --format=tar --prefix "${FILENAME}/" "refs/tags/${TAG}" | "${util}" --best > "${FILE}" + fi else warning "Found existing archive '${FILE}'." fi @@ -454,7 +462,11 @@ done msg2 "4.2 Sign the archive" for util in "${COMPRESSION[@]}" do - FILE="${OUTPUT}/${FILENAME}.tar.${util}" + if [[ "${util}" == zip ]]; then + FILE="${OUTPUT}/${FILENAME}.${util}" + else + FILE="${OUTPUT}/${FILENAME}.tar.${util}" + fi if [[ ! -f "${FILE}.asc" ]]; then plain "Creating GPG signature: '${FILE}.asc'" interactive @@ -469,7 +481,11 @@ done msg2 "4.3 Create the message digest" for util in "${COMPRESSION[@]}" do - FILE="${OUTPUT}/${FILENAME}.tar.${util}" + if [[ "${util}" == zip ]]; then + FILE="${OUTPUT}/${FILENAME}.${util}" + else + FILE="${OUTPUT}/${FILENAME}.tar.${util}" + fi if [[ ! -f "${FILE}.${HASH}" ]]; then plain "Creating message digest: '${FILE}.${HASH}'" interactive From 7e5fbb9690e8500806e80c11f5dfd410ee8b767b Mon Sep 17 00:00:00 2001 From: NicoHood Date: Tue, 23 Jan 2018 15:49:50 +0100 Subject: [PATCH 14/19] Added support for multiple hash algorithms --- gpgit.sh | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/gpgit.sh b/gpgit.sh index c786fb2..9174df3 100755 --- a/gpgit.sh +++ b/gpgit.sh @@ -207,7 +207,7 @@ while true ; do shift ;; --hash) - HASH="${HASH}" + HASH+=("${2}") shift ;; --keyserver) @@ -268,8 +268,8 @@ KEYSERVER="${KEYSERVER:-"$(git config gpgit.keyserver || true)"}" KEYSERVER="${KEYSERVER:-"hkps://pgp.mit.edu"}" COMPRESSION=(${COMPRESSION[@]:-"$(git config gpgit.compression || true)"}) COMPRESSION=(${COMPRESSION[@]:-xz}) -HASH="${HASH:-"$(git config gpgit.hash || true)"}" -HASH="${HASH:-sha512}" +HASH=(${HASH[@]:-"$(git config gpgit.hash || true)"}) +HASH=(${HASH[@]:-sha512}) GPG_BIN="${GPG_BIN:-"$(git config gpg.program || true)"}" GPG_BIN="${GPG_BIN:-gpg2}" OUTPUT="${OUTPUT:-"$(git config gpgit.output || true)"}" @@ -294,7 +294,7 @@ declare -A GITHUB_ASSET # Check if dependencies are available # Dependencies: bash, gnupg2, git, tar, xz, coreutils, gawk, grep, sed # Optional dependencies: gzip, bzip2, lzip, file, jq, curl -check_dependency "${GPG_BIN}" "${COMPRESSION[@]}" "${HASH}sum" \ +check_dependency "${GPG_BIN}" "${COMPRESSION[@]}" "${HASH[@]/%/sum}" \ || die "Please check your \$PATH variable or install the missing dependencies." # Print initial welcome message with version information @@ -486,14 +486,17 @@ do else FILE="${OUTPUT}/${FILENAME}.tar.${util}" fi - if [[ ! -f "${FILE}.${HASH}" ]]; then - plain "Creating message digest: '${FILE}.${HASH}'" - interactive - "${HASH}sum" "${FILE}" > "${FILE}.${HASH}" - else - warning "Found existing message digest '${FILE}.${HASH}'." - fi - GITHUB_ASSET["${FILENAME}.tar.${util}.${HASH}"]="${FILE}.${HASH}" + for algorithm in "${HASH[@]}" + do + if [[ ! -f "${FILE}.${algorithm}" ]]; then + plain "Creating message digest: '${FILE}.${algorithm}'" + interactive + "${algorithm}sum" "${FILE}" > "${FILE}.${algorithm}" + else + warning "Found existing message digest '${FILE}.${algorithm}'." + fi + GITHUB_ASSET["${FILENAME}.tar.${util}.${algorithm}"]="${FILE}.${algorithm}" + done done #################################################################################################### From 521e1b3fa040a7a56103ce76eeb30b269508c362 Mon Sep 17 00:00:00 2001 From: NicoHood Date: Tue, 23 Jan 2018 15:56:13 +0100 Subject: [PATCH 15/19] Removed FILENAME variable --- gpgit.sh | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/gpgit.sh b/gpgit.sh index 9174df3..5ca8429 100755 --- a/gpgit.sh +++ b/gpgit.sh @@ -276,7 +276,6 @@ OUTPUT="${OUTPUT:-"$(git config gpgit.output || true)"}" OUTPUT="${OUTPUT:-"./gpgit"}" PROJECT="${PROJECT:-"$(git config gpgit.project || true)"}" PROJECT="${PROJECT:-"$(git config --local remote.origin.url | sed -n 's#.*/\([^.]*\)\.git#\1#p')"}" -FILENAME="${FILENAME:-"${PROJECT}-${TAG}"}" SIGNINGKEY="${SIGNINGKEY:-"$(git config gpgit.signingkey || true)"}" SIGNINGKEY="${SIGNINGKEY:-"$(git config user.signingkey || true)"}" TOKEN="${TOKEN:-"$(git config gpgit.token || true)"}" @@ -440,22 +439,22 @@ msg2 "4.1 Create compressed archive" for util in "${COMPRESSION[@]}" do if [[ "${util}" == zip ]]; then - FILE="${OUTPUT}/${FILENAME}.${util}" + FILE="${OUTPUT}/${PROJECT}-${TAG}.${util}" else - FILE="${OUTPUT}/${FILENAME}.tar.${util}" + FILE="${OUTPUT}/${PROJECT}-${TAG}.tar.${util}" fi if [[ ! -f "${FILE}" ]]; then plain "Creating new release archive: '${FILE}'" interactive if [[ "${util}" == zip ]]; then - git archive --format=zip --prefix "${FILENAME}/" "refs/tags/${TAG}" > "${FILE}" + git archive --format=zip --prefix "${PROJECT}-${TAG}/" "refs/tags/${TAG}" > "${FILE}" else - git archive --format=tar --prefix "${FILENAME}/" "refs/tags/${TAG}" | "${util}" --best > "${FILE}" + git archive --format=tar --prefix "${PROJECT}-${TAG}/" "refs/tags/${TAG}" | "${util}" --best > "${FILE}" fi else warning "Found existing archive '${FILE}'." fi - GITHUB_ASSET["${FILENAME}.tar.${util}"]="${FILE}" + GITHUB_ASSET["${PROJECT}-${TAG}.tar.${util}"]="${FILE}" done # Sign archive @@ -463,9 +462,9 @@ msg2 "4.2 Sign the archive" for util in "${COMPRESSION[@]}" do if [[ "${util}" == zip ]]; then - FILE="${OUTPUT}/${FILENAME}.${util}" + FILE="${OUTPUT}/${PROJECT}-${TAG}.${util}" else - FILE="${OUTPUT}/${FILENAME}.tar.${util}" + FILE="${OUTPUT}/${PROJECT}-${TAG}.tar.${util}" fi if [[ ! -f "${FILE}.asc" ]]; then plain "Creating GPG signature: '${FILE}.asc'" @@ -474,7 +473,7 @@ do else warning "Found existing signature '${FILE}.asc'." fi - GITHUB_ASSET["${FILENAME}.tar.${util}.asc"]="${FILE}.asc" + GITHUB_ASSET["${PROJECT}-${TAG}.tar.${util}.asc"]="${FILE}.asc" done # Creating hash @@ -482,9 +481,9 @@ msg2 "4.3 Create the message digest" for util in "${COMPRESSION[@]}" do if [[ "${util}" == zip ]]; then - FILE="${OUTPUT}/${FILENAME}.${util}" + FILE="${OUTPUT}/${PROJECT}-${TAG}.${util}" else - FILE="${OUTPUT}/${FILENAME}.tar.${util}" + FILE="${OUTPUT}/${PROJECT}-${TAG}.tar.${util}" fi for algorithm in "${HASH[@]}" do @@ -495,7 +494,7 @@ do else warning "Found existing message digest '${FILE}.${algorithm}'." fi - GITHUB_ASSET["${FILENAME}.tar.${util}.${algorithm}"]="${FILE}.${algorithm}" + GITHUB_ASSET["${PROJECT}-${TAG}.tar.${util}.${algorithm}"]="${FILE}.${algorithm}" done done From 597e945660621224d7d1180393f9d534ac8df5fe Mon Sep 17 00:00:00 2001 From: NicoHood Date: Tue, 23 Jan 2018 16:08:13 +0100 Subject: [PATCH 16/19] Initialize variables properly, remove environment variable support, as arrays are not supported and every config can be bassed as normal parameter --- gpgit.sh | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/gpgit.sh b/gpgit.sh index 5ca8429..910ae94 100755 --- a/gpgit.sh +++ b/gpgit.sh @@ -57,6 +57,7 @@ ${BOLD}Optional arguments:${ALL_OFF} -p, --pre-release Flag as Github pre-release. -n, --no-github Disable Github API functionallity. -i, --interactive Run in interactive mode, step-by-step. + --