Net 9.0
Chce podpisać xml aby zalogować się do KSEF podpisem kwalifikowanym.
Nie znam zbyt dobrze NET 9.0 w NetFramework4.8 zrobiłem to niestety na komputerach klientów w Win11 nie działa.
Funkcje eksportowane do Delphi poprzez Interop
[UnmanagedCallersOnly(EntryPoint = "AuthorizeCertificate",
CallConvs = new[] { typeof(CallConvCdecl) })]
Przepisałem 99% na Net9.0, nie działa serializacja ani deserializacja using Newtonsoft.Json;
i teraz jak podpisać xml
Lib do podpisywania
FirmaXadesNetCore
funkcja podpisująca
public static string PodpiszXmlKSeF(string xmlTresc)
{
X509Certificate2 cert = WybierzCertyfikat();
if (cert == null) return null;
XadesService xadesService = new XadesService();
SignatureParameters parameters = new SignatureParameters
{
SignaturePackaging = SignaturePackaging.ENVELOPED,
SignatureMethod = SignatureMethod.RSAwithSHA256,
DigestMethod = DigestMethod.SHA256,
Signer = new FirmaXadesNetCore.Crypto.Signer(cert)
};
byte[] xmlBytes = Encoding.UTF8.GetBytes(xmlTresc);
using (MemoryStream msIn = new MemoryStream(xmlBytes))
using (MemoryStream msOut = new MemoryStream())
{
// 1. Podpisujemy strumień wejściowy
var signatureDocument = xadesService.Sign(msIn, parameters);
// 2. Zapisujemy wynikowy SignatureDocument do strumienia wyjściowego
signatureDocument.Save(msOut);
// 3. Konwertujemy bajty ze strumienia na string UTF-8
return Encoding.UTF8.GetString(msOut.ToArray());
}
}
i oczywiście

Aplikacja zabijana
Nieważne co robię, ciągle ten komunikat.
Systemy Win 10, 11.
Problemem jest ta linijka.
// 1. Podpisujemy strumień wejściowy
var signatureDocument = xadesService.Sign(msIn, parameters);
Podpowiedzcie gdzie leży problem.