Replies: 3 comments
-
|
Puedes incluir tu código incluyendo la carga del certificado y creación de la instancia de Signer |
Beta Was this translation helpful? Give feedback.
-
|
Este es el codigo que se ejecuta para procesar una factura, fallando en la instruccion public override FacturaResponseDto Procesar(Factura factura)
{
Invoice invoice = GenerarInvoice(factura);
Blockchain blockchain = Blockchain.Get(invoice.SellerID);
RegistroAlta registroAlta = invoice.GetRegistroAlta();
blockchain.Add(registroAlta);
X509Certificate2 certificate = Wsd.GetCertificate();
if (!certificate.HasPrivateKey)
throw new Exception("El certificado no tiene clave privada.");
Signer signer = new Signer(certificate);
byte[] signedXml = signer.Sign(registroAlta);
return new()
{
Xml = Encoding.UTF8.GetString(signedXml),
BitmapQR = registroAlta.GetValidateQr()
};
}Esto es el codigo para cargar el certificado, recibiendo por parametros la ruta del fichero y la contraseña. public void Aplicar(ModalidadFacturacion mode, string certificatePath, string certificatePassword)
{
Settings.Current.SistemaInformatico = SistemaInformaticoFactory.Crear(
_settings.NombreSistemaInformatico,
_settings.PrefijoSistemaInformatico);
Settings.Current.VeriFactuEndPointPrefix = _settings.Environment == VerifactuEnvironment.Production
? VeriFactuEndPointPrefixes.Prod
: VeriFactuEndPointPrefixes.Test;
Settings.Current.VeriFactuEndPointValidatePrefix = mode == ModalidadFacturacion.VeriFactu
? (_settings.Environment == VerifactuEnvironment.Production
? VeriFactuEndPointPrefixes.ProdValidate
: VeriFactuEndPointPrefixes.TestValidate)
: (_settings.Environment == VerifactuEnvironment.Production
? VeriFactuEndPointPrefixes.ProdValidate + "NoVerifactu"
: VeriFactuEndPointPrefixes.TestValidate + "NoVerifactu");
Settings.Current.CertificatePath = certificatePath;
Settings.Current.CertificatePassword = certificatePassword;
} |
Beta Was this translation helpful? Give feedback.
-
|
Efectivamente, la funcionalidad actual de firma únicamente es válida para proyectos .NET Framework 4.6.1 o 4.7.2 o 4.8. Tomamos nota para futuras mejoras su inclusión para proyectos .NET. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Entorno utilizado
Estoy intentando firmar una factura utilizando la modalidad NoVeriFactu, cargando el certificado mediante ruta + contraseña (PFX). El certificado se carga correctamente, tiene clave privada RSA y la inicialización del Signer funciona bien.
Sin embargo, al intentar firmar un RegistroAlta:
se produce esta excepción:
El error ocurre porque la clase VerifactuSignedXml intenta acceder mediante reflexión a un campo privado de SignedXml:
Beta Was this translation helpful? Give feedback.
All reactions