Foros del Web » Programación para mayores de 30 ;) » .NET »

Factura electroncia sat mexico

Estas en el tema de Factura electroncia sat mexico en el foro de .NET en Foros del Web. hola, gracias por tu ayuda, entonces solo debo de generar el xml y poner estos datos? dices que es correcto lo que tengo (cadena,digestion y ...

  #151 (permalink)  
Antiguo 09/09/2010, 17:15
 
Fecha de Ingreso: septiembre-2010
Mensajes: 18
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Factura electroncia sat mexico

hola, gracias por tu ayuda, entonces solo debo de generar el xml y poner estos datos? dices que es correcto lo que tengo (cadena,digestion y sello), estaba revisando los xml y tmb manejan un no certificado, cuando lo recupero me da:

3330303031303030303030313030303030383030

despues le aplico un tratamiento y me da:

30001000000100000800

esto tmb es correcto?

gracias por la ayuda.
  #152 (permalink)  
Antiguo 09/09/2010, 19:32
 
Fecha de Ingreso: septiembre-2010
Mensajes: 7
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Factura electroncia sat mexico

Asi es, el numero de aprobacion, y los folios autorizados por y para ese número de aprobación, los otorga el SAT.

Aparte de que tienes que validar la vigencia del certificado, es decir que la fecha de emision de tu factura (CFD) esté dentro de los rangos válidos del certificado (validFrom,validTo), además de que el certificado sea de quien dice ser, es decir, tienes que ver que el RFC y Nombre de empresa del certificado usado coincidan con estos datos que reporta el CFD, y por si fuera poco, el SAT publica una lista (se supone que cada 24 hrs) en donde da a conocer el numero de serie, los folios autorizados, la vigencia, el numero de aprobación y tienes que validar que el certificado (.cer) que estás utilizando para firmar se encuentre dentro de ésta lista.

Es cierto, y es un hecho, que para el 2011, todo CFD tendrá que pasar por un servicio de 'timbrado' (CFDI o CFD por Internet) y que los provedores tendrán que ofrecer al publico una herramienta gratuita, pero OJO, es solo una herramienta (limitada ademas) por internet, aquellos que quieran emitir los CFDs por sus propios medios tendrá que programarlos si asi lo desea, o bien, a traves de un tercero. Si trabajan para una empresa, no pierdan de vista que este tercero les cobrará por generar el CFD y aparte por 'timbrarlo', asi que si quieren ahorrar$e una luz, uds. generen el CFD y que el 3ro unicamente lo 'timbre' ....

Para el 2011 es cierto, tampoco se utilizará ya el MD5 sino el SHA1, pero que eso no les cause ruido, la sentencia open ssl es casi identica, solo cambien la etiqueta md5 por sha1 y ya, es todo.

En los siguientes links, podrán acceder a las listas de certificados válidos, los cuales por cierto pueden ser descargados como TXT ya que estan publicados en un ftp:

ftp://ftp2.sat.gob.mx/agti_servicio_ftp/verifica_comprobante_ftp/CSD.txt
ftp://ftp2.sat.gob.mx/agti_servicio_ftp/verifica_comprobante_ftp/FoliosCFD.txt

En FoliosCFD.TXT encontrarán el numero de aprobación, el año de aprobacion, la serie y los folios inicial y final autorizados (que dicho sea de paso deben validar tambien)

En CSD.TXT encontrarán información referente al certificado, como son el no. de serie, la fecha inicial (validFrom), la fecha de expiracion (validTo) el RFC para el cual fue autorizado y el estado del certificado(R,A o C {Revocado, Activo o Cancelado} el válido es A)

PD No se basen mucho en los ejemplos del SAT, en la mayoria de los casos están mal!

Última edición por C3ZZ4R; 09/09/2010 a las 19:52 Razón: Ahora si
  #153 (permalink)  
Antiguo 10/09/2010, 09:37
Avatar de admado  
Fecha de Ingreso: junio-2006
Ubicación: Morelos, México
Mensajes: 115
Antigüedad: 18 años, 4 meses
Puntos: 0
Pregunta Respuesta: Factura electroncia sat mexico

He leído todo el tema de este foro así como “Factura Electrónica en México” y he probado las líneas que aquí se han expuesto pero aun NO lo logro que el sello digital sea correcto.

Yo estoy haciendo la factura electrónica en PHP, pero a mí no me dan los resultados esperados.

Baje un validador y lo instale en mi máquina para hacer pruebas. http://www.validacfd.com/
Porque como todos no había podido pasar el validador del SAT, con esta aplicación pude saber los errores que estaba cometiendo. Con el XML que expongo si paso el validador del SAT, pero no logro sacar el sello digital que ahí se muestra.

prueba_01 (sello).xml
Código:
<?xml version="1.0" encoding="UTF-8"?>
<Comprobante xmlns="http://www.sat.gob.mx/cfd/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd " version="2.0" serie="A" folio="1" fecha="2010-09-02T16:30:00" noAprobacion="122956" anoAprobacion="2010" formaDePago="Pago en una sola exhibicion" noCertificado="30001000000100000800" subTotal="350" descuento="0" total="406" metodoDePago="Efectivo" tipoDeComprobante="ingreso" sello="ndqRTaREJtNEBkajhRc2vQ3clCtCGgpAHgLIbkXM4g56vF9DL8Vu/3WvTn0jbETZSoRvjKQgjdC65f6Fl5w4fKYBbgLT4cqVclSHE7F5F4TkfoXTrdudXFHb5W4NGgUULaOu7qlHZdPj+3W0SPFCwcK0ig9Hp4cfqBSS0knWP1k=" certificado="MIIE/TCCA+WgAwIBAgIUMzAwMDEwMDAwMDAxMDAwMDA4MDAwDQYJKoZIhvcNAQEFBQAwggFvMRgwFgYDVQQDDA9BLkMuIGRlIHBydWViYXMxLzAtBgNVBAoMJlNlcnZpY2lvIGRlIEFkbWluaXN0cmFjacOzbiBUcmlidXRhcmlhMTgwNgYDVQQLDC9BZG1pbmlzdHJhY2nDs24gZGUgU2VndXJpZGFkIGRlIGxhIEluZm9ybWFjacOzbjEpMCcGCSqGSIb3DQEJARYaYXNpc25ldEBwcnVlYmFzLnNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEjAQBgNVBAcMCUNveW9hY8OhbjEVMBMGA1UELRMMU0FUOTcwNzAxTk4zMTIwMAYJKoZIhvcNAQkCDCNSZXNwb25zYWJsZTogSMOpY3RvciBPcm5lbGFzIEFyY2lnYTAeFw0xMDA3MzAxNjU4NDBaFw0xMjA3MjkxNjU4NDBaMIGWMRIwEAYDVQQDDAlNYXRyaXogU0ExEjAQBgNVBCkMCU1hdHJpeiBTQTESMBAGA1UECgwJTWF0cml6IFNBMSUwIwYDVQQtExxBQUEwMTAxMDFBQUEgLyBBQUFBMDEwMTAxQUFBMR4wHAYDVQQFExUgLyBBQUFBMDEwMTAxSERGUlhYMDExETAPBgNVBAsMCFVuaWRhZCAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD0ltQNthUNUfzq0t1GpIyapjzOn1W5fGM5G/pQyMluCzP9YlVAgBjGgzwYp9Z0J9gadg3y2ZrYDwvv8b72goyRnhnv3bkjVRKlus6LDc00K7Jl23UYzNGlXn5+i0HxxuWonc2GYKFGsN4rFWKVy3Fnpv8Z2D7dNqsVyT5HapEqwIDAQABo4HqMIHnMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgbAMB0GA1UdDgQWBBSYodSwRczzj5H7mcO3+mAyXz+y0DAuBgNVHR8EJzAlMCOgIaAfhh1odHRwOi8vcGtpLnNhdC5nb2IubXgvc2F0LmNybDAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNhdC5nb2IubXgvMB8GA1UdIwQYMBaAFOtZfQQimlONnnEaoFiWKfU54KDFMBAGA1UdIAQJMAcwBQYDKgMEMBMGA1UdJQQMMAoGCCsGAQUFBwMCMA0GCSqGSIb3DQEBBQUAA4IBAQArHQEorApwqumSn5EqDOAjbezi8fLco1cYES/PD+LQRM1Vb1g7VLE3hR4S5NNBv0bMwwWAr0WfL9lRRj0PMKLorO8y4TJjRU8MiYXfzSuKYL5Z16kW8zlVHw7CtmjhfjoIMwjQo3prifWxFv7VpfIBstKKShU0qB6KzUUNwg2Ola4t4gg2JJcBmyIAIInHSGoeinR2V1tQ10aRqJdXkGin4WZ75yMbQH4L0NfotqY6bpF2CqIY3aogQyJGhUJji4gYnS2DvHcyoICwgawshjSaX8Y0Xlwnuh6EusqhqlhTgwPNAPrKIXCmOWtqjlDhho/lhkHJMzuTn8AoVapbBUnj"><Emisor rfc="SAT970701NN3" nombre=" Servicio de Administración Tributaria&#xA;"><DomicilioFiscal calle="AV. HIDALGO" noExterior="77" municipio="CUAUHTÉMOC" estado="DISTRITO FEDERAL" pais="MÉXICO" codigoPostal="06300"/></Emisor><Receptor nombre="Rosa María Calderón Uriegas" rfc="CAUR390312S87">
                            <Domicilio calle="PRIV. CEIBA" codigoPostal="62900" colonia="BOSQUE" estado="MORELOS" localidad="JOJUTLA" municipio="JOJUTLA" noExterior="114" pais="México"/>
             </Receptor><Conceptos><Concepto cantidad="10" unidad="Caja" descripcion="Vasos decorados" valorUnitario="20" importe="200"/><Concepto cantidad="1" unidad="pieza" descripcion="Charola metálica" valorUnitario="150" importe="150"/></Conceptos><Impuestos><Traslados><Traslado impuesto="IVA" tasa="16.00" importe="56.00"/></Traslados></Impuestos></Comprobante> 


CadenaOriginal
Código:
||2.0|A|1|2010-09-02T16:30:00|122956|2010|ingreso|Pago en una sola exhibicion|350|0|406|SAT970701NN3|Servicio de Administración Tributaria|AV. HIDALGO|77|CUAUHTÉMOC|DISTRITO FEDERAL|MÉXICO|06300|CAUR390312S87|Rosa María Calderón Uriegas|PRIV. CEIBA|114|BOSQUE|JOJUTLA|JOJUTLA|MORELOS|México|62900|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|16.00|56.00|| 

CadenaOriginalUTF8
Código:
||2.0|A|1|2010-09-02T16:30:00|122956|2010|ingreso|Pago en una sola exhibicion|350|0|406|SAT970701NN3|Servicio de Administración Tributaria|AV. HIDALGO|77|CUAUHTÉMOC|DISTRITO FEDERAL|MÉXICO|06300|CAUR390312S87|Rosa María Calderón Uriegas|PRIV. CEIBA|114|BOSQUE|JOJUTLA|JOJUTLA|MORELOS|México|62900|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|16.00|56.00|| 
DigestionMD5 con PHP : 1d973db0a57ee828d52594d7593fec94
, esta cadena en el validador del SAT también da el mismo resultado; si trato de sacar la digestión con OPENSSL me da( 89a2f2c25a60997eba7b523b924dc07e) lo cual es incorrecto

Código PHP:
<?PHP 
 
$cadenaOriginal 
"||2.0|A|1|2010-09-02T16:30:00|122956|2010|ingreso|Pago en una sola exhibicion|350|0|406|SAT970701NN3|Servicio de Administración Tributaria|AV. HIDALGO|77|CUAUHTÉMOC|DISTRITO FEDERAL|MÉXICO|06300|CAUR390312S87|Rosa María Calderón Uriegas|PRIV. CEIBA|114|BOSQUE|JOJUTLA|JOJUTLA|MORELOS|México|62900|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|16.00|56.00||";
 
 
$cadenaUTF8 utf8_encode($cadenaOriginal);
$cadenaMD5 md5($cadenaUTF8);
 
echo 
"Cadena UTF8: ";
echo 
$cadenaUTF8
echo 
"<br><br>";
echo 
"Cadena MD5:  ";
echo 
$cadenaMD5;
 
?>

Para crear la llave
Código:
 
OPENSSL> PKS8 –inform DER –in  aaa010101aaa_csd_01.key –passin pass:a0123456789 –out clave.key.pem 

Para crear el certificado, al abrirlo con bloc de notas el contenido es el mismo que ésta en el XML
Código:
 
OPENSSL> X509 –inform DER –outform PEM –in aaa010101aaa_csd_01.cer –pubkey –out cert.cer.pem 
He intentado sacar el sello, pero no logro que sea igual al del XML.
Código:
OpenSSL> dgst -md5 -sign d:\clave.key.pem -out d:\sello1.txt d:\cadenaOriginalUT
F8.txt
OpenSSL> base64 -in d:\sello1.txt 
SELLO
Código:
XdIEi59DVJp+fuPaDsk/cUGfidRMeoVQK3o2xM12uve4g4gbVeF48xkcbLBkBJrh
RWWzzbGudEHJDw1xxmMDlOHOlOQ+/EmZ3L6trcvb4RyVtHzBaKs7pLcyXVKG0lHm
IJ48G6fHBVCSctsZV5jWO8n4ROnGsBHrHpQqCcDcrDw= 
__________________
>>> El hombre se hace viejo muy pronto y sabio demasiado tarde <<<
  #154 (permalink)  
Antiguo 10/09/2010, 11:30
 
Fecha de Ingreso: septiembre-2010
Mensajes: 7
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por admado Ver Mensaje
He leído todo el tema de este foro así como “Factura Electrónica en México” y he probado las líneas que aquí se han expuesto pero aun NO lo logro que el sello digital sea correcto.

Yo estoy haciendo la factura electrónica en PHP, pero a mí no me dan los resultados esperados.

Baje un validador y lo instale en mi máquina para hacer pruebas. [URL]http://www.validacfd.com/[/URL]
Porque como todos no había podido pasar el validador del SAT, con esta aplicación pude saber los errores que estaba cometiendo. Con el XML que expongo si paso el validador del SAT, pero no logro sacar el sello digital que ahí se muestra.

prueba_01 (sello).xml
Código:
<?xml version="1.0" encoding="UTF-8"?>
<Comprobante xmlns="http://www.sat.gob.mx/cfd/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd " version="2.0" serie="A" folio="1" fecha="2010-09-02T16:30:00" noAprobacion="122956" anoAprobacion="2010" formaDePago="Pago en una sola exhibicion" noCertificado="30001000000100000800" subTotal="350" descuento="0" total="406" metodoDePago="Efectivo" tipoDeComprobante="ingreso" sello="ndqRTaREJtNEBkajhRc2vQ3clCtCGgpAHgLIbkXM4g56vF9DL8Vu/3WvTn0jbETZSoRvjKQgjdC65f6Fl5w4fKYBbgLT4cqVclSHE7F5F4TkfoXTrdudXFHb5W4NGgUULaOu7qlHZdPj+3W0SPFCwcK0ig9Hp4cfqBSS0knWP1k=" certificado="MIIE/TCCA+WgAwIBAgIUMzAwMDEwMDAwMDAxMDAwMDA4MDAwDQYJKoZIhvcNAQEFBQAwggFvMRgwFgYDVQQDDA9BLkMuIGRlIHBydWViYXMxLzAtBgNVBAoMJlNlcnZpY2lvIGRlIEFkbWluaXN0cmFjacOzbiBUcmlidXRhcmlhMTgwNgYDVQQLDC9BZG1pbmlzdHJhY2nDs24gZGUgU2VndXJpZGFkIGRlIGxhIEluZm9ybWFjacOzbjEpMCcGCSqGSIb3DQEJARYaYXNpc25ldEBwcnVlYmFzLnNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEjAQBgNVBAcMCUNveW9hY8OhbjEVMBMGA1UELRMMU0FUOTcwNzAxTk4zMTIwMAYJKoZIhvcNAQkCDCNSZXNwb25zYWJsZTogSMOpY3RvciBPcm5lbGFzIEFyY2lnYTAeFw0xMDA3MzAxNjU4NDBaFw0xMjA3MjkxNjU4NDBaMIGWMRIwEAYDVQQDDAlNYXRyaXogU0ExEjAQBgNVBCkMCU1hdHJpeiBTQTESMBAGA1UECgwJTWF0cml6IFNBMSUwIwYDVQQtExxBQUEwMTAxMDFBQUEgLyBBQUFBMDEwMTAxQUFBMR4wHAYDVQQFExUgLyBBQUFBMDEwMTAxSERGUlhYMDExETAPBgNVBAsMCFVuaWRhZCAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD0ltQNthUNUfzq0t1GpIyapjzOn1W5fGM5G/pQyMluCzP9YlVAgBjGgzwYp9Z0J9gadg3y2ZrYDwvv8b72goyRnhnv3bkjVRKlus6LDc00K7Jl23UYzNGlXn5+i0HxxuWonc2GYKFGsN4rFWKVy3Fnpv8Z2D7dNqsVyT5HapEqwIDAQABo4HqMIHnMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgbAMB0GA1UdDgQWBBSYodSwRczzj5H7mcO3+mAyXz+y0DAuBgNVHR8EJzAlMCOgIaAfhh1odHRwOi8vcGtpLnNhdC5nb2IubXgvc2F0LmNybDAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNhdC5nb2IubXgvMB8GA1UdIwQYMBaAFOtZfQQimlONnnEaoFiWKfU54KDFMBAGA1UdIAQJMAcwBQYDKgMEMBMGA1UdJQQMMAoGCCsGAQUFBwMCMA0GCSqGSIb3DQEBBQUAA4IBAQArHQEorApwqumSn5EqDOAjbezi8fLco1cYES/PD+LQRM1Vb1g7VLE3hR4S5NNBv0bMwwWAr0WfL9lRRj0PMKLorO8y4TJjRU8MiYXfzSuKYL5Z16kW8zlVHw7CtmjhfjoIMwjQo3prifWxFv7VpfIBstKKShU0qB6KzUUNwg2Ola4t4gg2JJcBmyIAIInHSGoeinR2V1tQ10aRqJdXkGin4WZ75yMbQH4L0NfotqY6bpF2CqIY3aogQyJGhUJji4gYnS2DvHcyoICwgawshjSaX8Y0Xlwnuh6EusqhqlhTgwPNAPrKIXCmOWtqjlDhho/lhkHJMzuTn8AoVapbBUnj"><Emisor rfc="SAT970701NN3" nombre=" Servicio de Administración Tributaria&#xA;"><DomicilioFiscal calle="AV. HIDALGO" noExterior="77" municipio="CUAUHTÉMOC" estado="DISTRITO FEDERAL" pais="MÉXICO" codigoPostal="06300"/></Emisor><Receptor nombre="Rosa María Calderón Uriegas" rfc="CAUR390312S87">
                            <Domicilio calle="PRIV. CEIBA" codigoPostal="62900" colonia="BOSQUE" estado="MORELOS" localidad="JOJUTLA" municipio="JOJUTLA" noExterior="114" pais="México"/>
             </Receptor><Conceptos><Concepto cantidad="10" unidad="Caja" descripcion="Vasos decorados" valorUnitario="20" importe="200"/><Concepto cantidad="1" unidad="pieza" descripcion="Charola metálica" valorUnitario="150" importe="150"/></Conceptos><Impuestos><Traslados><Traslado impuesto="IVA" tasa="16.00" importe="56.00"/></Traslados></Impuestos></Comprobante> 


CadenaOriginal
Código:
||2.0|A|1|2010-09-02T16:30:00|122956|2010|ingreso|Pago en una sola exhibicion|350|0|406|SAT970701NN3|Servicio de Administración Tributaria|AV. HIDALGO|77|CUAUHTÉMOC|DISTRITO FEDERAL|MÉXICO|06300|CAUR390312S87|Rosa María Calderón Uriegas|PRIV. CEIBA|114|BOSQUE|JOJUTLA|JOJUTLA|MORELOS|México|62900|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|16.00|56.00|| 

CadenaOriginalUTF8
Código:
||2.0|A|1|2010-09-02T16:30:00|122956|2010|ingreso|Pago en una sola exhibicion|350|0|406|SAT970701NN3|Servicio de Administración Tributaria|AV. HIDALGO|77|CUAUHTÉMOC|DISTRITO FEDERAL|MÉXICO|06300|CAUR390312S87|Rosa MarÃ*a Calderón Uriegas|PRIV. CEIBA|114|BOSQUE|JOJUTLA|JOJUTLA|MORELOS|México|62900|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|16.00|56.00|| 
DigestionMD5 con PHP : 1d973db0a57ee828d52594d7593fec94
, esta cadena en el validador del SAT también da el mismo resultado; si trato de sacar la digestión con OPENSSL me da( 89a2f2c25a60997eba7b523b924dc07e) lo cual es incorrecto

Código PHP:
<?PHP 
 
$cadenaOriginal 
"||2.0|A|1|2010-09-02T16:30:00|122956|2010|ingreso|Pago en una sola exhibicion|350|0|406|SAT970701NN3|Servicio de Administración Tributaria|AV. HIDALGO|77|CUAUHTÉMOC|DISTRITO FEDERAL|MÉXICO|06300|CAUR390312S87|Rosa María Calderón Uriegas|PRIV. CEIBA|114|BOSQUE|JOJUTLA|JOJUTLA|MORELOS|México|62900|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|16.00|56.00||";
 
 
$cadenaUTF8 utf8_encode($cadenaOriginal);
$cadenaMD5 md5($cadenaUTF8);
 
echo 
"Cadena UTF8: ";
echo 
$cadenaUTF8
echo 
"<br><br>";
echo 
"Cadena MD5:  ";
echo 
$cadenaMD5;
 
?>

Para crear la llave
Código:
 
OPENSSL> PKS8 –inform DER –in  aaa010101aaa_csd_01.key –passin pass:a0123456789 –out clave.key.pem 

Para crear el certificado, al abrirlo con bloc de notas el contenido es el mismo que ésta en el XML
Código:
 
OPENSSL> X509 –inform DER –outform PEM –in aaa010101aaa_csd_01.cer –pubkey –out cert.cer.pem 
He intentado sacar el sello, pero no logro que sea igual al del XML.
Código:
OpenSSL> dgst -md5 -sign d:\clave.key.pem -out d:\sello1.txt d:\cadenaOriginalUT
F8.txt
OpenSSL> base64 -in d:\sello1.txt 
SELLO
Código:
XdIEi59DVJp+fuPaDsk/cUGfidRMeoVQK3o2xM12uve4g4gbVeF48xkcbLBkBJrh
RWWzzbGudEHJDw1xxmMDlOHOlOQ+/EmZ3L6trcvb4RyVtHzBaKs7pLcyXVKG0lHm
IJ48G6fHBVCSctsZV5jWO8n4ROnGsBHrHpQqCcDcrDw= 
Copié la cadena original que tu estas utilizando, bajé los nuevos certificados de prueba que publicó el sat y la sellé con el certificado "aaa010101aaa_csd_01" y el sello que obtuve es el siguiente:

Código HTML:
AgHtOey41FYT0tDo5frjTEDLsL7PHOU+Rs4yBUmAr74jJWkQK/n8vzl3xrakD4/n8ub1r19txGPnuTZQmERJEeUruoMc+Po16/I/2BgIPIH4Kuin8AVsK/xUUfoVs8Yr6m3ui2fCk7awmjqUioLlcfFlw2kBiGAtwvgZU/2bkSM=
Las instrucciones que utilizo de OSSL son:

Código HTML:
openssl dgst -md5 -sign aaa010101aaa_csd_01.pem cadOr_utf8 > sellobin
openssl enc -base64 -A -in sellobin > selloDigital
No te fies mucho de los ejemplos publicados por el SAT hay muchos ejemplos mal

Espero te sirva
  #155 (permalink)  
Antiguo 10/09/2010, 12:48
 
Fecha de Ingreso: junio-2010
Mensajes: 23
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por wwwmaster Ver Mensaje
Si gustas enviarme tu archivo aaa010101aaa_csd_01.key no vaya a ser que se trate de otra version, yo recien la descargue el 30 de agosto del website del SAT, mi email: [email][email protected][/email]
Efectivamente, debe ser otra version. Baje otra vez de la página del sat el zip de cer_sellos y ahora me sale exactamente lo mismo que a ti, tanto la llave en xml como el sello:

rG0BQfxSxoQ2e+DMwUjTtE1UFy4kWdWDLEwsxyalDMbGyAJLv+ NjwgC6BIuv27zcope60sldP2cO77UUtbPc1DhKB6K/ySN4ton+5ZLQELp5huWAGl3wqGPyHZ/fds6XwcIrn2pSYOX/JHhUCoz7aBsn0bfsewP8OEq8Hwo7Wgs=
  #156 (permalink)  
Antiguo 10/09/2010, 13:17
 
Fecha de Ingreso: junio-2010
Mensajes: 23
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Factura electroncia sat mexico

admado
el hash me sale:
1d973db0a57ee828d52594d7593fec94

el sello:
ndqRTaREJtNEBkajhRc2vQ3clCtCGgpAHgLIbkXM4g56vF9DL8 Vu/3WvTn0jbETZSoRvjKQgjdC65f6Fl5w4fKYBbgLT4cqVclSHE7F 5F4TkfoXTrdudXFHb5W4NGgUULaOu7qlHZdPj+3W0SPFCwcK0i g9Hp4cfqBSS0knWP1k=
  #157 (permalink)  
Antiguo 13/09/2010, 09:50
 
Fecha de Ingreso: junio-2010
Mensajes: 9
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Factura electroncia sat mexico

Esto es lo que les comento, en este caso esta validando la unidad al revisar la estructura del XML.

Aunque al final diga que el certificado es valido no se si este correcto o tenga que informar el dicho campo con un valor en blanco.


El sello del comprobante es válido:
Se presentaron los siguientes errores al validar la estructura del comprobante C:\Comprobante[1].xml
Error: cvc-minLength-valid: Value '' with length = '0' is not facet-valid with respect to minLength '1' for type '#AnonType_unidadConceptoConceptosComprobante'.
Error: cvc-attribute.3: The value '' of attribute 'unidad' on element 'Concepto' is not valid with respect to its type, 'null'.
Error: cvc-minLength-valid: Value '' with length = '0' is not facet-valid with respect to minLength '1' for type '#AnonType_unidadConceptoConceptosComprobante'.
Error: cvc-attribute.3: The value '' of attribute 'unidad' on element 'Concepto' is not valid with respect to its type, 'null'.



Realizando validación del sello con un certificado externo
Certificado usado : 30001000000100000800
Certificado reportado : 30001000000100000800

Cadena original:
||2.0|206|2010-09-02T17:21:03|123456789|2010|ingreso|PAGO EN UNA SOLA EXHIBICION|101.100000|0.000000|101.100000|TRU10060 72P0|TRUESOLUTIONS, SC|PUERTO ESCONDIDO|2093|A|VALLADO NUEVO|PERICOS|CULIACAN|SINALOA|MEXICO|80110|EXPEDI CION|20456|23|CENTRO|VELLA VISTA|CULIACAN|SINALOA|MEXICO|51231|SSSSSSSFFFFFF| BBBBBBBBBBAZZZZZZZZZZZZZZ|SSSSSSSSSSSS|34324|R|VAL LADO NUEVO|PERICOS|CULIACAN|SINALOA|ESPAÑA|33333|0.255| KILO|CHILAQUILES ROJOS|45.000000|11.480000|0.260|LITRO|SOPA DE PASTA|25.000000|6.500000|0.250||ARROZ CON MANTEQUILLA|30.000000|7.500000|0.310|LITRO|CAZUELA |40.000000|12.400000|0.490||CAZUELA|40.000000|19.6 00000|0.205|KILO|ARROY BLANCO|25.000000|5.120000|0.500|KILO|CAZUELA|40.00 0000|20.000000|1.000|LITRO|HORCHATA|13.000000|13.0 00000|1.000|KILO|TORTILLAS|5.500000|5.500000||

Digestión MD5 de cadena como HEX:
85f4e7b147e6bc40408c4dafdf2747bd

El sello del comprobante es válido
  #158 (permalink)  
Antiguo 13/09/2010, 13:59
 
Fecha de Ingreso: septiembre-2010
Mensajes: 7
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por HugoLuna Ver Mensaje
Esto es lo que les comento, en este caso esta validando la unidad al revisar la estructura del XML.

Aunque al final diga que el certificado es valido no se si este correcto o tenga que informar el dicho campo con un valor en blanco.


El sello del comprobante es válido:
Se presentaron los siguientes errores al validar la estructura del comprobante C:\Comprobante[1].xml
Error: cvc-minLength-valid: Value '' with length = '0' is not facet-valid with respect to minLength '1' for type '#AnonType_unidadConceptoConceptosComprobante'.
Error: cvc-attribute.3: The value '' of attribute 'unidad' on element 'Concepto' is not valid with respect to its type, 'null'.
Error: cvc-minLength-valid: Value '' with length = '0' is not facet-valid with respect to minLength '1' for type '#AnonType_unidadConceptoConceptosComprobante'.
Error: cvc-attribute.3: The value '' of attribute 'unidad' on element 'Concepto' is not valid with respect to its type, 'null'.



Realizando validación del sello con un certificado externo
Certificado usado : 30001000000100000800
Certificado reportado : 30001000000100000800

Cadena original:
||2.0|206|2010-09-02T17:21:03|123456789|2010|ingreso|PAGO EN UNA SOLA EXHIBICION|101.100000|0.000000|101.100000|TRU10060 72P0|TRUESOLUTIONS, SC|PUERTO ESCONDIDO|2093|A|VALLADO NUEVO|PERICOS|CULIACAN|SINALOA|MEXICO|80110|EXPEDI CION|20456|23|CENTRO|VELLA VISTA|CULIACAN|SINALOA|MEXICO|51231|SSSSSSSFFFFFF| BBBBBBBBBBAZZZZZZZZZZZZZZ|SSSSSSSSSSSS|34324|R|VAL LADO NUEVO|PERICOS|CULIACAN|SINALOA|ESPAÑA|33333|0.255| KILO|CHILAQUILES ROJOS|45.000000|11.480000|0.260|LITRO|SOPA DE PASTA|25.000000|6.500000|0.250||ARROZ CON MANTEQUILLA|30.000000|7.500000|0.310|LITRO|CAZUELA |40.000000|12.400000|0.490||CAZUELA|40.000000|19.6 00000|0.205|KILO|ARROY BLANCO|25.000000|5.120000|0.500|KILO|CAZUELA|40.00 0000|20.000000|1.000|LITRO|HORCHATA|13.000000|13.0 00000|1.000|KILO|TORTILLAS|5.500000|5.500000||

Digestión MD5 de cadena como HEX:
85f4e7b147e6bc40408c4dafdf2747bd

El sello del comprobante es válido
Esa es tu cadena original final? Si es así, está incompleta, le falta el dato de retención o traslado de impuestos, además de que junto al 'arroz con mantequilla' tienes un doble pipe "||" y eso no es correcto.
  #159 (permalink)  
Antiguo 14/09/2010, 07:43
 
Fecha de Ingreso: marzo-2007
Mensajes: 74
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Publicado hoy 14 de Septiembre en en el diario oficial de la federacion

esta es la direccion

http://dof.gob.mx/nota_detalle.php?codigo=5159342&fecha=14/09/2010


PRIMERA Resolución de Modificaciones a la Resolución Miscelánea Fiscal para 2010 y su anexo 1-A.
Al margen un sello con el Escudo Nacional, que dice: Estados Unidos Mexicanos.- Secretaría de Hacienda y Crédito Público.
PRIMERA RESOLUCION DE MODIFICACIONES A LA RESOLUCION MISCELANEA FISCAL PARA 2010
Y SUS ANEXOS 1-A y 20




QUINTO. Para los efectos de la regla I.2.23.2.2., durante los meses de enero a marzo de 2011, los contribuyentes obligados a expedir comprobantes por las actividades que realicen podrán expedirlos en forma impresa, aun y cuando sus ingresos acumulables del ejercicio inmediato anterior hubieran excedido de $4,000,000.00.

Saludos.
  #160 (permalink)  
Antiguo 14/09/2010, 09:15
 
Fecha de Ingreso: agosto-2010
Mensajes: 10
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por winexim Ver Mensaje
Publicado hoy 14 de Septiembre en en el diario oficial de la federacion

esta es la direccion

http://dof.gob.mx/nota_detalle.php?codigo=5159342&fecha=14/09/2010


PRIMERA Resolución de Modificaciones a la Resolución Miscelánea Fiscal para 2010 y su anexo 1-A.
Al margen un sello con el Escudo Nacional, que dice: Estados Unidos Mexicanos.- Secretaría de Hacienda y Crédito Público.
PRIMERA RESOLUCION DE MODIFICACIONES A LA RESOLUCION MISCELANEA FISCAL PARA 2010
Y SUS ANEXOS 1-A y 20




QUINTO. Para los efectos de la regla I.2.23.2.2., durante los meses de enero a marzo de 2011, los contribuyentes obligados a expedir comprobantes por las actividades que realicen podrán expedirlos en forma impresa, aun y cuando sus ingresos acumulables del ejercicio inmediato anterior hubieran excedido de $4,000,000.00.

Saludos.
Grax Winexim
  #161 (permalink)  
Antiguo 14/09/2010, 17:06
Avatar de hegaes  
Fecha de Ingreso: octubre-2008
Mensajes: 17
Antigüedad: 16 años
Puntos: 0
Respuesta: Factura electroncia sat mexico

Hola, solo quiero agradecer a todos los que han comentado en este foro ya que han sido de gran ayuda en orientar y enseñar a los que necesitamos generar alguna aplicación para facturación electrónica sobre todo agradecimientos a Javalos532 y MarkX ya que gracias a sus aportes pude generar un codigo 100% Net desarrollado en VB2010.

Aqui la prueba de validación en el SAT.

El sello del comprobante es válido:
Comprobante C:\factE02.xml leido exitosamente

Validando encodingComprobante expresado en UTF-8

Realizando validación del sello con un certificado interno
Certificado usado : 10001200000000022515
El comprobante incluye un certificado codificado

Cadena original:
||2.0|ABCD|000001|2010-08-14T12:00:00|1|2010|ingreso|UNA SOLA EXHIBICIÓN|0.00|0.00|0.00|RFC000000ABC|NOMBRE DE LA EMPRESA S.A. DE C.V.|HUBICACION DE LA EMPRESA|0|1|COLONIA, BARRIO|CIUDAD O POBLACION|ORIZABA|VERACRUZ|MEXICO|94300|RFC000000E FG|NOMBRE DEL CLIENTE|DOMICILIO FISCAL DEL CLIENTE|0|COLONIA, BARRIO|CIUDAD O POBLACION|ORIZABA|VERACRUZ|MEXICO|94300|1.00|PZA, CJA, SERVICIO|95010054|DESCRIPCION DEL PRODUCTO UNO|1.00|1.00|1.00|PZA, CJA, SERVICIO|050201010|DESCRIPCION DEL PRODUCTO DOS|1.00|1.00|1.00|PZA, CJA, SERVICIO|00010001|DESCRIPCION DEL PRODUCTO TRES|1.00|1.00|1.00|PZA, CJA, SERVICIO|7501081434801|DESCRIPCION DEL PRODUCTO CUATRO|1.00|1.00|1.00|PZA, CJA, SERVICIO|90017836455276|DESCRIPCION DEL PRODUCTO CINCO|1.00|1.00|1.00|PZA, CJA, SERVICIO|0001010101|DESCRIPCION DEL PRODUCTO SEIS|1.00|1.00|IVA|16.00|0.00|0.00||

Digestión MD5 de cadena como HEX:
1cdc338d4a6dd207a070be12fead8f4d

El sello del comprobante es válido

a los que aun tienen dudas, les recomiendo ampliamente leer los aportes de javalo532 y MarkX
  #162 (permalink)  
Antiguo 14/09/2010, 20:12
 
Fecha de Ingreso: agosto-2010
Mensajes: 10
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Hola,

Tengo este glitch...

Cuando trato de obtener el número de sertificado con openSSL, me marca que espera un certificado confiable. Aquí está el contenido del .pem:

-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQDD0ltQNthUNUfzq0t1GpIyapjzOn1W5fGM5G/pQyMluCzP9YlV
AgBjGgzwYp9Z0J9gadg3y2ZrYDwvv8b72goyRnhnv3bkjVRKlu s6LDc00K7Jl23U
YzNGlXn5+i0HxxuWonc2GYKFGsN4rFWKVy3Fnpv8Z2D7dNqsVy T5HapEqwIDAQAB
AoGAeYXvEx2mLMQQDgDsyBSgS9dpafCPXkE/IR+W79yxUDQ24yvOeUnPsbC1/OxH
VfapIa0t+JoqylIjp8JNG3jZv/kXhCIg/aI6rZcfRZdvAgAOMMdRmpY/UOiOMWre
xjWWJ9EQPz+zIZwh5MCos8yCPnJukMtGKKdlUiFYWopI+gECQQ DuaQF/eGegQ1uX
Z3FzR563b67FUvmIlEcX2D2O4kjBpOVUZndHNntWhZsIEcK730 MBy9AEBVyECewK
PJZyzZcBAkEA0kT1B0FnxoLLWQqC7oxDmonvC9J+tGokkmpQWz PHAbW6hMHUlOLo
LYzfu/XaHgDpuSz7qgG0pYjQuYIr05VnqwJBAMNKmMOGKbyJ8JkRT0mT PVwdzBgv
Y+CRNbs+kw5cJiUZohGE7egTpOy2/MubYNzsgcMS5Q6mJaazSfsIrmTULAECQQC/
wpOT4lo5995rfeKamuCsd07CgV18O7DOtpZCFp5POOS5Xev5PF Zx9B+20yfwZPTC
I/v/tz6AGJ4CEGzXsVGxAkEAtonciHAJQfAd+R6JpyyAtYxH0U38Mn 83q6nK7d7a
AhSMRTX70s61F2owSDkg/aWR3jmI5CbhUcYPdsbMpH830A==
-----END RSA PRIVATE KEY-----

... y ésta la instrucción con OpenSSL con el resultado que devuelve:

C:\SAT>openssl x509 -in cert.pem -noout -text
unable to load certificate
6120:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib
.c:650:Expecting: TRUSTED CERTIFICATE

que según el error que marca no hay "start line", pero como se puede observar en elcontenido del .pen sí está (-----BEGIN RSA PRIVATE KEY-----)

He de mancionar que este .pem es el que involucro para obtener los sellos los cuales resultan válidos.
Obviamente algo me está fallando. Sabe alguien a qué se debe el problema?

Gracias por adelantado

Signals
  #163 (permalink)  
Antiguo 15/09/2010, 12:19
 
Fecha de Ingreso: septiembre-2010
Mensajes: 15
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por hegaes Ver Mensaje
Hola, solo quiero agradecer a todos los que han comentado en este foro ya que han sido de gran ayuda en orientar y enseñar a los que necesitamos generar alguna aplicación para facturación electrónica sobre todo agradecimientos a Javalos532 y MarkX ya que gracias a sus aportes pude generar un codigo 100% Net desarrollado en VB2010.

Aqui la prueba de validación en el SAT.

El sello del comprobante es válido:
Comprobante C:\factE02.xml leido exitosamente

Validando encodingComprobante expresado en UTF-8

Realizando validación del sello con un certificado interno
Certificado usado : 10001200000000022515
El comprobante incluye un certificado codificado

Cadena original:
||2.0|ABCD|000001|2010-08-14T12:00:00|1|2010|ingreso|UNA SOLA EXHIBICIÓN|0.00|0.00|0.00|RFC000000ABC|NOMBRE DE LA EMPRESA S.A. DE C.V.|HUBICACION DE LA EMPRESA|0|1|COLONIA, BARRIO|CIUDAD O POBLACION|ORIZABA|VERACRUZ|MEXICO|94300|RFC000000E FG|NOMBRE DEL CLIENTE|DOMICILIO FISCAL DEL CLIENTE|0|COLONIA, BARRIO|CIUDAD O POBLACION|ORIZABA|VERACRUZ|MEXICO|94300|1.00|PZA, CJA, SERVICIO|95010054|DESCRIPCION DEL PRODUCTO UNO|1.00|1.00|1.00|PZA, CJA, SERVICIO|050201010|DESCRIPCION DEL PRODUCTO DOS|1.00|1.00|1.00|PZA, CJA, SERVICIO|00010001|DESCRIPCION DEL PRODUCTO TRES|1.00|1.00|1.00|PZA, CJA, SERVICIO|7501081434801|DESCRIPCION DEL PRODUCTO CUATRO|1.00|1.00|1.00|PZA, CJA, SERVICIO|90017836455276|DESCRIPCION DEL PRODUCTO CINCO|1.00|1.00|1.00|PZA, CJA, SERVICIO|0001010101|DESCRIPCION DEL PRODUCTO SEIS|1.00|1.00|IVA|16.00|0.00|0.00||

Digestión MD5 de cadena como HEX:
1cdc338d4a6dd207a070be12fead8f4d

El sello del comprobante es válido

a los que aun tienen dudas, les recomiendo ampliamente leer los aportes de javalo532 y MarkX

puedes orientarnos sobre cuales son los puntos claves de tu desarrollo para la lectura del archivo .key
  #164 (permalink)  
Antiguo 17/09/2010, 01:03
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 11 meses
Puntos: 37
Respuesta: Factura electroncia sat mexico

A mi, la cadena que indica HEGAES me dio como resultado el MD5:

1435f1264359674e247f6ffb673dbf73

No coincide contra la que él publicó.
  #165 (permalink)  
Antiguo 18/09/2010, 08:28
Avatar de hegaes  
Fecha de Ingreso: octubre-2008
Mensajes: 17
Antigüedad: 16 años
Puntos: 0
Respuesta: Factura electroncia sat mexico

Respondiendo a tu pregunta aksuespin, para lograr leer el archivo .key descarge de la pagina que indica MarkX el archivo del codigo fuente en C# y lo pase a codigo Visual Basic, efectivamente trae los metodos necesarios para poder implementar la firma leyendo directamente el archivo .key con codigo 100% .NET


Cita:
Iniciado por MarkX Ver Mensaje
Chequen la info de esta pagina,
http://www.jensign.com/opensslkey/index.html
de ahi pueden sacar lo necesario para leer la llave privada de el archivo .key directamente desde C# y generar el RSACryptoServiceProvider

Ahi esta el codigo fuente necesario para leer no solo el archivo de la llave privada, sino tambien como leer el archivo del certifivcado y sacar todos los datos de ahi. Y lo mejor "TODO CON codigo NET"


Saludos y Suerte
Y en tanto a la duda de wwwmaster les dejo el link con el archivo .xml del cual obtuve la validación del SAT [URL="http://www.megaupload.com/?d=BYH3ZPY2"]http://www.megaupload.com/?d=BYH3ZPY2[/URL] por si a alguien le interesa checarlo.

Saludos!!
  #166 (permalink)  
Antiguo 20/09/2010, 06:28
 
Fecha de Ingreso: septiembre-2010
Mensajes: 5
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Factura electroncia sat mexico

Buenos dias a todos, he seguido este tema desde el inicio y quiero dar mi primer aporte, aunque no es de programacion, creo que nos va a dar alientos a seguir en el desarrollo del programa de factura electronica.
NUEVAS REGLAS DE FACTURACION ELECTRONICA:
Facilidad para expedir CFD en lugar de CFDI
I.2.23.4.1. ... "los contribuyentes que durante el ejercicio fiscal de 2010 y anteriores hayan optado por expedir CFD al amparo de lo dispuesto por el artículo 29 del CFF, vigente hasta el 31 de diciembre de 2010 y los hayan emitido efectivamente, podrán optar por continuar generando y emitiendo directamente CFD, sin necesidad de remitirlos a un proveedor de certificación de CFD para la validación de requisitos, asignación de folio e incorporación del sello digital del SAT."
Esto esta en el DIARIO OFICIAL, este es el link http://dof.gob.mx/nota_detalle.php?codigo=5159342&fecha=14/09/2010
  #167 (permalink)  
Antiguo 20/09/2010, 09:27
 
Fecha de Ingreso: octubre-2006
Mensajes: 88
Antigüedad: 18 años
Puntos: 1
Respuesta: Factura electroncia sat mexico

Que tal, estoy siguiendo este tema y me parece muy bueno, les comento que ya tengo un sistema de facturacion electronica en visual basic 6 y funciona muy bien si tienen alguna duda en algo y los puedo ayudar con gusto lo hare

saludos.
  #168 (permalink)  
Antiguo 20/09/2010, 11:30
 
Fecha de Ingreso: julio-2010
Mensajes: 10
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Por ahi lei sobre un archivo .p12, que ondas con ese? se utiliza tambien para la firma?
  #169 (permalink)  
Antiguo 20/09/2010, 13:40
 
Fecha de Ingreso: septiembre-2010
Mensajes: 15
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Factura electroncia sat mexico

que tal compañeros.

pues despues de darle una leida al foro y de hacer unas modificaciones al codigo quisiera compartirles mi resultado del proceso de la cadena original para el nuevo procedimiento de sat con SHA1. alguien me podria ayudar a verificar si lo que obtuve es correcto

cadena original:
||2.0|ABCD|2|2010-05-03T14:11:36|49|2008|ingreso|UNA SOLA EXHIBICIÓN|2000.00|0.00|2320.00|PAMC660606ER9|CONT RIBUYENTE PRUEBASEIS PATERNOSEIS MATERNOSEIS|PRUEBA SEIS|6|6|PUEBLA CENTRO|PUEBLA|PUEBLA|PUEBLA|MÉXICO|72000|CAUR39031 2S87|ROSA MARÍA CALDERÓN UIRIEGAS|TOPOCHICO|52|JARDINES DEL VALLE|NUEVO LEON|México|95465|1.00|Servicio|01|Asesoria Fiscal y administrativa|2000.00|2000.00|IVA|16.00|320.00|32 0.00||

cadena resultado del hash(sha1)

0fcba4c916cbd6c8f4911dea8996e7b871505984

sello digital:
dSLYAEQjVMMquAjBf1LOe8xOQhfRnD+rEyVIMmHdZIMZYJzMPj PjZIQQB83DRQMXfXZNqAvDEFdFi/nWbY5hG5lCtpMA/s+3GcvDRHhquDGNR4uvwakP2FnqSVtsjmrecF5C2KL4lXAqFd8 wTHkUQNJkiXTdgM7TYgtp3EzeSnE=

la diferencia radica en que a la cadena original (en utf-8), por lo que he visto, se procesara con SHA1 en lugar de MD5. Al resultado de esto se encryptara con RSA y la llave privada.

no es mucho el cambio de codigo que se tendria que hacer para implementar sha1 en lugar de MD5
  #170 (permalink)  
Antiguo 20/09/2010, 16:41
Avatar de admado  
Fecha de Ingreso: junio-2006
Ubicación: Morelos, México
Mensajes: 115
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por aksuesipn Ver Mensaje
que tal compañeros.

pues despues de darle una leida al foro y de hacer unas modificaciones al codigo quisiera compartirles mi resultado del proceso de la cadena original para el nuevo procedimiento de sat con SHA1. alguien me podria ayudar a verificar si lo que obtuve es correcto

cadena original:
||2.0|ABCD|2|2010-05-03T14:11:36|49|2008|ingreso|UNA SOLA EXHIBICIÓN|2000.00|0.00|2320.00|PAMC660606ER9|CONT RIBUYENTE PRUEBASEIS PATERNOSEIS MATERNOSEIS|PRUEBA SEIS|6|6|PUEBLA CENTRO|PUEBLA|PUEBLA|PUEBLA|MÉXICO|72000|CAUR39031 2S87|ROSA MARÍA CALDERÓN UIRIEGAS|TOPOCHICO|52|JARDINES DEL VALLE|NUEVO LEON|México|95465|1.00|Servicio|01|Asesoria Fiscal y administrativa|2000.00|2000.00|IVA|16.00|320.00|32 0.00||

cadena resultado del hash(sha1)

0fcba4c916cbd6c8f4911dea8996e7b871505984

sello digital:
dSLYAEQjVMMquAjBf1LOe8xOQhfRnD+rEyVIMmHdZIMZYJzMPj PjZIQQB83DRQMXfXZNqAvDEFdFi/nWbY5hG5lCtpMA/s+3GcvDRHhquDGNR4uvwakP2FnqSVtsjmrecF5C2KL4lXAqFd8 wTHkUQNJkiXTdgM7TYgtp3EzeSnE=

la diferencia radica en que a la cadena original (en utf-8), por lo que he visto, se procesara con SHA1 en lugar de MD5. Al resultado de esto se encryptara con RSA y la llave privada.

no es mucho el cambio de codigo que se tendria que hacer para implementar sha1 en lugar de MD5
Por lo que escribiste entre a la pagina del SAT y me encontre con la novedad que a partir del 2011 solo se podra facturar por medio de un Proveedor Autorizado de CFDI, aquellas personas que esten facturando por sus propios medios solo podran hacerlo el primer trimestre del 2011 siempre y cuando hayan sido amparados con un oficio que estipule que cumplen con todos los lineamientos que el SAT a dispuesto. Que lio con todo esto, no podemos terminar una cosa cuando el SAT ya salio con otra. Corrijanme si estoy mal respecto a las disposiciones fiscales!
__________________
>>> El hombre se hace viejo muy pronto y sabio demasiado tarde <<<
  #171 (permalink)  
Antiguo 21/09/2010, 08:14
 
Fecha de Ingreso: septiembre-2010
Mensajes: 5
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Factura electroncia sat mexico

que tal GCTALICO, estoy apenas comenzando a programar la facturacion electronica en mi sistema y lo tengo en vb6, y si has leido todo este tema, todos lo estan haciendo en .net. me podrias decir como le hiciste para obtener informacion del archivo de certificado (numero de certificado, fecha de expedicion, fecha de expiracion, etc). De antemano gracias
  #172 (permalink)  
Antiguo 21/09/2010, 11:16
 
Fecha de Ingreso: septiembre-2010
Mensajes: 2
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Factura electroncia sat mexico

buenas tardes a todos este tema es bastante interesante para mi yo estoy realizando un desarrollo en visual 6 y no puedo realizar correctamente la conversion de la cadena original a utf-8, GCTALICO o techsjll me podrian orientar en como realizar este procedimiento en visual basic 6

de ante mano gracias
  #173 (permalink)  
Antiguo 21/09/2010, 14:09
 
Fecha de Ingreso: septiembre-2010
Mensajes: 15
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Factura electroncia sat mexico

Con la novedad de que ya pude validar los archivos xml, el punto aqui es que estaba tratando de validarlos con sha1 y al momento de meterlos al validador me lo valido como md5 que curioso.

alquen que ya valido sus archivos xml con sha1. siento que el problema es en la encriptacion pero no estoy seguro
  #174 (permalink)  
Antiguo 21/09/2010, 15:43
 
Fecha de Ingreso: septiembre-2010
Mensajes: 18
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Factura electroncia sat mexico

hola a todos, durante mi desarrollo surgieron algunas dudas, espero me puedan ayudar a solventarlas. Les comento que investigando (claro copiando y adecuando) pues realize algo de codigo y despues genero el xml, al final este archivo lo valido en:

https://www.consulta.sat.gob.mx/SICOFI_WEB/ModuloECFD_Plus/ValidadorComprobantes/Validador.html

a lo cual me dio el siguiente resultado

Realizando validación del sello con un certificado externo
Certificado usado : 30001000000100000800
Certificado reportado : 30001000000100000800

Cadena original:
||2.0|ABCD|1|21/09/2010 03:53:35 p.m.|49|2008|INGRESO|UNA EXHIBICION|350|0|0|ISP900909Q88|Industrias del Sur Poniente, S.A. de C.V.|Alvaro Obregón|37|3|Col. Roma Norte|México|Cuauhtémoc|Distrito Federal|México|06700|Pino Suarez|23|Centro|Monterrey|Monterrey|Nuevo Leon|Mexico|95460|CAUR390312S87|Rosa María Calderón Uriegas|Topochico|Topochico|52|Jardines del Valle|Monterrey|México|95465|10|Caja|01|Vasos decorados|20|200|1|pieza|02|Charola metálica|150|150||

Digestión MD5 de cadena como HEX:
59f9ed7dabcaa34af4ab71f3bcd912be

El sello del comprobante no es válido


a continuacion les comparto mi codigo espero les sea util:


string strCadenaOriginal;
string ArchivoCertificado=@"C:\Documents and Settings\Administrador\Mis documentos\VS.NET\FacturacionElectronica.Net\Docs\ Cer_Sellos\aaa010101aaa_CSD_01.cer";
string key =@"C:\Documents and Settings\Administrador\Mis documentos\VS.NET\FacturacionElectronica.Net\Docs\ Cer_Sellos\aaa010101aaa_CSD_01.key";
string lPassword = @"a0123456789";
string Digestion = "";

strCadenaOriginal = "||A|1|2005-09-02T16:30:00|1|ISP900909Q88|Industrias del Sur Poniente, S.A. de C.V.|Alvaro Obregón|37|3|Col. Roma Norte|México|Cuauhtémoc|Distrito Federal|México|06700|Pino Suarez|23|Centro|Monterrey|Monterrey|Nuevo Léon|México|95460|CAUR390312S87|Rosa María Calderón Uriegas|Topochico|52|Jardines del Valle|Monterrey|Monterrey|Nuevo León|México|95465|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|52.5||";
Digestion = clsSeguridad.CodificarMD5(strCadenaOriginal);
SecureString lSecStr = new SecureString();
lSecStr.Clear();
foreach (char c in lPassword.ToCharArray())
lSecStr.AppendChar(c);

Byte[] pLlavePrivadaenBytes = System.IO.File.ReadAllBytes(key);

RSACryptoServiceProvider lrsa = clsSeguridad.DecodeEncryptedPrivateKeyInfo(pLlaveP rivadaenBytes, lSecStr);

MD5CryptoServiceProvider hasher = new MD5CryptoServiceProvider();
Byte[] bytesFirmados = lrsa.SignData(System.Text.Encoding.UTF8.GetBytes(s trCadenaOriginal), hasher);
string sellodigital = Convert.ToBase64String(bytesFirmados);

X509Certificate2 certificado = new X509Certificate2(ArchivoCertificado);

String NoCertificado = HexToString(certificado.SerialNumber);


aqui les dejo una clase q utilize


este lo anexo en otro post

y bueno tengo tmb una dll q uso para generar el xml.

al ejecutar el primer bloque de codigo, obtengo los siguientes valores:

Cadena Original
||A|1|2005-09-02T16:30:00|1|ISP900909Q88|Industrias del Sur Poniente, S.A. de C.V.|Alvaro Obregón|37|3|Col. Roma Norte|México|Cuauhtémoc|Distrito Federal|México|06700|Pino Suarez|23|Centro|Monterrey|Monterrey|Nuevo Léon|México|95460|CAUR390312S87|Rosa María Calderón Uriegas|Topochico|52|Jardines del Valle|Monterrey|Monterrey|Nuevo León|México|95465|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|52.5||

Digestion
8aa2b617944427353697e694a2e35a07

Sello Digital
rG0BQfxSxoQ2e+DMwUjTtE1UFy4kWdWDLEwsxyalDMbGyAJLv+ NjwgC6BIuv27zcope60sldP2cO77UUtbPc1DhKB6K/ySN4ton+5ZLQELp5huWAGl3wqGPyHZ/fds6XwcIrn2pSYOX/JHhUCoz7aBsn0bfsewP8OEq8Hwo7Wgs=

No Certificado
30001000000100000800


despues de obtener los valores genero el siguiente xml:

<?xml version="1.0" encoding="utf-8" ?>
- <Comprobante serie="ABCD" version="2.0" folio="1" fecha="21/09/2010 03:53:35 p.m." sello="rG0BQfxSxoQ2e+DMwUjTtE1UFy4kWdWDLEwsxyalDMb GyAJLv+NjwgC6BIuv27zcope60sldP2cO77UUtbPc1DhKB6K/ySN4ton+5ZLQELp5huWAGl3wqGPyHZ/fds6XwcIrn2pSYOX/JHhUCoz7aBsn0bfsewP8OEq8Hwo7Wgs=" noCertificado="30001000000100000800" subTotal="350" total="0" noAprobacion="49" anoAprobacion="2008" formaDePago="UNA EXHIBICION" descuento="0" metodoDePago="EFECTIVO" tipoDeComprobante="INGRESO" xmlns="http://www.sat.gob.mx/cfd/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd">
- <Emisor rfc="ISP900909Q88" nombre="Industrias del Sur Poniente, S.A. de C.V.">
<DomicilioFiscal calle="Alvaro Obregón" noExterior="37" noInterior="3" colonia="Col. Roma Norte" localidad="México" municipio="Cuauhtémoc" estado="Distrito Federal" pais="México" codigoPostal="06700" />
<ExpedidoEn calle="Pino Suarez" codigoPostal="95460" colonia="Centro" estado="Nuevo Leon" localidad="Monterrey" municipio="Monterrey" noExterior="23" pais="Mexico" />
</Emisor>
- <Receptor rfc="CAUR390312S87" nombre="Rosa María Calderón Uriegas|Topochico">
<Domicilio calle="Topochico" noExterior="52" colonia="Jardines del Valle" estado="Monterrey" pais="México" codigoPostal="95465" />
</Receptor>
- <Conceptos>
<Concepto cantidad="10" unidad="Caja" noIdentificacion="01" descripcion="Vasos decorados" valorUnitario="20" importe="200" />
<Concepto cantidad="1" unidad="pieza" noIdentificacion="02" descripcion="Charola metálica" valorUnitario="150" importe="150" />
</Conceptos>
</Comprobante>


ahora despues de mostrar lo que hice las dudas son las siguientes:

1. por que el sat me dice q es invalido.

2. se supone que el archivo .cer lo debo de procesar para efectos de la digestion, pero en mi codigo solo tengo la ruta de este, y nunca lo utilizo para esta operacion, unicamente utilizo el .key... es acaso que esta mal mi proceso?

3. mi cadena original la genero a partir de los datos fiscales del emisor y el receptor, anexando a esto el detalle de mi factura. entonces se supone que la digestion sale a partir de mi cadena original, es decir, que si a mi cadena original le agrego n cantidad de detalle (productos) mi digestion deberia de ser diferente y a consecuencia de esto mi sello digital tmb va a variar no?, comento esto por que si no me equivoco en algunos post he visto que hay quienes tratan de llegar al mismo sello digital a pesar de que su cadena original es diferente.

4. ahora se supone que el contribuyente debe de solicitar sus folios y series, a manera de que cada ves que facture, mis facturas esten relacionadas con estos folios, yo pensaba en almacenar estos folios y series en una bd, pero para saber si mis folios son autorizados que se supone que debo de esperar por parte del sat: 1. un correo de aprobacion 2. un archivo con los folios??

5. es cierto que debo de validar la informacion fiscal de mis clientes??

6. para efectos del reporte mensual es practicamente un archivo de texto en donde cada renglon va a contener informacion de cada factura (100 filas=100 facturas), este archivo se manda por correo al sat y despues el sat me responde con un email de recepcion, es correcto¿??

bien estas son mis dudas, espero haya podido ser claro y pues tmb haber podido colaborar con mi codigo.

si algo se me olvido por favor recuerdenme que me falto en el proceso de la facturacion, y de antemano gracias por sus aportes.

saludos y gracias.
  #175 (permalink)  
Antiguo 21/09/2010, 15:46
 
Fecha de Ingreso: septiembre-2010
Mensajes: 18
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Factura electroncia sat mexico

aqui les dejo una clase q utilize

using System;

using System.IO;

using System.Text;

using System.Security.Cryptography;

using System.Security.Cryptography.X509Certificates;

using System.Runtime.InteropServices;

using System.Security;

using System.Diagnostics;

using System.ComponentModel;



/// <summary>

/// Realiza la

/// </summary>

public class clsSeguridad
{

static bool verbose = false;

private void SAT()
{
string aa = "";
//byte[] pLlavePrivadaBytes;

//string CadenaOriginal = "";

//string lPassword = "122233";

//SecureString lSecStr = new SecureString();

//lSecStr.Clear();

//foreach (char c in lPassword.ToCharArray())

// lSecStr.AppendChar(c);



//RSACryptoServiceProvider lrsa = DecodeEncryptedPrivateKeyInfo(pLlavePrivadaBytes, lSecStr);

////RSACryptoServiceProvider lrsa = DecodeEncryptedPrivateKeyInfo(pLlavePrivadaBytes, lSecurePaswordString);

//MD5CryptoServiceProvider hasher = new MD5CryptoServiceProvider();

//Byte[] bytesFirmados = lrsa.SignData(System.Text.Encoding.UTF8.GetBytes(C adenaOriginal), hasher);

//string sellodigital = Convert.ToBase64String(bytesFirmados);

}

public static string CodificarMD5(string input)
{
byte[] CadenaUTF8;
byte[] tmpHash;
//convierte en UTF8
CadenaUTF8 = Encoding.UTF8.GetBytes(input);
//crea el hash
tmpHash = new MD5CryptoServiceProvider().ComputeHash(CadenaUTF8) ;
// lo pasa a una variable string mediante la funcion ByteArrayToString
int i;
StringBuilder sOutput = new StringBuilder(tmpHash.Length);
for (i = 0; i < tmpHash.Length; i++)
{
sOutput.Append(tmpHash[i].ToString("x2"));
}
return sOutput.ToString();
}

public static RSACryptoServiceProvider DecodeEncryptedPrivateKeyInfo(byte[] encpkcs8, SecureString lSecStr)
{

// encoded OID sequence for PKCS #1 rsaEncryption szOID_RSA_RSA = "1.2.840.113549.1.1.1"

// this byte[] includes the sequence byte and terminal encoded null

byte[] OIDpkcs5PBES2 = { 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x05, 0x0D };

byte[] OIDpkcs5PBKDF2 = { 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x05, 0x0C };

byte[] OIDdesEDE3CBC = { 0x06, 0x08, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x03, 0x07 };

byte[] seqdes = new byte[10];

byte[] seq = new byte[11];

byte[] salt;

byte[] IV;

byte[] encryptedpkcs8;

byte[] pkcs8;



int saltsize, ivsize, encblobsize;

int iterations;



// --------- Set up stream to read the asn.1 encoded SubjectPublicKeyInfo blob ------

MemoryStream mem = new MemoryStream(encpkcs8);

int lenstream = (int)mem.Length;

BinaryReader binr = new BinaryReader(mem); //wrap Memory Stream with BinaryReader for easy reading

byte bt = 0;

ushort twobytes = 0;



try
{



twobytes = binr.ReadUInt16();

if (twobytes == 0x8130) //data read as little endian order (actual data order for Sequence is 30 81)

binr.ReadByte(); //advance 1 byte

else if (twobytes == 0x8230)

binr.ReadInt16(); //advance 2 bytes

else

return null;



twobytes = binr.ReadUInt16(); //inner sequence

if (twobytes == 0x8130)

binr.ReadByte();

else if (twobytes == 0x8230)

binr.ReadInt16();





seq = binr.ReadBytes(11); //read the Sequence OID

if (!CompareBytearrays(seq, OIDpkcs5PBES2)) //is it a OIDpkcs5PBES2 ?

return null;



twobytes = binr.ReadUInt16(); //inner sequence for pswd salt

if (twobytes == 0x8130)

binr.ReadByte();

else if (twobytes == 0x8230)

binr.ReadInt16();



twobytes = binr.ReadUInt16(); //inner sequence for pswd salt

if (twobytes == 0x8130)

binr.ReadByte();

else if (twobytes == 0x8230)

binr.ReadInt16();



seq = binr.ReadBytes(11); //read the Sequence OID

if (!CompareBytearrays(seq, OIDpkcs5PBKDF2)) //is it a OIDpkcs5PBKDF2 ?

return null;



twobytes = binr.ReadUInt16();

if (twobytes == 0x8130)

binr.ReadByte();

else if (twobytes == 0x8230)

binr.ReadInt16();



bt = binr.ReadByte();

if (bt != 0x04) //expect octet string for salt

return null;

saltsize = binr.ReadByte();

salt = binr.ReadBytes(saltsize);



if (verbose)

showBytes("Salt for pbkd", salt);

bt = binr.ReadByte();

if (bt != 0x02) //expect an integer for PBKF2 interation count

return null;



int itbytes = binr.ReadByte(); //PBKD2 iterations should fit in 2 bytes.

if (itbytes == 1)

iterations = binr.ReadByte();

else if (itbytes == 2)

iterations = 256 * binr.ReadByte() + binr.ReadByte();

else

return null;

if (verbose)

Console.WriteLine("PBKD2 iterations {0}", iterations);



twobytes = binr.ReadUInt16();

if (twobytes == 0x8130)

binr.ReadByte();

else if (twobytes == 0x8230)

binr.ReadInt16();





seqdes = binr.ReadBytes(10); //read the Sequence OID

if (!CompareBytearrays(seqdes, OIDdesEDE3CBC)) //is it a OIDdes-EDE3-CBC ?

return null;



bt = binr.ReadByte();

if (bt != 0x04) //expect octet string for IV

return null;

ivsize = binr.ReadByte(); // IV byte size should fit in one byte (24 expected for 3DES)

IV = binr.ReadBytes(ivsize);

if (verbose)

showBytes("IV for des-EDE3-CBC", IV);



bt = binr.ReadByte();

if (bt != 0x04) // expect octet string for encrypted PKCS8 data

return null;





bt = binr.ReadByte();



if (bt == 0x81)

encblobsize = binr.ReadByte(); // data size in next byte

else if (bt == 0x82)

encblobsize = 256 * binr.ReadByte() + binr.ReadByte();

else

encblobsize = bt; // we already have the data size





encryptedpkcs8 = binr.ReadBytes(encblobsize);

//if(verbose)

// showBytes("Encrypted PKCS8 blob", encryptedpkcs8) ;





SecureString secpswd = lSecStr;//GetSecPswd(lSecStr.ToString());

pkcs8 = DecryptPBDK2(encryptedpkcs8, salt, IV, secpswd, iterations);

if (pkcs8 == null) // probably a bad pswd entered.

return null;



//if(verbose)

// showBytes("Decrypted PKCS #8", pkcs8) ;

//----- With a decrypted pkcs #8 PrivateKeyInfo blob, decode it to an RSA ---

RSACryptoServiceProvider rsa = DecodePrivateKeyInfo(pkcs8);

return rsa;

}



catch (Exception)
{

return null;

}



finally { binr.Close(); }





}

private static bool CompareBytearrays(byte[] a, byte[] b)
{

if (a.Length != b.Length)

return false;

int i = 0;

foreach (byte c in a)
{

if (c != b[i])

return false;

i++;

}

return true;

}

public static byte[] DecryptPBDK2(byte[] edata, byte[] salt, byte[] IV, SecureString secpswd, int iterations)
{

CryptoStream decrypt = null;



IntPtr unmanagedPswd = IntPtr.Zero;

byte[] psbytes = new byte[secpswd.Length];

unmanagedPswd = Marshal.SecureStringToGlobalAllocAnsi(secpswd);

Marshal.Copy(unmanagedPswd, psbytes, 0, psbytes.Length);

Marshal.ZeroFreeGlobalAllocAnsi(unmanagedPswd);



try
{

Rfc2898DeriveBytes kd = new Rfc2898DeriveBytes(psbytes, salt, iterations);

TripleDES decAlg = TripleDES.Create();

decAlg.Key = kd.GetBytes(24);

decAlg.IV = IV;

MemoryStream memstr = new MemoryStream();

decrypt = new CryptoStream(memstr, decAlg.CreateDecryptor(), CryptoStreamMode.Write);

decrypt.Write(edata, 0, edata.Length);

decrypt.Flush();

decrypt.Close(); // this is REQUIRED.

byte[] cleartext = memstr.ToArray();

return cleartext;

}

catch (Exception e)
{

Console.WriteLine("Problem decrypting: {0}", e.Message);

return null;

}

}
  #176 (permalink)  
Antiguo 21/09/2010, 15:47
 
Fecha de Ingreso: septiembre-2010
Mensajes: 18
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Factura electroncia sat mexico

public static byte[] DecryptPBDK2(byte[] edata, byte[] salt, byte[] IV, SecureString secpswd, int iterations)
{

CryptoStream decrypt = null;



IntPtr unmanagedPswd = IntPtr.Zero;

byte[] psbytes = new byte[secpswd.Length];

unmanagedPswd = Marshal.SecureStringToGlobalAllocAnsi(secpswd);

Marshal.Copy(unmanagedPswd, psbytes, 0, psbytes.Length);

Marshal.ZeroFreeGlobalAllocAnsi(unmanagedPswd);



try
{

Rfc2898DeriveBytes kd = new Rfc2898DeriveBytes(psbytes, salt, iterations);

TripleDES decAlg = TripleDES.Create();

decAlg.Key = kd.GetBytes(24);

decAlg.IV = IV;

MemoryStream memstr = new MemoryStream();

decrypt = new CryptoStream(memstr, decAlg.CreateDecryptor(), CryptoStreamMode.Write);

decrypt.Write(edata, 0, edata.Length);

decrypt.Flush();

decrypt.Close(); // this is REQUIRED.

byte[] cleartext = memstr.ToArray();

return cleartext;

}

catch (Exception e)
{

Console.WriteLine("Problem decrypting: {0}", e.Message);

return null;

}

}

public static RSACryptoServiceProvider DecodePrivateKeyInfo(byte[] pkcs8)
{

// encoded OID sequence for PKCS #1 rsaEncryption szOID_RSA_RSA = "1.2.840.113549.1.1.1"

// this byte[] includes the sequence byte and terminal encoded null

byte[] SeqOID = { 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00 };

byte[] seq = new byte[15];

// --------- Set up stream to read the asn.1 encoded SubjectPublicKeyInfo blob ------

MemoryStream mem = new MemoryStream(pkcs8);

int lenstream = (int)mem.Length;

BinaryReader binr = new BinaryReader(mem); //wrap Memory Stream with BinaryReader for easy reading

byte bt = 0;

ushort twobytes = 0;



try
{



twobytes = binr.ReadUInt16();

if (twobytes == 0x8130) //data read as little endian order (actual data order for Sequence is 30 81)

binr.ReadByte(); //advance 1 byte

else if (twobytes == 0x8230)

binr.ReadInt16(); //advance 2 bytes

else

return null;





bt = binr.ReadByte();

if (bt != 0x02)

return null;



twobytes = binr.ReadUInt16();



if (twobytes != 0x0001)

return null;



seq = binr.ReadBytes(15); //read the Sequence OID

if (!CompareBytearrays(seq, SeqOID)) //make sure Sequence for OID is correct

return null;



bt = binr.ReadByte();

if (bt != 0x04) //expect an Octet string

return null;



bt = binr.ReadByte(); //read next byte, or next 2 bytes is 0x81 or 0x82; otherwise bt is the byte count

if (bt == 0x81)

binr.ReadByte();

else

if (bt == 0x82)

binr.ReadUInt16();

//------ at this stage, the remaining sequence should be the RSA private key



byte[] rsaprivkey = binr.ReadBytes((int)(lenstream - mem.Position));

RSACryptoServiceProvider rsacsp = DecodeRSAPrivateKey(rsaprivkey);

return rsacsp;

}



catch (Exception)
{

return null;

}



finally { binr.Close(); }



}

public static RSACryptoServiceProvider DecodeRSAPrivateKey(byte[] privkey)
{

byte[] MODULUS, E, D, P, Q, DP, DQ, IQ;



// --------- Set up stream to decode the asn.1 encoded RSA private key ------

MemoryStream mem = new MemoryStream(privkey);

BinaryReader binr = new BinaryReader(mem); //wrap Memory Stream with BinaryReader for easy reading

byte bt = 0;

ushort twobytes = 0;

int elems = 0;

try
{

twobytes = binr.ReadUInt16();

if (twobytes == 0x8130) //data read as little endian order (actual data order for Sequence is 30 81)

binr.ReadByte(); //advance 1 byte

else if (twobytes == 0x8230)

binr.ReadInt16(); //advance 2 bytes

else

return null;



twobytes = binr.ReadUInt16();

if (twobytes != 0x0102) //version number

return null;

bt = binr.ReadByte();

if (bt != 0x00)

return null;





//------ all private key components are Integer sequences ----

elems = GetIntegerSize(binr);

MODULUS = binr.ReadBytes(elems);



elems = GetIntegerSize(binr);

E = binr.ReadBytes(elems);



elems = GetIntegerSize(binr);

D = binr.ReadBytes(elems);



elems = GetIntegerSize(binr);

P = binr.ReadBytes(elems);



elems = GetIntegerSize(binr);

Q = binr.ReadBytes(elems);



elems = GetIntegerSize(binr);

DP = binr.ReadBytes(elems);



elems = GetIntegerSize(binr);

DQ = binr.ReadBytes(elems);



elems = GetIntegerSize(binr);

IQ = binr.ReadBytes(elems);



Console.WriteLine("showing components ..");

if (verbose)
{

showBytes("\nModulus", MODULUS);

showBytes("\nExponent", E);

showBytes("\nD", D);

showBytes("\nP", P);

showBytes("\nQ", Q);

showBytes("\nDP", DP);

showBytes("\nDQ", DQ);

showBytes("\nIQ", IQ);

}



// ------- create RSACryptoServiceProvider instance and initialize with public key -----

RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

RSAParameters RSAparams = new RSAParameters();

RSAparams.Modulus = MODULUS;

RSAparams.Exponent = E;

RSAparams.D = D;

RSAparams.P = P;

RSAparams.Q = Q;

RSAparams.DP = DP;

RSAparams.DQ = DQ;

RSAparams.InverseQ = IQ;

RSA.ImportParameters(RSAparams);

return RSA;

}

catch (Exception)
{

return null;

}

finally { binr.Close(); }

}
  #177 (permalink)  
Antiguo 21/09/2010, 15:48
 
Fecha de Ingreso: septiembre-2010
Mensajes: 18
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Factura electroncia sat mexico

private static int GetIntegerSize(BinaryReader binr)
{

byte bt = 0;

byte lowbyte = 0x00;

byte highbyte = 0x00;

int count = 0;

bt = binr.ReadByte();

if (bt != 0x02) //expect integer

return 0;

bt = binr.ReadByte();



if (bt == 0x81)

count = binr.ReadByte(); // data size in next byte

else

if (bt == 0x82)
{

highbyte = binr.ReadByte(); // data size in next 2 bytes

lowbyte = binr.ReadByte();

byte[] modint = { lowbyte, highbyte, 0x00, 0x00 };

count = BitConverter.ToInt32(modint, 0);

}

else
{

count = bt; // we already have the data size

}







while (binr.ReadByte() == 0x00)
{ //remove high order zeros in data

count -= 1;

}

binr.BaseStream.Seek(-1, SeekOrigin.Current); //last ReadByte wasn't a removed zero, so back up a byte

return count;

}

private static void showBytes(String info, byte[] data)
{

Console.WriteLine("{0} [{1} bytes]", info, data.Length);

for (int i = 1; i <= data.Length; i++)
{

Console.Write("{0:X2} ", data[i - 1]);

if (i % 16 == 0)

Console.WriteLine();

}

Console.WriteLine("\n\n");

}

private static SecureString GetSecPswd(String prompt)
{

SecureString password = new SecureString();



Console.ForegroundColor = ConsoleColor.Gray;

Console.Write(prompt);

Console.ForegroundColor = ConsoleColor.Magenta;



while (true)
{

ConsoleKeyInfo cki = Console.ReadKey(true);

if (cki.Key == ConsoleKey.Enter)
{

Console.ForegroundColor = ConsoleColor.Gray;

Console.WriteLine();

return password;

}

else if (cki.Key == ConsoleKey.Backspace)
{

// remove the last asterisk from the screen...

if (password.Length > 0)
{

Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);

Console.Write(" ");

Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);

password.RemoveAt(password.Length - 1);

}

}

else if (cki.Key == ConsoleKey.Escape)
{

Console.ForegroundColor = ConsoleColor.Gray;

Console.WriteLine();

return password;

}

else if (Char.IsLetterOrDigit(cki.KeyChar) || Char.IsSymbol(cki.KeyChar))
{

if (password.Length < 20)
{

password.AppendChar(cki.KeyChar);

Console.Write("*");

}

else
{

Console.Beep();

}

}

else
{

Console.Beep();

}

}

}
  #178 (permalink)  
