Perdon por el comentario jeje.. no lo vuelvo a hacer.. lo cierto es que, a todos nos gustaría tener un experto por un lado, preguntar y que nos aclaren las dudas jeje..
Con respecto a lo de verificar la firma, olvide especificar que era para el requerimiento de convertirse en pac, estoy de acuerdo que para buscar y validar un rfc en la lista es mas que suficiente bajar el archivo del sat =) con todos lo demas tambien estoy de acuerdo!
Saludos =)

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.
CARTA PORTE V3.1
ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03
.
Lista de Contribuyentes con Obligación (LCO)
-
- Mensajes: 8
- Registrado: Jue Feb 23, 2012 10:57 am
Re: Lista de Contribuyentes con Obligación (LCO)
PAC InvoiceONE No. Certificación 57203
http://www.sat.gob.mx/sitio_internet/as ... 23063.html
Timbrado CFDI a 30 centavos! contactanos!
http://www.invoiceone.com.mx/
http://www.sat.gob.mx/sitio_internet/as ... 23063.html
Timbrado CFDI a 30 centavos! contactanos!
http://www.invoiceone.com.mx/
- Dado
- Mensajes: 15981
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: Lista de Contribuyentes con Obligación (LCO)
Bueno, no por nada esto es un "foro de discusion", gracias por compartir tus mensajes.
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 8
- Registrado: Jue Feb 23, 2012 10:57 am
Re: Lista de Contribuyentes con Obligación (LCO)
La clase que viene en la pagina permite validar el XML LCO con respecto a la firma que trae instrustada en el mismo, por ejemplo si cambian algo del XML y luego corren su proceso de verificar la firma el resultado será un negativo (false) lo que confirma que la verificacion de la firma funciona.
Por cierto, si a alguien le sirve, este es el certificado que viene inscrustado en el XML de la LCO correspondiente al 23-Febrero-2012 en formato base64.
Tal ves le sea util a alguien para compararlo =)
Dentro de la funcion Decode de la clase, hay que irse hasta el final del metodo y agregar las siguientes lineas:
En donde cerBlob es la variable con el array de datos del certificado.
Espero les sirva =)
Recordandoles que el codigo fué extraido de:
http://blogs.msdn.com/b/alejacma/archiv ... ode-c.aspx
http://blogs.msdn.com/b/alejacma/archiv ... ature.aspx
Y son de caracter open sourcey completamente gratis, libres de marcas propietarias.
Saludos
Por cierto, si a alguien le sirve, este es el certificado que viene inscrustado en el XML de la LCO correspondiente al 23-Febrero-2012 en formato base64.
Tal ves le sea util a alguien para compararlo =)
Como tal, en la clase no viene nada para extraer el certificado que viene en la LCO, ya que tal clase implementa una api de windows, para poder obtener el byte[] o blob del certificado que viene dentro del propior archivo xml es necesario modificar el codigo de la clase y asi obtener el byte[] del certificado:MIIEUDCCAzigAwIBAgIUMDAwMDEwODg4ODg4MDAwMDAwMDIwDQYJKoZIhvcNAQEFBQAwggE2MTgwNgYDVQQDDC9BLkMuIGRlbCBTZXJ2aWNpbyBkZSBBZG1pbmlzdHJhY2nDs24gVHJpYnV0YXJpYTEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWExHzAdBgkqhkiG9w0BCQEWEGFjb2RzQHNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEzARBgNVBAcMCkN1YXVodGVtb2MxMzAxBgkqhkiG9w0BCQIMJFJlc3BvbnNhYmxlOiBGZXJuYW5kbyBNYXJ0w61uZXogQ29zczAeFw0xMDEyMjQyMTMyMTFaFw0xNDEyMjQyMTMyNTFaMIGwMS4wLAYDVQQKFCVTZXJ2aWNpbyBkZSBBZG1pbmlzdHJhY2nzbiBUcmlidXRhcmlhMSQwIgYDVQQLFBtTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNp824xCzAJBgNVBAYTAk1YMRkwFwYDVQQIExBEaXN0cml0byBGZWRlcmFsMREwDwYDVQQHFAhDb3lvYWPhbjEdMBsGA1UEAxMUSXZhbiBNYXJ0aW5leiBJdmFub3YwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANhIoXx0aRj574OrhAganpqjA1BHpZyMnB/+Bx+Ycx6TCWZ1QDJ33hi1RLHYiDnBIfw8XoJhqsu+2yLLnkzTunmLL1hxO2FWtQibmWLf24Y6sti9sBVFT1xTVZh283tMFWu5AABqHYydzzI7PwTr27OQL1jSRjR7CYs3q8Qtt9ZxAgMBAAGjXTBbMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgbAMB0GA1UdDgQWBBThOzlgsQEuyWWPt/wfIgT2ce8oGDAfBgNVHSMEGDAWgBTpzfB7fMtMW4fsfs9HWUavPqPDNjANBgkqhkiG9w0BAQUFAAOCAQEAvus9PLRTlt/HhwnUTbMd1BEIhkHLyJz4397juy1ohHRtO3HmwZuCEk9JTmMuJUtVWen8i2JU4lpw6DzAUpaA9xz3q9RYkRctQBKRL3rFTBD61W6TOw2X+uWfuL49ZLDb404Iwkm9xxeOi3gDVc1MOOQrgNZNUOTkeuC9Oq8FpfY7ppIHoYJ9xawSiDBwoFrfA5kISoD0q5B65UXngbaKSPAUAe5DFwte930b5+TQDNydxpd/ZrtBwHHwlupfedkkQI3BuTXs/8lOB9gymPbVsRBTk2DxvbUwmsLKTKSHy/Ovmw49YRSEMEibOONojKuczo7g4Z/3Lxq4dZr3y4vLww==
Dentro de la funcion Decode de la clase, hay que irse hasta el final del metodo y agregar las siguientes lineas:
Código: Seleccionar todo
SignerCertContext = (ApiCriptoPkcs7.CERT_CONTEXT)Marshal.PtrToStructure(pSignerCertContext, typeof(ApiCriptoPkcs7.CERT_CONTEXT));
bResult = ApiCriptoPkcs7.CryptMsgControl(
hMsg,
0,
ApiCriptoPkcs7.CMSG_CTRL_VERIFY_SIGNATURE,
SignerCertContext.pCertInfo
);
if (!bResult)
{
throw new Exception("CryptMsgControl error #" + Marshal.GetLastWin32Error().ToString(), new Win32Exception(Marshal.GetLastWin32Error()));
}
//Obtener el certificado
MemoryStream cerMemoryStream = new MemoryStream();
Byte[] bytes = new Byte[SignerCertContext.cbCertEncoded];
Marshal.Copy(SignerCertContext.pbCertEncoded, bytes, 0, SignerCertContext.cbCertEncoded);
cerMemoryStream.Write(bytes, 0, SignerCertContext.cbCertEncoded);
cerMemoryStream.Position = 0;
byte[] cerBlob = cerMemoryStream.GetBuffer();
Espero les sirva =)
Recordandoles que el codigo fué extraido de:
http://blogs.msdn.com/b/alejacma/archiv ... ode-c.aspx
http://blogs.msdn.com/b/alejacma/archiv ... ature.aspx
Y son de caracter open sourcey completamente gratis, libres de marcas propietarias.
Saludos
PAC InvoiceONE No. Certificación 57203
http://www.sat.gob.mx/sitio_internet/as ... 23063.html
Timbrado CFDI a 30 centavos! contactanos!
http://www.invoiceone.com.mx/
http://www.sat.gob.mx/sitio_internet/as ... 23063.html
Timbrado CFDI a 30 centavos! contactanos!
http://www.invoiceone.com.mx/
-
- Mensajes: 8
- Registrado: Jue Feb 23, 2012 10:57 am
Re: Lista de Contribuyentes con Obligación (LCO)
Por cierto, pensando en la cuestion de los certificados raiz, posiblemente estos XML LCO podrían estar firmados por un certificado raiz, de ser así, faltaría agregar una validacion más para verificar que un archivo XML LCO es valido y proviene del SAT, el framework MONO para .NET trae unas clases criptograficas para validar certificados raiz, tal ves sería interesante investigar que certificado raiz utilizo el SAT para generar estos archivos XML LCO y asi poder validar validarlos contra ese certificado raiz..
Igual si alguien sabe, que certificado es o de que pagina del SAT se puede obtener estaría genial!
Saludos
Igual si alguien sabe, que certificado es o de que pagina del SAT se puede obtener estaría genial!
Saludos
PAC InvoiceONE No. Certificación 57203
http://www.sat.gob.mx/sitio_internet/as ... 23063.html
Timbrado CFDI a 30 centavos! contactanos!
http://www.invoiceone.com.mx/
http://www.sat.gob.mx/sitio_internet/as ... 23063.html
Timbrado CFDI a 30 centavos! contactanos!
http://www.invoiceone.com.mx/