Add Anouk. Remove Savvy and Andrew"
[fsf-keyring.git] / fsf-keyring.sh
CommitLineData
3fc145d4 1#!/bin/bash
3e4c32c3 2
725b460c
IK
3# Usage: $0 [-r]
4# -r means dont refresh keys from keyservers
d27f8055
IK
5#
6# See https://gluestick.office.fsf.org/checklists/person/crypto-keys/ for
7# upload command.
725b460c 8
e9702c48
IK
9shopt -s inherit_errexit 2>/dev/null ||: # ignore fail in bash < 4.4
10set -eE -o pipefail
11trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
3e4c32c3 12
098d6762
AE
13dos_attack_bytes=1000000
14
227fa583
IK
15refresh-gpg-key() {
16
17 key=$1
18
19 error=999
43ec6c3d 20 # johns is the only one in keyring.debian.org at this time.
1e2b0c22
MM
21 for keyserver in keyring.debian.org keyserver.ubuntu.com pgp.mit.edu; do
22 echo "Trying $keyserver..."
227fa583
IK
23 set +e
24 cmd="gpg --keyserver $keyserver --recv-keys $key"
1e2b0c22 25 # Keyservers are not very reliable, so retry a few times.
227fa583
IK
26 for x in {1..3}; do
27 $cmd &>/dev/null
28 ret=$?
55a1be4b
IK
29 if (( ret == 0 )); then
30 break; fi
227fa583
IK
31 sleep 1
32 done
33 set -e
34 error=$(( ret < error ? ret : error )) # use lowest return
35 done
36
37 return $error
38}
3e4c32c3 39
1f9413db 40check-sig-dos() {
daa8fa96
AE
41 if (( "$(stat -c %s "$1")" > "$dos_attack_bytes" )) ; then
42 echo -e "\n\nerror: keyring is very large. did we get a signature DoS attack?\n\n"
43 exit 1
44 fi
1f9413db
AE
45}
46
e72d434b
IK
47refresh=true
48if [[ $1 == -r ]]; then
49 refresh=false
50fi
51
11077deb 52KEYS+="67819B343B2AB70DED9320872C6464AF2A8E4C02 " #rms
3e4c32c3
IK
53KEYS+="A4626CBAFF376039D2D7554497BA9CE761A0963B " #johns
54KEYS+="759C0A4A39A02A079712FB5061B826E87A80C8D6 " #johnh
403f4f95 55KEYS+="8556112E9B88B1A8B3E3631B58A39239D50484E8 " #jeanne
3e4c32c3 56KEYS+="B125F60B7B287FF6A2B7DF8F170AF0E2954295DF " #ian
f4caeebe 57KEYS+="36C9950D2F68254ED89C7C03F9C13A10581AB853 " #craigt
3e4c32c3 58KEYS+="2C31130BF7D5A459AFF2A3F3C9DFFE4A33AA52D9 " #knauth
06ea525c 59KEYS+="43372794C8ADD5CA8FCFFA6CD03759DAB600E3C0 " #michael
47309b71 60KEYS+="B102017CCF698F79423EF9CC069C04D206A59505 " #zoe
7c4333a9 61KEYS+="7CCC7ECD3D78EB384F6C02C8966951617A149C73 " #gregf
7eb9830e 62KEYS+="2E0ECE75F8162B407D666767879738E6D6440D57 " #devinu
bedfe658 63KEYS+="005D03724A11C08A5A353D2C906DB6E398AA6CF6 " #miriam
3f491138 64KEYS+="2D1304056F4F061DADEAE299A2C76C5425EF14E8 " #dawn
43ec6c3d
MM
65KEYS+="476B712A9FA8788EDA2089F78B656B4E5A98CE74 " #anouk
66#KEYS+="2985A29A7ECF1679063A4D5659EB02F5619B3C7E " #krzyzstof # Needs verbal confirmation and contract.
f8faa2d3 67KEYS+="D86097B5E291BA771FA64D357014A6BE08494155" #odile
7c4333a9 68
f05e6c9d
AE
69if [[ -e fsf-keyring.gpg ]] ; then
70 check-sig-dos fsf-keyring.gpg
71 gpg --import fsf-keyring.gpg
72else
73 gpg --armor --export $KEYS > fsf-keyring.gpg
74fi
3e4c32c3
IK
75
76for KEY in $KEYS ; do
e72d434b 77 if $refresh; then
1e2b0c22 78 echo "Key: $KEY"
f70fa6cd 79 refresh-gpg-key $KEY || (echo "unable to download $KEY" >&2 ; exit 1)
e72d434b 80 fi
3e4c32c3
IK
81done
82
2394c187 83gpg --export $KEYS > key-export
1f9413db 84check-sig-dos key-export
098d6762 85mv key-export fsf-keyring.gpg
55a1be4b 86
43ec6c3d 87# Clean up
cc77691c 88rm -f fsf-keyring.gpg.asc ./fsf-keyring.gpg~ key-export
43ec6c3d
MM
89
90echo -e "You will now sign the keyring. Prepare your GPG password.\n"
91read -p "Press any key to continue..." -n1 -s
5f942ca3 92gpg --armor --detach-sign ./fsf-keyring.gpg