Requisição de validação

Formatos e tipo de assinatura

Assinatura para qualquer tipo de arquivo (Padrão CMS/CAdES)

  • CMS attached - Padrão internacional, com bytes assinados embutidos

  • CMS detached - Padrão internacional, com bytes (conteúdo) separado da assinatura

  • CAdES-AD_RB attached - Padrão ICP-Brasil, com bytes assinados embutidos

  • CAdES-AD_RB detached - Padrão ICP-Brasil, com bytes (conteúdo) separado da assinatura

  • CAdES-AD_RT attached - Padrão ICP-Brasil (c/ carimbo do tempo), com bytes assinados embutidos

  • CAdES-AD_RT detached - Padrão ICP-Brasil (c/ carimbo do tempo), com bytes (conteúdo) separado da assinatura

Assinatura para PDF (Padrão PDFsignature ou PAdES)

  • PDFSignature - Padrão internacional, podendo ser com assinatura visível ou invisível

  • PAdES-AD_RB - Padrão ICP-Brasil, podendo ser com assinatura visível ou invisível

  • PAdES-AD_RT - Padrão ICP-Brasil (c/ carimbo do tempo), podendo ser com assinatura visível ou invisível

Utilizando a API

POST api-sandbox-assinatura.gestao.plus/validator-signature

Endpoint/API para validação de assinatura

Query Parameters

NameTypeDescription

certData

Boolean

Flag que determina se os dados do(s) certificado(s) serão retornados Default: true

certChainData

Boolean

Flag que determina se os dados dos certificados da cadeia de confiança também serão retornados Default: true

X509

Boolean

Flag que determina se o(s) certificado(s) utilizados na assinatura também serão retornados (x509 PEM)

Default: true

content

Boolean

Flag que determina se o conteúdo (bytes internos) usados durante a validação serão ou não retornados.

Útil para extração de conteúdo de assinaturas attached.

Default: true

Headers

NameTypeDescription

Authorization*

String

Credenciais para uso do endpoint,

Deve ter o sufixo "Basic " e o valor "appid:appsecret" (encodado em base64)

Ex: Basic YXBwaWQ6YXBwc2VjcmV0

Request Body

NameTypeDescription

file*

Binary

Envia os bytes do arquivo/assinatura

content

Binary

Envia os bytes do arquivo (separado da assinatura, utilizado somente para CMS/CaDEs detached)