Antiguo 21/09/2010, 16:25
Avatar de hegaes  
Fecha de Ingreso: octubre-2008
Mensajes: 17
Antigüedad: 16 años
Puntos: 0
Respuesta: Factura electroncia sat mexico

Hola a todos, aksuesipn, solo quiero comentarte que ya he validado en el SAT usando SHA1 pero al igual que a tí en la parte donde pone la digestion lo toma como si fuera MD5.
  #179 (permalink)  
Antiguo 21/09/2010, 16:33
Avatar de hegaes  
Fecha de Ingreso: octubre-2008
Mensajes: 17
Antigüedad: 16 años
Puntos: 0
Respuesta: Factura electroncia sat mexico

scorpionsdd respondiendo a lo que comentabas :

Cita:
a lo cual me dio el siguiente resultado

Realizando validación del sello con un certificado externo
Certificado usado : 30001000000100000800
Certificado reportado : 30001000000100000800

Cadena original:
||2.0|ABCD|1|21/09/2010 03:53:35 p.m.|49|2008|INGRESO|UNA EXHIBICION|350|0|0|ISP900909Q88|Industrias del Sur Poniente, S.A. de C.V.|Alvaro Obregón|37|3|Col. Roma Norte|México|Cuauhtémoc|Distrito Federal|México|06700|Pino Suarez|23|Centro|Monterrey|Monterrey|Nuevo Leon|Mexico|95460|CAUR390312S87|Rosa María Calderón Uriegas|Topochico|Topochico|52|Jardines del Valle|Monterrey|México|95465|10|Caja|01|Vasos decorados|20|200|1|pieza|02|Charola metálica|150|150||

