Запись THPDFSignatureRevisionAnalysis
Классификация каждой инкрементальной ревизии после PDF-подписи с учётом политик
Объявление
THPDFSignatureRevisionAnalysis= record
SignedRevisionLength: Int64;
TotalRevisionCount: Integer;
SignedRevisionIndex: Integer;
ModificationLevel: THPDFRevisionModificationLevel;
ChangeKinds: THPDFRevisionChangeKinds;
ChangedObjectCount: Integer;
FreedObjectCount: Integer;
ChangedFieldNames: THPDFAnsiStringArray;
Permissions: THPDFSignaturePermissionInfo;
DocMDPCompliant: boolean;
FieldMDPCompliant: boolean;
URCompliant: boolean;
IdentityCompliant: boolean;
TransformCompliant: boolean;
PolicyCompliant: boolean;
Revisions: THPDFSignatureRevisionChangeArray;
Issue: AnsiString;
end;
Модуль
HPDFDoc
Поля
| Поле | Назначение |
|---|---|
SignedRevisionLength | Длина файла в байтах на момент наложения подписи |
TotalRevisionCount | Число инкрементальных ревизий в файле |
SignedRevisionIndex | Индекс ревизии, покрытой подписью, с нуля |
ModificationLevel | Наивысшая семантическая серьёзность изменений после подписи: от rmlNone до rmlOther |
ChangeKinds | Набор конкретных видов изменений, обнаруженных в последующих ревизиях |
ChangedObjectCount | Объекты, переопределённые последующими ревизиями |
FreedObjectCount | Объекты, освобождённые последующими ревизиями |
ChangedFieldNames | Поля формы, чьи значения трогали последующие ревизии |
Permissions | Структурная инспекция политик DocMDP / FieldMDP / UR подписанного документа |
DocMDPCompliant | True, если наблюдавшиеся изменения укладываются в подписанный уровень разрешений DocMDP |
FieldMDPCompliant | True, если изменения полей соблюдают подписанную политику FieldMDP |
URCompliant | True, если ограничения usage rights не нарушены |
IdentityCompliant | True, если ожидания transform Identity (например, timestamps) выполняются |
TransformCompliant | True, если в последующих ревизиях не появилось ни одного нераспознанного transform-метода |
PolicyCompliant | Совокупный вердикт по всем проверкам соответствия |
Revisions | По одной записи THPDFSignatureRevisionChange на каждую последующую ревизию — со своими списками объектов и текстом проблем |
Issue | Причина провала анализа; при успехе пусто |
Примечания по использованию
- Заполняйте методом
AnalyzeLoadedSignatureRevisions; перегрузка для stream нужна, когда у документа нет исходного файла на диске - Порядок уровней изменения намеренный: больший порядковый номер никогда не бывает менее строгим, поэтому сравнивайте номера с подписанной политикой
- Криптографическая валидность остаётся зоной ответственности
VerifyLoadedSignature; эта запись классифицирует, что изменилось, а не сходятся ли байты