inspect method
Implementation
Future<PdfSecurityInspectionResult> inspect(
Uint8List pdfBytes, {
bool validateSignatures = false,
bool includeSha256 = false,
}) async {
var result = quickInspect(pdfBytes);
bool? allSignaturesIntact;
if (validateSignatures && result.isSigned) {
final report = await PdfSignatureValidator().validateAllSignatures(
pdfBytes,
includeCertificates: false,
includeSignatureFields: false,
);
allSignaturesIntact = report.signatures.isNotEmpty &&
report.signatures.every((sig) => sig.intact);
}
String? sha256Hex;
if (includeSha256) {
final digest = await _crypto.sha256(pdfBytes);
sha256Hex = bytesToHex(digest);
}
final mergedIssues = <String>[...result.issues];
var isCorrupted = result.isCorrupted;
if (allSignaturesIntact == false) {
mergedIssues.add('Assinatura presente, mas integridade do documento falhou.');
isCorrupted = true;
}
result = PdfSecurityInspectionResult(
isPdf: result.isPdf,
isEncrypted: result.isEncrypted,
isSigned: result.isSigned,
isCorrupted: isCorrupted,
signatureCount: result.signatureCount,
pdfVersion: result.pdfVersion,
startXref: result.startXref,
hasEofMarker: result.hasEofMarker,
hasValidByteRanges: result.hasValidByteRanges,
issues: List.unmodifiable(mergedIssues),
subFilters: result.subFilters,
supportedSubFilters: result.supportedSubFilters,
allSignaturesIntact: allSignaturesIntact,
sha256Hex: sha256Hex,
);
return result;
}