@@ -62,29 +62,33 @@ find_version_from_git_tags() {
62
62
63
63
# Get the list of GPG key servers that are reachable
64
64
get_gpg_key_servers () {
65
- declare -A keyservers_curl_map=(
66
- [" hkp://keyserver.ubuntu.com" ]=" http://keyserver.ubuntu.com:11371"
67
- [" hkp://keyserver.ubuntu.com:80" ]=" http://keyserver.ubuntu.com"
68
- [" hkps://keys.openpgp.org" ]=" https://keys.openpgp.org"
69
- [" hkp://keyserver.pgp.com" ]=" http://keyserver.pgp.com:11371"
70
- )
71
-
72
65
local curl_args=" "
73
66
local keyserver_reachable=false # Flag to indicate if any keyserver is reachable
74
67
75
68
if [ ! -z " ${KEYSERVER_PROXY} " ]; then
76
69
curl_args=" --proxy ${KEYSERVER_PROXY} "
77
70
fi
78
71
79
- for keyserver in " ${! keyservers_curl_map[@]} " ; do
80
- local keyserver_curl_url=" ${keyservers_curl_map[${keyserver}]} "
81
- if curl -s ${curl_args} --max-time 5 ${keyserver_curl_url} > /dev/null; then
72
+ test_keyserver () {
73
+ local keyserver=" $1 "
74
+ local keyserver_curl_url=" $2 "
75
+ if curl -s ${curl_args} --max-time 5 " ${keyserver_curl_url} " > /dev/null; then
82
76
echo " keyserver ${keyserver} "
83
77
keyserver_reachable=true
84
78
else
85
79
echo " (*) Keyserver ${keyserver} is not reachable." >&2
86
80
fi
87
- done
81
+ }
82
+
83
+ # Explicitly test these in order because Bash v4.4.20 (Ubuntu Bionic)
84
+ # enumerates associative array keys in a different order than Bash v5
85
+ test_keyserver " hkp://keyserver.ubuntu.com" " http://keyserver.ubuntu.com:11371"
86
+ test_keyserver " hkp://keyserver.ubuntu.com:80" " http://keyserver.ubuntu.com"
87
+ test_keyserver " hkp://keyserver.pgp.com" " http://keyserver.pgp.com:11371"
88
+ # Test this server last because keys.openpgp.org strips user IDs from keys unless
89
+ # the owner gives permission, which causes gpg in Ubuntu Bionic to reject the key
90
+ # (https://github.com/devcontainers/features/issues/1055)
91
+ test_keyserver " hkps://keys.openpgp.org" " https://keys.openpgp.org"
88
92
89
93
if ! $keyserver_reachable ; then
90
94
echo " (!) No keyserver is reachable." >&2
0 commit comments