THotPDF.SaveIncrementalUpdateAuthenticated Method
Аутентифицирует политики подписанных ревизий, отклоняет запрещённые изменения и атомарно публикует инкрементальное обновление
Объявления
function SaveIncrementalUpdateAuthenticated(
const TargetFile: TFileName;
const Options: THPDFAuthenticatedIncrementalUpdateOptions;
out Info: THPDFAuthenticatedIncrementalUpdateInfo
): Boolean; overload;
function SaveIncrementalUpdateAuthenticated(
const TargetFile: TFileName;
out Info: THPDFAuthenticatedIncrementalUpdateInfo
): Boolean; overload;
Порядок работы
- Записывает ожидающую инкрементальную ревизию в уникального кандидата в целевом каталоге
- Загружает каждую политику из той самой ревизии, которую защищает её подписанный byte range
- Аутентифицирует каждую несущую политику CMS-подпись и при необходимости проверяет её certificate path
- Классифицирует каждую последующую ревизию и применяет решения DocMDP, FieldMDP, UR или UR3, Identity, а также для неизвестных transform
- Публикует принятого кандидата путём атомарной замены со сквозной записью
При отказе кандидат удаляется, а существующий целевой файл остаётся побайтово неизменным
Опции
| Член | Назначение |
|---|---|
Authentication | ipaCryptographic требует действительную CMS-подпись byte range, а ipaTrustedCertificate дополнительно требует cvsTrusted по результатам проверки certificate path и revocation |
RequireSignaturePolicy | Отклоняет документы без аутентифицированной политики преобразования, если равно True (значение по умолчанию) |
CertificateValidation | Trust anchors, промежуточные сертификаты, offline-свидетельства revocation, время проверки, назначение и политика алгоритмов, используемые режимом trusted certificate |
Детали результата
THPDFAuthenticatedIncrementalUpdateInfo сообщает итоговый статус, индекс проблемной подписи, статусы подписи и сертификата, общее число подписей, число аутентифицированных политик и диагностическую проблему
Среди важных статусов aiusAccepted, aiusNoSignaturePolicy, aiusSignatureInvalid, aiusCertificateUntrusted, aiusPolicyMalformed, aiusPolicyViolation и aiusCommitFailed
Использование
var
Info: THPDFAuthenticatedIncrementalUpdateInfo;
begin
PDF.BeginIncrementalUpdate('certified.pdf');
PDF.SetLoadedFormFieldValueByName('CustomerName', 'Ada');
if not PDF.SaveIncrementalUpdateAuthenticated('updated.pdf', Info) then
raise Exception.Create(String(Info.Issue));
end;
Граница безопасности
- Политика, присутствующая лишь структурно, никогда не становится авторитетной, пока её подпись успешно не пройдёт аутентификацию
- Словари политик читаются из подписанного снимка и привязываются к исходному объекту подписи, byte range и значению CMS, поэтому последующая ревизия не может перенаправить или подменить собственный источник полномочий
- Режим trusted certificate уместен, когда помимо целостности документа важна личность подписавшего
- Обычный метод
SaveIncrementalUpdateостаётся доступным для неподписанных рабочих процессов, где проверка политик не запрашивается