inspect method

Future<PdfSignatureInspectionReport> inspect(
  1. Uint8List pdfBytes, {
  2. List<String>? trustedRootsPem,
  3. TrustedRootsProvider? trustedRootsProvider,
  4. List<TrustedRootsProvider>? trustedRootsProviders,
  5. bool strictRevocation = false,
  6. bool fetchCrls = false,
  7. bool fetchOcsp = false,
  8. PdfRevocationDataProvider? revocationDataProvider,
  9. PdfHttpFetcherBase? certificateFetcher,
  10. bool includeCertificates = true,
  11. bool includeSignatureFields = true,
})

Implementation

Future<PdfSignatureInspectionReport> inspect(
  Uint8List pdfBytes, {
  List<String>? trustedRootsPem,
  TrustedRootsProvider? trustedRootsProvider,
  List<TrustedRootsProvider>? trustedRootsProviders,
  bool strictRevocation = false,
  bool fetchCrls = false,
  bool fetchOcsp = false,
  PdfRevocationDataProvider? revocationDataProvider,
  PdfHttpFetcherBase? certificateFetcher,
  bool includeCertificates = true,
  bool includeSignatureFields = true,
}) async {
  final report = await PdfSignatureValidator().validateAllSignatures(
    pdfBytes,
    trustedRootsPem: trustedRootsPem,
    trustedRootsProvider: trustedRootsProvider,
    trustedRootsProviders: trustedRootsProviders,
    strictRevocation: strictRevocation,
    fetchCrls: fetchCrls,
    fetchOcsp: fetchOcsp,
    revocationDataProvider: revocationDataProvider,
    certificateFetcher: certificateFetcher,
    includeCertificates: includeCertificates,
    includeSignatureFields: includeSignatureFields,
  );

  final summaries = report.signatures.map((sig) {
    final fieldName = sig.signatureField?.fieldName ?? 'Signature';
    final signer = _buildSignerInfo(sig.signerCertificate);
    final policyPresent = sig.signaturePolicyOid != null;
    final rawSigningTime = sig.signatureField?.signingTimeRaw;
    final signingTime = policyPresent && rawSigningTime != null
        ? parsePdfDateLocal(rawSigningTime)
        : sig.signingTime ?? parsePdfDateLocal(rawSigningTime);

    return PdfSignatureSummary(
      signatureIndex: sig.signatureIndex,
      fieldName: fieldName,
      signer: signer,
      signingTime: signingTime,
      policyPresent: policyPresent,
      policyDigestOk: null,
      cmsSignatureValid: sig.cmsValid,
      byteRangeDigestOk: sig.digestValid,
      documentIntact: sig.intact,
      chainTrusted: sig.chainTrusted,
      docMdp: sig.docMdp,
    );
  }).toList(growable: false);

  return PdfSignatureInspectionReport(signatures: summaries);
}