PDFium Delphi Component Docs

FPdfCryptoSsl jednotka

Unit: FPdfCryptoSsl
OpenSSL backend pre overovanie CMS, poskytujúci kontrolu odpojených aj pripojených podpisov a vyhodnocovanie reťazca certifikátov cez libcrypto

Syntax

type
  EPdfSslError = class(Exception);

  TPdfSslCapabilities = record
    Available: Boolean;
    DetachedVerification: Boolean;
    AttachedVerification: Boolean;
    SystemTrustStore: Boolean;
    CustomTrustAnchors: Boolean;
    LocalCrls: Boolean;
    ChainCertificateCollection: Boolean;
    OnlineRetrieval: Boolean;
    RetrievalTimeout: Boolean;
  end;

  TPdfSslVerifyDiagnostic = (psvdBackendUnavailable, psvdOnlineRetrievalIgnored,
    psvdRetrievalTimeoutIgnored, psvdNoCrlsConfigured);
  TPdfSslVerifyDiagnostics = set of TPdfSslVerifyDiagnostic;

  TPdfSslCmsVerifier = class(TInterfacedObject, IPdfCmsVerifier)
  public
    function BackendName: string;
    function VerifyDetached(const CmsDer: TBytes; Segment1: Pointer; Segment1Length: Cardinal; Segment2: Pointer; Segment2Length: Cardinal; const Options: TPdfCmsVerifyOptions): TPdfCmsVerifyResult;
    function VerifyAttached(const CmsDer: TBytes; const Options: TPdfCmsVerifyOptions): TPdfCmsVerifyResult;
  end;

procedure ConfigureSslLibraryPath(const APath: string);
function SslAvailable: Boolean;
function SslMissingSymbols: string;
function SslLibraryPath: string;
function SslLibraryVersion: string;
function SslAbiLayout: string;
function SslCapabilities: TPdfSslCapabilities;
function SslVerifyOptionsDiagnostics(const Options: TPdfCmsVerifyOptions): TPdfSslVerifyDiagnostics;
procedure ConfigureSslTrustAnchors(const Anchors: TPadesChainCertArray);
procedure ConfigureSslCrls(const Crls: TPadesChainCertArray);
function ConfigureSslCmsVerifier: IPdfCmsVerifier;

Description

FPdfCryptoSsl je OpenSSL backend overovania CMS spotrebovávaný FPdfCrypto, náprotivok toho, čo FPdfCryptoWin poskytuje na Windows. Overí hodnotu CMS SignedData voči podpísanému obsahu, vyrieši certifikát podpisovníka a vyhodnotí reťazec certifikátov voči systémovému úložisku OpenSSL rozšírenému o kotvy dôvery a CRL, ktoré volajúci nakonfiguroval

libcrypto sa viaže za behu podľa názvu, nie linkuje, čo udržiava závislosť voliteľnou a dovoľuje jednotke sa kompilovať na každom cieli. ConfigureSslLibraryPath prepíše knižnicu, ktorá sa načíta; odovzdanie prázdnej cesty obnoví vstavaný zoznam kandidátov pre platformu

SslAvailable, SslMissingSymbols, SslLibraryPath, SslLibraryVersion a SslAbiLayout hlásia stav toho viazania, takže aplikácia sa môže pri štarte rozhodnúť, či bude na tomto hostiteľovi overovanie CMS možné, a môže zaznamenať, ktorá knižnica odpovedala

SslCapabilities sústreďuje to, čo tento backend implementuje, do jedného záznamu TPdfSslCapabilities a SslVerifyOptionsDiagnostics ešte pred spustením overovania hlási, ktoré nastavenia TPdfCmsVerifyOptions by tu nemali žiadny účinok, ako množinu TPdfSslVerifyDiagnostics, ktorú si volajúci môže zobraziť ako upozornenia

ConfigureSslTrustAnchors a ConfigureSslCrls odovzdajú vyhodnocovaniu všetko, čo sa od neho očakáva nad rámec systémového úložiska, oboje ako DER. ConfigureSslCmsVerifier postaví TPdfSslCmsVerifier a nainštaluje ho ako backend overovania CMS používaný validáciou PAdES a vyvolá EPdfSslError, keď OpenSSL nie je dostupné

TPdfSslCmsVerifier implementuje IPdfCmsVerifier. VerifyDetached spojí dva bajtové rozsahy po oboch stranách diery podpisu do jedného podpísaného obsahového streamu, čo je tvar, ktorý má podpis PDF; VerifyAttached pokrýva hodnotu nesúcu vlastný obsah, ako je token časovej pečiatky

