TPDFlibPFXFile

Security and Signatures

Popis

TPDFlibPFXFile drží podpisovou identitu použitou k vytvoření odděleného podpisu PKCS#7

Identita může pocházet ze souboru PFX, položky systémového úložiště certifikátů Windows vyřešené podle jednoduchého zobrazovaného názvu, zvenku zdvojeného PCCERT_CONTEXT, páru klíčů Ed25519, klíče CNG nebo externího callbacku výpočtu digestu

Jakmile je identita svázána, SignData vyrábí bajty podpisu CMS a pomocné odhadové funkce rozměří rezervaci /Contents dřív, než se podpis zapíše

Ukázka SigningWorkbench otevírá PFX touto třídou, než předá identitu podpisovému pipeline

Syntaxe

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

OpenNačte soubor PFX nebo PKCS#12 s heslem; UseMachineKeyset vybere sadu klíčů počítače
OpenFromStoreNajde certifikát v systémovém úložišti Windows podle jednoduchého zobrazovaného názvu subjektu a sváže jeho kontext; vyhrává první certifikát s použitelným soukromým klíčem
EnumerateStoreNaplní dodané pole prvky TPDFlibCertificateInfo po jednom za každý certifikát úložiště a vrátí skutečně naplněný počet
OpenFromContextSváže externě obstaraný PCCERT_CONTEXT; vlastnictví zůstává u volajícího a kontext musí zůstat platný, dokud podepsání nedoběhne
OpenEd25519, OpenEd25519FromFileSváže certifikát a seed Ed25519 z paměti nebo ze souborů
OpenCNGKey, OpenCNGKeyHandleSváže klíč nad stavbou CNG podle providera a názvu klíče nebo podle existujícího handle klíče
OpenExternalDigestSignerPodepisuje přes callback TPDFlibExternalDigestSignEvent místo lokálního soukromého klíče
GetCertificateDERSvázaný certifikát ve formě DER
SetPrivateKeyUIPovolí nebo potlačí dotaz CryptoAPI na soukromý klíč
SetRSAPSSPaddingVolí padding RSASSA-PSS pro oddělené podpisy RSA; zastaralé klíče CryptoAPI zůstávají u PKCS#1 v1.5
CertificateKeyUsageBity key usage X.509 zabalené do dvou bajtů, nebo -1, když není svázán žádný kontext
EstimateSignatureSize, EstimateCertificateChainSizeHorní meze pro výstup CMS a řetěz certifikátů
SignDataVytvoří oddělený podpis CMS pro data se zvoleným sub-filtrem a digest algoritmem

Poznámky

Všechny metody otevření vrací TPDFlibSignerResult, takže neúspěšné svázání identity lze nahlásit přesně

Fasada se ke stejným identitám dostane přes SetSignProcessPFXFromFile, SetSignProcessCertFromStore, SetSignProcessEd25519Identity a SetSignProcessCNGKey

Viz také

TPDFlibSignerResult, TPDFlibCertificateInfo, TPDFlibSigner, TPDFlibSignDoc, NewSignProcessFromFile