TPDFlibPFXFile
Security and Signatures
Opis
TPDFlibPFXFile przechowuje tożsamość podpisu używaną do wytworzenia odłączonego podpisu PKCS#7
Tożsamość może pochodzić z pliku PFX, wpisu systemowego magazynu certyfikatów Windows rozwiązanego po prostej nazwie wyświetlanej, zduplikowanego z zewnątrz PCCERT_CONTEXT, pary kluczy Ed25519, klucza CNG albo zewnętrznego callbacku wyliczania skrótu
Gdy tożsamość jest związana, SignData produkuje bajty podpisu CMS, a pomocnicze funkcje szacowania wymiarują rezerwację /Contents przed zapisaniem podpisu
Demo SigningWorkbench otwiera PFX tą klasą, zanim przekaże tożsamość do potoku podpisywania
Składnia
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;Metody
| Open | Wczytuje plik PFX lub PKCS#12 z hasłem; UseMachineKeyset wybiera zestaw kluczy komputera |
|---|---|
| OpenFromStore | Lokalizuje certyfikat w systemowym magazynie Windows po prostej nazwie wyświetlanej podmiotu i wiąże jego kontekst; wygrywa pierwszy certyfikat z użytecznym kluczem prywatnym |
| EnumerateStore | Wypełnia przekazaną przez wywołującego tablicę elementami TPDFlibCertificateInfo po jednym na certyfikat magazynu i zwraca faktyczną liczbę wypełnionych |
| OpenFromContext | Wiąże uzyskany z zewnątrz PCCERT_CONTEXT; własność zostaje u wywołującego, a kontekst musi pozostać ważny aż do ukończenia podpisywania |
| OpenEd25519, OpenEd25519FromFile | Wiąże certyfikat i seed Ed25519 z pamięci albo z plików |
| OpenCNGKey, OpenCNGKeyHandle | Wiąże klucz oparty na CNG po dostawcy i nazwie klucza albo po istniejącym uchwycie klucza |
| OpenExternalDigestSigner | Podpisuje przez callback TPDFlibExternalDigestSignEvent zamiast lokalnego klucza prywatnego |
| GetCertificateDER | Związany certyfikat w formie DER |
| SetPrivateKeyUI | Pozwala albo wycisza monit CryptoAPI o klucz prywatny |
| SetRSAPSSPadding | Wybiera dopełnienie RSASSA-PSS dla odłączonych podpisów RSA; przestarzałe klucze CryptoAPI trzymają się PKCS#1 v1.5 |
| CertificateKeyUsage | Bity przeznaczenia klucza X.509 upakowane w dwa bajty albo -1, gdy żaden kontekst nie jest związany |
| EstimateSignatureSize, EstimateCertificateChainSize | Górne granice dla wyjścia CMS i łańcucha certyfikatów |
| SignData | Wytwarza odłączony podpis CMS dla danych z wybranym podfilarem i algorytmem skrótu |
Uwagi
Wszystkie metody otwarcia zwracają TPDFlibSignerResult, więc nieudane związanie tożsamości można zgłosić precyzyjnie
Fasada sięga po te same tożsamości przez SetSignProcessPFXFromFile, SetSignProcessCertFromStore, SetSignProcessEd25519Identity i SetSignProcessCNGKey
Zobacz również
TPDFlibSignerResult, TPDFlibCertificateInfo, TPDFlibSigner, TPDFlibSignDoc, NewSignProcessFromFile