function WinCryptoAvailable: Boolean;
function WinCmsVerificationAvailable: Boolean;
function VerifyWinDetachedCms(const CmsDer: TBytes; Segment1: Pointer; Segment1Length: Cardinal; Segment2: Pointer; Segment2Length: Cardinal): TWinCmsVerifyResult;
function VerifyWinDetachedCmsEx(const CmsDer: TBytes; Segment1: Pointer; Segment1Length: Cardinal; Segment2: Pointer; Segment2Length: Cardinal; const Options: TWinCmsVerifyOptions): TWinCmsVerifyResult;
function VerifyWinAttachedCmsEx(const CmsDer: TBytes; const Options: TWinCmsVerifyOptions): TWinCmsVerifyResult;
function ResolveWinSigner(const Options: TPadesSignerOptions): TPadesResolvedSigner;
function TestBuildWinCmsTrust(SignerCert: Pointer;
const Options: TWinCmsVerifyOptions; GetChain, VerifyPolicy,
FreeChain: Pointer): TWinCmsVerifyResult; // PDFIUMPAS_CRYPTO_TESTS only
FPdfCryptoWin é o back-end criptográfico específico do Windows consumido pelo FPdfCrypto. Ele abre os repositórios de certificados do usuário atual e da máquina local por meio da CryptoAPI, localiza o certificado que corresponde à impressão digital solicitada, adquire o handle de chave privada NCRYPT associado e retorna um TPadesResolvedSigner cujo ICmsSigner assina por meio do CNG
WinCryptoAvailable executa a verificação leve de que os bindings de Crypt32 / ncrypt resolvem, de modo que quem chama possa decidir na inicialização se a assinatura PAdES será possível nesta máquina
VerifyWinDetachedCms valida um valor CMS desanexado contra dois segmentos de bytes de propriedade de quem chama, retorna o certificado do signatário e avalia sua cadeia com a política base do Windows apenas com cache, sem realizar busca em rede
As funções de verificação estendidas aceitam TWinCmsVerifyOptions para que quem chama possa habilitar a busca de certificados online, solicitar verificação de revogação, definir um tempo limite de busca e observar pontos de controle da verificação
Validade da assinatura e confiança no certificado são resultados independentes, de modo que uma assinatura autêntica de um certificado não confiável ou autoassinado permanece distinguível de conteúdo adulterado
| Function | Description |
|---|---|
WinCryptoAvailable | Retorna True quando os bindings do Crypt32 e do ncrypt do Windows podem ser resolvidos em tempo de execução |
WinCmsVerificationAvailable | Retorna True quando a verificação de CMS desanexado e as APIs de política de cadeia de certificados estão disponíveis |
VerifyWinDetachedCms | Verifica os atributos assinados do CMS e a assinatura sobre dois segmentos de conteúdo desanexados e informa separadamente a confiança atual do sistema apenas com cache |
VerifyWinDetachedCmsEx | Verifica o conteúdo CMS desanexado com opções explícitas de busca online, revogação, tempo limite e pontos de controle |
VerifyWinAttachedCmsEx | Verifica um valor CMS anexado e avalia seu certificado de signatário usando as opções fornecidas |
ResolveWinSigner | Resolve uma impressão digital em um signatário, um certificado DER e uma cadeia usando o repositório de certificados do Windows e a chave privada CNG |
TestBuildWinCmsTrust | Hook condicional de teste compilado só sob PDFIUMPAS_CRYPTO_TESTS: troca os ponteiros de função de política de cadeia CNG por stubs fornecidos por quem chama, roda a construção de trust com o status de assinatura pré-ajustado como válido e restaura os ponteiros, para que testes unitários de cripto exerçam o BuildWinCmsTrust sem uma cadeia de certificados real |
| Type | Members and purpose |
|---|---|
TWinCmsVerifyStatus | wcvsUnavailable, wcvsValid, wcvsInvalid, wcvsUnsupported ou wcvsIndeterminate |
TWinCmsVerifyStage | wcvstCryptographicSignature, wcvstChainBuild, wcvstOnlineRetrieval ou wcvstRevocationCheck |
TWinCmsVerifyCheckpoint | Callback de método de objeto que recebe cada TWinCmsVerifyStage |
TWinCmsVerifyOptions | OnlineRetrieval, CheckRevocation, CollectChainCertificates, UrlRetrievalTimeoutMs, OnCheckpoint e a fábrica estática Default |
TWinCmsVerifyResult | Alias de TPdfCmsVerifyResult, contendo SignatureStatus, TrustStatus, RevocationStatus, SignatureError, TrustError, SignerCertificate, ChainCertificates, RevocationReason e RevocationError |
Com CheckRevocation habilitado, o backend constrói uma cadeia de revogação separada e preenche RevocationStatus, RevocationReason e RevocationError. Falhas de revogação não sobrescrevem o resultado da assinatura nem o TrustStatus e o TrustError avaliados de forma independente
Para uma cadeia nativa bem formada, revogação confirmada produz wcvsInvalid com pcrrCertificateRevoked. Sem revogação confirmada, uma cadeia não confiável produz wcvsIndeterminate com pcrrChainUntrusted; estruturas nativas incompletas e outras checagens de revogação não resolvidas permanecem wcvsIndeterminate com pcrrUnknown
Um resultado válido exige cadeia confiável, nenhum erro de cadeia, pelo menos um certificado que exija checagem de revogação e um resultado nativo de revogação bem-sucedido para cada um desses certificados. Só um certificado terminal explicitamente marcado como autoassinado ou como âncora de CA confiável fica de fora desse requisito de cobertura; uma cadeia só com root ou evidência por certificado faltando continua indeterminada
RevocationError preserva um DWORD bruto de CERT_REVOCATION_INFO.dwRevocationResult, ou o valor imediato de GetLastError quando a chamada da cadeia de revogação falha. Zero significa que nenhum diagnóstico nativo está disponível, inclusive quando um status de cadeia estabelece revogação sem um código correspondente do provider. Os bits agregados de CERT_TRUST_STATUS.dwErrorStatus são usados para classificação e não são copiados para este campo como um erro nativo inventado
Interprete o valor bruto no contexto do provider ou da API do Windows que o produziu; não há garantia de que seja um HRESULT. Evidência de revogação offline, velha ou desconhecida não identifica expiração de CRL, CRLs malformadas nem assinaturas de CRL inválidas, então este backend não infere esses reasons detalhados
Com OnlineRetrieval = False, tanto a construção da cadeia quanto a checagem de revogação usam apenas cache. Habilitar a busca online permite que o chain engine do Windows obtenha a evidência de suporte dentro do tempo limite de busca configurado
PadesCryptoAvailable = False, a menos que outro back-end esteja registradoTWinCmsVerifyOptions.Default preserva a verificação apenas com cache; opte por busca online e verificação de revogação somente quando o aplicativo aceita acesso à rede e sua latênciaRevocationReason: TPdfCmsRevocationReason e RevocationError: Cardinal. Quando a revogação está desabilitada ou a passagem dela não é alcançada, esses campos mantêm pcrrNone e zero; os mesmos valores acompanham uma checagem bem-sucedida, então use RevocationStatus para o vereditoNativeRevocationError e NativeTimeStampRevocationError