Next: URL primaria, Previous: Declaración de dependencias de canales, Up: Canales [Contents][Index]
Como hemos visto previamente, Guix se asegura de que el código fuente que obtiene de los canales proviene de desarrolladoras autorizadas. Como autora del canal, es necesario que especifique la lista de desarrolladoras autorizadas en el archivo .guix-authorizations del repositorio Git del canal. Las reglas para la verificación son simples: cada revisión debe firmarse con una de las claves enumeradas en el archivo .guix-authorizations de la revisión o revisiones anteriores14 El archivo .guix-authorizations tiene está estructura básica:
;; Archivo '.guix-authorizations' de ejemplo. (authorizations (version 0) ;versión de formato actual (("AD17 A21E F8AE D8F1 CC02 DBD9 F8AE D8F1 765C 61E3" (name "alicia")) ("CABB A931 C0FF EEC6 900D 0CFB 090B 1199 3D9A EBB5" (name "carlos")) ("2A39 3FFF 68F4 EF7A 3D29 12AF 68F4 EF7A 22FB B2D5" (name "rober"))))
Cada huella va seguida de pares clave/valor opcionales, como en el ejemplo siguiente. Actualmente se ignoran dichos pares.
Estas reglas de verificación dan lugar a un problema “del huevo y la gallina”: ¿cómo se verifica la primera revisión? En relación con esto: ¿cómo se gestionan los canales cuyo repositorio tiene en su historia revisiones sin firmar y carece del archivo .guix-authorizations? ¿Y cómo creamos un nuevo canal separado en base a un canal ya existente?
Channel introductions answer these questions by describing the first commit
of a channel that should be authenticated. The first time a channel is
fetched with guix pull
or guix time-machine
, the command
looks up the introductory commit and verifies that it is signed by the
specified OpenPGP key. From then on, it authenticates commits according to
the rule above. Authentication fails if the target commit is neither a
descendant nor an ancestor of the introductory commit.
De manera adicional, su canal debe proporcionar todas las claves públicas
que hayan sido mencionadas en .guix-authorizations, almacenadas como
archivos .key, los cuales pueden ser binarios o tener “armadura
ASCII”. De manera predeterminada, esos archivos .key se buscan en la
rama llamada keyring
pero puede especificar una rama diferente en
.guix-channel
de este modo:
(channel
(version 0)
(keyring-reference "mi-rama-de-claves"))
En resumen, como autora de un canal, hay tres cosas que debe hacer para permitir que las usuarias verifiquen su código:
gpg --export
y almacenarlas en
archivos .key, de manera predeterminada en una rama llamada
keyring
(recomendamos que sea una rama huérfana).
Antes de que suba los cambios a su repositorio Git público puede ejecutar
guix git-authenticate
para verificar que ha firmado todas las
revisiones que va a subir con una clave autorizada:
guix git authenticate revisión firma
donde revisión y firma son la presentación de su canal.
See Invocación de guix git authenticate
, para obtener más detalles.
Publicar un canal firmado requiere disciplina: cualquier error, como una revisión sin firmar o una revisión firmada por una clave no autorizada, evitará que las usuarias obtengan nuevas versiones de su canal—bueno, ¡ese es principalmente el objetivo de la verificación! Preste especial atención a la mezcla de ramas: las revisiones de mezcla se consideran auténticas únicamente en caso de que la clave que firma esté presente en el archivo .guix-authorizations de ambas ramas.
Las revisiones en Git forman un grafo acíclico dirigido (DAG). Cada revisión puede tener cero o más antecesores; las revisiones “normales” tienen un antecesor, y las revisiones de mezcla tienen dos antecesores. Lea el artículo en inglés Git for Computer Scientists para una buena introducción.
Next: URL primaria, Previous: Declaración de dependencias de canales, Up: Canales [Contents][Index]