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

CertContextHandle CERT_CONTEXT do Windows do certificado de assinatura; Nil para o caminho puramente externo
CertificateDERCertificado de assinatura codificado em DER, usado no certificado embutido e nas referências de emissor/número de série
Ed25519SeedSeed de 32 bytes ao assinar Ed25519 sem CNG, senão vazio
DataOs bytes do intervalo já digeridos que a assinatura destacada cobre
SubFilter/SubFilter alvo como /ETSI.CAdES.detached, que orienta a seleção de atributos
DigestAlgorithmOrdinal 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
CommitmentTypeDERAtributo de commitment type codificado em DER, vazio quando não houver
SignaturePolicyDERIdentificador de política de assinatura codificado em DER, vazio quando não houver
NCryptKeyHandleHandle de chave CNG aberto; 0 deixa a função abrir a própria chave privada do certificado, mostrando a UI opcionalmente
AllowPrivateKeyUIPermite o diálogo de aquisição de chave CNG quando a chave exige presença do usuário
ExternalSignerCallback que recebe o digest e devolve a assinatura bruta, para HSM ou assinatura remota
ExternalSenderRemetente repassado de volta ao callback ExternalSigner
ExternalSignProcessIDIdentificador de processo de assinatura repassado de volta ao callback
ExternalSignatureAlgorithmUm de PL_EXTERNAL_SIGNATURE_RSA_PKCS1, PL_EXTERNAL_SIGNATURE_ECDSA_DER, PL_EXTERNAL_SIGNATURE_ECDSA_P1363
RSAPSSPaddingSeleciona o padding RSASSA-PSS para assinaturas RSA
RevocationInfoDERInformaçõ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