طريقة THotPDF.ValidatePDFMACChain

يتحقق من كل مراجعة محميّة بـ PDF MAC بدءًا من أقدم قسم cross-reference وصولًا إلى المراجعة النشطة، ويُعيد تشخيصات سلامة مفصّلة لكل مراجعة

التصريح

function ValidatePDFMACChain(const FileName: TFileName; const Password: AnsiString; out ValidationInfo: THPDFPDFMACChainValidationInfo): boolean; overload;
function ValidatePDFMACChain(const FileName: TFileName; const Password: AnsiString; const Options: THPDFPDFMACOptions; out ValidationInfo: THPDFPDFMACChainValidationInfo): boolean; overload;

نموذج التحقق

سجلات النتائج

تُبلغ THPDFPDFMACChainValidationInfo عن RevisionCount وFirstMACRevisionIndex وValidatedRevisionCount وFailureRevisionIndex وFailureXRefOffset وتغطية الأذونات واستقرار الملح (salt) ورُتابة قوة الملخّص، وعن سجل THPDFPDFMACRevisionValidation واحد لكل مراجعة

يميّز THPDFPDFMACChainFailure بين أخطاء حدود المراجعات، وغياب MAC، وMAC غير صالح أو مستبدَل، وتغيّر KDFSalt، وتخفيض قوة الملخّص، وتخفيض الأذونات الموثّقة

ينفّذ التطبيق حصرًا واحدًا لسلسلة المراجعات ويحدّث حالة cross-reference تراكمية واحدة، ما يتجنّب نسخ PDF المؤقتة وفهرسة الكائنات المتكررة مع الحفاظ على تحقق تشفيري مستقل لكل مراجعة محميّة

مثال Delphi

var
  ChainInfo: THPDFPDFMACChainValidationInfo;
begin
  if not PDF.ValidatePDFMACChain('authenticated.pdf', 'user-password',
    ChainInfo) then
    raise Exception.CreateFmt('Revision %d at xref %d failed: %s',
      [ChainInfo.FailureRevisionIndex, ChainInfo.FailureXRefOffset,
       ChainInfo.Message]);
end;

الفحص المسبق

يُعرّض CreatePreflightReport النتيجة نفسها تحت اسم PDFMACRevisionChain، ما يتيح لسير العمل الآلي التمييز بين صلاحية المراجعة النشطة وصلاحية سلسلة المراجعات كاملة

راجع ValidatePDFMAC عند الحاجة إلى فحص المراجعة النشطة فقط، أو مرونة خوارزمية PDF MAC وملفات السياسة لدلالات سياسة الملخّص