inspect method

Future<PdfSecurityInspectionResult> inspect(
  1. Uint8List pdfBytes, {
  2. bool validateSignatures = false,
  3. bool includeSha256 = false,
})

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;
}