TPDFlibCSCClient
보안 및 서명
설명
Cloud Signature Consortium 자격 증명, 권한 부여 및 다이제스트 서명 엔드포인트를 위한 동기 클라이언트를 제공합니다
클라이언트는 credentials/info에서 서명 인증서와 지원되는 알고리즘 OID를 가져오고, credentials/authorize에서 서명 활성화 데이터를 얻은 다음, 이미 계산된 하나 이상의 다이제스트를 signatures/signHash에 제출합니다
SignDigest는 TPDFlibExternalDigestSignEvent를 구현하며 TPDFlib.OnExternalDigestSign에 직접 할당할 수 있어 PDF ByteRange 생성, CMS 인증 특성, 자리 표시자 크기 지정 및 반환 서명 검증을 라이브러리 내부에 유지함
유닛
PDFlibCSC구성
Constructor TPDFlibCSCClient.Create;
Destructor TPDFlibCSCClient.Destroy;자격 증명 검색
Function TPDFlibCSCClient.RefreshCredentialInfo: Boolean;
Function TPDFlibCSCClient.SupportsAlgorithm(DigestAlgorithm, SignatureAlgorithm: Integer): Boolean;
Function TPDFlibCSCClient.GetCertificateChainDER(Index: Integer): AnsiString;
Function TPDFlibCSCClient.GetSupportedAlgorithmOID(Index: Integer): AnsiString;
Procedure TPDFlibCSCClient.ClearCredentialInfo;직접 권한 부여 또는 일괄 서명 호출 전에 RefreshCredentialInfo가 성공해야 함
서명 인증서는 SigningCertificateDER를 통해, 추가 인증서는 CertificateChainCount 및 GetCertificateChainDER를 통해, 원격 배치 상한은 MaxBatchSize를 통해 제공됩니다
권한 부여
Function TPDFlibCSCClient.Authorize(NumSignatures: Integer; Const Digests: TPDFlibCSCByteArray; Const PIN, OTP, Description, ClientData: WideString; Out SAD: AnsiString): Boolean;
Function TPDFlibCSCClient.PrefetchAuthorization(NumSignatures: Integer; Const Digests: TPDFlibCSCByteArray; Const PIN, OTP, Description, ClientData: WideString): Boolean;
Function TPDFlibCSCClient.SetPrefetchedSAD(Const SAD: AnsiString; ExpiresInSeconds: Integer; Const PinnedDigests: TPDFlibCSCByteArray): Boolean;
Procedure TPDFlibCSCClient.ClearSAD;
Procedure TPDFlibCSCClient.ClearAuthorizationSecrets;HashPinningRequired=True인 자격 증명에는 다이제스트 배열이 필수이며 정확히 NumSignatures개의 값을 포함해야 합니다
미리 가져온 SAD의 만료와 해시 바인딩을 검사하고 정확히 한 번만 사용합니다
서명
Function TPDFlibCSCClient.SignHashes(Const Digests: TPDFlibCSCByteArray; DigestAlgorithm, SignatureAlgorithm: Integer; Const SAD: AnsiString; Out Signatures: TPDFlibCSCByteArray): Boolean;
Function TPDFlibCSCClient.SignAuthorizedHashes(Const Digests: TPDFlibCSCByteArray; DigestAlgorithm, SignatureAlgorithm: Integer; Out Signatures: TPDFlibCSCByteArray): Boolean;
Function TPDFlibCSCClient.SignDigest(Sender: TObject; SignProcessID: Integer; Const Digest: AnsiString; DigestAlgorithm, SignatureAlgorithm: Integer; Var Signature: AnsiString): Boolean;배치의 모든 다이제스트는 같은 알고리즘을 사용해야 하며 DigestAlgorithm이 의미하는 정확한 길이를 가져야 합니다
SignatureAlgorithm은 PDF_EXTERNAL_SIGNATURE_RSA_PKCS1 및 PDF_EXTERNAL_SIGNATURE_ECDSA_DER을 지원합니다 CSC ECDSA 서명은 DER로 인코딩되므로 P1363 출력으로 추론하지 않습니다
매개변수
| ServiceURL | /csc/<version> 앞의 기본 서비스 URL |
|---|---|
| APIVersion | 엔드포인트 버전 세그먼트이며 기본값은 v1 |
| CredentialID | 공급업체 정의 자격 증명 식별자 |
| OAuthToken | 모든 기본 전송 요청에 추가되는 쓰기 전용 bearer 토큰 |
| TimeoutMS | 요청 시간 제한이며 기본값은 300000밀리초입니다 |
| MaxResponseBytes | 허용되는 최대 응답 크기, 기본값 8 MiB |
| ClientData | 서명 요청과 함께 전송되는 선택적 공급업체 정의 값 |
| AuthorizationPIN | 자동 콜백 권한 부여에 사용하는 쓰기 전용 PIN |
| AuthorizationOTP | 콜백 인증 후 지워지는 쓰기 전용 일회용 암호 |
| AuthorizationDescription | 자동 콜백 권한 부여에 사용하는 선택적 설명 |
| OnTransport | mTLS, 프록시, 공급업체별 통합 또는 결정론적 테스트 통합을 위한 선택적 전송 콜백 |
상태 속성
CredentialLoaded, SigningCertificateDER, CertificateChainCount, SupportedAlgorithmCount, MaxBatchSize, HashPinningRequired, LastAuthorizationExpiresAt, LastHTTPStatus 및 LastError는 OAuth, PIN, OTP 또는 SAD 비밀 정보를 반환하지 않고 현재 상태를 노출합니다
예제
var
CSC: TPDFlibCSCClient;
ProcessID: Integer;
begin
CSC:= TPDFlibCSCClient.Create;
try
CSC.ServiceURL:= 'https://sign.example.com';
CSC.CredentialID:= 'account/signing-key';
CSC.OAuthToken:= AccessToken;
CSC.AuthorizationPIN:= UserPIN;
CSC.AuthorizationOTP:= CurrentOTP;
if not CSC.RefreshCredentialInfo then
raise Exception.Create(String(CSC.LastError));
PDF.OnExternalDigestSign:= CSC.SignDigest;
ProcessID:= PDF.NewSignProcessFromFile(InputFile, '');
PDF.SetSignProcessField(ProcessID, 'Approval');
PDF.SetSignProcessDigestAlgorithm(ProcessID, 2);
PDF.SetSignProcessExternalDigestSigner(ProcessID,
CSC.SigningCertificateDER, PDF_EXTERNAL_SIGNATURE_RSA_PKCS1, 512);
PDF.EndSignProcessToFile(ProcessID, OutputFile);
finally
CSC.Free;
end;
end;실패 동작
구성, 전송, JSON, Base64, X.509, 알고리즘, 일괄 처리, 활성화 또는 응답 수 검증에 실패하면 메서드는 False를 반환하고 LastError를 설정함
외부 다이제스트 서명 경로는 반환된 각 원시 서명을 PDF에 수락하기 전에 SigningCertificateDER에 대해 독립적으로 검증함
참고 항목
OnExternalDigestSign, SetSignProcessExternalDigestSigner, SetSignProcessDigestAlgorithm