Digestión MD5 de cadena como HEX:
59f9ed7dabcaa34af4ab71f3bcd912be

El sello del comprobante no es válido
si esa es la cadena original que estas tratando de validar te comento que la fecha de la factura no tiene el formato requerido en el Anexo 20, tal ves eso sea parte del problema por el cual tu validacion sea erronea.
  #180 (permalink)  
Antiguo 21/09/2010, 16:51
 
Fecha de Ingreso: septiembre-2010
Mensajes: 18
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Factura electroncia sat mexico

de nuevo valide mi xml y me arrojo:

El sello del comprobante presenta problemas:
Comprobante C:\cfd.xml leido exitosamente

Validando encodingComprobante expresado en UTF-8

Realizando validación del sello con un certificado externo
Certificado usado : 30001000000100000800
Certificado reportado : 30001000000100000800

Cadena original:
||2.0|ABCD|1|2010-09-21T17:46:30|49|2008|ingreso|UNA EXHIBICION|350|0|0|ISP900909Q88|Industrias del Sur Poniente, S.A. de C.V.|Alvaro Obregón|37|3|Col. Roma Norte|México|Cuauhtémoc|Distrito Federal|México|06700|Pino Suarez|23|Centro|Monterrey|Monterrey|Nuevo Leon|Mexico|95460|CAUR390312S87|Rosa María Calderón Uriegas|Topochico|Topochico|52|Jardines del Valle|Monterrey|México|95465|10|Caja|01|Vasos decorados|20|200|1|pieza|02|Charola metálica|150|150|IVA|16|56||

