PdfItiSignatureReport.fromInfo constructor

PdfItiSignatureReport.fromInfo(
  1. PdfSignatureInfoReport info, {
  2. 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,
  );
}