Skip to content

Commit 06202de

Browse files
committed
Merge #964: Builder keys
bfbf19d download: update translation for Español (Matthew Zipkin) 9dc9a0f Update 2017-01-01-download.md (Robert Spigler) 30dca75 download: update verification procedure for linux (Matthew Zipkin) d801e32 download: update verification procedure for macOS (Matthew Zipkin) 0ef7c4f Update downlad signature verification with new builder keys location (Antoine Poinsot) Pull request description: Closes #945 Closes #957 (included) Closes #807 (included) Closes #878 download + verify procedure tested on macOS and Linux. I will go through it again on Windows tonight and add one more commit for that. ACKs for top commit: achow101: ACK bfbf19d Tree-SHA512: 8281dac8f4acdd43f4cdcaf16d5eef48040e3c14cd7f0ecbe25ced009b51aad536991486c4dd076eddc856b051923d8a92174f136db553bd931d08d3627da06a
2 parents dee2105 + bfbf19d commit 06202de

File tree

3 files changed

+77
-65
lines changed

3 files changed

+77
-65
lines changed

_includes/templates/download.html

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,20 @@
1616
{% capture SHORT_BUILDER_KEY %}
1717
{{example_builder_key | slice: 0, 4}} {{ example_builder_key | slice: 4, 4 }}..
1818
.{% endcapture %}
19-
{% capture BUILDER_KEYS_TXT_URL %}{{page.builder_keys_url}}/keys.txt{% endcapture %}
2019

2120
{% capture OBTAIN_RELEASE_KEY %}
2221
{{page.obtain_release_key |
2322
replace: '$(BUILDER_KEYS_URL)', page.builder_keys_url |
24-
replace: '$(EXAMPLE_BUILDERS_LINE)', page.example_builders_line |
25-
replace: '$(BUILDER_KEYS_TXT_URL)', BUILDER_KEYS_TXT_URL}}
23+
replace: '$(EXAMPLE_BUILDER_KEY_FILE)', page.example_builder_key_file}}
2624
{% endcapture %}
2725

