Página 2 de 3
Re: SHA1 con OpenSSL (SOLUCIONADO)
Publicado: Mié Feb 16, 2011 11:21 am
por mtymty
Saludos
He leido con mucho interés sus soluciones. Desgraciadamente soy una ignorante en el tema OPENSSL... tengo un desarrollo en VFP y me funcionaba de maravillas, el problema fue en el cambio mde SHA1... conseguí una aplicación pero la cadena me la arroja en los 40 caracteres , supongo que debo de hacer algo con la llave pero ahí ya me atoré...
En resumen...
Si el sistema corre en Windows, y bajo OpenSSl e ingreso los comandos en el VFOX (desde Vfox se corren aplicaciones instaladas en windows) y continuo es posible? o estoy diciendo una barbaridad?
SI tengo la cadena original y OpenSSl no es instalable en windows, puedo hacer a manera de "parche" una aplicación en la web para "traducir" los sellos mientras logro hacerlo en Vfox? (Urgen 3 facturas)
Disculpando si lo que escribo es tonto
Se agradecen ayudas
Re: SHA1 con OpenSSL (SOLUCIONADO)
Publicado: Mié Feb 16, 2011 12:43 pm
por Dado
mtymty escribió:Saludos
He leido con mucho interés sus soluciones. Desgraciadamente soy una ignorante en el tema OPENSSL... tengo un desarrollo en VFP y me funcionaba de maravillas, el problema fue en el cambio mde SHA1... conseguí una aplicación pero la cadena me la arroja en los 40 caracteres , supongo que debo de hacer algo con la llave pero ahí ya me atoré...
En resumen...
Si el sistema corre en Windows, y bajo OpenSSl e ingreso los comandos en el VFOX (desde Vfox se corren aplicaciones instaladas en windows) y continuo es posible? o estoy diciendo una barbaridad?
SI tengo la cadena original y OpenSSl no es instalable en windows, puedo hacer a manera de "parche" una aplicación en la web para "traducir" los sellos mientras logro hacerlo en Vfox? (Urgen 3 facturas)
Disculpando si lo que escribo es tonto
Se agradecen ayudas
Partiendo de que comentas "....tengo un desarrollo en VFP...." la pregunta es, tienes el codigo fuente? porque si es asi cambiar de MD5 a SHA1 es tan simple como cambiar tres letras, sin importar la libreria que uses, todas he visto que es muy simple el cambio.
Puedes publicar aqui las 5 o 10 lineas de tu codigo fuente donde calculas el sello, de esa forma podemos ver en donde tienes que cambiarle.....
Re: SHA1 con OpenSSL (SOLUCIONADO)
Publicado: Jue Feb 17, 2011 2:31 pm
por mtymty
Sí, tego el código fuente. Lo tomé de Internet de Halcón Divino por cierto, y funcionaba de maravillas...el problema es que en la parte que señalo roja ahí no sé cómo usar el sha1... bajé un app de portalfox pero me genera sólo los 40 caracteres, de ahí a hacer el sello con el key y el cer estoy perdida
mMil gracias por tu interés
Procedure SelloDigital
* Se genera el Sello Digital y ademas te da el numero de serie del certificado y el certificado
* Para obtener el sello digital tienes que instalar el componente ActiveX ChilKat
* Objetos
loPkey = CreateObject('Chilkat.PrivateKey')
If swError
MessageBox("No se puede crear el objeto Chilkat.PrivateKey",16+0,"Error")
return
endif
loRsa = CreateObject('Chilkat.Rsa')
If swError
MessageBox("No se puede crear el objeto Chilkat.Rsa",16+0,"Error")
return
endif
loCert = CreateObject('Chilkat.Cert')
If swError
MessageBox("No se puede crear el objeto Chilkat.Cert",16+0,"Error")
return
endif
* Load the Certificado
loCert.LoadFromFile(ArchivoCertificado)
If swError
MessageBox("No se encontro el archivo de certificado " + ArchivoCertificado ,16+0,"Error")
return
endif
* Load the private key from an RSA PEM file: * loPkey.LoadPemFile("myKey.pem")
loPkey.LoadPkcs8EncryptedFile(ArchivoKey, PasswordKey)
If swError
MessageBox("No se encontro el archivo de Llave (*.key) " + ArchivoKey ,16+0,"Error")
return
endif
* Get the private key in XML format:
lcPkeyXml = loPkey.GetXml()
If swError
MessageBox("No se obtener la llave privada " ,16+0,"Error")
return
endif
* Error
IF (lnSuccess <> 1) THEN
MessageBox("No se pudo desbloquer el componente ChilKat" ,16+0,"Error")
return
ENDIF
* Import the private key into the RSA component:
lnSuccess = loRsa.ImportPrivateKey(lcPkeyXml)
If swError
MessageBox("No se pudo importar la llave dentro del componente RSA " ,16+0,"Error")
Return
ENDIF
* OpenSSL uses BigEndian byte ordering:
loRsa.LittleEndian = 0
lorsa.Charset = "utf-8"
loRsa.EncodingMode = "base64"
strSello = loRsa.SignStringENC(strOriginal,"md5")
If swError
MessageBox("No se pudo obtenre el sello digital " ,16+0,"Error")
Return
ENDIF
N = loCert.SerialNumber
noCertificado = SubStr(N,02,1)+SubStr(N,04,1)+SubStr(N,06,1)+SubStr(N,08,1)+SubStr(N,10,1)+;
SubStr(N,12,1)+SubStr(N,14,1)+SubStr(N,16,1)+SubStr(N,18,1)+SubStr(N,20,1)+;
SubStr(N,22,1)+SubStr(N,24,1)+SubStr(N,26,1)+SubStr(N,28,1)+SubStr(N,30,1)+;
SubStr(N,32,1)+SubStr(N,34,1)+SubStr(N,36,1)+SubStr(N,38,1)+SubStr(N,40,1)+;
SubStr(N,42,1)+SubStr(N,44,1)+SubStr(N,46,1)+SubStr(N,48,1)+SubStr(N,50,1)
Certificado = SubStr(loCert.GetEncoded(), 1, Len(loCert.GetEncoded()) - 2)
Return
Re: SHA1 con OpenSSL (SOLUCIONADO)
Publicado: Jue Feb 17, 2011 2:52 pm
por Dado
mtymty escribió:strSello = loRsa.SignStringENC(strOriginal,"md5")
Return
Quero suponer que ya intentaste :
strSello = loRsa.SignStringENC(strOriginal,"sha1")
o talvez con un guion
strSello = loRsa.SignStringENC(strOriginal,"sha-1")
Es simple sintaxis......
Re: SHA1 con OpenSSL (SOLUCIONADO)
Publicado: Jue Feb 17, 2011 3:21 pm
por mtymty
Re: SHA1 con OpenSSL (SOLUCIONADO)
Publicado: Jue Feb 17, 2011 3:40 pm
por mtymty
YUJUJUUUUUUUUUUUUUUUUUUUUUUUUUUUUuu
Si alguna vez vienes a Monterrey permíteme invitarte una ida al cabrito
Thanks!
Re: SHA1 con OpenSSL (SOLUCIONADO)
Publicado: Jue Feb 17, 2011 3:51 pm
por Dado
mtymty escribió:YUJUJUUUUUUUUUUUUUUUUUUUUUUUUUUUUuu
Si alguna vez vienes a Monterrey permíteme invitarte una ida al cabrito
Thanks!
Seria de lujo.......es bien bonito recibir muestras de apoyo, no es por presumir pero tengo invitaciones para Oaxaca, Michoacan, Veracruz, Guadalajara y ahora Monterrey, que padre! pudiera recorrer media Republica y visitar a los amigos........

