veil

Scarica le chiavi pubbliche di altri sistemi di una scheda come file

Dai le chiavi pubbliche SSH, minisign e OpenPGP di una persona a git, ssh-keygen, un server, minisign o gpg: tutte, o una sola per impronta.

GET/u/{card}/keys.txt
Accesso
Pubblico; chiave API facoltativa
Client
Fetch dal browser supportato

Altri indirizzi#

  • /u/{card}.keys

Parametri#

NomePosizioneSignificato
cardObbligatorioPercorsoIl numero permanente della scheda di una persona o il suo alias corrente.
formatQueryallowed_signers per git e ssh-keygen -Y verify, authorized_keys (il predefinito) per ~/.ssh/authorized_keys di un server, minisign per minisign -V -p, pgp per gpg --import.
fpQueryFacoltativo. Tieni una chiave sola: la sua impronta come la stampano ssh-keygen -l, minisign o gpg (SHA256:…, l’ID di 16 cifre di minisign, le 40 cifre esadecimali OpenPGP), o la chiave pubblica intera. Scrivi il + di un’impronta SSH come %2B.
keyQueryFacoltativo. Un altro nome di fp; indicane uno dei due.

Esempi di richiesta#

cURL
curl -fsS 'https://veil.rip/u/1/keys.txt?format=allowed_signers' > allowed_signers
git config gpg.ssh.allowedSignersFile "$PWD/allowed_signers"
cURL
curl -fsS https://veil.rip/u/1.keys >> ~/.ssh/authorized_keys
cURL
curl -fsS 'https://veil.rip/u/1/keys.txt?format=pgp' | gpg --import
cURL
curl -fsS 'https://veil.rip/u/1/keys.txt?format=allowed_signers&fp=SHA256:yKGK3rJbLA9EAbnKwNXuQvLvsvT0WRrii16h6sF9Rwk' > allowed_signers

Risposta#

HTTP 200text/plain

Un file di testo. Le righe di commento dicono la scheda, quando il server l’ha letta e dove si controlla ogni prova; poi una riga per chiave nel formato scelto. Con format=pgp i commenti sono le righe Comment di un solo blocco armato che tiene tutte le chiavi OpenPGP della scheda.

Intestazioni della risposta#

IntestazioneValoreSignificato
Content-Typetext/plain; charset=utf-8Usa il tipo dichiarato per scegliere come leggere il corpo.
Cache-Controlno-cacheRichiedilo ogni volta: una chiave tolta esce subito dal file.

Cosa verificare#

Controlla la prova di ogni chiave sulla scheda prima di fidarti del file per qualcosa che conta: la sfida nomina la scheda, la chiave di dispositivo e un checkpoint controfirmato, e la firma deve tornare con la chiave.

Note d’uso#

  • Il file è la parola del server. La prova di possesso di ogni chiave si controlla nel browser di chi legge sulla scheda, o dal tuo client da state.external della scheda in JSON.
  • allowed_signers nomina ogni chiave con le email verificate della scheda e veil.rip/u/<n>, senza restrizione di namespace, così valgono anche le firme dei commit (namespace git).
  • format=pgp dà un blocco di chiavi pubbliche armato: righe Comment che nominano la scheda, l’ora in cui il server l’ha letta e dove si controllano le prove, poi le chiavi OpenPGP della scheda una dopo l’altra e la riga del CRC24. Una scheda senza chiavi OpenPGP dà solo le righe di commento, ognuna con #. gpg salta una chiave senza user ID.
  • GET /u/{card}.keys è lo stesso file all’indirizzo che github.com/<utente>.keys ha reso familiare: authorized_keys senza parametri, gli stessi format, fp e key, le stesse intestazioni e gli stessi errori. Un alias non contiene mai un punto, quindi non è mai la pagina di una scheda.
  • Con fp il file tiene solo quella chiave, dopo le stesse righe di commento; la prima nomina la chiave. Una chiave che la scheda non ha più è un 404.

Errori#

Gli errori API restituiscono un oggetto error. Usa error.code nella logica del programma; error.message è un testo inglese per le persone e può cambiare. Guida a risposte ed errori

HTTPCodiceSignificato e cosa fare
400invalid_parameter

Il formato non è allowed_signers, authorized_keys, minisign o pgp; fp non è un’impronta né una chiave pubblica; fp e key sono diversi; o il formato non può portare il tipo della chiave indicata da fp (il messaggio dice il formato che può).

Ometti format per authorized_keys o indica uno dei quattro, e chiedi una chiave nel formato che il messaggio indica.

404not_found

Nessuna scheda di persona ha questo numero o alias, o la scheda non ha una chiave con l’impronta indicata da fp.

Controlla la scheda, e leggi le sue chiavi attuali dalla scheda o dal file senza fp.

410erased

La scheda esisteva ed è stata cancellata o rimossa. La risposta contiene anche la ricevuta pubblica di cancellazione.

Smetti di usare questa scheda come autorità corrente. Conserva soltanto la ricevuta pubblica se serve.

Quando usi una chiave API facoltativa
HTTPCodiceSignificato e cosa fare
401invalid_api_key

La credenziale Bearer è malformata, sconosciuta, scaduta o revocata.

Usa una chiave attiva. Per l’accesso pubblico anonimo, rimuovi del tutto Authorization. Credenziali non valide non attivano automaticamente l’accesso anonimo.

403api_key_scope

La chiave API non ha il permesso read o verify, oppure l’endpoint non accetta chiavi Bearer.

Usa il permesso corretto. Le modifiche alle schede e la gestione delle chiavi richiedono una firma del dispositivo.

403api_key_suspended

Questa chiave API è sospesa.

Chiedi allo staff di ripristinarla; un’altra chiave non rimuove la sospensione dell’account.

403developer_suspended

L’account API del titolare è sospeso oppure la scheda titolare non è disponibile.

Controlla l’account titolare e le restrizioni dello staff. Creare un’altra chiave non aggira la sospensione.

Errori comuni delle richieste
HTTPCodiceSignificato e cosa fare
429rate_limited

È stato superato un limite anonimo, delle richieste firmate o della chiave API.

Attendi almeno i secondi indicati da Retry-After. Condividi coda e budget dei tentativi tra i tuoi processi.

500internal_error

Si è verificato un errore imprevisto del server. I dettagli interni non vengono restituiti.

Riprova le letture con attese crescenti e un limite. Controlla l’esito delle scritture prima di inviare una nuova operazione firmata.

503busy

L’applicazione ha raggiunto un limite temporaneo di concorrenza o del database.

Attendi i secondi indicati da Retry-After e riprova con attese crescenti e un limite.