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;
빌더는 32바이트 파일 암호화 키와 /KDFSalt에서 HKDF-SHA256 및 UTF-8 info 값 PDFMAC으로 AES-256 키 암호화 키를 유도합니다
무작위 256비트 MAC 키는 RFC 3394 AES-256 Key Wrap으로 래핑되어 ISO/TS 32004가 요구하는 단일 PasswordRecipientInfo에 담깁니다
토큰은 버전 0 PdfMacIntegrityInfo, 필수 인증 속성, CMSAlgorithmProtection, 속성의 정규 DER SET 인코딩에 대한 HMAC-SHA256 값을 포함합니다
호출자가 PDF 직렬화를 소유하며 정확한 /ByteRange 세그먼트의 SHA-256 다이제스트를 공급합니다. 애플리케이션 코드는 보통 TPdfEncryptOptions.EnableIntegrityProtection과 TPdf.ValidatePdfMac을 사용합니다
결합형 토큰은 같은 인증 토큰 형식을 빌드하거나 검증하기 전에 데이터 다이제스트를 서명 다이제스트 및 서명 객체 번호와 세대에 결합합니다
| Function | Description |
|---|---|
BuildStandalonePdfMacToken | 32바이트 파일 암호화 키, KDF 솔트, 데이터 다이제스트 값으로 독립형 AuthenticatedData 토큰을 만듭니다 |
VerifyStandalonePdfMacToken | 정규 DER, 알고리즘, 속성, 래핑된 키, 예상 데이터 다이제스트, HMAC을 검증하며 비밀 값을 비교할 때는 상수 시간으로 수행합니다 |
BuildAttachedPdfMacToken | 데이터 다이제스트, 서명 다이제스트, 서명 객체 번호, 서명 세대를 결합 무결성 다이제스트로 해싱하여 결합형 토큰을 만듭니다 |
VerifyAttachedPdfMacToken | 예상 서명 컨텍스트에서 결합 다이제스트를 다시 만들고 결과 토큰을 검증합니다 |
이 구현은 독립형 및 서명 결합형 인증 코드, SHA-256 데이터·서명 다이제스트, HMAC-SHA256, AES-256 Key Wrap, 32바이트 Standard Security Handler 파일 키를 지원합니다
공개 키 보안 핸들러와 대체 다이제스트 알고리즘은 생성되지 않습니다