TPDFlibPFXFile

Security and Signatures

Descripción

TPDFlibPFXFile contiene la identidad de firma usada para producir una firma desasociada PKCS#7

La identidad puede venir de un archivo PFX, de una entrada de almacén de certificados del sistema Windows resuelta por su nombre simple de visualización, de un PCCERT_CONTEXT duplicado externamente, de un par de claves Ed25519, de una clave CNG o de un callback de digest externo

Una vez vinculada una identidad, SignData produce los bytes de la firma CMS y los helpers de estimación dimensionan la reserva de /Contents antes de escribir la firma

La demo SigningWorkbench abre un PFX con esta clase antes de entregar la identidad al pipeline de firma

Sintaxis

Delphi

TPDFlibPFXFile = Class
  Public
    Destructor Destroy; Override;
    Function Open(Const FileName: WideString; Const Password: AnsiString; UseMachineKeyset: Boolean): TPDFlibSignerResult;
    Function OpenFromStore(Const StoreName, CertName: WideString; UseMachineStore: Boolean): TPDFlibSignerResult;
    Function EnumerateStore(Const StoreName: WideString; UseMachineStore: Boolean;
      Var Infos: Array Of TPDFlibCertificateInfo): Integer;
    Function OpenFromContext(CertContext: Pointer): TPDFlibSignerResult;
    Function OpenEd25519(Const CertificateDER, PrivateKeyDER: AnsiString): TPDFlibSignerResult;
    Function OpenEd25519FromFile(Const CertificateFile, PrivateKeyFile: WideString): TPDFlibSignerResult;
    Function OpenCNGKey(Const CertificateDER: AnsiString;
      Const ProviderName, KeyName: WideString; UseMachineKey, AllowUI: Boolean): TPDFlibSignerResult;
    Function OpenCNGKeyHandle(Const CertificateDER: AnsiString; KeyHandle: TPLIntPtr; AllowUI: Boolean): TPDFlibSignerResult;
    Function OpenExternalDigestSigner(Const CertificateDER: AnsiString;
      Signer: TPDFlibExternalDigestSignEvent; Sender: TObject;
      SignProcessID, SignatureAlgorithm, SignatureReserveBytes: Integer): TPDFlibSignerResult;
    Function GetCertificateDER: AnsiString;
    Procedure SetPrivateKeyUI(AllowUI: Boolean);
    Procedure SetRSAPSSPadding(Enable: Boolean);
    Function CertificateKeyUsage: Integer;
    Function EstimateSignatureSize(Const Data, SubFilter: AnsiString;
      DigestAlgorithm: TPDFlibDigestAlgorithm;
      Const CommitmentTypeDER, SignaturePolicyDER, RevocationInfoDER: AnsiString): Integer;
    Function EstimateCertificateChainSize: Integer;
    Function SignData(Const Data, SubFilter: AnsiString; DigestAlgorithm: TPDFlibDigestAlgorithm;
      Const CommitmentTypeDER, SignaturePolicyDER, RevocationInfoDER: AnsiString): AnsiString;
  End;

Métodos

OpenCarga un archivo PFX o PKCS#12 con su contraseña; UseMachineKeyset selecciona el conjunto de claves de la máquina
OpenFromStoreLocaliza un certificado en un almacén del sistema Windows por el nombre simple de visualización del Subject y vincula su contexto; gana el primer certificado que lleve una clave privada utilizable
EnumerateStoreRellena el array proporcionado por quien llama con un TPDFlibCertificateInfo por certificado del almacén y devuelve el número realmente rellenado
OpenFromContextVincula un PCCERT_CONTEXT obtenido externamente; quien llama conserva la propiedad y debe mantener el contexto válido hasta que la firma termine
OpenEd25519, OpenEd25519FromFileVincula un certificado y una semilla Ed25519 desde memoria o desde archivos
OpenCNGKey, OpenCNGKeyHandleVincula una clave respaldada por CNG por proveedor y nombre de clave, o por un handle de clave existente
OpenExternalDigestSignerFirma mediante el callback TPDFlibExternalDigestSignEvent en lugar de una clave privada local
GetCertificateDEREl certificado vinculado en forma DER
SetPrivateKeyUIPermite o suprime el aviso de clave privada de CryptoAPI
SetRSAPSSPaddingSelecciona relleno RSASSA-PSS para firmas RSA desasociadas; las claves CryptoAPI heredadas mantienen PKCS#1 v1.5
CertificateKeyUsageLos bits de key usage X.509 empaquetados en dos bytes, o -1 cuando no hay contexto vinculado
EstimateSignatureSize, EstimateCertificateChainSizeLímites superiores para la salida CMS y la cadena de certificados
SignDataProduce la firma CMS desasociada de los datos con el subfiltro y el algoritmo de digest seleccionados

Observaciones

Todos los métodos open devuelven TPDFlibSignerResult, así que un fallo al vincular la identidad se puede informar con precisión

La fachada accede a las mismas identidades mediante SetSignProcessPFXFromFile, SetSignProcessCertFromStore, SetSignProcessEd25519Identity y SetSignProcessCNGKey

Véase también

TPDFlibSignerResult, TPDFlibCertificateInfo, TPDFlibSigner, TPDFlibSignDoc, NewSignProcessFromFile