Formato de key GitHub API OpenPGP

¿Cuál es el formatting del campo public_key devuelto por GitHub REST API v3 para GPG Keys ?

Por ejemplo, el command curl -v -H "Accept: application/vnd.github.cryptographer-preview" https://api.github.com/users/DurandA/gpg_keys devuelve las siguientes keys:

 pub dsa2048/403094DF 2017-09-03 [SC] [expires: 2018-09-03] uid [ultimate] Arnaud Durand <arnaud.durand@unifr.ch> sub elg2048/A454F414 2017-09-03 [E] [expires: 2018-09-03] 

De acuerdo con el documento API :

Los datos devueltos en el campo de respuesta public_key no son una key formateada GPG. Cuando un usuario carga una key GPG, se analiza y se extrae y almacena la key pública criptográfica. Esta key criptográfica es lo que las API devuelven en esta página. Esta key no es adecuada para ser utilizada directamente por progtwigs como GPG.

¿Es posible utilizar estas keys desde una CLI o mediante progtwigción?

La key devuelta es una key desnuda (RSA, DSA, …), que no puede ser utilizada por las implementaciones de OpenPGP sin "envolverlo" en un package de keys OpenPGP adecuado de nuevo. No recomendaría hacerlo, por qué debería poder build el package key de nuevo, no tendrá posibilidad de build firmas de enlace para subkeys e ID de usuario (esto requiere acceso a las keys privadas) y no tendrá éxito y buildá algo útil para eso.

El "model OpenPGP" de compartir keys en las comunidades está obteniendo una copy actual de la networking del server key (incluidas todas las certificaciones y revocaciones actuales) en lugar de confiar en versiones posiblemente desactualizadas en "ubicaciones de terceros" como GitHub. Esto es posible mediante huellas dactilares e identificadores de key que (más o less únicamente, ver más abajo) abordan keys específicas: no busque direcciones de correo electrónico, todos pueden crear keys con ID de usuario arbitrarias y los serveres de keys no realizan ninguna validation.

En su lugar, eche otro vistazo a la salida de API, que devuelve objects keyid para todas las keys (algunas para subkeys):

 [ { "id": 3, "primary_key_id": null, "key_id": "3262EFF25BA0D270", "public_key": "xsBNBFayYZ...", "emails": [ { "email": "mastahyeti@users.noreply.github.com", "verified": true } ], [snip] } ] 

Para usar dicha identificación de key, ejecute gpg --recv-keys <key-id> . Y envíe una nota a GitHub para seguir las mejores prácticas e include la huella digital completa:

Estos valores hexadecimales de 64 bits ( 3262EFF25BA0D270 en este ejemplo) son ID largos de key. Si bien cualquier reference programática a las keys siempre debe include la huella digital de la key, no las ID de key abreviadas , al less no proporcionan ID de key corta que sufren mucho en los ataques de colisión .