{
  "validate": {
    "flag": true,
    "messages": [],
    "name": "sample7-pdfsignature.pdf",
    "date": "2022-10-21T01:46:19+0000",
    "details": {
      "signature": true,
      "ESS": true,
      "certs": true
    }
  },
  "signatures": [
    {
      "validate": {
        "flag": true,
        "messages": [],
        "details": {
          "signature": true,
          "ESS": true,
          "certs": true
        }
      },
      "data": {
        "version": "v1",
        "digestAlgorithm": "sha256",
        "signedAttrs": {
          "contentType": true,
          "signingTime": "2022-09-06T13:10:10+0000",
          "messageDigest": true,
          "signingCertificateV2": true
        },
        "signatureAlgorithm": "rsaEncryption",
        "signatureTime": {
          "m": "2022-09-06T13:10:11+0000",
          "signedAttr": "2022-09-06T13:10:10+0000"
        }
      },
      "certs": [
        {
          "flag": true,
          "isCertSignatureValidated": true,
          "isRevoked": false,
          "isExpired": false,
          "isTrust": true,
          "chain": [
            {
              "flag": true,
              "isCertSignatureValidated": true,
              "isRevoked": false,
              "isExpired": false,
              "data": {
                "validate": {
                  "notBefore": "2017-05-05T18:06:38+0000",
                  "notAfter": "2029-02-20T18:06:38+0000"
                },
                "version": "v3",
                "dn": "C=BR, O=ICP-Brasil, OU=Secretaria da Receita Federal do Brasil - RFB, CN=AC VALID RFB v5",
                "cn": "AC VALID RFB v5",
                "basicConstraints": {
                  "cA": true
                },
                "issuerCn": "AC Secretaria da Receita Federal do Brasil v4",
                "serialNumberHex": "0f",
                "keyIdentifier": "U8ul5HVQmUAsvlsVRcm+yzCqicU=",
                "fingerprint": "7a0d7b3c91409b65727a3b9f99a1e13f2d5871bb",
                "keyUsage": [
                  "cRLSign",
                  "keyCertSign"
                ],
                "extKeyUsage": false,
                "algorithm": "sha512WithRSAEncryption",
                "policyCA": [
                  {
                    "oid": "2.16.76.1.2.1.37",
                    "dpc": "http://www.receita.fazenda.gov.br/acrfb/dpcacrfb.pdf",
                    "name": "A1"
                  },
                  {
                    "oid": "2.16.76.1.2.3.36",
                    "dpc": "http://www.receita.fazenda.gov.br/acrfb/dpcacrfb.pdf",
                    "name": "A3"
                  }
                ],
                "publicKey": {
                  "algorithm": "rsaEncryption",
                  "bits": 4096
                }
              },
              "revokeData": {
                "crl": {
                  "number": "54",
                  "last_update": "2022-09-22T19:18:01+0000",
                  "next_update": "2022-12-21T19:18:01+0000",
                  "origin": "cache",
                  "checksum": "fc4d065b9e7f7654c4872af335479d6f0b4e02ddc58c5068a50d89d9c0f2d41f"
                }
              }
            },
            {
              "flag": true,
              "isCertSignatureValidated": true,
              "isRevoked": false,
              "isExpired": false,
              "data": {
                "validate": {
                  "notBefore": "2016-07-20T13:32:04+0000",
                  "notAfter": "2029-03-02T12:00:04+0000"
                },
                "version": "v3",
                "dn": "C=BR, O=ICP-Brasil, OU=Autoridade Certificadora Raiz Brasileira v5, CN=AC Secretaria da Receita Federal do Brasil v4",
                "cn": "AC Secretaria da Receita Federal do Brasil v4",
                "basicConstraints": {
                  "cA": true
                },
                "issuerCn": "Autoridade Certificadora Raiz Brasileira v5",
                "serialNumberHex": "04",
                "keyIdentifier": "GpjmQ8oc3ZKemWNFWirpH4cgzTU=",
                "fingerprint": "0851732f169d384be40713a3f7e1c82ee11d1b16",
                "keyUsage": [
                  "cRLSign",
                  "keyCertSign"
                ],
                "extKeyUsage": false,
                "algorithm": "sha512WithRSAEncryption",
                "policyCA": [
                  {
                    "oid": "2.16.76.1.1.8",
                    "dpc": "",
                    "name": null
                  }
                ],
                "publicKey": {
                  "algorithm": "rsaEncryption",
                  "bits": 4096
                }
              },
              "revokeData": {
                "crl": {
                  "number": "31",
                  "last_update": "2022-10-20T18:22:37+0000",
                  "next_update": "2023-01-18T18:22:37+0000",
                  "origin": "cache",
                  "checksum": "941a3147cf8590e75f6cc438b174bb38710c50a5aaff16117b1994958e18e165"
                }
              }
            },
            {
              "flag": true,
              "isCertSignatureValidated": true,
              "isRevoked": false,
              "isExpired": false,
              "data": {
                "validate": {
                  "notBefore": "2016-03-02T13:01:38+0000",
                  "notAfter": "2029-03-02T23:59:38+0000"
                },
                "version": "v3",
                "dn": "C=BR, O=ICP-Brasil, OU=Instituto Nacional de Tecnologia da Informacao - ITI, CN=Autoridade Certificadora Raiz Brasileira v5",
                "cn": "Autoridade Certificadora Raiz Brasileira v5",
                "basicConstraints": {
                  "cA": true
                },
                "issuerCn": "Autoridade Certificadora Raiz Brasileira v5",
                "serialNumberHex": "01",
                "keyIdentifier": "aai+ddnE72znE0XkYW7laPi2QF4=",
                "fingerprint": "5a2097dddf398577108af75c25ddaef2b8555b5a",
                "keyUsage": [
                  "cRLSign",
                  "keyCertSign"
                ],
                "extKeyUsage": false,
                "algorithm": "sha512WithRSAEncryption",
                "policyCA": [
                  {
                    "oid": "2.16.76.1.1.0",
                    "dpc": "http://acraiz.icpbrasil.gov.br/DPCacraiz.pdf",
                    "name": null
                  }
                ],
                "publicKey": {
                  "algorithm": "rsaEncryption",
                  "bits": 4096
                }
              },
              "revokeData": {
                "crl": {
                  "number": "31",
                  "last_update": "2022-10-20T18:22:37+0000",
                  "next_update": "2023-01-18T18:22:37+0000",
                  "origin": "cache",
                  "checksum": "941a3147cf8590e75f6cc438b174bb38710c50a5aaff16117b1994958e18e165"
                }
              }
            }
          ],
          "data": {
            "validate": {
              "notBefore": "2022-07-27T18:16:31+0000",
              "notAfter": "2027-07-26T18:16:31+0000"
            },
            "version": "v3",
            "dn": "C=BR, O=ICP-Brasil, OU=Secretaria da Receita Federal do Brasil - RFB, OU=RFB e-CPF A3, OU=VALID, OU=AR ATOS CERTIFICADORA, OU=Videoconferencia, OU=24226997000160, CN=PAULO FILIPE MACEDO DOS SANTOS:04660457192",
            "cn": "PAULO FILIPE MACEDO DOS SANTOS:04660457192",
            "basicConstraints": {
              "cA": false
            },
            "issuerCn": "AC VALID RFB v5",
            "serialNumberHex": "4e474011cd4443c7",
            "keyIdentifier": false,
            "fingerprint": "713c87fd594d4abc2a0c659885a4a1e2db7f83d1",
            "keyUsage": [
              "keyEncipherment",
              "nonRepudiation",
              "digitalSignature"
            ],
            "extKeyUsage": [
              "id-kp-clientAuth",
              "id-kp-emailProtection"
            ],
            "algorithm": "sha256WithRSAEncryption",
            "policy": {
              "oid": "2.16.76.1.2.3.36",
              "dpc": "http://icp-brasil.validcertificadora.com.br/ac-validrfb/dpc-ac-validrfbv5.pdf",
              "name": "A3",
              "type": "PF"
            },
            "subject": {
              "email": "paulo@gestao-online.com",
              "cei": "000000000000",
              "tituloEleitor": {
                "numero": "000000000000",
                "zona": "000",
                "secao": "0000",
                "municipio": ""
              }
            },
            "responsible": {
              "dataNascimento": "1990-02-10",
              "cpf": "04660457192",
              "nis": "00000000000",
              "rg": {
                "numero": "000000000000000",
                "emissor": ""
              }
            },
            "publicKey": {
              "algorithm": "rsaEncryption",
              "bits": 2048
            }
          },
          "revokeData": {
            "crl": {
              "number": "91070",
              "last_update": "2022-10-21T01:24:12+0000",
              "next_update": "2022-10-21T02:24:12+0000",
              "origin": "download",
              "checksum": "5bc62b05d079e862be2e0470e7285cba1b3abe8b11290754dece018eeb3f05a9"
            }
          }
        }
      ],
      "pdf": {
        "visibleSignature": {
          "name": "Signature1",
          "width": 0,
          "height": 0,
          "page": 1,
          "pageHeight": 842,
          "pageWidth": 596,
          "pageRotation": 0,
          "x": 0,
          "y": 842,
          "position": "Signature1::1::0.0::842.0::0.0::0.0",
          "filter": "/Adobe.PPKLite",
          "subfilter": "/adbe.pkcs7.detached",
          "signatureType": "approval",
          "isFillInAllowed": true,
          "isAnnotationsAllowed": true,
          "m": "D:20220906131011Z",
          "revision": 1
        }
      }
    }
  ]
}

