TPDFlibPFXFile
Security and Signatures
Beschreibung
TPDFlibPFXFile hält die Signatur-Identität, mit der eine abgelöste PKCS#7-Signatur erzeugt wird
Die Identität kann aus einer PFX-Datei stammen, aus einem Eintrag im Windows-Systemzertifikatsspeicher, der über seinen einfachen Anzeigenamen aufgelöst wird, aus einem extern duplizierten PCCERT_CONTEXT, aus einem Ed25519-Schlüsselpaar, einem CNG-Schlüssel oder einem externen Digest-Callback
Sobald eine Identität gebunden ist, erzeugt SignData die CMS-Signaturbytes, und die Schätzhelfer bemessen die /Contents-Reservierung, bevor die Signatur geschrieben wird
Das SigningWorkbench-Demo öffnet eine PFX mit dieser Klasse, bevor es die Identität an die Signatur-Pipeline übergibt
Syntax
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;Methoden
| Open | Lädt eine PFX- oder PKCS#12-Datei mit ihrem Passwort; UseMachineKeyset wählt den Maschinenschlüsselsatz |
|---|---|
| OpenFromStore | Sucht ein Zertifikat anhand des einfachen Subject-Anzeigenamens in einem Windows-Systemspeicher und bindet seinen Kontext; gewinnt das erste Zertifikat, das einen verwendbaren privaten Schlüssel mitbringt |
| EnumerateStore | Füllt das vom Aufrufer gelieferte Array mit je einem TPDFlibCertificateInfo pro Speicherzertifikat und gibt die tatsächlich gefüllte Anzahl zurück |
| OpenFromContext | Bindet einen extern beschafften PCCERT_CONTEXT; der Aufrufer behält das Eigentum und muss den Kontext gültig halten, bis das Signieren abgeschlossen ist |
| OpenEd25519, OpenEd25519FromFile | Bindet ein Ed25519-Zertifikat und Seed aus dem Speicher oder aus Dateien |
| OpenCNGKey, OpenCNGKeyHandle | Bindet einen CNG-gestützten Schlüssel über Provider und Schlüsselnamen oder über ein vorhandenes Schlüssel-Handle |
| OpenExternalDigestSigner | Signiert über den TPDFlibExternalDigestSignEvent-Callback statt über einen lokalen privaten Schlüssel |
| GetCertificateDER | Das gebundene Zertifikat in DER-Form |
| SetPrivateKeyUI | Erlaubt oder unterdrückt die CryptoAPI-Passwortabfrage für den privaten Schlüssel |
| SetRSAPSSPadding | Wählt RSASSA-PSS-Padding für abgelöste RSA-Signaturen; herkömmliche CryptoAPI-Schlüssel bleiben bei PKCS#1 v1.5 |
| CertificateKeyUsage | Die X.509-Key-Usage-Bits, gepackt in zwei Bytes, oder -1, wenn kein Kontext gebunden ist |
| EstimateSignatureSize, EstimateCertificateChainSize | Obergrenzen für die CMS-Ausgabe und die Zertifikatskette |
| SignData | Erzeugt die abgelöste CMS-Signatur für die Daten mit dem gewählten Sub-Filter und Digest-Algorithmus |
Anmerkungen
Alle Open-Methoden geben TPDFlibSignerResult zurück, sodass eine fehlgeschlagene Identitätsbindung präzise gemeldet werden kann
Die Fassade erreicht dieselben Identitäten über SetSignProcessPFXFromFile, SetSignProcessCertFromStore, SetSignProcessEd25519Identity und SetSignProcessCNGKey
Siehe auch
TPDFlibSignerResult, TPDFlibCertificateInfo, TPDFlibSigner, TPDFlibSignDoc, NewSignProcessFromFile