Signature Transform Methods and Permissions

HotPDF는 DocMDP/FieldMDP 권한 구조를 작성한 뒤, 로드된 문서의 모든 표준 signature transform 메서드를 검사·분류할 수 있습니다

Producer API

procedure AddCertificationSignatureField(
  const FieldName: AnsiString;
  Rectangle: TRect;
  Permission: THPDFDocMDPPermission;
  ContentsBytes: Integer = 8192;
  const SubFilter: AnsiString = 'adbe.pkcs7.detached';
  const Reason: AnsiString = '';
  const Location: AnsiString = '';
  const ContactName: AnsiString = '';
  Flags: THPDFFormFieldFlags = []);

procedure ConfigureCertificationSignature(
  const FieldName: AnsiString;
  Permission: THPDFDocMDPPermission);

procedure AttachSignatureFieldLock(
  const FieldName: AnsiString;
  Action: THPDFFieldLockAction;
  const Fields: array of AnsiString);

AddCertificationSignatureField는 서명 placeholder 생성과 인증 구성을 결합합니다

ConfigureCertificationSignature는 이미 작성된 서명 placeholder용이며 그 필드가 서명 딕셔너리를 지닌 첫 필드여야 합니다

문서에는 인증 서명이 하나만 담길 수 있으므로, 두 번째 구성 요청은 객체 그래프가 바뀌기 전에 거부됩니다

이 API들은 PDF 1.5 출력을 자동 협상합니다

DocMDP 권한 수준

값 Certification permission
dmpNoChanges인증 후에는 어떤 변경도 허용되지 않습니다
dmpFormFillAndSign폼 작성, 템플릿 인스턴스화, 서명이 허용됩니다
dmpFormFillSignAndAnnotate앞선 변경에 더해 주석 생성, 삭제, 수정이 허용됩니다

dmpNone은 DocMDP transform이 없는 검사 결과용으로 예약되며 생산자 메서드가 거부합니다

필드 잠금 범위

값 Fields argument 서명 후 효과
flaAll비어 있어야 합니다모든 폼 필드를 잠급니다
flaInclude하나 이상의 고유 필드 이름나열된 필드만 잠급니다
flaExclude하나 이상의 고유 필드 이름나열된 필드를 제외한 모든 필드를 잠급니다

AttachSignatureFieldLock은 빈 이름, 중복 이름, 잘못된 action 값, 호환되지 않는 Fields 형태, 서명되지 않은 대상 필드, 이미 잠금이나 FieldMDP policy를 지닌 필드를 거부합니다

Emitted structure

Delphi 예제

var
  LockedFields: THPDFAnsiStringArray;
begin
  HotPDF.CurrentPage.AddTextField(
    'InternalCode', '', Rect(40, 80, 220, 108));

  HotPDF.CurrentPage.AddCertificationSignatureField(
    'CertSig', Rect(40, 140, 260, 190),
    dmpFormFillAndSign, 8192,
    'adbe.pkcs7.detached', 'Document approval');

  SetLength(LockedFields, 1);
  LockedFields[0] := 'InternalCode';
  HotPDF.CurrentPage.AttachSignatureFieldLock(
    'CertSig', flaInclude, LockedFields);
end;

Loaded inspection

function GetLoadedSignaturePermissions(
  SigIndex: Integer;
  out Info: THPDFSignaturePermissionInfo): Boolean;

reader는 전체 transform 세트, 참조 수, DocMDP 권한, SigFieldLock/FieldMDP 범위, UR 사용 권리, Catalog UR/UR3 소스, Identity 객체 범위, 미지원 메서드, 구조 유효성, 진단 이슈 문자열을 보고합니다

이는 요구되는 직접/간접 형태, Catalog /Perms 대상, transform 버전, 중복 참조, UR 대 UR3 제약, 선택적 DocMDP /P 2 기본값을 검증합니다

SigFieldLock과 FieldMDP가 모두 있으면 두 action과 필드 목록이 일치해야 합니다

Identity 범위 순회는 cycle-safe이며 64수준과 100000 indirect 객체로 제한되고, 검사는 JavaScript, action, 서명 콘텐츠를 절대 실행하지 않습니다

표준 transform 커버리지

MethodReported policy
DocMDP인증 권한과 일치하는 Catalog /Perms /DocMDP 대상
UR문서, 주석, 폼, 서명, 내장 파일 권리와 구형 /UR 또는 byte-range /UR3 소스
FieldMDPAll/Include/Exclude 필드 잠금 범위와 복사된 SigFieldLock 일치
Identity요구되는 indirect /Data 루트에서 도달 가능한 cycle-safe 이행 객체 번호

미지원 메서드 이름은 UnknownTransformMethods에 유지되고 권한 구조를 무효로 만들어 critical transform이 놓치지 않게 합니다

Validation boundary

GetLoadedSignaturePermissions는 policy 구조만 보고합니다

VerifyLoadedSignature는 계속 암호학적 무결성을 별도로 보고합니다

AnalyzeLoadedSignatureRevisions는 byte-range DocMDP, FieldMDP, UR3, Identity policy에 대해 revision별 시맨틱 변경 분석을 수행하고, 폐기된 non-byte-range UR 객체 다이제스트 서명은 구조 검사에서 계속 볼 수 있습니다

SaveIncrementalUpdateAuthenticated는 검사를 강제로 바꿉니다. 서명 스냅샷에서 policy를 읽고, 제어 서명을 인증하고, 이후 모든 revision을 검증하며, 모든 policy가 성공한 뒤에만 원자적 교체로 공개합니다

성능

생산자 검증은 작성된 AcroForm 필드와 작은 signature-reference 배열만 스캔하고, 로드 검사는 선택된 서명, 그 잠금, 참조, Catalog 권한 항목만 읽습니다

페이지 콘텐츠, 이미지 stream, 폰트 프로그램, 무관한 indirect 객체는 디코딩되지 않습니다

참고 항목