Estrutura da resposta

Estrutura macro

{
  "validate": { //Objeto com o status geral da validação do documento
    "flag": true, //Flag macro se o documento é válido
    "messages": [], //Array de mensagens sobre a validação do arquivo
    "name": "sample7-pdfsignature.pdf", //Nome do arquivo
    "date": "2022-10-21T01:50:30+0000", //Data hora do relátorio (validação)
    "details": {
      "signature": true, //Flag do status da asssinatura de todas as assinaturas
      "ESS": true, //Flag do status da asssinatura (ESS) de todas as assinaturas
      "certs": true //Flag da verificação dos certificados de todas as assinaturas
    }
  },
  "signatures": [...] //Array de assinaturas
}

Detalhando o array "signatures"

[
    {
        //... Um documento pode retornar mais de uma assinatura
    },
    {
      "validate": { //Objeto com o status geral da validação da assinatura
        "flag": true, //Flag macro se o documento é válido
        "messages": [], //Array de mensagens sobre a validação da assinatura
        "details": { //Flags de certificado e assinatura; Objetivo principal, detectar se o certificado indicado foi o utilizado para realizar a assinatura, e que assinatura está integra (não foi adulterada)
          "signature": true, //Flag do status da validação da assinatura 
          "ESS": true, //Flag do status da validação da assinatura (ESS)
          "certs": true ////Flag da verificação dos certificados da assinatura
        }
      },
      "data": { //Array de objetos com informações sobre a assinatura
        "version": "v1", //Versão da assinatura
        "digestAlgorithm": "sha256", //Algoritmo de hash utilizado para digerir o conteúdo assinado
        "signedAttrs": { //Array de attributos assináveis
          "contentType": true,
          "signingTime": "2022-09-06T13:10:10+0000", //Attributo utilizado em assinaturas CMS/CADES e PDFSignature (internacional)
          "messageDigest": true, 
          "signingCertificateV2": true
        },
        "signatureAlgorithm": "rsaEncryption",
        "signatureTime": {
          "m": "2022-09-06T13:10:11+0000", //Referência temporal (Extraida do PDF)
          "signedAttr": "2022-09-06T13:10:10+0000" //Referência temporal (Extraida do attributo assinável)
        }
      },
      "certs": [...], //Array de certificados utilizados na assinatura
      "pdf": { //Objeto detalhando os elementos incluídos no PDF (Somente PDFSignature e PaDES)
        "visibleSignature": {
          "name": "Signature1", //Nome do field no AcroForm
          "width": 0, //Largura do field (quando houver assinatura visivel) 
          "height": 0, //Altura do field (quando houver assinatura visivel) 
          "page": 1, //Página que o field será colocado (quando houver assinatura visivel) 
          "pageHeight": 842, //Altura da página
          "pageWidth": 596, //Largura da página
          "pageRotation": 0, //Rotação da página (Paisagem/Retrato)
          "x": 0, //Posição do eixo X do field (quando houver assinatura visivel) 
          "y": 842, //Posição do eixo Y do field (quando houver assinatura visivel) 
          "position": "Signature1::1::0.0::842.0::0.0::0.0",
          "filter": "/Adobe.PPKLite", //Tipo de filter utilizado para a assinatura
          "subfilter": "/adbe.pkcs7.detached", //Tipo de subfilter utilizado para a assinatura
          "signatureType": "approval", //Tipo de assinatura utilizado no PDF
          "isFillInAllowed": true,
          "isAnnotationsAllowed": true,
          "m": "D:20220906131011Z", //Attributo M (momento da assinatura)
          "revision": 1 //Versão/Revisão (controle de versionamento do PDF)
        }
      }
    }
]

