THPDFPDFMACValidationInfo Record
PDF MAC 검증의 전체 결과입니다. 상태와 메시지, byte-range·MAC 길이, digest·policy 상세, AES-GCM 사용 여부, MAC 위치, 서명 연계, permission-coverage 플래그를 담습니다
선언
THPDFPDFMACValidationInfo= record
Status: THPDFPDFMACStatus;
ByteRangeLength: Int64;
MACLength: Integer;
DigestAlgorithm: THPDFPDFMACDigestAlgorithm;
PolicyProfile: THPDFPDFMACPolicyProfile;
PolicyAccepted: boolean;
UsedAESGCM: boolean;
Message: string;
Location: THPDFPDFMACLocation;
SignatureObjectNumber: Integer;
SignatureGeneration: Integer;
SignatureDigestMatched: boolean;
FullFileCoverage: boolean;
PermissionsAuthenticated: boolean;
MACRequiredByPermissions: boolean;
end;
유닛
HPDFDoc
필드
| 필드 | 목적 |
|---|---|
Status | THPDFPDFMACStatus 판정. MAC가 통과하면 pmsValid, 아니면 구체적인 실패 상태 |
ByteRangeLength | MAC의 /ByteRange가 덮는 파일 바이트 수 |
MACLength | 인코딩된 MAC 값의 길이 |
DigestAlgorithm | 검증한 MAC를 만들 때 쓴 digest 알고리즘 |
PolicyProfile | MAC를 평가한 THPDFPDFMACPolicyProfile |
PolicyAccepted | 공급된 옵션의 digest·AES-GCM 정책이 MAC를 받아들였을 때 true |
UsedAESGCM | MAC 페이로드가 AES-GCM으로 보호됐을 때 true |
Message | 사람이 읽을 수 있는 결과 텍스트. MAC가 유효하다는 문장이나 유효하지 않은 이유 |
Location | THPDFPDFMACLocation. standalone MAC 또는 서명에 붙은 MAC |
SignatureObjectNumber / SignatureGeneration | MAC가 붙는 서명의 객체 참조. Location이 attached MAC를 보고할 때 의미가 있습니다 |
SignatureDigestMatched | attached MAC의 digest가 서명의 바이트 digest와 일치했을 때 true |
FullFileCoverage | 바이트 범위가 파일 전체를 덮을 때 true |
PermissionsAuthenticated | 문서의 permission 비트가 MAC로 덮였을 때 true |
MACRequiredByPermissions | 문서의 permission이 MAC를 요구할 때 true. 이때 MAC가 없으면 그 자체가 검증 실패입니다 |
사용 참고 사항
THotPDF.ValidatePDFMAC와 revision별 validator가 채웁니다. 레코드는 쓰기 전에 리셋되므로 함수가false를 반환해도 들여다봐야 합니다Status를 먼저 확인하고, 이어서PolicyAccepted를 보면 암호적으로는 정상이지만 profile에 걸린 MAC와 망가진 MAC를 구분할 수 있습니다- attached MAC에서는
SignatureObjectNumber와SignatureDigestMatched를 함께 읽어, MAC가 서명이 서명한 바이트와 같은 범위를 덮는지 확인합니다