Estamos felizes em anunciar o lançamento do GroupDocs.Signature for .NET v26.9, disponível a partir de setembro de 2026. Esta versão é uma atualização focada em segurança que introduz suporte ao .NET 10, descontinua o .NET Standard 2.1 e impõe padrões mais rigorosos para carregamento de recursos externos, algoritmos de hash e validação de certificados. Também adiciona suporte para assinatura de documentos Word com certificados pós‑quânticos (ML‑DSA) e resolve vários bugs críticos relacionados à verificação, registro de logs e comportamento específico de plataforma.

Novidades nesta versão

  • [Feature] Suporte ao .NET 10 e .NET Standard 2.1 descontinuado (SIGNATURENET-5938)
  • [Enhancement] Recursos externos não são mais carregados por padrão (SIGNATURENET-5950)
  • [Enhancement] Assinaturas digitais PDF usam SHA‑256 por padrão e respeitam HashAlgorithm (SIGNATURENET-5976)
  • [Enhancement] SignatureFont não expõe mais tipos System.Drawing no .NET 6 e posteriores (SIGNATURENET-5943)
  • [Enhancement] Assinatura com certificado expirado ou ainda não válido é rejeitada por padrão (SIGNATURENET-5995)
  • [Enhancement] Assinar documentos Word com certificados pós‑quânticos (ML‑DSA) (SIGNATURENET-5996)
  • [Bug] Verify não verificava criptograficamente assinaturas digitais PDF (SIGNATURENET-5978)
  • [Bug] SubjectName e IssuerName eram ignorados ao verificar documentos PDF (SIGNATURENET-5997)
  • [Bug] Credenciais do servidor de carimbo de tempo eram enviadas somente quando nome de usuário e senha estavam definidos (SIGNATURENET-5998)
  • [Bug] Salvar apresentações e documentos Word como imagens falhava no Linux e macOS (SIGNATURENET-5999)
  • [Bug] LoadExternalResources era ignorado para documentos dentro de arquivos compactados (SIGNATURENET-6000)
  • [Bug] Imagens externas e folhas de estilo de imagens SVG eram sempre carregadas (SIGNATURENET-6001)
  • [Bug] Busca e verificação de planilha com imagem vinculada lançavam ArgumentNullException (SIGNATURENET-6002)
  • [Bug] CertificateVerifyOptions.Expired estava incorreto em relação ao deslocamento UTC local (SIGNATURENET-6003)
  • [Bug] SignatureSettings.LogLevel não tinha efeito (SIGNATURENET-6004)
  • [Bug] Um VerifyOptions reutilizado relatava assinaturas de documentos verificados anteriormente (SIGNATURENET-6005)
  • [Bug] Um DigitalSignOptions reutilizado assinava apresentações posteriores com o primeiro certificado e comentário (SIGNATURENET-6006)
  • [Enhancement] Melhorias internas (SIGNATURENET-5979)

Alterações na API pública

Membro Alteração
LoadOptions.SkipExternalResources Novo. bool, padrão true. Quando true, recursos externos não são carregados, exceto aqueles que correspondem a WhitelistedResources.
LoadOptions.WhitelistedResources Novo. List<string>, padrão vazio. Partes de endereços que podem ser carregados enquanto SkipExternalResources está true. Um endereço é carregado quando contém uma dessas partes, ignorando maiúsculas/minúsculas. Definir null limpa a lista.
LoadOptions.LoadExternalResources Obsoleto. Ainda funciona, com o sentido oposto de SkipExternalResources. Seu padrão mudou de true para false. Usá‑lo gera o aviso de compilação CS0618.
Conversão implícita de SignatureFont a partir de System.Drawing.Font Removida das compilações .NET 6, .NET 8 e .NET 10. Obsoleta na compilação .NET Framework. Atribua as propriedades de SignatureFont diretamente.
SignOptions.HashAlgorithm Sem alteração de assinatura. Agora tem efeito nas assinaturas digitais PDF; antes era ignorado.
DigitalVerifyOptions.SubjectName, DigitalVerifyOptions.IssuerName Sem alteração de assinatura. Agora têm efeito em documentos PDF; antes eram ignorados nesses documentos.
SignatureSettings.LogLevel Sem alteração de assinatura. Agora tem efeito: somente mensagens dos níveis incluídos chegam ao logger, e LogLevel.None não registra nada. Antes, todas as mensagens eram registradas independentemente do valor. As descrições dos valores de LogLevel foram corrigidas.
VerificationResult.Succeeded, VerificationResult.TotalSignatures Sem alteração de assinatura. Quando um objeto VerifyOptions é usado em várias chamadas Verify, agora listam apenas as assinaturas do documento recém‑verificado.
DigitalSignOptions.AllowExpired Novo. bool, padrão false. Quando false, assinar com um certificado cujo período de validade terminou lança GroupDocsSignatureException. Quando true, o documento é assinado e um aviso é registrado.
DigitalSignOptions.AllowNotYetValid Novo. bool, padrão false. O mesmo, para um certificado cujo período de validade ainda não começou.

Novos recursos

Nenhum recurso novo além dos listados em Novidades nesta versão e Alterações na API pública.

Exemplo de código

Permitir apenas recursos externos confiáveis:

LoadOptions loadOptions = new LoadOptions
{
    WhitelistedResources = new List<string> { "https://cdn.example.com/images/" }
};
using (Signature signature = new Signature("sample.docx", loadOptions))
{
    // Only images from https://cdn.example.com/images/ are loaded.
}

Assinar com SHA‑384 e usar um certificado expirado (com aviso):

using (Signature signature = new Signature("sample.pdf"))
{
    DigitalSignOptions options = new DigitalSignOptions("certificate.pfx")
    {
        Password = "1234567890",
        HashAlgorithm = HashAlgorithm.Sha384 // honoured from this release; the default is SHA-256
    };
    signature.Sign("signed.pdf", options);
}

Assinar com um certificado expirado explicitamente permitido:

SignatureSettings settings = new SignatureSettings(new ConsoleLogger());
using (Signature signature = new Signature("sample.pdf", settings))
{
    DigitalSignOptions options = new DigitalSignOptions("certificate.pfx")
    {
        Password = "1234567890",
        AllowExpired = true
    };
    signature.Sign("signed.pdf", options);
    // If certificate.pfx has expired, the document is signed and the console shows a warning such as:
    // The signing certificate expired on 2019-05-01 12:00 UTC (subject "CN=...", thumbprint ...).
}

Assinar um documento Word com um certificado pós‑quântico ML‑DSA:

using (Signature signature = new Signature("sample.docx"))
{
    DigitalSignOptions options = new DigitalSignOptions("ml-dsa-65.pfx")
    {
        Password = "1234567890"
    };
    signature.Sign("signed.docx", options);
}

Configurar registro de logs para mostrar apenas erros e avisos:

SignatureSettings settings = new SignatureSettings(new ConsoleLogger())
{
    // Errors and warnings, without the step-by-step traces.
    LogLevel = LogLevel.Error | LogLevel.Warning
};

Como obter a atualização

NuGet

Atualize para o pacote mais recente GroupDocs.Signature via NuGet: GroupDocs.Signature 26.9.0

Comando de instalação:

dotnet add package GroupDocs.Signature --version 26.9.0

Download direto

Baixe os assemblies na página GroupDocs.Signature for .NET 26.9

Recursos