Functions

FunctionDescription
ConfigureSslLibraryPathPrepíše knižnicu libcrypto, ktorú backend načíta; zavolajte ju pred prvým použitím a odovzdajte prázdny APath na obnovenie vstavaného zoznamu kandidátov pre platformu
SslAvailableVráti True, keď sa libcrypto načítal a každý potrebný symbol sa vyriešil
SslMissingSymbolsVráti názvy, ktoré sa nepodarilo vyriešiť, oddelené medzerami, alebo prázdny reťazec, keď sa naviazalo všetko; neprázdny výsledok na hostiteľovi, ktorý má libcrypto, znamená, že zostavenie je staršie než API, na ktoré jednotka cieľuje
SslLibraryPathVráti cestu knižnice, ktorá sa načítala, alebo prázdny reťazec
SslLibraryVersionVráti reťazec verzie, ktorý libcrypto hlási, alebo prázdny reťazec
SslAbiLayoutHlási šírky C typov, ktoré toto zostavenie predpokladá, ako ulong=<n> long=<n>; C unsigned long má na Windows 4 bajty a na Linuxe a macOS 8 a každý chybový kód a príznak úložiska prechádza hranicou ako jeden
SslCapabilitiesVráti záznam TPdfSslCapabilities popisujúci operácie, ktoré tento backend implementuje; príznaky popisujú implementované operácie, nie úspešné kontroly
SslVerifyOptionsDiagnosticsVráti, ako množinu TPdfSslVerifyDiagnostics, očakávané účinky nastavení v Options v tomto backende pred spustením overovania; dodané CRL sa musia ešte dekódovať, pokrývať reťazec a byť aktuálne, kým revokácia môže byť platná
ConfigureSslTrustAnchorsDodá kotvy dôvery, ako DER v Anchors, ktoré vyhodnocovanie reťazca pridá k systémovému úložisku; prázdne pole nechá vyhodnocovanie len so systémovým úložiskom
ConfigureSslCrlsDodá CRL, ako DER v Crls, ktoré si vyhodnocovanie reťazca môže pozrieť; revokácia sa hlási ako nepodporovaná, kým nie je dodaná aspoň jedna
ConfigureSslCmsVerifierPostaví OpenSSL verifikátor a nainštaluje ho ako backend overovania CMS a vráti ho ako IPdfCmsVerifier

Types

TypeMembers and purpose
EPdfSslErrorVýnimka vyvolaná ConfigureSslCmsVerifier, keď OpenSSL nie je dostupné; správa nesie nevyriešené názvy hlásené SslMissingSymbols
TPdfSslCapabilitiesAvailable, DetachedVerification, AttachedVerification, SystemTrustStore, CustomTrustAnchors, LocalCrls, ChainCertificateCollection, OnlineRetrieval a RetrievalTimeout hlásia, ktoré operácie backend implementuje; každý príznak okrem dvoch príznakov sťahovania zodpovedá SslAvailable a OnlineRetrieval a RetrievalTimeout zostávajú False, pretože sa nič nesťahuje online
TPdfSslVerifyDiagnosticpsvdBackendUnavailable, psvdOnlineRetrievalIgnored, psvdRetrievalTimeoutIgnored alebo psvdNoCrlsConfigured
TPdfSslVerifyDiagnosticsMnožina hodnôt TPdfSslVerifyDiagnostic vrátená SslVerifyOptionsDiagnostics
TPdfSslCmsVerifierOverovanie CMS cez OpenSSL implementujúce IPdfCmsVerifier s BackendName, VerifyDetached a VerifyAttached

Methods

MethodDescription
BackendNameVráti OpenSSL, názov, pod ktorým sa tento backend identifikuje vo výsledkoch validácie
VerifyDetachedOverí odpojenú hodnotu CMS v CmsDer voči obsahu popísanému Segment1 / Segment1Length a Segment2 / Segment2Length, rešpektujúc Options, a vráti stav podpisu, dôvery a revokácie v TPdfCmsVerifyResult
VerifyAttachedOverí pripojenú hodnotu CMS v CmsDer, ktorej podpísaný obsah cestuje vnútri štruktúry, s použitím Options

Remarks

See Also

FPdfCrypto, FPdfCryptoWin, FPdfCms, TPdf.ValidatePadesTrust