preflightSignaturesFast method
Future<PdfPreflightSignaturesFastReport>
preflightSignaturesFast(
- Uint8List pdfBytes, {
- PdfSignaturePreparedContext? preparedContext,
- PdfValidationCacheHooks? cacheHooks,
- Duration cacheTtl = const Duration(minutes: 2),
- bool incremental = true,
Implementation
Future<PdfPreflightSignaturesFastReport> preflightSignaturesFast(
Uint8List pdfBytes, {
PdfSignaturePreparedContext? preparedContext,
PdfValidationCacheHooks? cacheHooks,
Duration cacheTtl = const Duration(minutes: 2),
bool incremental = true,
}) async {
final cacheKey = 'preflight-fast:${_sha256Hex(pdfBytes)}';
final cached = await _cacheGet<PdfPreflightSignaturesFastReport>(
cacheHooks,
cacheKey,
fromJson: (raw) => PdfPreflightSignaturesFastReport.fromJson(raw),
);
if (cached != null) {
return cached;
}
if (incremental) {
final quick = _preflightIncremental(
pdfBytes,
preparedContext: preparedContext,
);
await _cachePut(
cacheHooks,
cacheKey,
quick,
cacheTtl,
toJson: (value) => value.toJson(),
);
return quick;
}
final extraction = await _extractor.extractSignatures(
pdfBytes,
includeCertificates: true,
includeSignatureFields: true,
preparedContext: preparedContext,
);
final akiBySignature = _extractAuthorityKeyIdentifiersFromCms(
pdfBytes,
preparedContext: preparedContext,
);
final signatures = extraction.signatures.map((sig) {
final signer = sig.signerCertificate;
final signerSerial = signer?.serial;
final aki = akiBySignature[sig.signatureIndex];
return PdfPreflightSignatureFastInfo(
signatureIndex: sig.signatureIndex,
fieldName: sig.signatureField?.fieldName ?? 'Signature',
serialDecimal: signerSerial?.toString(),
serialHex: signerSerial == null ? null : bigIntToHexUpper(signerSerial),
issuerDn: signer?.issuer,
policyOid: sig.signaturePolicyOid,
signingTime: sig.signingTime,
authorityKeyIdentifierHex: aki,
notes: aki == null || aki.isEmpty
? 'AKI indisponível no certificado extraído.'
: null,
);
}).toList(growable: false);
final result = PdfPreflightSignaturesFastReport(signatures: signatures);
await _cachePut(
cacheHooks,
cacheKey,
result,
cacheTtl,
toJson: (value) => value.toJson(),
);
return result;
}