IntegrityProtection Property

Definition

Namespace Broadside
Assembly Broadside.dll

Gets or sets a value indicating whether the saved file carries an integrity MAC (a PDF MAC token) that a reader holding the file encryption key checks against every byte of the file. The default is false.

public bool IntegrityProtection { get; set; }

Returns

Remarks

ISO/TS 32004: the encryption dictionary gets a random 32-byte KDFSalt (§5.1.1), permission bit 13 is cleared so a MAC is required in every revision (§5.1.2), and the trailer an AuthCode dictionary whose standalone token covers the whole file except the token (§5.2.3, §6.5.1): HMAC-SHA-256 under a random key wrapped with AES-256 key wrap, its key encryption key derived from the file encryption key with HKDF-SHA-256 (§6.3, §6.4), over the SHA-256 digest of the file (§6.6.2). The save declares the extension in the catalog's Extensions (ISO_, level 32004, §4). An incremental update of the saved file, and a complete save with its own key, compute the MAC again.

Needs Aes256 or Aes256Gcm (V 5 or later, Table 5); a save that combines it with a deprecated algorithm is refused. The MAC proves knowledge of the file encryption key, so with an empty user password it protects nothing (§6.4, NOTE 2).