Chữ ký chứng thực và khóa trường

HotPDF có thể tạo các cấu trúc quyền PDF đính kèm với chữ ký chứng thực và khóa trường đã ký, sau đó kiểm tra cùng các cấu trúc đó trong một tài liệu đã tải

API nhà sản xuất

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 kết hợp việc tạo vị trí giữ đã ký với cấu hình chứng thực

ConfigureCertificationSignature dành cho một vị trí giữ đã ký đã được tạo và yêu cầu trường đó phải là trường đầu tiên mang từ điển chữ ký

Một tài liệu chỉ có thể chứa một chữ ký chứng thực, vì vậy yêu cầu cấu hình thứ hai bị từ chối trước khi đồ thị đối tượng bị thay đổi

Các API này tự động đàm phán với đầu ra PDF 1.5

Cấp quyền DocMDP

Giá trị Quyền chứng thực
dmpNoChangesKhông cho phép thay đổi nào sau khi chứng thực
dmpFormFillAndSignCho phép điền biểu mẫu, khởi tạo mẫu và ký
dmpFormFillSignAndAnnotateCho phép các thay đổi ở trên cộng với việc tạo, xóa và sửa đổi chú thích

dmpNone được dành riêng cho kết quả kiểm tra mà không có biến đổi DocMDP và bị nhà sản xuất từ chối

Phạm vi khóa trường

Giá trị Đối số trường Tác dụng sau khi ký
flaAllPhải để trốngKhóa mọi trường biểu mẫu
flaIncludeMột hoặc nhiều tên trường duy nhấtChỉ khóa các trường được liệt kê
flaExcludeMột hoặc nhiều tên trường duy nhấtKhóa mọi trường trừ các trường được liệt kê

AttachSignatureFieldLock từ chối tên trống, tên trùng lặp, giá trị hành động không hợp lệ, hình dạng trường không tương thích, trường đích chưa được ký, hoặc trường đã mang khóa hoặc chính sách FieldMDP

Cấu trúc phát ra

Ví dụ 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;

Kiểm tra đã tải

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

Trình đọc báo cáo quyền DocMDP, liên kết Catalog, phạm vi SigFieldLock, phạm vi FieldMDP, tên trường, tính hợp lệ cấu trúc và chuỗi vấn đề chẩn đoán

Nó xác minh các hình dạng đối tượng trực tiếp và gián tiếp bắt buộc và xác nhận rằng Catalog /Perms /DocMDP nhắm mục tiêu cùng một từ điển chữ ký

Nếu cả SigFieldLock và FieldMDP đều có mặt, các hành động và danh sách trường của chúng phải đồng ý

Trình đọc thực hiện kiểm tra từ điển và mảng có giới hạn và không thực thi JavaScript, hành động hoặc nội dung chữ ký

Giới hạn xác thực

GetLoadedSignaturePermissions chỉ báo cáo cấu trúc chính sách

VerifyLoadedSignature tiếp tục báo cáo tính toàn vẹn mật mã riêng biệt

Không phương thức nào trong hai phương thức này tuyên bố rằng mọi bản sửa đổi gia tăng sau này đều tuân thủ quyền DocMDP hoặc FieldMDP được báo cáo, vì điều đó đòi hỏi phân tích thay đổi ngữ nghĩa theo từng bản sửa đổi

Hiệu suất

Xác thực nhà sản xuất chỉ quét các trường AcroForm đã tạo và mảng tham chiếu chữ ký nhỏ, trong khi kiểm tra đã tải chỉ đọc chữ ký đã chọn, khóa của nó, các tham chiếu của nó và mục quyền Catalog

Không có nội dung trang, luồng hình ảnh, chương trình phông chữ hay đối tượng gián tiếp không liên quan nào được giải mã

Xem thêm