Início rápido

Lantern em cinco minutos

Três comandos na biblioteca de demonstração, três num servidor seu e todo o caminho numa figura.

Ler a biblioteca de demonstração

A demonstração é uma biblioteca estática servida com este site: nada a instalar, nenhuma conta.

  1. Ler o seu handshake

    Cada biblioteca diz num só documento o que é, que funcionalidades oferece e quais são os seus limites.

    curl -s https://lantern.boreale.dev/demo/lantern.json
  2. Listar as suas apps

    Uma página de apps de uma plataforma: cada uma traz o seu tamanho, o seu sha256 e o caminho do seu ficheiro.

    curl -s https://lantern.boreale.dev/demo/v1/apps/vita/pages/1.json
  3. Transferir e verificar

    O SHA-256 do ficheiro é o que a app anunciou. Um cliente recusa o que não corresponde.

    curl -s https://lantern.boreale.dev/demo/v1/blobs/sha256/fa75492f7b78cad7ca4044e8fb548ac67bfd7fbf05242ceecb29ebe492218a0d | sha256sum

Mais testes, incluindo bibliotecas feitas para quebrar um cliente: Biblioteca de demonstração

Falar com um servidor seu

Um servidor com contas pede primeiro que o dispositivo emparelhe. Estas chamadas usam um endereço inventado.

  1. Encontrá-lo

    Numa rede local, um cliente descobre-o com um datagrama UDP; com um endereço, lê o handshake num caminho conhecido.

    curl -s https://shelf.example.org/.well-known/lantern
  2. Emparelhar

    O servidor responde com um código a introduzir noutro dispositivo, onde o proprietário inicia sessão e aprova.

    curl -s -X POST https://shelf.example.org/api/lantern/v1/pairing \
      -H 'Content-Type: application/json' \
      -d '{"schema":1,"device":"My console","scopes":["library"]}'
  3. Chamá-lo

    Com o token recebido, como bearer; um dispositivo emparelhado com chave assina também cada pedido.

    curl -s https://shelf.example.org/api/lantern/v1/apps?page_size=5 \
      -H 'Authorization: Bearer et_…'

Todo o caminho

Percorra-o passo a passo: cada pressão ilumina um passo e atenua os restantes.

DispositivoServidorTelemóvel do utilizadorUDP 47115 {"lantern":"discover"}{"lantern":"server", uid, port, base}Apenas uma pista: a confiança vem do TLS e do emparelhamentoGET /.well-known/lanternhandshake: uid, versions,platforms, features, limitsEmparelhamento (§ 5.2)POST /v1/pairing{device, scopes, key}code KQ4M-7TXD, verify_complete,poll, intervalMostra o código, um QR codee a impressão digital curta da chaveAbre a ligação, inicia sessão,compara a impressão digital e aprovaGET <poll> (every interval)202 … then 200 {token: et_…}or 410 gone · 429 slow_downFixa a chave do servidorpara este uid (§ 5.3)Depois, em cada chamadaAuthorization: Bearer et_…+ request signature200 · 401 · 403
Da descoberta de um servidor à primeira chamada assinada
  1. Dispositivo → Servidor: UDP 47115 {"lantern":"discover"}
  2. Servidor → Dispositivo: {"lantern":"server", uid, port, base}
  3. Apenas uma pista: a confiança vem do TLS e do emparelhamento
  4. Dispositivo → Servidor: GET /.well-known/lantern
  5. Servidor → Dispositivo: handshake: uid, versions, platforms, features, limits
  6. Emparelhamento (§ 5.2)
  7. Dispositivo → Servidor: POST /v1/pairing {device, scopes, key}
  8. Servidor → Dispositivo: code KQ4M-7TXD, verify_complete, poll, interval
  9. Mostra o código, um QR code e a impressão digital curta da chave
  10. Telemóvel do utilizador → Servidor: Abre a ligação, inicia sessão, compara a impressão digital e aprova
  11. Dispositivo → Servidor: GET <poll> (every interval)
  12. Servidor → Dispositivo: 202 … then 200 {token: et_…} or 410 gone · 429 slow_down
  13. Fixa a chave do servidor para este uid (§ 5.3)
  14. Depois, em cada chamada
  15. Dispositivo → Servidor: Authorization: Bearer et_… + request signature
  16. Servidor → Dispositivo: 200 · 401 · 403

Especificação