Coder Social home page Coder Social logo

miguelhuertas / efacturacioncolombia_v2.firma Goto Github PK

View Code? Open in Web Editor NEW
31.0 8.0 15.0 2.92 MB

Módulo de Firma en C# .NET para la versión de Validación Previa de la Facturación Electrónica colombiana. También permite firmar Documento Soporte y Nómina Electrónica.

License: Other

C# 100.00%
factura-electronica colombia csharp dotnet xml-signature nomina-electronica

efacturacioncolombia_v2.firma's People

Contributors

miguelhuertas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

efacturacioncolombia_v2.firma's Issues

Encriptación con RSA-SHAxxx

Buenos días, mirando la documentación de la DIAN, se especifica que para la mayoría de valores de DigestValue se debe usar un algoritmo de tipo RSA-SHAxxx, esto significa que se debe encriptar, mi duda en cuestión es si cada uno de los digest value se debe encriptar RSA con la clave pública del certificado X509 o si esto solo se debe hacer para el valor de SignatureValue. Se que puede estar un poco fuera del tema de desarrollo de la librería pero como dije en el otro repo estoy tratando de implementar esta firma digital en PHP y tengo muchas dudas respecto a qué y cómo se debe encriptar, lastimosamente la documentación de la DIAN no es muy clara con eso.

Nómina electrónica

Hola, si para firmar facturas se enviaba un tipo firmado 1, notas crédito (2), notas débito (3), que número se especifica para la nómina electrónica, no lo veo especificado en el repositorio

Te agradecería mucho la ayuda!

Exception "Elemento no encontrado"

Al colocar una factura para firmar me genera Exception "Elemento no encontrado". navegando un poco en el código la excepción se genera en SetSignatureDestination(SignatureDocument sigDocument, SignatureXPathExpression destination) donde no se puede establecer un nodo destino para la firma. Me doy cuenta que usando SelectSingleNode y buscando la expresión "/fe:Invoice/ext:UBLExtensions/ext:UBLExtension[2]/ext:ExtensionContent" no la encuentra, veo que fe esta como:
xpathExpression.Namespaces.Add("fe", "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2") y mi factura electronica de prueba de la DIAN tiene en la cabecera : xmlns:fe="http://www.dian.gov.co/contratos/facturaelectronica/v1" entonces al cambiar lo anterior por:
xpathExpression.Namespaces.Add("fe", "http://www.dian.gov.co/contratos/facturaelectronica/v1");
el encuentra el nodo, pero no se si es un error, algo viejo o la factura que tengo de prueba es la que debe cambiar.

new X509Certificate2(RutaCertificado, ClaveCertificado) IIS Crash

Cuando trato de firmar un documento en un servidor Windows 2012R2, genera un crash en el método:

FirmaElectronica.FirmarEvento(byte[] bytesXml, DateTime fecha)

linea 168

using (parametros.Signer = new Signer(new X509Certificate2(RutaCertificado, ClaveCertificado)))

El problema se genera al intentar crear el nuevo certificado, la solución es cambiar el constructor de la creación del certificado es decir cambiar

new X509Certificate2(RutaCertificado, ClaveCertificado)

por

new X509Certificate2(RutaCertificado, ClaveCertificado, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);

NOTA: Curiosamente funciona bien sin ningún cambio en windows 10

Error al momento de firmar

Estoy teniendo un problema al momento de firmar al ponerlo en produccion en el servidor:

{
  "Message": "Error.",
  "ExceptionMessage": "Se ha especificado un tipo de proveedor no válido.\r\n",
  "ExceptionType": "System.Security.Cryptography.CryptographicException",
  "StackTrace": "   en System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)\r\n   en System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle)\r\n   en System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair()\r\n   en System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 dwKeySize, CspParameters parameters, Boolean useDefaultKeySize)\r\n   en System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey()\r\n   en FirmaXadesNet.Crypto.Signer.SetSigningKey(X509Certificate2 certificate) en C:\\Users\\desarrollo1\\source\\repos\\eFacturacionColombia_V2.Firma-2.1\\FirmaXadesNet45\\FirmaXadesNet\\Crypto\\Signer.cs:línea 98\r\n   en eFacturacionColombia_V2.Firma.FirmaElectronica.FirmarDocumento(Byte[] bytesXml, DateTime fecha, SignatureXPathExpression xpathExpression) en C:\\Users\\desarrollo1\\source\\repos\\eFacturacionColombia_V2.Firma-2.1\\eFacturacionColombia_V2.Firma\\FirmaElectronica.cs:línea 168\r\n   en eFacturacionColombia_V2.Firma.FirmaElectronica.FirmarFactura(Byte[] bytesXml, DateTime fecha) en C:\\Users\\desarrollo1\\source\\repos\\eFacturacionColombia_V2.Firma-2.1\\eFacturacionColombia_V2.Firma\\FirmaElectronica.cs:línea 48\r\n   en eFacturacionColombia_V2.Firma.FirmaElectronica.FirmarFactura(FileInfo archivo, DateTime fecha) en C:\\Users\\desarrollo1\\source\\repos\\eFacturacionColombia_V2.Firma-2.1\\eFacturacionColombia_V2.Firma\\FirmaElectronica.cs:línea 25\r\n   en FaElectronicaSignature.Miscelanius.SignatureAgent.Sign(TypeDocument type, String file, String path2signature, String key, RolFirmante rolFirmante) en C:\\Users\\desarrollo1\\source\\repos\\FaElectronica_v2\\FaElectronicaSignature\\Miscelanius\\SignatureAgent.cs:línea 42\r\n   en FaElectronicaSignature.Controllers.FirmarController.Post(String type, String signatureRol, Object value) en C:\\Users\\desarrollo1\\source\\repos\\FaElectronica_v2\\FaElectronicaSignature\\Controllers\\FirmarController.cs:línea 29\r\n   en lambda_method(Closure , Object , Object[] )\r\n   en System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_2.<GetExecutor>b__2(Object instance, Object[] methodParameters)\r\n   en System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---\r\n   en System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   en System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()\r\n--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---\r\n   en System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   en System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()\r\n--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---\r\n   en System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   en System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()"
}

Que cree usted que pueda ser?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.