TPDFlibPFXFile

Security and Signatures

설명

TPDFlibPFXFile은 분리형(detached) PKCS#7 서명을 만들 때 쓰는 서명 아이덴티티를 담습니다

아이덴티티는 PFX 파일, 표시 이름으로 찾은 Windows 시스템 인증서 스토어 항목, 외부에서 복제한 PCCERT_CONTEXT, Ed25519 키 쌍, CNG 키, 외부 다이제스트 콜백 어느 쪽이든 올 수 있습니다

아이덴티티가 바인드되면 SignData가 CMS 서명 바이트를 만들고, 추정 헬퍼가 서명을 쓰기 전에 /Contents 예약 크기를 계산합니다

SigningWorkbench 데모는 서명 파이프라인에 아이덴티티를 넘기기 전에 이 클래스로 PFX를 엽니다

구문

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;

메서드

Open비밀번호와 함께 PFX 또는 PKCS#12 파일을 로드합니다. UseMachineKeyset으로 머신 키 셋을 고릅니다
OpenFromStoreSubject 단순 표시 이름으로 Windows 시스템 스토어의 인증서를 찾아 컨텍스트를 바인드합니다. 쓸 수 있는 개인 키를 가진 첫 인증서가 선택됩니다
EnumerateStore호출자가 준비한 배열에 스토어 인증서마다 TPDFlibCertificateInfo를 하나씩 채우고 실제로 채운 개수를 반환합니다
OpenFromContext외부에서 얻은 PCCERT_CONTEXT를 바인드합니다. 소유권은 호출자에게 있으며 서명이 끝날 때까지 컨텍스트를 유효하게 유지해야 합니다
OpenEd25519, OpenEd25519FromFileEd25519 인증서와 시드를 메모리나 파일에서 바인드합니다
OpenCNGKey, OpenCNGKeyHandle프로바이더·키 이름 또는 기존 키 핸들로 CNG 키를 바인드합니다
OpenExternalDigestSigner로컬 개인 키 대신 TPDFlibExternalDigestSignEvent 콜백으로 서명합니다
GetCertificateDER바인드된 인증서의 DER 형식
SetPrivateKeyUICryptoAPI 개인 키 프롬프트를 허용하거나 억제합니다
SetRSAPSSPaddingRSA 분리형 서명에 RSASSA-PSS 패딩을 고릅니다. 구형 CryptoAPI 키는 PKCS#1 v1.5를 유지합니다
CertificateKeyUsageX.509 키 사용 비트를 2바이트로 묶은 값. 컨텍스트가 바인드되지 않으면 -1
EstimateSignatureSize, EstimateCertificateChainSizeCMS 출력과 인증서 체인의 상한값
SignData고른 서브필터와 다이제스트 알고리즘으로 데이터의 분리형 CMS 서명을 생성합니다

비고

모든 open 계열 메서드는 TPDFlibSignerResult를 반환하므로 아이덴티티 바인드 실패를 정확히 보고할 수 있습니다

파사드에서도 SetSignProcessPFXFromFile, SetSignProcessCertFromStore, SetSignProcessEd25519Identity, SetSignProcessCNGKey로 같은 아이덴티티에 도달할 수 있습니다

참고 항목

TPDFlibSignerResult, TPDFlibCertificateInfo, TPDFlibSigner, TPDFlibSignDoc, NewSignProcessFromFile