認証署名とフィールドロック

HotPDF は認証署名と署名付きフィールドロックに付随する PDF 権限構造を作成し、ロードされた文書内で同じ構造を検査できます

プロデューサー 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 は署名付きプレースホルダ作成と認証設定を組み合わせます

ConfigureCertificationSignature は既存の作成済み署名プレースホルダ用で、そのフィールドが署名辞書を持つ最初のフィールドであることを要求します

文書は1つの認証署名しか持てないため、2番目の設定要求はオブジェクトグラフが変更される前に拒否されます

これらの API は自動的に PDF 1.5 出力をネゴシエートします

DocMDP 権限レベル

認証権限
dmpNoChanges認証後の変更は許可されません
dmpFormFillAndSignフォーム入力、テンプレートインスタンス化、署名が許可されます
dmpFormFillSignAndAnnotate上記の変更に加え注釈の作成、削除、変更が許可されます

dmpNone は DocMDP 変換のない検査結果用に予約され、プロデューサーメソッドによって拒否されます

フィールドロックスコープ

Fields 引数署名後の効果
flaAll空でなければなりませんすべてのフォームフィールドをロックします
flaInclude1つ以上の一意のフィールド名リストされたフィールドのみをロックします
flaExclude1つ以上の一意のフィールド名リストされたフィールドを除くすべてのフィールドをロックします

AttachSignatureFieldLock は空の名前、重複した名前、無効なアクション値、互換性のない Fields 形状、未署名のターゲットフィールド、またはすでにロックや FieldMDP ポリシーを持つフィールドを拒否します

出力される構造

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;

ロード済み検査

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

リーダーは DocMDP 権限、Catalog リンケージ、SigFieldLock スコープ、FieldMDP スコープ、フィールド名、構造妥当性、診断問題文字列を報告します

必要な直接・間接オブジェクト形状を検証し、Catalog /Perms /DocMDP が同じ署名辞書をターゲットにすることを確認します

SigFieldLock と FieldMDP の両方が存在する場合、それらのアクションとフィールドリストは一致しなければなりません

リーダーは有界な辞書および配列検査を実行し、JavaScript、アクション、署名内容を実行しません

検証境界

GetLoadedSignaturePermissions はポリシー構造のみを報告します

VerifyLoadedSignature は引き続き暗号学的完全性を個別に報告します

いずれのメソッドも、報告された DocMDP または FieldMDP 権限にすべての後続増分リビジョンが従うと主張しません。それはリビジョンごとの意味変更分析を必要とするためです

パフォーマンス

プロデューサー検証は作成された AcroForm フィールドと小さな署名参照配列のみをスキャンし、ロード済み検査は選択された署名、そのロック、その参照、Catalog 権限エントリのみを読み取ります

ページ内容、画像ストリーム、フォントプログラム、無関係な間接オブジェクトはデコードされません

関連項目