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

Headers

Request Body

{
  "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)

Utilizando a interface gráfica (demo)

Last updated