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]
SignatureFontnão expõe mais tiposSystem.Drawingno .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]
Verifynão verificava criptograficamente assinaturas digitais PDF (SIGNATURENET-5978) - [Bug]
SubjectNameeIssuerNameeram 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]
LoadExternalResourcesera 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.Expiredestava incorreto em relação ao deslocamento UTC local (SIGNATURENET-6003) - [Bug]
SignatureSettings.LogLevelnão tinha efeito (SIGNATURENET-6004) - [Bug] Um
VerifyOptionsreutilizado relatava assinaturas de documentos verificados anteriormente (SIGNATURENET-6005) - [Bug] Um
DigitalSignOptionsreutilizado 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