PdfItiSignatureReport.fromInfo constructor
PdfItiSignatureReport.fromInfo(
- PdfSignatureInfoReport info, {
- String? policyLabel,
Implementation
factory PdfItiSignatureReport.fromInfo(
PdfSignatureInfoReport info, {
String? policyLabel,
}) {
final signerCert = info.signerCertificate;
final signerName =
signerCert?.subject ?? info.signatureField?.name ?? 'Não informado';
final title = signerName.isNotEmpty ? signerName : 'Assinatura';
final cpf = signerCert?.icpBrasilIds?.cpf;
final cpfMasked = _maskCpf(cpf) ?? 'Não informado';
final signatureType = 'Destacada';
final revoked = info.revocation.crlRevoked || info.revocation.ocspRevoked;
final signatureStatus = (info.cmsValid &&
info.digestValid &&
info.intact &&
info.certValid != false &&
!revoked)
? 'Aprovado'
: 'Reprovado';
final certPathStatus = info.chainTrusted == true
? 'Valid'
: (info.chainTrusted == false ? 'Invalid' : 'Unknown');
final structureStatus =
info.intact ? 'Em conformidade com o padrão' : 'Não conforme';
final asymmetricCipherStatus = info.cmsValid ? 'Aprovada' : 'Reprovada';
final digestOk = info.digestValid ? 'true' : 'false';
final signingTime = _formatDateTimeBrt(info.signingTime) ??
(info.signatureField?.signingTimeRaw ?? 'Não informado');
final signaturePolicy =
policyLabel ?? info.signaturePolicyOid ?? 'Não informado';
final requiredAttrsOk =
info.signedAttrsReport?.missingRequiredOids.isEmpty == true &&
info.signatureDictionaryPresent == true;
final requiredAttrsStatus = requiredAttrsOk ? 'Aprovados' : 'Reprovados';
final incrementalCheck = info.docMdp.isCertificationSignature == true &&
info.docMdp.permissionP != null
? 'DocMDP - Com permissão ${info.docMdp.permissionP}, DocMDP'
: 'Não possui';
final message = info.message ?? 'Nenhuma mensagem de alerta';
final certificates = _buildCertificatesReport(info);
final attributes = _buildAttributesReport(info);
return PdfItiSignatureReport(
title: title,
signerName: signerName,
cpfMasked: cpfMasked,
signatureType: signatureType,
signatureStatus: signatureStatus,
certPathStatus: certPathStatus,
structureStatus: structureStatus,
asymmetricCipherStatus: asymmetricCipherStatus,
digestOk: digestOk,
signingTime: signingTime,
signaturePolicy: signaturePolicy,
requiredAttrsStatus: requiredAttrsStatus,
incrementalCheck: incrementalCheck,
message: message,
certificates: certificates,
requiredAttributes: attributes.required,
optionalAttributes: attributes.optional,
chainTrusted: info.chainTrusted,
);
}