Modern Signature Providers
HPDFSignatureProvider separa o parse e a codificação de CMS do armazenamento de chaves privadas e da criptografia da plataforma
Algoritmos de verificação
HPDFVerifyCMSSignatureEx verifica assinaturas CMS pure-mode Ed25519 e Ed448 por meio de THPDFPlatformSignatureProvider ou de um provider fornecido pelo chamador e registra o OID exato da assinatura em THPDFSignatureInfo.SignatureAlgorithmOID
O parse de CMS cruza o conjunto de digests do contêiner, o digest do signatário, os parâmetros do mecanismo de assinatura e o atributo opcional de proteção de algoritmos da RFC 6211 antes do hashing ou do despacho ao provider; veja CMS digest-algorithm consistency para status e códigos de issue detalhados
ML-DSA-44, ML-DSA-65 e ML-DSA-87 usam o provider da plataforma quando disponível, mas a verificação de documentos carregados só os habilita quando o Catalog declara a developer extension PDF 2.0 do HotPDF
Providers de assinatura
THotPDF.SignPDFWithPFX e as sobrecargas HPDFCMSSignPDFStream com respaldo em PFX selecionam RSA, ECDSA, Ed25519 ou Ed448 a partir da identidade PKCS#12 correspondente, sem callback de assinatura fornecido pelo chamador
Escalares privados ECDSA são assinados pelo CNG do Windows e retornados como valores DER estritos de ECDSA, enquanto Ed25519 e Ed448 usam uma libcrypto OpenSSL 3 opcional selecionada por THPDFCMSSignOptions.OpenSSLLibraryPath ou pelo caminho normal de busca de bibliotecas
PureEdDSA assina os signed attributes DER SET OF completos em vez de um digest de atributos pré-computado; Ed25519 combina essa entrada com digests de documento SHA-512 e Ed448 usa id-shake256-len com saída SHAKE256 de 512 bits
THPDFCMSSignOptions.SignerIdentifier seleciona a codificação de identidade issuer-and-serial ou SubjectKeyIdentifier X.509 de forma independente do provider de chave privada; veja CMS SubjectKeyIdentifier signers
THPDFCallbackSignatureProvider adapta callbacks da aplicação, enquanto THPDFRemoteSignatureProvider aplica limites limitados de retry, cancelamento, entrada e assinatura em torno de um transporte remoto
THPDFCSCSignatureProvider implementa a assinatura remota da CSC API v2 sobre um transporte HTTP fornecido pela aplicação, incluindo renovação de token OAuth, descoberta de credenciais e de cadeias de certificados, obtenção explícita de SAD vinculado a hash, lotes multisign ordenados e limitados, signatures/signHash síncrono ou assíncrono, polling limitado, timestamps RFC 3161, cancelamento e replay idempotente endereçado por conteúdo
THPDFPKCS11SignatureProvider serializa operações RSA e ECDSA contra uma sessão autenticada PKCS#11 e um handle de chave privada de posse do chamador, selecionando mecanismos RSA PKCS#1 v1.5, RSA-PSS ou ECDSA bruto específicos do digest sem exportar material de chave
THPDFWindowsKeyStorageSignatureProvider abre chaves persistidas no KSP de smart card da Microsoft ou em qualquer provider de armazenamento de chaves CNG nomeado, opcionalmente rejeita chaves de software por meio da propriedade Impl Type, aplica política de acesso silenciosa ou interativa e assina digests SHA-2 ou SHA3 com RSA PKCS#1 v1.5, RSA-PSS ou ECDSA
CreateFromKeyHandle adapta um NCRYPT_KEY_HANDLE existente e pode tanto emprestá-lo quanto ser dono dele, permitindo que aplicações que já gerenciam autenticação de smart card, TPM ou HSM de fornecedor retenham o controle do ciclo de vida
HPDFCMSBuildSignedDataWithProvider constrói CMS desanexado a partir do digest selecionado por THPDFCMSSignOptions.DigestAlgorithm, enquanto HPDFCMSSignPDFStreamWithProvider assina um placeholder de assinatura PDF existente por meio de cópias limitadas de stream, hashing de faixas em streaming e patches de seek de largura fixa, sem reter um segundo PDF completo
HPDFCMSEstimatePlaceholder deriva um tamanho de CMS sem efeitos colaterais a partir de um comprimento explícito de assinatura, uma estimativa do provider ou o tamanho da chave do certificado RSA, e então contabiliza a forma estática exata do CMS e as reservas dinâmicas configuradas de timestamp ou contra-assinatura
HPDFCMSSignPDFStreamWithProviderAutoSize e HPDFCMSSignPDFStreamWithExternalSignerAutoSize reconstroem placeholders não assinados pequenos demais antes de assinar; retries pós-assinatura exigem a capacidade de provider spcSafeSignRetry, e callbacks de signatário externo nunca são repetidos após retornar uma assinatura
Veja CMS placeholder auto-sizing para opções de dimensionamento, contratos de reconstrução, política de retry e diagnósticos
Veja CSC remote signature provider para contratos de transporte, autorização, retry, polling e orçamento
Veja SHA3 PDF signatures and timestamps para política de digest, RFC 3161, Seed Value, contratos de provider e de streaming
Veja Brainpool ECDSA signatures para requisitos de certificados de curvas nomeadas, a matriz de SHA-2 e SHA3 específica por curva, codificação DER estrita e validação de produtor que falha antes do provider
Contrato de requisição do provider
THPDFSignatureProviderRequest carrega o algoritmo e o OID de assinatura, o OID do digest, o tipo de entrada de mensagem ou digest, o comprimento de salt do PSS, a chave pública ou certificado, o identificador de chave, o identificador de operação, a assinatura e o contexto de algoritmos
Um provider de assinatura retorna spsValid com uma assinatura não vazia, enquanto providers de verificação usam spsValid ou spsInvalid; resultados não suportado, malformado, erro de provider e cancelado permanecem distintos