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
}
}
}
]
}
{
// Response
}
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