Я использую C# с .net 9, и мне нужно цифровое подписать документ XML, используя сертификат X.509. Сам процесс подписания работает отлично. Тем не менее, мне дали очень конкретное требование: тег
signedXmlWithSchPrefix.SetAttribute("xmlns:sch", customNamespace);
Мне нужно сделать это, чтобы изменить пространство имен на пользовательский. Поскольку я не могу изменить тег после его сгенерирования, единственный способ представить, что это сработает, это если .NET генерирует тег после моих требований. < /P>
Вот моя текущая реализация: < /p>
public static string SignWithCertificate(string xmlFilePath, string certThumbprint)
{
// Busca o certificado
X509Certificate2 cert = GetCertificateFromLocalMachine(certThumbprint);
if (cert == null || !cert.HasPrivateKey)
throw new Exception("Certificado não encontrado.");
// Faz o parse do XML
XmlDocument xmlDoc = new() { PreserveWhitespace = true };
xmlDoc.LoadXml(File.ReadAllText(xmlFilePath));
if (xmlDoc.DocumentElement == null)
throw new ArgumentException("Falta o elemento raíz do documento XML.");
// Define o prefixo e namespace no documento ANTES de assinar
string customPrefix = "sch";
string customNamespace = "http://www.ans.gov.br/padroes/tiss/schemas";
XmlNamespaceManager nsManager = new(xmlDoc.NameTable);
nsManager.AddNamespace(customPrefix, customNamespace);
// Adiciona as referências/transforms
Reference reference = new() { Uri = "" };
reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
// Prepara a assinatura
SignedXml signedXml = new(xmlDoc) { SigningKey = cert.GetRSAPrivateKey() };
Signature xmlSignature = signedXml.Signature;
xmlSignature.SignedInfo.AddReference(reference);
KeyInfo keyInfo = new();
keyInfo.AddClause(new KeyInfoX509Data(cert));
xmlSignature.KeyInfo = keyInfo;
// Gera a assinatura
signedXml.ComputeSignature();
XmlElement signedXmlWithSchPrefix = signedXml.GetXml();
signedXmlWithSchPrefix.SetAttribute("xmlns:sch", customNamespace); //
Подробнее здесь: https://stackoverflow.com/questions/795 ... efix-in-th
В цифровом подписанном (от .NET 9) XML -документе, как я могу изменить префикс в сгенерированном теге <Gignature> без ан ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Новые строки/табуляторы в сгенерированном документе превращаются в пробелы.
Anonymous » » в форуме Python - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Карла — CondaValueError: целевой префикс — это базовый префикс. Прерывание
Anonymous » » в форуме Python - 0 Ответы
- 61 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Вызов Wintrust.WinVerifyTrust из Java через JNA возвращает ошибку в подписанном файле .exe.
Anonymous » » в форуме JAVA - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-