THotPDF.SaveIncrementalUpdateAuthenticated Method
서명된 revision 정책을 인증하고 금지된 변경을 거부하며, 증분 업데이트를 원자적으로 공개합니다
선언
function SaveIncrementalUpdateAuthenticated(
const TargetFile: TFileName;
const Options: THPDFAuthenticatedIncrementalUpdateOptions;
out Info: THPDFAuthenticatedIncrementalUpdateInfo
): Boolean; overload;
function SaveIncrementalUpdateAuthenticated(
const TargetFile: TFileName;
out Info: THPDFAuthenticatedIncrementalUpdateInfo
): Boolean; overload;
워크플로우
- 대기 중인 증분 revision을 대상 디렉터리의 고유한 candidate에 기록합니다
- signature byte range로 보호되는 정확한 revision에서 모든 정책을 로드합니다
- 정책을 담고 있는 각 CMS signature를 인증하고 선택적으로 인증서 경로를 검증합니다
- 이후의 모든 revision을 분류하고 DocMDP, FieldMDP, UR 또는 UR3, Identity, 알 수 없는 transform에 대한 판정을 강제합니다
- 승인된 candidate를 write-through 원자적 교체로 공개합니다
거부되면 candidate를 삭제하고 기존 대상은 바이트 단위로 그대로 유지합니다
옵션
| 멤버 | 목적 |
|---|---|
Authentication | ipaCryptographic은 유효한 CMS byte-range signature를 요구하고, ipaTrustedCertificate는 여기에 인증서 경로와 폐기 검증에서 나온 cvsTrusted를 추가로 요구합니다 |
RequireSignaturePolicy | True(기본값)이면 인증된 transform 정책이 없는 문서를 거부합니다 |
CertificateValidation | trusted-certificate 모드가 사용하는 trust anchor, 중간 인증서, 오프라인 폐기 증거, 검증 시각, 용도, 알고리즘 정책 |
결과 상세
THPDFAuthenticatedIncrementalUpdateInfo는 최종 상태, 실패한 signature 인덱스, signature와 인증서 상태, 전체 signature 수, 인증된 정책 수, 진단 issue를 보고합니다
주요 상태로는 aiusAccepted, aiusNoSignaturePolicy, aiusSignatureInvalid, aiusCertificateUntrusted, aiusPolicyMalformed, aiusPolicyViolation, aiusCommitFailed가 있습니다
사용 예제
var
Info: THPDFAuthenticatedIncrementalUpdateInfo;
begin
PDF.BeginIncrementalUpdate('certified.pdf');
PDF.SetLoadedFormFieldValueByName('CustomerName', 'Ada');
if not PDF.SaveIncrementalUpdateAuthenticated('updated.pdf', Info) then
raise Exception.Create(String(Info.Issue));
end;
보안 경계
- 구조상 존재하는 정책은 signature 인증이 성공하기 전까지 절대 권위를 갖지 않습니다
- 정책 딕셔너리는 서명된 snapshot에서 읽고 원래 signature 객체, byte range, CMS 값에 묶이므로 이후 revision이 자신의 권위를 리다이렉트하거나 교체할 수 없습니다
- 문서 무결성 외에 서명자 신원도 중요할 때 trusted-certificate 모드가 적합합니다
- 정책 강제를 요청하지 않는 unsigned 워크플로우에는 일반
SaveIncrementalUpdate메서드를 계속 쓸 수 있습니다