> For the complete documentation index, see [llms.txt](https://docs.vaultid.com.br/workspace/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.vaultid.com.br/workspace/cloud/api/verificacao-da-validade-do-certificado.md).

# Verificação da validade do certificado

A verificação da validade do certificado utilizado para a assinatura é de responsabilidade do sistema que está requisitando a assinatura.

A Public API disponibiliza os recursos necessários para que o sistema integrador realize essa validação. O sistema pode autenticar o usuário e consultar os certificados digitais vinculados a ele, verificando as informações de validade antes de solicitar a assinatura.

Recomenda-se que o sistema integrador valide se o certificado selecionado está dentro do período de validade antes de realizar a requisição de assinatura.

Para que o usuário esteja apto a realizar uma assinatura digital, recomenda-se seguir o fluxo de descoberta e seleção do certificado antes de solicitar a assinatura.

## Fluxo para descoberta de usuário

O processo utiliza os seguintes endpoints:

* [**`/user-discovery`**](https://docs.vaultid.com.br/workspace/cloud/api/auxilio/localizacao-de-titular) — identifica se o usuário possui certificado digital;
* [**`/pwd_authorize`**](https://docs.vaultid.com.br/workspace/cloud/api/autenticacao-de-usuarios/autenticacao-em-sistemas-desktop) — realiza a autenticação do usuário;
* [**`/certificate-discovery`**](https://docs.vaultid.com.br/workspace/cloud/api/auxilio/recuperacao-de-certificado) — lista os certificados disponíveis para o usuário;
* [**`/signature`**](https://docs.vaultid.com.br/workspace/cloud/api/uso-de-certificado/assinatura-digital) — realiza a assinatura digital.

#### 1. Descoberta do usuário

Para um novo usuário ou para um usuário marcado anteriormente como **"sem certificado"**, consulte o endpoint [`/user-discovery`](https://docs.vaultid.com.br/workspace/cloud/api/auxilio/localizacao-de-titular).

A consulta deve ser realizada preferencialmente na nuvem BirdID:

[`https://api.birdid.com.br/`](https://api.birdid.com.br/)

Para usuários mais antigos que ainda possuem certificado na nuvem VaultID, a consulta pode ser realizada em:

[`https://apicloudid.vaultid.com.br/`](https://apicloudid.vaultid.com.br/)

Caso o usuário não possua certificado, o sistema deve orientá-lo quanto à emissão do certificado.

{% hint style="info" %}
**Recomendação:** a resposta negativa da consulta de descoberta pode ser armazenada em cache por um período entre **2 e 12 horas**, evitando consultas repetitivas.
{% endhint %}

Quando o usuário possuir um certificado, recomenda-se persistir essa informação. As consultas futuras indicarão que o usuário possui certificado e também em qual nuvem ele está disponível (**BirdID ou VaultID**).

#### 2. Autenticação do usuário

Após confirmar que o usuário possui certificado, solicite o OTP e realize a autenticação por meio do endpoint [`/pwd_authorize`](https://docs.vaultid.com.br/workspace/cloud/api/autenticacao-de-usuarios/autenticacao-em-sistemas-desktop).

Para operações de assinatura, recomenda-se utilizar:

* **`scope`:** `signature_session`
* **`lifetime`:** recomendamos **13 horas** para profissionais da saúde.

O `access_token` obtido deve ser armazenado de forma segura e criptografada durante o período de validade da sessão.

#### 3. Consulta dos certificados

Após a autenticação, o sistema deve consultar os certificados disponíveis para o usuário.

A consulta pode ser realizada por meio da API:

[**`/certificate-discovery`**](https://docs.vaultid.com.br/workspace/cloud/api/auxilio/recuperacao-de-certificado)

Nesse endpoint, o certificado é retornado no formato **PEM (Base64)**. Para realizar a verificação das informações do certificado, o sistema integrador deve realizar o **parse do certificado X.509**.

A consulta pode ser realizada utilizando:

* o `access_token` do usuário; ou
* o `access_token` da aplicação.

#### 4. Verificação da validade do certificado

A partir do certificado obtido, o sistema deve verificar se o certificado está dentro do período de validade antes de prosseguir com a assinatura.

A validação deve considerar as informações de validade do certificado X.509, verificando se a data atual está compreendida entre a data de início e a data de término de sua validade.

{% hint style="danger" %}
a verificação da validade do certificado, para determinar se o sistema deve prosseguir com a solicitação de assinatura, é de responsabilidade do **sistema que está requisitando a assinatura**.
{% endhint %}

A Public API disponibiliza os recursos necessários para que essa verificação seja realizada. O sistema integrador deve utilizar essas informações para garantir que o certificado selecionado esteja válido antes de enviar a solicitação para o endpoint [`/signature`](https://docs.vaultid.com.br/workspace/cloud/api/uso-de-certificado/assinatura-digital).

Caso o certificado esteja **expirado** ou ainda **não esteja válido**, o sistema deve interromper o fluxo e orientar o usuário sobre a situação do certificado.

#### 5. Seleção do certificado

Após consultar e validar os certificados disponíveis, o sistema deve selecionar o certificado que será utilizado na assinatura.

Caso o usuário possua mais de um certificado, recomenda-se permitir que ele **selecione qual certificado deseja utilizar**.

A opção selecionada pode ser persistida pelo sistema, utilizando o **`alias` do certificado**.

Caso o `certificate_alias` não seja informado na solicitação de assinatura, será utilizado o certificado padrão definido pelo usuário. Quando não houver uma seleção realizada pelo usuário no aplicativo, será selecionado o certificado mais recente.

#### 6. Usuário apto a assinar

Após:

1. confirmar que o usuário possui certificado;
2. autenticar o usuário;
3. consultar os certificados disponíveis;
4. verificar a validade do certificado;
5. selecionar o certificado que será utilizado;

o usuário estará **apto a realizar a assinatura digital**.

Nesse momento, o sistema poderá prosseguir com a solicitação de assinatura por meio do endpoint [`/signature`](https://docs.vaultid.com.br/workspace/cloud/api/uso-de-certificado/assinatura-digital).

{% hint style="danger" %}
A consulta de um certificado não deve ser considerada, por si só, uma confirmação de que o certificado está válido para assinatura. O sistema integrador deve realizar a verificação da validade do certificado antes de solicitar a assinatura.
{% endhint %}
