PLBuildModernDetachedCMS
Criptografia, assinaturas digitais
Descrição
Constrói um CMS SignedData destacado em torno de assinaturas RSA, ECDSA ou Ed25519, cobrindo os algoritmos que a camada de mensagens da CryptoAPI do Windows não consegue expressar
O certificado do assinante com seu contexto de cadeia, o algoritmo de digest, os DER de commitment type e política de assinatura, o material de revogação e a política de padding entram todos por parâmetros, e a assinatura bruta vem do CNG NCrypt, de um callback de assinante externo de digest ou do caminho Ed25519 em Pascal puro
Sintaxe
Delphi
Function PLBuildModernDetachedCMS(CertContext: Pointer;
Const CertificateDER, Ed25519Seed, Data, SubFilter: AnsiString;
DigestAlgorithm: Integer; Const CommitmentTypeDER,
SignaturePolicyDER: AnsiString; NCryptKeyHandle: TPLIntPtr= 0;
AllowPrivateKeyUI: Boolean= False;
ExternalSigner: TPDFlibExternalDigestSignEvent= Nil;
ExternalSender: TObject= Nil; ExternalSignProcessID: Integer= 0;
ExternalSignatureAlgorithm: Integer= 0;
RSAPSSPadding: Boolean= False;
Const RevocationInfoDER: AnsiString= ''): AnsiString;Parâmetros
| CertContext | Handle CERT_CONTEXT do Windows do certificado de assinatura; Nil para o caminho puramente externo |
|---|---|
| CertificateDER | Certificado de assinatura codificado em DER, usado no certificado embutido e nas referências de emissor/número de série |
| Ed25519Seed | Seed de 32 bytes ao assinar Ed25519 sem CNG, senão vazio |
| Data | Os bytes do intervalo já digeridos que a assinatura destacada cobre |
| SubFilter | /SubFilter alvo como /ETSI.CAdES.detached, que orienta a seleção de atributos |
| DigestAlgorithm | Ordinal do algoritmo de digest compatível com Ord(TPDFlibDigestAlgorithm): 2 SHA-256, 3 SHA-384, 4 SHA-512, 5 a 7 a família SHA-3 |
| CommitmentTypeDER | Atributo de commitment type codificado em DER, vazio quando não houver |
| SignaturePolicyDER | Identificador de política de assinatura codificado em DER, vazio quando não houver |
| NCryptKeyHandle | Handle de chave CNG aberto; 0 deixa a função abrir a própria chave privada do certificado, mostrando a UI opcionalmente |
| AllowPrivateKeyUI | Permite o diálogo de aquisição de chave CNG quando a chave exige presença do usuário |
| ExternalSigner | Callback que recebe o digest e devolve a assinatura bruta, para HSM ou assinatura remota |
| ExternalSender | Remetente repassado de volta ao callback ExternalSigner |
| ExternalSignProcessID | Identificador de processo de assinatura repassado de volta ao callback |
| ExternalSignatureAlgorithm | Um de PL_EXTERNAL_SIGNATURE_RSA_PKCS1, PL_EXTERNAL_SIGNATURE_ECDSA_DER, PL_EXTERNAL_SIGNATURE_ECDSA_P1363 |
| RSAPSSPadding | Seleciona o padding RSASSA-PSS para assinaturas RSA |
| RevocationInfoDER | Informações de revogação pré-coletadas para embutir como RevocationInfoChoices |
Valor retornado
O CMS destacado codificado em DER, ou uma string vazia quando qualquer etapa de assinatura falha
Observações
Esta rotina é o motor por trás dos caminhos de assinatura moderna do processo de assinatura; chamá-la direto mantém controle total sobre os atributos de commitment e política, e os bytes devolvidos se encaixam no buraco do /Contents do PDF como com dados verificados por PLIsModernDetachedCMS
Veja também
PLVerifyModernDetachedCMS, PLIsModernDetachedCMS, PLModernSignatureSizeEstimate, TPDFlibExternalDigestSignEvent, SetSignProcessExternalDigestSigner