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