toUiSummary method
Implementation
PdfUiSummary toUiSummary(
PdfValidationWithProfilesResult result, {
String locale = 'pt_BR',
}) {
final signatures = result.report.signatures.map((sig) {
final signer = sig.signerCertificate;
final trust = result.trustResolutionBySignature.firstWhere(
(e) => e.signatureIndex == sig.signatureIndex,
orElse: () => PdfTrustResolutionBySignature(
signatureIndex: sig.signatureIndex,
fieldName: sig.signatureField?.fieldName ?? 'Signature',
trustedByProfile: const <String, bool>{},
winningProfile: null,
reasons: const <String>[],
),
);
final alerts = <String>[];
if (!sig.intact) {
alerts.add('Documento modificado após assinatura.');
}
if (!sig.cmsValid || !sig.digestValid) {
alerts.add('Falha criptográfica de assinatura.');
}
final rev = _revocationStatus(sig.revocation);
if (rev == 'revoked') {
alerts.add('Certificado revogado.');
} else if (rev == 'unknown') {
alerts.add('Revogação não comprovada.');
}
if (trust.winningProfile == null) {
alerts.add('Cadeia não resolvida por perfil de confiança.');
}
final nome = _nameFromSubject(signer?.subject) ??
sig.signatureField?.fieldName ??
'Assinante';
return PdfUiSignatureSummary(
signatureIndex: sig.signatureIndex,
nome: nome,
cpfMasked: _maskCpf(signer?.icpBrasilIds?.cpf),
cadeia: trust.winningProfile ?? 'Desconhecida',
integridade: sig.intact && sig.cmsValid && sig.digestValid,
alertas: alerts,
);
}).toList(growable: false);
return PdfUiSummary(
locale: locale,
signatures: signatures,
);
}