![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Cita:
Con los certificados de prueba del SAT se puede hacer que pase la validacion del SELLO. Y no es necesario tener folios "Reales" tampoco. Si quieres te puedo echar la mano, mandame a mi mail [email protected] el archivo XML que estas tratando de validar, asi como el certificado DE PRUEBA del SAT que estas usando para firmarlo. NOTA : NO ME MANDES ningun certificado "REAL", solo el de prueba, te lo pido porque hay como 10 o 15 certificados de prueba que tiene el SAT y si vamos a hacer pruebas debemos usar el mismo. |
|
#2
|
|||
|
|||
|
Cita:
__________________
Alejandro Jourdan |
|
#3
|
|||
|
|||
|
Cita:
Ya que solucionaste esto usando chilkat podrias indicarme cual metodo empleaste? aki anexo los metodos que yo emplee. saludos (codigo en vb6) Código:
'Carga del Modulo de Encriptacion RSA
Dim rsa As New ChilkatRsa
' Dim success As Long
'Carga de la Llave Privada y su contraseña
Dim privKey As New privateKey
'success = privKey.LoadPkcs8EncryptedFile("aaa010101aaa_CSD_01.key", "a0123456789")
success = privKey.LoadPkcs8EncryptedFile(Trim(gstrRutKey), Trim(gstrPasKey))
If (success <> 1) Then
MsgBox privKey.LastErrorText
Exit Function
End If
'Exportar llave Privada a Formato XML
Dim privKeyXml As String
privKeyXml = privKey.GetXml 'GetXml()
success = rsa.ImportPrivateKey(privKeyXml)
If (success <> 1) Then
MsgBox rsa.LastErrorText
Exit Function
End If
' Text3 = vbNullString
' Text3.Text = privKeyXml
'Definición de Tipo de Salida (Base64)
rsa.EncodingMode = "base64"
'Definicion del tipo de conversion de caracteres a "utf-8"
rsa.Charset = "utf-8"
rsa.ImportPrivateKey privKeyXml 'publicKey
'Proceso de Encriptación usando (cadena original digerida) y (llave privada + contraseña)
Dim usePrivateKey As Long
usePrivateKey =1
Dim encryptedStr As String
'metodo1: cifrando wDigest que contiene la cadena original reducida con MD5 en HEX
encryptedStr = rsa.EncryptStringENC(Trim(wDigest), usePrivateKey)
'metodo2: lo emplee erroneamente
' encryptedStr = rsa.SignStringENC(Trim(wDigest), "sha-1")
'metodo2: intento que digiera y cifre en un mismo paso con el parametros de la cadena original y "md5"
' encryptedStr = rsa.SignStringENC(Trim(wCadOri), "md5")
|
|
#4
|
|||
|
|||
|
cknox
No veo como estas tratando la cadena original, asegúrate de que sea correcta, como primer paso. y que sea igual a la que genera el SAT, si hay diferencias, por ahí te puedes ir. Saludos |
|
#5
|
|||
|
|||
|
La cadena original ya esta bien, la genero independiente al xml, es decir manualmente segun el anexo 20, e incluso ya compare la salida que lee el validador de el SAT contra la mía, y ya coinciden inclusive los MD5 generado.
el codigo para generar la cadena original es un poco larga, asi que demos por hecho que esta correcta, dado que la validacion la acepta: Cita:
ahora bien, regresando al uso de chilkat, si aun quieres verlo la reduccion la hago asi: Código:
Dim crypt As New ChilkatCrypt2 Dim wDigest As String ' La Salida de datos será en formato hexadecmal crypt.EncodingMode = "hex" '"base64" ' El Formato de conversión para caracteres especiales, será en "utf-8" como establece el SAT crypt.Charset = "utf-8" crypt.HashAlgorithm = "md5" Dim hashStr As String 'wCadOri es la variable que contiene la cadena original generada en otra funcion; y que introduzco en esta funcion como parametro hashStr = LCase(crypt.HashStringENC(Trim(wCadOri))) wDigest = hashStr 'contiene la cadena original digerida segun estandar SAT cuando generé el xml no inclui el valor certificado que es opcional. por lo cual en la validacion me pide el certificado(*.cer) y me genera la lectura. tengo duda si es forzoso que incluya el certificado en formato hex. Pero estoy casi seguro que el problema radica en el metodo de chilkat que empleo: EncryptStringENC(txt, usePrivateKey) SignStringENC(txt, "SHA-1"|"MD5"|"MD2"|"SHA-256"|"SHA-384"|"SHA-512" ) OpenSslSignStringENC(txt) estoy empezando a creer que debo emplear la tercera, pero parece que necesito investigar el modo de emplearla. Espero haberme explicado lo suficientemente bien. saludos y nuevamente sigo esperando comentarios NOTA DE EDICION: modifique el nombre del xml y la cadena original x contener informacion confidencial que no me pertenece. Aclaración: el codigo que empleo es una adaptacion a mis necesidades, originalmente proviene de los ejemplos que provee chilkat a sus clientes. Última edición por cknox fecha: 07-06-2010 a las 06:51:37. Razón: modificar informacion que es confidencial y no distribuible |
|
#6
|
|||
|
|||
|
exito!!!
Finalmente, despues de muchas horas, de leer codigos, referencias de cada uno de los activeX de chilkat, encontre iluminacion divina y me encontre con un tema llamado:"Duplicate openssl dgst -md5 -sign myKey.pem something.txt | openssl enc -base64 -A"
Cita:
colegas, chilkat funciona, y aunk mi codigo es vb6, se supone que es compatible con delphi como lo debio haber comprobado jourdan suerte a los demas. depues de todo cuando estudiaba mi primer lenguaje fue turbo pascal, y luego delphi |
|
#7
|
|||
|
|||
|
Addenda
Estoy usando el código publicado aquí con Delphi 2007, todo estaba bien hasta que intenté agragar una addenda a mi documento XML.
Lo hize de éste modo: CFD.Addenda := 'CADENA|ADDENDA'; Y delphi me devuelve un error: [DCC Error] Main.pas(767): E2129 Cannot assign to a read-only property Entonces lo hize de éste modo: CFD:Addenda.Text := 'CADENA|ADDENDA'; y delphi me lo genera bien, pero al validar en el SAT obtengo éste error: El sello del comprobante es válido: Se presentaron los siguientes errores al validar la estructura del comprobante \Bin\FacturaSello.xml Error: cvc-complex-type.2.3: Element 'Addenda' cannot have character [children], because the type's content type is element-only. ¿Alguién me puede orientar sobre cómo agregar la addenda sin obtener errores? |
|
#8
|
|||
|
|||
|
¿quien de los que ya validaron tanto la estructura del xml la cadena original y el sello
puede compartir esa informacion para comparar si lo ando haciendo bien.'? gracias |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Mexico - Como crear sellos en FACTURA ELECTRONICA.. | pcicom | API de Windows | 12 | 10-11-2012 18:46:55 |
| Factura Electrónica | aig | Varios | 13 | 10-12-2010 17:12:44 |
| factura electronica | cmm07 | Varios | 4 | 02-04-2009 17:46:03 |
| factura electronica | spia | Varios | 2 | 22-02-2009 21:30:06 |
| Factura electronica AUNA | Aprendiz | Varios | 5 | 01-09-2005 10:44:15 |
|