Skip to content

Commit

Permalink
Add script to sign arbitrary files using the key stored in Secrets Ma…
Browse files Browse the repository at this point in the history
…nager
  • Loading branch information
Rico Huijbers committed May 30, 2018
1 parent 252c502 commit a809b67
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions sign.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/bin/bash
set -euo pipefail

if [[ "${1:-}" == "" ]]; then
echo "Usage: sign.sh FILE" >&2
exit 1
fi


tmpdir=$(mktemp -d)
trap "shred $tmpdir/* && rm -rf $tmpdir" EXIT

SECRET=CDK/SigningKey

# Use secrets manager to obtain the key and passphrase into a JSON file
echo "Retrieving key..." >&2
aws --region us-east-1 secretsmanager get-secret-value --secret-id "$SECRET" --output text --query SecretString > $tmpdir/secret.txt
passphrase=$(python -c "import json; print(json.load(file('$tmpdir/secret.txt'))['Passphrase'])")

echo "Importing key..." >&2
gpg --homedir $tmpdir --import <(python -c "import json; print(json.load(file('$tmpdir/secret.txt'))['PrivateKey'])")

echo "Signing $1..." >&2
echo $passphrase | gpg \
--homedir $tmpdir \
--local-user aws-cdk@amazon.com \
--batch --yes \
--passphrase-fd 0 \
--output $1.sig \
--detach-sign $1

echo "Done!" >&2

0 comments on commit a809b67

Please sign in to comment.