extractSignatures method
Future<PdfSignatureExtractionReport>
extractSignatures(
- Uint8List pdfBytes, {
- bool includeCertificates = true,
- bool includeSignatureFields = true,
- PdfSignaturePreparedContext? preparedContext,
Implementation
Future<PdfSignatureExtractionReport> extractSignatures(
Uint8List pdfBytes, {
bool includeCertificates = true,
bool includeSignatureFields = true,
PdfSignaturePreparedContext? preparedContext,
}) async {
final context = _validator.prepareContext(
pdfBytes,
includeSignatureFields: includeSignatureFields,
includeSignatureContents: true,
baseContext: preparedContext,
);
final fieldByRange = context.fieldByRange;
final ranges = context.ranges;
final results = <PdfSignatureExtractionInfo>[];
for (var i = 0; i < ranges.length; i++) {
final range = ranges[i];
final fieldInfo =
includeSignatureFields ? fieldByRange[_byteRangeKey(range)] : null;
final contents = context.signatureContentsAt(i) ??
_extractContentsFromByteRange(pdfBytes, range);
if (contents == null || contents.isEmpty) {
results.add(PdfSignatureExtractionInfo(
signatureIndex: i,
signatureField: fieldInfo,
contentsPresent: false,
signingTime: fieldInfo?.signingTimeRaw != null
? _parsePdfDate(fieldInfo!.signingTimeRaw!)
: null,
signaturePolicyOid: null,
signedAttrsOids: null,
certificates: null,
signerCertificate: null,
message: 'Conteúdo de assinatura ausente ou inválido.',
));
continue;
}
final signingTime = _extractSigningTimeFromCms(contents) ??
(fieldInfo?.signingTimeRaw != null
? _parsePdfDate(fieldInfo!.signingTimeRaw!)
: null);
final signaturePolicyOid = _extractSignaturePolicyOid(contents);
final signedAttrsOids = _extractSignedAttrsOids(contents);
final certInfos =
includeCertificates ? _extractCertificatesInfo(contents) : null;
final signerCertInfo =
includeCertificates ? _extractSignerCertificateInfo(contents) : null;
results.add(PdfSignatureExtractionInfo(
signatureIndex: i,
signatureField: fieldInfo,
contentsPresent: true,
signingTime: signingTime,
signaturePolicyOid: signaturePolicyOid,
signedAttrsOids: signedAttrsOids,
certificates: certInfos,
signerCertificate: signerCertInfo,
message: null,
));
}
return PdfSignatureExtractionReport(signatures: results);
}