Hola Buenas tardes
en una variable ya tengo la digestion SHA1 solamente me falta el sello digital de acuerdo a la llave que proporciona el SAT y eso encriptarlo en base 64 la pregunta seria como leer ya llave privada para despues poder sellar la digestion que ya tengo en una variable
Este es el codigo que tengo la variable digest es la que tiene la digestion SHA1 de mi cadena original que ya viene codificada en UTF-8 solo me falta el sellado, espero puedan ayudarme
resulta = UTF8_Encode(cadena)
MsgBox resulta
digest = oSHA1.SHA1(resulta)
MsgBox digest
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
.
Como sellar una digestion SHa1 en Visual Basic
-
- Mensajes: 2
- Registrado: Mié May 18, 2011 3:24 pm
-
- Mensajes: 1
- Registrado: Mié Jun 01, 2011 2:03 pm
- Ubicación: EDOMEX
Re: Como sellar una digestion SHa1 en Visual Basic
Saludos Orus2.
Antes que nada déjame decirte que, al igual que muchos por este foro, una de mis principales fuentes fue la página de Fernando Ortiz.
En cuanto al código te diré que me quité de problemas con VB y decidí hacerlo todo desde el shell con comandos del OpenSSL-WIN32.
No es una solución muy elegante pero funciona.
Por lo que veo estás desarrollando en VB .Net.
Este código del mismo modo está desarrollado en VB .Net 2010 dirigido a la NetFramework 4.0.
Ojalá te sea útil.
Antes que nada déjame decirte que, al igual que muchos por este foro, una de mis principales fuentes fue la página de Fernando Ortiz.
En cuanto al código te diré que me quité de problemas con VB y decidí hacerlo todo desde el shell con comandos del OpenSSL-WIN32.
No es una solución muy elegante pero funciona.

Por lo que veo estás desarrollando en VB .Net.
Este código del mismo modo está desarrollado en VB .Net 2010 dirigido a la NetFramework 4.0.
Ojalá te sea útil.
Código: Seleccionar todo
Private Function generarSelloDigital(ByVal strCadenaOriginal As String) As String
'Declara las variables que indicarán las rutas de los archivos
'que contendran temporalmente la cadena original, la llave
'privada en formato PEM, y el sello digital respectivamente.
'Así como la ruta de la llave privada en formato KEY.
Dim pathCadenaOriginal As String = "c:\cadena.original"
Dim pathLlaveFormatoPem As String = "c:\llave.pem"
Dim pathSelloDigital As String = "c:\sello.digital"
Dim pathLlaveFormatoKey As String = "c:\llave.key"
'Escribe la cadena original en 'c:\cadena.original'.
File.WriteAllText(pathCadenaOriginal, strCadenaOriginal)
'Convierte la llave privada ('c:\llave.key') a formato PEM ('c:\llave.pem')
'con la cual es posible sellar la cadena digitalmente. Se requiere la
'contraseña de la llave privada la cual puede ser contenida en una variable o
'leída desde una base de datos etc.
Shell("c:\OPENSSL-WIN32\BIN\openssl pkcs8 -inform DER -in " & _
pathLlaveFormatoKey & " -out " & pathLlaveFormatoPem & _
" -passin pass:KEYPA55W0RD", vbHide)
'Contando con la llave en formato PEM ('c:\llave.pem') se procede a generar
'el sello con la sigiente sentencia. Dicho sello quedará contenido en 'c:\sello.digital'.
Shell("cmd /c type " & pathCadenaOriginal &
" | c:\OPENSSL-WIN32\BIN\openssl dgst -sha1 -sign " & pathLlaveFormatoPem &
" | c:\OPENSSL-WIN32\BIN\openssl enc -base64 -A -out " & pathSelloDigital, vbHide)
'Se coloca el sello digital en una variable.
Dim resultado As String = File.ReadAllText(pathSelloDigital)
'Se eliminan archivos temporales.
Kill(pathCadenaOriginal)
Kill(pathLlaveFormatoPem)
Kill(pathSelloDigital)
'Se devuelve el sello digital
Return resultado
End Function 'generarSelloDigital
-
- Mensajes: 2
- Registrado: Mié May 18, 2011 3:24 pm
Re: Como sellar una digestion SHa1 en Visual Basic
aaa perdon no habia colocado respuesta pero muchisimas gracias claro que me sirvio
ahora si ya pude generar mis CFD
en VB.net
Saludos!!

en VB.net
Saludos!!