ApplyPAdESLongTermValidation

Digital signatures

คำอธิบาย

ยกระดับ PDF ที่ลงลายเซ็นแล้วขึ้นเป็น PAdES-B-LT ในครั้งเดียว โดยเขียนผลลงไฟล์

ไวยากรณ์

Delphi

Function TPDFlib.ApplyPAdESLongTermValidation(Const InputFile, Password, OutputFile, FieldName: WideString; Options: Integer): Integer;

พารามิเตอร์

InputFileThe signed PDF.
Passwordรหัสผ่านสำหรับเปิดไฟล์ หรือสตริงว่าง
OutputFilePDF ที่เสริมแล้วที่จะเขียน
FieldNameฟิลด์ลายเซ็นที่จะประมวลผล หรือสตริงว่างเพื่อประมวลผลทุกลายเซ็นเข้า revision เดียว
OptionsA PADES_LTV_* bit mask; 0 selects PADES_LTV_DEFAULT.

Options

PADES_LTV_WRITE_VRI (1)เขียนรายการ VRI หนึ่งรายการต่อหนึ่งลายเซ็น
PADES_LTV_FETCH_OCSP (2)Ask each link's OCSP responder.
PADES_LTV_FETCH_CRL (4)ถ้า OCSP ไม่ตอบอะไรเลย ให้เทียบ CRL แทน
PADES_LTV_FOLLOW_AIA (8)ไล่ตามที่อยู่ของผู้ออกใบรับรองเพื่อสร้างเส้นทางให้ครบ
PADES_LTV_SKIP_EXISTING (16)อย่าเพิ่มวัตถุซ้ำที่ไบต์ของมันถูกเตรียมไว้แล้ว
PADES_LTV_SKIP_ROOT_REVOCATION (32)อย่าขอสถานะของรากที่ตนออกให้ตัวเอง
PADES_LTV_DEFAULT (63)รวมทุกข้อข้างบน เลือกให้เมื่อ Options เป็น 0

ค่าที่ส่งคืน

1The promotion succeeded.
2อ่านไฟล์อินพุตไม่สำเร็จ
3แยกวิเคราะห์ PDF อินพุตไม่สำเร็จ
10เขียนเอาต์พุตไม่สำเร็จ
11เพิ่ม document security store ไม่สำเร็จ
20No such signature field.
21No processed signature carried a readable certificate.

ถ้าค่าไม่ใช่ 1 สาเหตุดูได้จาก GetPAdESLTVError

Remarks

พาธใบรับรองผู้ลงลายเซ็นถูกสร้างจาก CMS ของลายเซ็นเอง และผู้ออกที่เหลือถูกไล่ผ่านที่อยู่ caIssuers ที่ใบรับรองระบุไว้เมื่อตั้ง PADES_LTV_FOLLOW_AIA วัตถุยกเลิกสิทธิ์ถูกเก็บให้ทุกลิงก์ - OCSP ก่อน ตามด้วย CRL - แล้วเขียนพร้อมใบรับรองเข้า document security store ด้วยการอัปเดตแบบ incremental ครั้งเดียว

วัตถุที่เหมือนกับสิ่งที่เตรียมไว้แล้วจะถูกเขียนครั้งเดียวและถูกอ้างโดยทุกลายเซ็นที่ต้องใช้ หน่วยออกใบรับรองที่แชร์ข้ามห่วงโซ่หรือข้ามลายเซ็นจึงไม่ปรากฏซ้ำสองครั้ง รายการ VRI จะถูกเขียนเมื่อมีใบรับรองให้ชี้เท่านั้น รายการว่างจึงไม่เกิดขึ้นเด็ดขาด

responder ที่ติดต่อไม่ได้ไม่ทำให้การเรียกล้ม: การยกระดับไปต่อด้วยสิ่งที่เก็บได้ และ GetPAdESLTVCertificateCount, GetPAdESLTVCRLCount, GetPAdESLTVOCSPCount กับ GetPAdESLTVError รายงานสิ่งที่ได้มาและเหตุผลของสิ่งที่พลาด

ตัวอย่าง

PDF.SetTimeStampOptions(2, 1, 1, 15000, '');
if PDF.ApplyPAdESLongTermValidation('signed.pdf', '', 'signed-lt.pdf', '', 0)<> 1 then
  ShowMessage(PDF.GetPAdESLTVError);

ดูเพิ่มเติม

ApplyPAdESLongTermValidationToStream, GetSignatureCertificateChainLength, AddPAdESDSSOCSPFromCertificates