Detalhando o array "certs" dentro de um assinatura do array "signatures"

[
    {
        //... Uma assinatura pode conter mais de um certs (Co-assinatura)
    },
    {
          "flag": true, //Flag macro se o certificado é válido
          "isCertSignatureValidated": true, //Flag se a assinatura (caminho) do certificado é válido
          "isRevoked": false, //Flag se o certificado é revogado
          "isExpired": false, //Flag se o certificado é expirado
          "isTrust": true, //Flag se o certificado é confiável (está na cadeia de confiança)
          "chain": [...], //Array detalhando certificados da cadeia de confiança, possui um a estrutura de dados semlhante a essa que está sendo descrita aqui... (Certificados da AC's)
          "data": { //Dados do certificado
            "validate": { //Parâmetros de período de validação
              "notBefore": "2022-07-27T18:16:31+0000", //Não válido antes de:
              "notAfter": "2027-07-26T18:16:31+0000" //Não válido depois de:
            },
            "version": "v3", //Versão do certificado
            "dn": "C=BR, O=ICP-Brasil, OU=Secretaria da Receita Federal do Brasil - RFB, OU=RFB e-CPF A3, OU=VALID, OU=AR ATOS CERTIFICADORA, OU=Videoconferencia, OU=24226997000160, CN=PAULO FILIPE MACEDO DOS SANTOS:04660457192", //DN do certificado
            "cn": "PAULO FILIPE MACEDO DOS SANTOS:04660457192", //CN do certificado
            "basicConstraints": {
              "cA": false //Constraints básicas, Flag de CA (certificado pode ou não ser utilizado para assinar outro certificado)
            },
            "issuerCn": "AC VALID RFB v5", //CN do emissor (um nível acima)
            "serialNumberHex": "4e474011cd4443c7", //Número serial encodado em hexadecimal
            "keyIdentifier": false,
            "fingerprint": "713c87fd594d4abc2a0c659885a4a1e2db7f83d1", //Assinatura única do certificado
            "keyUsage": [ //Tipo/Propósito de uso previsto para o certificado
              "keyEncipherment",
              "nonRepudiation",
              "digitalSignature"
            ],
            "extKeyUsage": [ //Tipo/Propósito de uso previsto para o certificado
              "id-kp-clientAuth",
              "id-kp-emailProtection"
            ],
            "algorithm": "sha256WithRSAEncryption", //Algoritmo de assinatura do certificado
            "policy": { //Politica de emissão da AC (Autoridade Certificadora)
              "oid": "2.16.76.1.2.3.36", //Número do (Object Identifier) da politica
              "dpc": "http://icp-brasil.validcertificadora.com.br/ac-validrfb/dpc-ac-validrfbv5.pdf", //Link da DPC da AC
              "name": "A3", //Nome da politica
              "type": "PF" //Tipo da politica
            },
            "subject": { //Dados do titular do certificado
              "email": "paulo@gestao-online.com",
              "cei": "000000000000",
              "tituloEleitor": {
                "numero": "000000000000",
                "zona": "000",
                "secao": "0000",
                "municipio": ""
              }
            },
            "responsible": { //Dados do responsável do certificado
              "dataNascimento": "1990-02-10",
              "cpf": "04660457192",
              "nis": "00000000000",
              "rg": {
                "numero": "000000000000000",
                "emissor": ""
              }
            },
            "publicKey": { //Dados da chave pública
              "algorithm": "rsaEncryption",
              "bits": 2048 //Tamanho da chave (Ex: 2048, 4096)
            }
          },
          "revokeData": { //Dados utilizados para validação do status de revogação do certificado
            "crl": { //Utilizado o metódo de verificação de LCR (Lista de certificados revogados)
              "number": "91070", //Número da LCR
              "last_update": "2022-10-21T01:24:12+0000", //Quando foi gerada/atualizada a LCR
              "next_update": "2022-10-21T02:24:12+0000", //Até quando pode ser utilizada a LCR (expiração)
              "origin": "cache", //Origem da LCR no momento da validação (Cache interno ou download no repositório da AC)
              "checksum": "5bc62b05d079e862be2e0470e7285cba1b3abe8b11290754dece018eeb3f05a9" //Hash da LCR (checksum)
            }
          }
        }
    }
]

