Fluxo de trabalho para contratos assinados
Spec: ETSI EN 319 142-2, §5.1 ETSI EN 319 142-2 §5.1 Spec: ISO 32000-2:2020, §12.8 ISO 32000-2:2020 §12.8 Evidence: Mixed evidence
Visão geral
Seção intitulada “Visão geral”Um contrato assinado não é “um PDF com uma assinatura dentro dele.” É um documento preparado para que a assinatura proteja os bytes corretos. Ele é assinado em um nível compatível com a obrigação. É empacotado de modo que continue verificável depois que o certificado de assinatura expira. Esta página percorre esse cenário, do documento em branco até o contrato durável. Ela é transparente sobre quais etapas o motor integra hoje e quais ele expõe como uma superfície congelada.
Por que isso importa
Seção intitulada “Por que isso importa”Um contrato que é verificável no dia em que é assinado e falha três anos depois, durante uma disputa, é pior do que nenhuma assinatura, porque alguém confiou nele. A falha raramente está na criptografia. Geralmente é a falta de um carimbo de data/hora ou de evidência de revogação, percebida muito depois de o signatário já ter seguido em frente.
Escolher a obrigação de assinatura antecipadamente e produzir, no momento da assinatura, a evidência que essa obrigação exige é a diferença entre um contrato que se sustenta e um que se deteriora silenciosamente. Esta é uma decisão a tomar uma vez, no fluxo de trabalho, em vez de redescobri-la a cada disputa.
A versão resumida
Seção intitulada “A versão resumida”- Prepare e depois assine. Uma assinatura cobre exatamente o intervalo de bytes sobre o qual foi calculada. Decida que o documento é final — incluindo quaisquer revisões anexadas depois — antes de assinar, não depois.
- Escolha o nível pela obrigação, não o contrário. O PAdES define uma progressão: uma assinatura básica, uma com carimbo de data/hora, uma com material de validação embutido e uma recarimbada para validade de arquivamento indefinida (ETSI EN 319 142-2 §5.1).
- A validade de longo prazo é uma estrutura, não uma propriedade. É um Document Security Store mais um carimbo de data/hora de documento, gravado no arquivo (ISO 32000-2:2020 §12.8).
- Seja preciso sobre o ponto de junção. O método de alto nível
Document::setSignature()do NextPDF congela a API pública, mas falha rapidamente em vez de emitir um arquivo não assinado. O caminho integrado é o orquestrador de nível mais baixo. Esta página não finge o contrário.
Como o NextPDF aborda isso
Seção intitulada “Como o NextPDF aborda isso”O NextPDF separa a decisão do mecanismo. A decisão é de qual nível PAdES a obrigação precisa. O mecanismo é como os bytes são assinados e como o material de validação é transportado. Tratar isso como uma coisa só é o que faz as equipes acabarem com uma assinatura válida, mas não durável.
O cenário tem quatro estágios.
- Prepare the document Compose the agreement and treat it as final. The signature will protect this exact byte range and nothing added outside it without a new revision.
- Choose the obligation B-B proves who. B-T adds trusted time. B-LT embeds the material to validate later. B-LTA re-stamps for indefinite validity.
- Sign A CMS signature is embedded in the signature dictionary over the byte range; a timestamp is requested from a TSA if the level needs one.
- Preserve For long-term levels, the Document Security Store and a document timestamp are written so the signature outlives its certificate.
O enum de nível é real e codifica a obrigação com precisão. B-B comprova a identidade do signatário. B-T adiciona um carimbo de data/hora confiável. O “quando” é tratado com a mesma firmeza que o “quem”. B-LT embute os certificados e as respostas de revogação necessários para validar a assinatura depois que o certificado de assinatura expira.
B-LTA adiciona carimbos de data/hora de documento para que a cadeia de confiança possa ser estendida
indefinidamente por meio do recarimbamento antes que cada certificado de carimbo de data/hora expire. O
enum sabe quais níveis exigem um carimbo de data/hora e quais exigem material de
validação embutido, de modo que o motor possa recusar uma combinação impossível
em vez de produzir um arquivo enganosamente “assinado”.
O que a evidência diz
Seção intitulada “O que a evidência diz”A progressão é respaldada por norma. Evidence: Standard-backed Spec: ETSI EN 319 142-2, §5.1 ETSI EN 319 142-2 §5.1 descreve os níveis PAdES construídos sobre os blocos da EN 319 142-1, de uma assinatura embutida básica em diante. A estrutura de longo prazo é definida pela Spec: ISO 32000-2:2020, §12.8 ISO 32000-2:2020 §12.8 : a validação de longo prazo apoia-se em um Document Security Store e em um dicionário de carimbo de data/hora de documento gravados no arquivo.
O modelo de nível é respaldado por código. Evidence: Code-backed O
enum SignatureLevel tem os quatro casos PAdES (B-B, B-T, B-LT,
B-LTA) com métodos predicados para “exige um carimbo de data/hora”, “exige
material de validação embutido” e “exige carimbos de data/hora de documento”. O método
de alto nível Document::setSignature() está integrado a uma proteção de falha rápida que
gera um diagnóstico bloqueante e acionável em vez de emitir um documento não
assinado — um comportamento verificável, não uma alegação.
O comportamento de manutenção de longo prazo está documentado em nível de capacidade para o nível Premium: a superfície de arquivamento grava o DSS e o VRI por assinatura, inspeciona a completude do arquivamento com uma verificação de integridade e recarimba com um carimbo de data/hora de documento antes que o certificado de carimbo de data/hora expire. A documentação deixa claro que o verificador ainda decide.
Exemplo prático
Seção intitulada “Exemplo prático”Isto mostra a decisão — selecionar a obrigação — usando o enum real. O caminho de assinatura integrado é o orquestrador de nível mais baixo. A chamada de alto nível aparece apenas para tornar explícito o comportamento de falha rápida.
<?php
declare(strict_types=1);
use NextPDF\Security\Signature\SignatureLevel;
/** * Map a business obligation to a PAdES level. * * The obligation drives the level, not the reverse — choosing B-B for a * 10-year contract is a decision you do not want to make implicitly. */function levelForObligation(string $obligation): SignatureLevel{ return match ($obligation) { // Internal sign-off, short retention, signer identity is enough. 'internal_approval' => SignatureLevel::PAdES_B_B,
// Counterparty agreement: prove the moment of signing. 'counterparty_agreement' => SignatureLevel::PAdES_B_T,
// Regulated contract that must verify after cert expiry. 'regulated_contract' => SignatureLevel::PAdES_B_LT,
// Long-lived legal record: indefinite, re-stampable validity. 'long_term_legal_record' => SignatureLevel::PAdES_B_LTA,
default => throw new \InvalidArgumentException( "Unknown obligation: {$obligation}", ), };}
$level = levelForObligation('regulated_contract');
// The enum carries the obligation's implications with it.$needsTsa = $level->requiresTimestamp(); // true for B-T+$needsDss = $level->requiresDss(); // true for B-LT+$needsArchive = $level->requiresDocumentTimestamp(); // true only for B-LTAO objeto de nível não é um rótulo. Ele responde ao que a obrigação implica, de modo que a integração a jusante não precise derivar isso novamente.
Equívoco comum
Seção intitulada “Equívoco comum”O equívoco recorrente é “a assinatura é válida, então terminamos.” A validade hoje é necessária, mas não suficiente. Uma assinatura é calculada sobre um intervalo de bytes. Qualquer coisa anexada fora desse intervalo em uma revisão posterior não é coberta por ela, e é exatamente por isso que a preparação vem antes da assinatura. Além disso, uma assinatura verificável agora pode falhar mais tarde, quando o certificado dela expirar, a menos que o material de validação tenha sido embutido no momento da assinatura. “Válida” e “durável” são garantias diferentes, e somente a obrigação diz qual delas você realmente precisa.
Uma armadilha relacionada e específica deste motor: presumir que o método de alto nível
setSignature() produz um arquivo assinado hoje. Ele não produz. Ele falha rapidamente
de propósito. Trate o diagnóstico como o contrato.
Limites e fronteiras
Seção intitulada “Limites e fronteiras”Document::setSignature()é uma superfície pública congelada, não um assinador integrado. Ele falha rapidamente com um diagnóstico bloqueante. Ele nunca emite um PDF não assinado no lugar de um PDF assinado. O caminho integrado é o orquestrador de duas fases de nível mais baixo.- A manutenção da validação de longo prazo (DSS/VRI, verificação de integridade, o ciclo de carimbo de data/hora de arquivamento) é uma capacidade do nível Premium. O Core não fornece o ciclo de arquivamento. Veja a fronteira abaixo.
- Uma assinatura protege exatamente o intervalo de bytes dela. Revisões anexadas posteriormente são separadas. O motor não estende a cobertura retroativamente.
- O NextPDF produz e mantém as estruturas; ele não julga. Se uma assinatura é confiável depende das âncoras de confiança e da política do verificador, que estão fora do motor.
- O B-LTA não torna uma assinatura eterna por si só. Ele habilita validade indefinida somente se o ciclo de recarimbamento for executado pontualmente antes que cada certificado de carimbo de data/hora expire.
- Esta página é de nível de comportamento sobre a superfície de arquivamento Premium. Ela não afirma nenhuma aceitação por qualquer tribunal ou autoridade específica.
| Edition | Availability |
|---|---|
| Core | O Core expõe o enum |
| Pro | A assinatura baseline PAdES (B-B / B-T) via orquestrador está disponível. |
| Enterprise | Adiciona B-LT / B-LTA, o Document Security Store e a manutenção de VRI por assinatura, a verificação de integridade da LTV e o ciclo de arquivamento de carimbo de data/hora de documento para validade indefinida. |
Documentos relacionados
Seção intitulada “Documentos relacionados”- Perfis baseline PAdES — B-B, B-T, B-LT, B-LTA explicados como uma progressão e como escolher.
- Validação de longo prazo — por que uma assinatura verificável hoje pode falhar em dez anos, e como a LTV embute a evidência.
- O guia de decisão de integração — qual pacote do ecossistema se encaixa em um fluxo de trabalho de assinatura, incluindo o ponto de junção de aprovação humana no NextPDF Connect.
Glossário
Seção intitulada “Glossário”- PAdES — PDF Advanced Electronic Signatures: a família de perfis da ETSI que define como uma assinatura eletrônica avançada é transportada em um PDF.
- Intervalo de bytes — o trecho contíguo de bytes do arquivo sobre o qual uma assinatura é calculada; o conteúdo fora dele não é protegido por essa assinatura.
- Nível de assinatura (B-B / B-T / B-LT / B-LTA) — a progressão PAdES: quem assinou, quando, com material de validação embutido e recarimbável para validade de arquivamento indefinida.
- TSA — Time-Stamping Authority (autoridade de carimbo de data/hora): um serviço RFC 3161 que afirma que um estado do documento existiu em um dado instante UTC.
- DSS (Document Security Store) — o repositório no arquivo de certificados, respostas OCSP e CRLs necessários para validar uma assinatura depois que o certificado dela expira.
- LTV (Long-Term Validation) — manter uma assinatura verificável ao longo do tempo, embutindo a evidência de validação e recarimbando-a.
- Falha rápida — recusar-se a produzir um artefato enganoso e levantar um erro acionável, em vez de emitir silenciosamente um arquivo errado.