Ver Mensaje Individual
  #115  
Antiguo 07-06-2010
cknox cknox is offline
Registrado
 
Registrado: jun 2010
Posts: 3
Reputación: 0
cknox Va por buen camino
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:
El sello del comprobante presenta problemas:
Comprobante D:\KNOX\dmp\programa\RFC_CFD_NC1_20100606.xml leido exitosamente
Validando encodingComprobante expresado en UTF-8
Realizando validación del sello con un certificado externo
Certificado usado : 10001200000000022517
Certificado reportado : 10001200000000022517
Cadena original:
||XXXX||
Digestión MD5 de cadena como HEX:
54ff615657eeb4ae0eaaf7b8e5047955
El sello del comprobante no es válido
coinciden completamente las cadenas originales que genera SAT de mi archivo xml como el que uso yo para la generacion del sello.
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
A continuacion sigue el código que anexe anteriormente.

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
Responder Con Cita