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으로 머신 키 셋을 고릅니다 |
|---|---|
| OpenFromStore | Subject 단순 표시 이름으로 Windows 시스템 스토어의 인증서를 찾아 컨텍스트를 바인드합니다. 쓸 수 있는 개인 키를 가진 첫 인증서가 선택됩니다 |
| EnumerateStore | 호출자가 준비한 배열에 스토어 인증서마다 TPDFlibCertificateInfo를 하나씩 채우고 실제로 채운 개수를 반환합니다 |
| OpenFromContext | 외부에서 얻은 PCCERT_CONTEXT를 바인드합니다. 소유권은 호출자에게 있으며 서명이 끝날 때까지 컨텍스트를 유효하게 유지해야 합니다 |
| OpenEd25519, OpenEd25519FromFile | Ed25519 인증서와 시드를 메모리나 파일에서 바인드합니다 |
| OpenCNGKey, OpenCNGKeyHandle | 프로바이더·키 이름 또는 기존 키 핸들로 CNG 키를 바인드합니다 |
| OpenExternalDigestSigner | 로컬 개인 키 대신 TPDFlibExternalDigestSignEvent 콜백으로 서명합니다 |
| GetCertificateDER | 바인드된 인증서의 DER 형식 |
| SetPrivateKeyUI | CryptoAPI 개인 키 프롬프트를 허용하거나 억제합니다 |
| SetRSAPSSPadding | RSA 분리형 서명에 RSASSA-PSS 패딩을 고릅니다. 구형 CryptoAPI 키는 PKCS#1 v1.5를 유지합니다 |
| CertificateKeyUsage | X.509 키 사용 비트를 2바이트로 묶은 값. 컨텍스트가 바인드되지 않으면 -1 |
| EstimateSignatureSize, EstimateCertificateChainSize | CMS 출력과 인증서 체인의 상한값 |
| SignData | 고른 서브필터와 다이제스트 알고리즘으로 데이터의 분리형 CMS 서명을 생성합니다 |
비고
모든 open 계열 메서드는 TPDFlibSignerResult를 반환하므로 아이덴티티 바인드 실패를 정확히 보고할 수 있습니다
파사드에서도 SetSignProcessPFXFromFile, SetSignProcessCertFromStore, SetSignProcessEd25519Identity, SetSignProcessCNGKey로 같은 아이덴티티에 도달할 수 있습니다
참고 항목
TPDFlibSignerResult, TPDFlibCertificateInfo, TPDFlibSigner, TPDFlibSignDoc, NewSignProcessFromFile