Digestión MD5 de cadena como HEX:
57afd484b4fd768b52180fb4a7a9a659

El sello del comprobante no es válido


mi xml es el siguiente:

<?xml version="1.0" encoding="utf-8" ?>
- <Comprobante serie="ABCD" version="2.0" folio="1" fecha="2010-09-21T17:46:30" sello="rG0BQfxSxoQ2e+DMwUjTtE1UFy4kWdWDLEwsxyalDMb GyAJLv+NjwgC6BIuv27zcope60sldP2cO77UUtbPc1DhKB6K/ySN4ton+5ZLQELp5huWAGl3wqGPyHZ/fds6XwcIrn2pSYOX/JHhUCoz7aBsn0bfsewP8OEq8Hwo7Wgs=" noCertificado="30001000000100000800" subTotal="350" total="0" noAprobacion="49" anoAprobacion="2008" formaDePago="UNA EXHIBICION" descuento="0" metodoDePago="EFECTIVO" tipoDeComprobante="ingreso" xmlns="http://www.sat.gob.mx/cfd/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd">
- <Emisor rfc="ISP900909Q88" nombre="Industrias del Sur Poniente, S.A. de C.V.">
<DomicilioFiscal calle="Alvaro Obregón" noExterior="37" noInterior="3" colonia="Col. Roma Norte" localidad="México" municipio="Cuauhtémoc" estado="Distrito Federal" pais="México" codigoPostal="06700" />
<ExpedidoEn calle="Pino Suarez" codigoPostal="95460" colonia="Centro" estado="Nuevo Leon" localidad="Monterrey" municipio="Monterrey" noExterior="23" pais="Mexico" />
</Emisor>
- <Receptor rfc="CAUR390312S87" nombre="Rosa María Calderón Uriegas|Topochico">
<Domicilio calle="Topochico" noExterior="52" colonia="Jardines del Valle" estado="Monterrey" pais="México" codigoPostal="95465" />
</Receptor>
- <Conceptos>
<Concepto cantidad="10" unidad="Caja" noIdentificacion="01" descripcion="Vasos decorados" valorUnitario="20" importe="200" />
<Concepto cantidad="1" unidad="pieza" noIdentificacion="02" descripcion="Charola metálica" valorUnitario="150" importe="150" />
</Conceptos>
- <Impuestos>
- <Traslados>
<Traslado importe="56" impuesto="IVA" tasa="16" />
</Traslados>
</Impuestos>
</Comprobante>

alguna idea de por k el error?????

saludos.

Etiquetas: factura, mexico, sat
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 39 personas




La zona horaria es GMT -6. Ahora son las 00:58.