evaluateDocMdp method
Implementation
PdfDocMdpEvaluation evaluateDocMdp(PdfSignatureValidationReport report) {
final cert = report.signatures.where(
(s) => s.docMdp.isCertificationSignature == true,
);
if (cert.isEmpty) {
return const PdfDocMdpEvaluation(
canAppendSignature: true,
code: PdfDocMdpDecisionCode.noCertification,
reason: 'Sem assinatura de certificação (DocMDP).',
);
}
final perms =
cert.map((e) => e.docMdp.permissionP).whereType<int>().toSet();
if (perms.contains(2)) {
return const PdfDocMdpEvaluation(
canAppendSignature: true,
code: PdfDocMdpDecisionCode.p2Allowed,
reason: 'DocMDP P=2 permite formulários e novas assinaturas.',
permissionP: 2,
);
}
if (perms.contains(3)) {
return const PdfDocMdpEvaluation(
canAppendSignature: true,
code: PdfDocMdpDecisionCode.p3Allowed,
reason: 'DocMDP P=3 permite anotações, formulários e assinaturas.',
permissionP: 3,
);
}
if (perms.contains(1)) {
return const PdfDocMdpEvaluation(
canAppendSignature: false,
code: PdfDocMdpDecisionCode.p1Blocked,
reason: 'DocMDP P=1 bloqueia alterações e novas assinaturas.',
permissionP: 1,
);
}
return const PdfDocMdpEvaluation(
canAppendSignature: false,
code: PdfDocMdpDecisionCode.unknown,
reason: 'DocMDP presente com permissão indefinida.',
);
}