function BuildStandalonePdfMacToken(const FileEncryptionKey, KdfSalt,
DataDigest: TBytes): TBytes;
function VerifyStandalonePdfMacToken(const Token, FileEncryptionKey,
KdfSalt, ExpectedDataDigest: TBytes;
out ErrorText: string): Boolean;
function BuildAttachedPdfMacToken(const FileEncryptionKey, KdfSalt,
DataDigest, SignatureDigest: TBytes; SignatureObjectNumber,
SignatureGeneration: Integer): TBytes;
function VerifyAttachedPdfMacToken(const Token, FileEncryptionKey, KdfSalt,
ExpectedDataDigest, ExpectedSignatureDigest: TBytes;
SignatureObjectNumber, SignatureGeneration: Integer;
out ErrorText: string): Boolean;
De builder leidt een AES-256 key-encryption-key af uit de 32-byte bestandsversleutelingssleutel en /KDFSalt met HKDF-SHA256 en de UTF-8-infowaarde PDFMAC
Een willekeurige 256-bits MAC-sleutel wordt gewrapped met RFC 3394 AES-256 Key Wrap en uitgevoerd in de enige PasswordRecipientInfo die ISO/TS 32004 vereist
Het token bevat een PdfMacIntegrityInfo versie nul, de vereiste geauthenticeerde attributen, CMSAlgorithmProtection en een HMAC-SHA256-waarde over de canonieke DER SET-codering van de attributen
De aanroeper is eigenaar van de PDF-serialisatie en levert de SHA-256-digest van de exacte /ByteRange-segmenten; applicatiecode gebruikt normaal gesproken TPdfEncryptOptions.EnableIntegrityProtection en TPdf.ValidatePdfMac
Gekoppelde tokens binden de datadigest aan een handtekeningsdigest en het objectnummer en de generatie van de handtekening, voordat hetzelfde geauthenticeerde tokenformaat wordt gebouwd of geverifieerd
| Function | Description |
|---|---|
BuildStandalonePdfMacToken | Bouwt een zelfstandig AuthenticatedData-token uit waarden voor een 32-byte bestandsversleutelingssleutel, KDF-zout en datadigest |
VerifyStandalonePdfMacToken | Valideert canonieke DER, algoritmen, attributen, de gewrapte sleutel, de verwachte datadigest en de HMAC, waar secreties vergeleken worden in constante tijd |
BuildAttachedPdfMacToken | Bouwt een gekoppeld token door de datadigest, handtekeningsdigest, het objectnummer en de generatie van de handtekening te hashen tot de gebonden integriteitsdigest |
VerifyAttachedPdfMacToken | Reconstrueert de gekoppelde bindingsdigest uit de verwachte handtekeningcontext en verifieert het resulterende token |
De implementatie ondersteunt zelfstandige en aan handtekeningen gekoppelde authenticatiecodes, SHA-256-data- en handtekeningsdigests, HMAC-SHA256, AES-256 Key Wrap en 32-byte bestandssleutels van de Standard Security Handler
Public-key-securityhandlers en alternatieve digestalgoritmen worden niet gegenereerd