← Voltar ao blogReact Native

Meu primeiro aplicativo na Europa

Artigo do arquivo, publicado em 2022. Ferramentas e informações refletem a época da publicação.

Hey Dev, tudo bem contigo? Hoje venho compartilhar uma experiência bem bacana que pude vivenciar em minha nova aventura.

Recentemente me mudei do Brasil para Luxemburgo, e tenho vivido ótimas experiências e quero compartilhar contigo uma que me ajudou como portfólio que resolve um problema real.

Aqui em Luxemburgo existe um certificado de vacinação (UEDCC - Certificado Digital Covid da União Europeia) que é exigido nos estabelecimentos (restaurantes, bares, shows, etc...) e cada momento da pandemia e/ou tipo de ambiente possuem regras diferentes.

As regras são chamadas de 3G, 2G e 2G+ (Na ordem de dificuldade), veja com detalhes as regras nesses links:

Para validar isso, o governo precisou criar um App Offline First para ler o QRCode de cada certificado e validar se:

  • O Certificado possuí uma assinatura digital válida
  • O Certificado não foi revogado (Cancelado)
  • O Certificado não foi adulterado
  • Está dentro da regra vigente

Bom, em alguns momentos eu percebi que o App do governo fecha sozinho ou trava a ponto de não fazer as validações, e com isso os estabelecimentos nos liberaram sem fazer as validações necessárias.

Dito isso, eu resolvi entender como funcionavam as validações dessas regras dentro do APP que foi feito em ionic, para tentar replicar exatamente as mesmas validações usando React Native.

et voilá

O Primeiro passo foi entender como o App funcionava, e com um pouco de tempo pude perceber que:

  • O App foi escrito em ionic, o que me ajudou, pois já usei bastante ionic no passado.
  • Lendo o código JS gerado, consegui identificar as validações que são feitas em:
    • Base45
    • CBOR
    • COSE
    • Assinatura PEM
  • Existe uma API oficial que só é acessível com uma chave .p12 que nos fornece:
    • Certificados com chave publica para validar a assinatura dos certificados de vacinação
    • Lista de certificados revogados
      • Encryptado em SHA256

Com todas essas informações, eu comecei a criar o layout do novo Aplicativo e escrever todas essas validações obrigatórias. Por fim, conseguimos chegar ao resultado desejado.

E de quebra, adicionei algumas funcionalidades que o App oficial não possuí, sendo elas:

  • 5 idiomas disponíveis
  • Salvar os meus certificados offline

Veja o resultado final:

Publicação Este aplicativo não pode ser publicado por usar dados sensíveis relacionados a saúde, segundo a Apple e Google.
Pedro Entringer

Consultor de tecnologia, desenvolvedor e criador do Meu Rastreio.

Continue explorando.

Automatizando tarefas com o WhatsApp

Uma experiência prática de automação com Node.js e WhatsApp: integração, comandos e tarefas do dia a dia.

10 min

Criando seu plugin para Google Chrome

Um guia prático para criar uma extensão do Google Chrome, explorar menus de contexto e conectar recursos do navegador.

5 min
VAMOS TIRAR O PRÓXIMO PASSO DO PAPEL

Seu projeto pode ir mais longe.

Me conte onde você está. Vamos entender o que vem depois.

Conversar sobre meu projeto