Após efetuar a leitura de um QR Code dinâmico, os aplicativos de cada participante devem seguir os passos abaixo:
Verificar se a URL que consta no QR Code é hospedada em site com criptografia TLS versão 1.2 ou superior, conforme seção 4.1;
Verificar se o certificado associado ao site está cadastrado no Pix, conforme seção 5.2, e efetuar as demais validações do certificado e respectiva cadeia de certificação;
Verificar se o site consta no campo CN (“Common Name”) ou SAN (“Subject Alternative Name”) do certificado;
Obter a chave pública e o certificado associado conforme informações do cabeçalho JWS e JWK Set;
Validar o certificado obtido no passo anterior, bem como sua cadeia de certificação, conforme definido na RFC 528020;
Validar a assinatura digital (JWSSignature) com a chave pública obtida anteriormente;
Se e somente se a assinatura estiver válida, o aplicativo deve processar os dados do payload JSON e realizar a transação;
Caso o nome do servidor (“host”) do site/URL relacionado ao QR Code termine com “-h”, um aplicativo de produção não deve proceder com a transação, uma vez que esse site/URL só deve ser usado em ambiente de homologação.
Cabe aos participantes implementarem mecanismos em seus aplicativos para otimizar o processo de verificação da assinatura digital do JWS. Por exemplo, é possível que o aplicativo armazene previamente um conjunto de thumbprints de certificados e
suas respectivas chaves públicas de forma que, ao ler o parâmetro x5t do JWS, o aplicativo já consiga saber qual chave utilizar para validar a assinatura digital, sem precisar acessar a URL definida no parâmetro jku.
Recomenda-se que, para facilitar esse processo de “carga prévia” de thumbprints e chaves públicas nos aplicativos, cada PSP mantenha um diretório “/.well-known/” 21 no seu site associado a QR Codes dinâmicos. Tal diretório pode conter, por exemplo, um documento host-meta22 que especifique as URLs dos seus JWK Sets (parâmetro jku do JWS). Assim, os demais participantes conseguirão programar seus aplicativos para carregar previamente os JWK Sets de determinado PSP, de forma a agilizar o processamento de transações via QR Codes dinâmicos quando o recebedor for aquele PSP.
Por fim, para garantir o não-repúdio das transações efetuadas por meio de QR Codes dinâmicos, recomenda-se que os participantes mantenham registros históricos das transações efetuadas, incluindo as respectivas estruturas JWS, certificados e chaves públicas relacionados a cada transação
20 O padrão de certificados X.509 é definido pela RFC 5280, disponível em https://tools.ietf.org/html/rfc5280). Nele, o processo de validação da cadeia de certificação é descrito em detalhes.
4.3. Validações a serem feitas pelos aplicativos
Após efetuar a leitura de um QR Code dinâmico, os aplicativos de cada participante devem seguir os passos abaixo:
Cabe aos participantes implementarem mecanismos em seus aplicativos para otimizar o processo de verificação da assinatura digital do JWS. Por exemplo, é possível que o aplicativo armazene previamente um conjunto de thumbprints de certificados e suas respectivas chaves públicas de forma que, ao ler o parâmetro x5t do JWS, o aplicativo já consiga saber qual chave utilizar para validar a assinatura digital, sem precisar acessar a URL definida no parâmetro jku.
Recomenda-se que, para facilitar esse processo de “carga prévia” de thumbprints e chaves públicas nos aplicativos, cada PSP mantenha um diretório “/.well-known/” 21 no seu site associado a QR Codes dinâmicos. Tal diretório pode conter, por exemplo, um documento host-meta22 que especifique as URLs dos seus JWK Sets (parâmetro jku do JWS). Assim, os demais participantes conseguirão programar seus aplicativos para carregar previamente os JWK Sets de determinado PSP, de forma a agilizar o processamento de transações via QR Codes dinâmicos quando o recebedor for aquele PSP.
Por fim, para garantir o não-repúdio das transações efetuadas por meio de QR Codes dinâmicos, recomenda-se que os participantes mantenham registros históricos das transações efetuadas, incluindo as respectivas estruturas JWS, certificados e chaves públicas relacionados a cada transação