Visando a melhor perfomance da solução a aplicação GOCrypto realiza cache das ACs intermediárias (AC2 e AC1) e das LCRs respeitando o tempo de expiração.

Caso ainda não tenha as credenciais da API e/ou queira realizar um teste de validação via interface gráfica que utiliza essa mesma API, acesse: https://api-sandbox-assinatura.gestao.plus/sample-validator.php

Arquivos de exemplo (Massa de testes)

TipoStatusFormatoLink

.txt (Conteúdo detached usado nos testes)

Bytes assinados

.p7s (assinatura incluindo conteúdo)

Válido

CMS Padrão Internacional

.p7s (assinatura com conteúdo separado)

Válido

CMS Padrão Internacional

.p7s (assinatura incluindo conteúdo)

Válido

CaDEs AD_RB - Padrão ICP Brasil

.p7s (assinatura com conteúdo separado)

Válido

CaDEs AD_RB - Padrão ICP Brasil

.p7s (assinatura incluindo conteúdo e assinatura de carimbo do tempo)

Válido

CaDEs AD_RT - Padrão ICP Brasil (Referência temporal de carimbadora)

.pdf (arquivo de PDF e assinatura, invisível/sem elementos gráficos)

Válido

PDFSignature Padrão Internacional

.pdf (arquivo de PDF e assinatura, invisível/sem elementos gráficos)

Válido

PaDES AD_RB - Padrão ICP Brasil

.pdf (arquivo de PDF e assinatura, invisível/sem elementos gráficos)

Válido

PaDES AD_RT - Padrão ICP Brasil (Referência temporal de carimbadora)

.pdf (arquivo de PDF e assinatura, invisível/sem elementos gráficos)

Inválido

PDFSignature Padrão Internacional (certificado revogado antes da assinatura)

.pdf (arquivo de PDF e assinatura, invisível/sem elementos gráficos)

Inválido

PDFSignature Padrão Internacional (certificado não confiável, caminho para a AC raiz é inválido)

.pdf (arquivo de PDF e assinatura, invisível/sem elementos gráficos)

Inválido

PDFSignature Padrão Internacional (certificado vencido/expirado antes da assinatura)

.pdf (arquivo de PDF e assinatura, invisível/sem elementos gráficos)

Válido

PDFSignature Padrão Internacional (certificado vencido/expirado após a assinatura) - O certificado estava válido no momento da assinatura

Utilizando a interface gráfica (demo)

Last updated