PDFium Delphi Component Docs

หน่วย FPdfMac

Unit: FPdfMac
สร้างและตรวจสอบโทเค็น CMS AuthenticatedData สำหรับ authentication code ของ PDF ตาม ISO/TS 32004 ทั้งแบบสแตนด์อโลนและแบบแนบกับลายเซ็น

Syntax

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;

Description

ตัวสร้าง derive key สำหรับเข้ารหัส key แบบ AES-256 จาก file encryption key ขนาด 32 ไบต์และ /KDFSalt ด้วย HKDF-SHA256 และค่า info แบบ UTF-8 คือ PDFMAC

MAC key ขนาด 256 บิตแบบสุ่มจะถูกห่อด้วย RFC 3394 AES-256 Key Wrap และสร้างขึ้นใน PasswordRecipientInfo เดี่ยวที่ ISO/TS 32004 กำหนด

โทเค็นฝัง PdfMacIntegrityInfo แบบเวอร์ชันศูนย์ attribute ที่ต้องมีการตรวจสอบ, CMSAlgorithmProtection และค่า HMAC-SHA256 บนการเข้ารหัส SET แบบ DER canonical ของ attribute เหล่านั้น

ผู้เรียกเป็นเจ้าของการ serialize PDF และส่ง digest SHA-256 ของ segment /ByteRange ที่แน่นอนเข้ามา โค้ดแอปพลิเคชันปกติใช้ TPdfEncryptOptions.EnableIntegrityProtection และ TPdf.ValidatePdfMac

โทเค็นแบบแนบกับลายเซ็นจะผูก data digest เข้ากับ signature digest และหมายเลขอ็อบเจกต์กับ generation ของลายเซ็นก่อนสร้างหรือตรวจสอบโทเค็นที่ผ่านการตรวจสอบในรูปแบบเดียวกัน

Functions

FunctionDescription
BuildStandalonePdfMacTokenสร้างโทเค็น AuthenticatedData แบบสแตนด์อโลนจาก file-encryption key ขนาด 32 ไบต์, KDF salt และค่า data digest
VerifyStandalonePdfMacTokenตรวจสอบ DER canonical, อัลกอริทึม, attribute, wrapped key, data digest ที่คาดหวัง และ HMAC แบบเวลาคงที่ในจุดที่เปรียบเทียบค่าลับ
BuildAttachedPdfMacTokenสร้างโทเค็นแบบแนบกับลายเซ็นโดย hash data digest, signature digest, หมายเลขอ็อบเจกต์ลายเซ็น และ generation ของลายเซ็นเข้าเป็น integrity digest ที่ผูกไว้
VerifyAttachedPdfMacTokenสร้าง binding digest แบบแนบกับลายเซ็นใหม่จากบริบทลายเซ็นที่คาดหวัง แล้วตรวจสอบโทเค็นที่ได้

Current scope

การ implement รองรับ authentication code ทั้งแบบสแตนด์อโลนและแบบแนบกับลายเซ็น data digest และ signature digest แบบ SHA-256, HMAC-SHA256, AES-256 Key Wrap และ file key ขนาด 32 ไบต์ของ Standard Security Handler

public-key security handler และอัลกอริทึม digest ทางเลือกยังไม่ถูกสร้าง

See Also

FPdfHmac, FPdfAes, FPdfEncrypt, TPdf.ValidatePdfMac