2826
{% assign GPG_DOWNLOAD_URL = "https://www.gnupg.org/download/index.en.html#binary" %}
27+
{% assign GPG_VERIFY_KEYS_URL = "https://www.gnupg.org/gph/en/manual/x334.html" %}
2928
{% assign GPG_MACOS_DOWNLOAD_URL = "https://gpgtools.org/" %}
3029
{% assign GPG_WINDOWS_DOWNLOAD_URL = "https://gpg4win.org/download.html" %}
3130
{% assign GUIX_REPOSITORY_URL = "https://github.com/bitcoin-core/guix.sigs" %}
31+
{% assign GUIX_REPOSITORY_NAME = "guix.sigs" %}
32+
{% assign BUILDER_KEYS_DIR = "builder-keys" %}
3233
{% endcapture %}
3334
<link rel="alternate" type="application/rss+xml" href="/en/releasesrss.xml" title="Bitcoin Core releases">
3435
<div class="download">
@@ -157,7 +158,7 @@ <h2 style="text-align: center" id="{{page.verify_download | slugify}}">{{page.ve
157158

158159
<li>{{OBTAIN_RELEASE_KEY}}
159160

160-
<pre class="highlight"><code>{{GPG}}{{site.strings.gpg_keyserver}} --recv-keys {{example_builder_key}}</code></pre>
161+
<pre class="highlight"><code>{{GPG}} --import {{page.example_builder_key_file}}</code></pre>
161162

162163
<p>{{page.release_key_obtained}}</p></li>
163164

@@ -205,11 +206,13 @@ <h2 style="text-align: center" id="{{page.verify_download | slugify}}">{{page.ve
205206

206207
<li>{{OBTAIN_RELEASE_KEY}}
207208

208-
<pre class="highlight"><code>gpg{{site.strings.gpg_keyserver}} --recv-keys {{example_builder_key}}</code></pre>
209+
<pre class="highlight"><code>gpg --import {{page.example_builder_key_file}}</code></pre>
209210

210211
<p>{{page.release_key_obtained}}</p></li>
211212

212-
<li><p>{{page.choosing_builders | replace: '$(BUILDER_KEYS_URL)', page.builder_keys_url }}</p></li>
213+
<li>{{page.choosing_builders}}
214+
215+
<pre class="highlight"><code>git clone {{GUIX_REPOSITORY_URL}}</code><br><code>gpg --import {{GUIX_REPOSITORY_NAME}}/{{BUILDER_KEYS_DIR}}/*</code></pre></li>
213216

214217
<li>{{page.verify_checksums_file}}
215218

@@ -220,7 +223,9 @@ <h2 style="text-align: center" id="{{page.verify_download | slugify}}">{{page.ve
220223
<li><p>{{page.complete_line_saying}} <code>{{page.localized_gpg_primary_fingerprint}} {{SIGNING_KEY_FINGERPRINT_EXPLODED}}</code></p></li>
221224
</ol>
222225

223-
<p>{{page.gpg_trust_warning | replace: '$(SHORT_BUILDER_KEY)', SHORT_BUILDER_KEY }}</p></li>
226+
<p>{{page.gpg_trust_warning | replace: '$(SHORT_BUILDER_KEY)', SHORT_BUILDER_KEY }}
227+
<a href="{{GPG_VERIFY_KEYS_URL}}">{{page.verify_keys}}</a>
228+
</p></li>
224229
</ol>
225230
</details>
226231

@@ -247,11 +252,13 @@ <h2 style="text-align: center" id="{{page.verify_download | slugify}}">{{page.ve
247252

248253
<li>{{OBTAIN_RELEASE_KEY}}
249254

250-
<pre class="highlight"><code>gpg{{site.strings.gpg_keyserver}} --recv-keys {{example_builder_key}}</code></pre>
255+
<pre class="highlight"><code>gpg --import {{page.example_builder_key_file}}</code></pre>
251256

252257
<p>{{page.release_key_obtained}}</p></li>
253258

254-
<li><p>{{page.choosing_builders | replace: '$(BUILDER_KEYS_URL)', page.builder_keys_url }}</p></li>
259+
<li>{{page.choosing_builders}}
260+
261+
<pre class="highlight"><code>git clone {{GUIX_REPOSITORY_URL}}</code><br><code>gpg --import {{GUIX_REPOSITORY_NAME}}/{{BUILDER_KEYS_DIR}}/*</code></pre></li>
255262

256263
<li>{{page.verify_checksums_file}}
257264

@@ -262,8 +269,9 @@ <h2 style="text-align: center" id="{{page.verify_download | slugify}}">{{page.ve
262269
<li><p>{{page.complete_line_saying}} <code>{{page.localized_gpg_primary_fingerprint}} {{SIGNING_KEY_FINGERPRINT_EXPLODED}}</code></p></li>
263270
</ol>
264271

265-
<p>{{page.gpg_trust_warning | replace: '$(SHORT_BUILDER_KEY)', SHORT_BUILDER_KEY }}</p></li>
266-
272+
<p>{{page.gpg_trust_warning | replace: '$(SHORT_BUILDER_KEY)', SHORT_BUILDER_KEY }}
273+
<a href="{{GPG_VERIFY_KEYS_URL}}">{{page.verify_keys}}</a>
274+
</p></li>
267275
</ol>
268276
</details>
269277

_posts/en/pages/2017-01-01-download.md

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ permalink: /en/download/
44
type: pages
55
layout: page
66
lang: en
7-
version: 5
7+
version: 6
88

99
## These strings need to be localized. In the listing below, the
1010
## comment above each entry contains the English text. The key before the
@@ -80,45 +80,49 @@ verify_download_checksum: "Verify that the checksum of the release file is liste
8080
checksum_warning_and_ok: 'In the output produced by the above command, you can safely ignore any warnings and failures, but you must ensure the output lists "$(SHASUMS_OK)" after the name of the release file you downloaded. For example:'
8181

8282
example_builders_line: "E777299FC265DD04793070EB944D35F9AC3DB76A Michael Ford (fanquake)"
83-
builder_keys_url: "https://github.com/bitcoin/bitcoin/tree/master/contrib/builder-keys"
83+
builder_keys_url: "https://github.com/bitcoin-core/guix.sigs/tree/main/builder-keys"
84+
example_builder_key_file: "fanquake.gpg"
8485

8586
obtain_release_key: >
8687
<p>Bitcoin releases are signed by a number of individuals, each with a unique public
8788
key. In order to recognize the validity of signatures, you must use GPG to load these
8889
public keys locally. You can find many developer keys listed in the <a
89-
href='$(BUILDER_KEYS_URL)'>bitcoin/bitcoin repository</a>, which you can then load
90+
href='$(BUILDER_KEYS_URL)'>bitcoin-core/guix.sigs repository</a>, which you can then load
9091
into your GPG key database.</p>
9192
92-
<p>For example, given the <a href='$(BUILDER_KEYS_TXT_URL)'><code>
93-
builder-keys/keys.txt</code></a> line
94-
<code>$(EXAMPLE_BUILDERS_LINE)</code>you could load that
95-
key using this command:</p>
93+
<p>For example, you could load the key <a
94+
href='$(BUILDER_KEYS_URL)/$(EXAMPLE_BUILDER_KEY_FILE)'><code>
95+
builder-keys/$(EXAMPLE_BUILDER_KEY_FILE)</code></a> by downloading the file as <code>
96+
$(EXAMPLE_BUILDER_KEY_FILE)</code> and using this command:</p>
9697
9798
choosing_builders: >
9899
It is recommended that you choose a few individuals from this list who you find
99-
trustworthy and import their keys as above, or import all the keys per the
100-
instructions in the <a href="$(BUILDER_KEYS_URL)"><code>contrib/builder-key</code>
101-
README</a>. You will later use their keys to check the signature attesting to the
102-
validity of the checksums you use to check the binaries.
100+
trustworthy and import their keys as above. You will later use their keys to
101+
check the signature attesting to the validity of the checksums you use to check
102+
the binaries. You can import all keys at once by cloning the repo and importing the directory:
103103
104104
release_key_obtained: "The output of the command above should say that one key was imported, updated, has new signatures, or remained unchanged."
105105

106106
verify_checksums_file: "Verify that the checksums file is PGP signed by a sufficient amount of keys you trust and have imported into your keychain:"
107107

108108
check_gpg_output: >
109109
The command above will output a series of signature checks for each of the public
110-
keys that signed the checksums. Each signature will show the following text:
110+
keys that signed the checksums. Each valid signature will show the following text:
111111
112112
line_starts_with: "A line that starts with:"
113113
complete_line_saying: "A complete line saying:"
114114

115115
gpg_trust_warning: >
116-
The output from the verify command may contain warnings that the "key is not
116+
The output from the verify command may contain warnings that a public key is not available.
117+
As long as you have all the public keys of signers you trust, this warning can
118+
be disregarded. There may be additional warnings that a "key is not
117119
certified with a trusted signature." This means that to fully verify your download,
118120
you need to confirm that the signing key's fingerprint (e.g.
119121
<code>$(SHORT_BUILDER_KEY)</code>) listed in the second line above matches what
120122
you had expected for the signers public key.
121123
124+
verify_keys: "See the GNU handbook section on key management for more details."
125+
122126
localized_checksum_ok: "OK"
123127
localized_gpg_good_sig: "Good signature"
124128
localized_gpg_primary_fingerprint: "Primary key fingerprint:"
@@ -163,13 +167,11 @@ independently_reproducing: >
163167
cryptographically sign and publish the checksums of the binaries they
164168
generate.
165169
verifying_and_reproducing: >
166-
Verifying that several contributors you trust all signed the same
167-
checksums distributed in the release checksums file will provide you
168-
with additional assurances over the preceding basic verification
169-
instructions. Alternatively, reproducing a binary for yourself will
170-
provide you with the highest level of assurance currently available.
171-
For more information, visit the project's repository of
172-
170+
The preceding verification instructions will verify that several
171+
contributors you trust all signed the same checksums distributed in
172+
the release checksums file. Additionally, reproducing a binary for
173+
yourself will provide you with the highest level of assurance currently
174+
available. For more information, visit the project's repository of
173175
guix_repository: "trusted build process signatures"
174176

175177
key_refresh: "Refresh expired keys using:"

_posts/es/pages/2017-01-01-download.md

Lines changed: 36 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ permalink: /es/download/
44
type: pages
55
layout: page
66
lang: es
7-
version: 5
7+
version: 6
88
translated: true
99

1010
## These strings need to be localized. In the listing below, the
@@ -83,29 +83,29 @@ checksum_warning_and_ok: 'En la salida producida por el comando superior, puedes
8383

8484
example_builders_line: "E777299FC265DD04793070EB944D35F9AC3DB76A Michael Ford (fanquake)"
8585
builder_keys_url: "https://github.com/bitcoin/bitcoin/tree/master/contrib/builder-keys"
86+
example_builder_key_file: "fanquake.gpg"
8687

8788
obtain_release_key: >
88-
<p>Las versiones de Bitcoin están firmadas por varias personas, cada una de ellas con
89-
una clave pública única. Para reconocer la validez de las firmas, debes usar GPG para
90-
cargar estas claves públicas localmente. Puedes encontrar muchas claves de
91-
desarrolladores listadas en el <a
92-
href='$(BUILDER_KEYS_URL)'>bitcoin/bitcoin repository</a>, las cuales puedes entonces
93-
cargar en tu base de datos de claves GPG.</p>
94-
95-
<p>Por ejemplo, dada la línea <a href='$(BUILDER_KEYS_TXT_URL)'><code>
96-
builder-keys/keys.txt</code></a>
97-
<code>$(EXAMPLE_BUILDERS_LINE)</code> podrías cargar esa clave usando este
98-
comando:</p>
89+
<p>Las publicaciones de código son firmadas por varias personas, cada una de ellas
90+
identificada por una única clave pública. Para poder validar las firmas, debes utilizar
91+
GPG para cargar de forma local estas claves públicas. Encontrarás varias de las claves de
92+
diversos desarroladores en <a href='$(BUILDER_KEYS_URL)'>el repositorio bitcoin-core/guix.sigs.</a>
93+
Puedes utilizar esta lista para cargar las claves en tu base de datos de GPG.</p>
94+
95+
<p>Por ejemplo, puedes cargar la clave
96+
<a href='$(BUILDER_KEYS_URL)/$(EXAMPLE_BUILDER_KEY_FILE)'><code>builder-keys/$(EXAMPLE_BUILDER_KEY_FILE)</code></a>
97+
descargando el archivo <code>$(EXAMPLE_BUILDER_KEY_FILE)</code>
98+
y utilizando el siguiente comando:</p>
9999
100100
choosing_builders: >
101-
Sería recomendable que eligieras varias personas de esta lista que estimes
102-
confiables e importes sus claves según se indica arriba, o importes todas las
103-
claves según las instrucciones en el documento <a
104-
href="$(BUILDER_KEYS_URL)"><code>contrib/builder-key</code>
105-
README</a>. Después usarás sus claves para comprobar las firmas que atestiguan la
106-
validez de las checksums que usas para comprobar los programas binarios.
101+
Es recomendable que elijas a varias de las personas de esta lista que consideres de
102+
confianza e importes sus claves utilizando el método previamente explicado. Más
103+
adelante, utilizarás sus claves para validar las firmas que atestan la validez
104+
de las checksums que se proporcionan conjuntamente con los binarios del código.
105+
Puedes importar todas las claves de una sola vez simplemente clonando el repositorio
106+
e importando todo el directorio:
107107
108-
release_key_obtained: "La salida del comando superior debería decir que una clave ha sido importada, actualizada, si tiene nuevas firmas, o si permanece sin cambios."
108+
release_key_obtained: "La respuesta del comando debería comunicarte que una clave ha sido importada, actualizada, posee nuevas firmas, o no ha sido modificada."
109109

110110
verify_checksums_file: "Verifique que el fichero de checksums file está firmado PGP por la clave que firma la versión:"
111111

@@ -118,12 +118,15 @@ line_starts_with: "Una línea que comienza por:"
118118
complete_line_saying: "Una línea completa que dice:"
119119

120120
gpg_trust_warning: >
121-
La salida del comando de verificación podría contener alertas de que "la clave
122-
no está certificada con una firma confiable (key is not certified with a trusted
123-
signature)". Esto significa que para verificar completamente la descarga, necesitas
124-
confirmar que la huella de la clave firmante (p. ej.
125-
<code>$(SHORT_BUILDER_KEY)</code>) listada en la segunda línea superior coincide
126-
con lo que cabría esperar para la clave pública del firmante.
121+
La respues del comando de verificación puede contener un aviso notificando que
122+
la clave no está certificada con una firma de confianza ("key is not certified
123+
with a trusted signature"). Esto significa que para poder verificar tu descarga
124+
de forma completa, necesitas confirmar que la identificación de la clave de firmado
125+
(e.g. <code>$(SHORT_BUILDER_KEY)</code>) listada en la segunda línea de la respuesta
126+
del comando coincide con la clave pública del firmante que estabas esperando.
127+
Revisa la sección de gestión de claves del manual de GNU para más detalles.
128+
129+
verify_keys: "Consulte el manual de GNU para obtener más detalles."
127130

128131
localized_checksum_ok: "OK" # XXX
129132
localized_gpg_good_sig: "Good signature" # XXX
@@ -174,15 +177,14 @@ independently_reproducing: >
174177
criptográficamente y publican las checksums de los binarios que hayan
175178
generado.
176179
verifying_and_reproducing: >
177-
Verificar que varios contribuyentes en quienes confías han firmado
178-
todos las mismas checksums distribuídas en el fichero de checksums de
179-
la versión te proveerá de garantías adicionales de las instrucciones
180-
básicas de verificación anteriores. Alternativamente, reproducir un
181-
programa binario por ti mismo te proveerá con el mayor de los niveles
182-
de garantía actualmente disponibles. Para más información, visita
183-
el repositorio de
184-
185-
guix_repository: "firmas del proceso de build confiable"
180+
Las instrucciones de verificacion introducidas previamente verificaran que los
181+
contribuidores en los que confias han firmado las checksums que se encuentran
182+
en el archivo de checksums de la publicacion del codigo. De forma adicional,
183+
generar los archivos binarios por ti mismo te proporcionara el mas alto nivel
184+
de seguridad al que puedes aspirar. Para mas informacion, visita el repositorio
185+
del
186+
187+
guix_repository: "sistema de generacion de firmas de confianza"
186188

187189
key_refresh: "Refresque las claves expiradas usando:"
188190

0 commit comments

Comments
 (0)