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 |
|---|---|
dmpNoChanges | Không cho phép thay đổi nào sau khi chứng thực |
dmpFormFillAndSign | Cho phép điền biểu mẫu, khởi tạo mẫu và ký |
dmpFormFillSignAndAnnotate | Cho 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ý |
|---|---|---|
flaAll | Phải để trống | Khóa mọi trường biểu mẫu |
flaInclude | Một hoặc nhiều tên trường duy nhất | Chỉ khóa các trường được liệt kê |
flaExclude | Một hoặc nhiều tên trường duy nhất | Khó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
- Chữ ký chứng thực mang một mảng
/Referencetrực tiếp chứa một từ điển tham chiếu chữ ký DocMDP trực tiếp và các tham số biến đổi trực tiếp - Mục Catalog
/Perms /DocMDPtrỏ tới cùng một từ điển chữ ký gián tiếp - Mục trường
/Locktrỏ tới một từ điển gián tiếp/Type /SigFieldLock - Phạm vi khóa được sao chép vào một tham chiếu chữ ký FieldMDP trực tiếp và mục
/Datacủa nó trỏ tới gốc Catalog gián tiếp - Từ điển chữ ký đánh dấu các tham chiếu biến đổi là quan trọng thông qua
/V 1
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ã