Re: SHA1 con OpenSSL (SOLUCIONADO)
Publicado: Jue Feb 17, 2011 4:05 pm
por mtymty
Y mira que para que te invite una coda de Monterrey!!!!!! Así que sí....tu presume presume jajajjajajaj Gracias y no es de dientes pajuera XD
Re: SHA1 con OpenSSL (SOLUCIONADO)
Publicado: Vie Feb 25, 2011 12:39 pm
por aalanisg
que tal, estoy usando el mismo codigo de hector el divino para firmar, y lo hace perfecto sin errores. pero al momento de validar en validacfd me muestra entre otros errores este: Esta usando la FIEL y eso no es correcto. DEBE USAR el Certificado de Sello Digital (CSD).
estoy usando los archivos que me da el sat.
xxx821214xxx.cer
xxx821214xxx_1101261111.key
y el password
* Load the Certificado
loCert.LoadFromFile('xxx821214xxx.cer')
* Load the private key from an RSA PEM file: * loPkey.LoadPemFile("myKey.pem")
loPkey.LoadPkcs8EncryptedFile('xxx821214xxx_1101261111.key', PasswordKey)
no se a que se refiera el error, al momento de timbrado me regresa el mismo error. como lo puedo solucionar.
Re: SHA1 con OpenSSL (SOLUCIONADO)
Publicado: Vie Feb 25, 2011 2:16 pm
por Dado
aalanisg escribió:que tal, estoy usando el mismo codigo de hector el divino para firmar, y lo hace perfecto sin errores. pero al momento de validar en validacfd me muestra entre otros errores este: Esta usando la FIEL y eso no es correcto. DEBE USAR el Certificado de Sello Digital (CSD).
estoy usando los archivos que me da el sat.
xxx821214xxx.cer
xxx821214xxx_1101261111.key
y el password
* Load the Certificado
loCert.LoadFromFile('xxx821214xxx.cer')
* Load the private key from an RSA PEM file: * loPkey.LoadPemFile("myKey.pem")
loPkey.LoadPkcs8EncryptedFile('xxx821214xxx_1101261111.key', PasswordKey)
no se a que se refiera el error, al momento de timbrado me regresa el mismo error. como lo puedo solucionar.
Debes solicitar OTRO certificado llamado CSD (Certificado de Sello digital) en apariencia es igual que la FIEL, son dos archivos uno CER y otro KEY pero se tramita por separado usando un programa llamado SOLCEDI