طريقة 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;
نموذج التحقق
- فهارس المراجعات تبدأ من صفر ومرتّبة من المراجعة الأصلية إلى المراجعة النشطة
- أول مراجعة تحتوي على
AuthCodeتصبح مرساة السلسلة، ويجب أن تحتوي كل مراجعة لاحقة على PDF MAC صالح - يُتحقق من كل MAC مقابل بادئة البايتات الدقيقة التي تنتهي عند حدّي
startxrefو%%EOFالمطابقين لتلك المراجعة - يرفض المُتحقِّق أي MAC تاريخي مستبدَل حتى لو بقي MAC المراجعة النشطة الأحدث صالحًا
- يجب أن يبقى
KDFSaltثابتًا بعد المرساة، وألا تنخفض قوة الملخّص بين المراجعات المحميّة بـ MAC التي شملها التحقق - تُفحص قيمتا
/Pو/Permsالموثّقتان لكل مراجعة، بما في ذلك بتّ إذن اشتراط PDF MAC
سجلات النتائج
تُبلغ 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 وملفات السياسة لدلالات سياسة الملخّص