THPDFHeadlessDocument.SignToFile
function SignToFile(FieldIndex: Integer; const FileName: string;
const CertificatePEM, PrivateKeyPEM: SysUtils.TBytes;
const Options: THPDFHeadlessCMSOptions;
ReservedCMSBytes: Integer = 16384): THPDFHeadlessCMSResult;
Assina um campo existente não assinado de assinaturas AcroForm e publica atomicamente uma saída independente em Linux ou Windows nativos
FieldIndex é o índice de campos de formulários com base zero devolvido por FindFormField ou GetFormField, que pode diferir de um índice de assinaturas assinadas aceite por VerifySignature
O certificado e a chave privada correspondente têm de ser bytes PEM; chaves privadas encriptadas são rejeitadas sem pedir palavra-passe, e o OpenSSL 3 é carregado através do mesmo fornecedor usado por HPDFSignHeadlessCMS
ReservedCMSBytes reserva um intervalo fixo hexadecimal de Contents antes do hashing; tem de ser positivo, caber no orçamento de objetos do documento e acomodar o CMS DER completo gerado
O perfil por defeito é adbe.pkcs7.detached; RequireCAdES=true escreve ETSI.CAdES.detached e inclui um atributo signing-certificate, e a verificação de documentos autentica automaticamente o binding ESS dele, com confiança explícita em CAs avaliada separadamente
O escritor copia os bytes da fonte, acrescenta valores de substituição de campos e um objeto novo de assinaturas através do escritor partilhado de xrefs, aplica patches aos slots numéricos de largura fixa de ByteRange, assina os intervalos reais do ficheiro de staging e verifica o CMS resultante antes do flush e da publicação atómica
Cada assinatura de aprovação anterior mantém os bytes originais exatos dela; o resultado de verificação dela reporta uma revisão anterior válida e o número de bytes posteriores não assinados
A fonte é aberta só de leitura, o grafo carregado de campos não é alterado pela assinatura, e aliases de caminhos de fontes ou aliases físicos de ficheiros são rejeitados
Falhas preservam um destino existente e apagam o ficheiro de staging não publicado, incluindo cancelamento, reservas insuficientes, falhas de certificados/chaves, erros criptográficos e esgotamento de orçamentos de objetos ou de ficheiros
Campos só de leitura, valores assinados de campos, políticas proibidas de documentos certificados e permissões negadas AES de preenchimento de formulários são rejeitados; a autenticação de proprietários pode autorizar fontes restritas, enquanto a saída mantém a palavra-passe de utilizadores e a política de segurança originais
CertificationPermission de 1 a 3 cria uma primeira assinatura de certificação com catalog Perms.DocMDP e um transform SigRef; zero cria uma assinatura de aprovação, incluindo uma assinatura subsequente permitida num campo existente sob DocMDP P2 ou P3
As opções do documento e de CMS têm de usar o mesmo token de cancelamento se ambas especificarem um; caso contrário o fornecedor CMS herda o token do documento
O THPDFHeadlessCMSResult devolvido separa integridade de confiança explicitamente avaliada em CAs; nenhuma conclusão de timestamps, revogação ou validação de longo prazo é implícita
Use AddSignatureField e SetSignatureFieldAppearance para preparar um widget novo visível de assinaturas, ou SignPFXToFile para carregar uma identidade PKCS12 através de OpenSSL 3
Use TimestampToFile para acrescentar um timestamp de documentos RFC3161 autónomo sem uma identidade de assinatura de aplicações