buenas Tardes
Alguien me puede orientar sobre este problema que tengo, resulta que quiere generar el sello pero viendo con ustedes todos los ejemplos lo hice con chilkat y este es mi codigo
Dim privKey As New Chilkat.PrivateKey
If privKey.LoadPkcs8EncryptedFile(keycve, "1234567") = False Then
MsgBox(privKey.LastErrorText)
Exit Function
End If
Dim privkeyxml As String = privKey.GetXml()
Dim rsa As New Chilkat.Rsa
If rsa.ImportPrivateKey(privkeyxml) = False Then
MsgBox(rsa.LastErrorText)
Exit Function
End If
rsa.Charset = "utf-8"
rsa.EncodingMode = "base64"
rsa.LittleEndian = 0
Dim cert As New Chilkat.Cert
If cert.LoadFromFile(certfile) = False Then
MsgBox(cert.LastErrorText)
Exit Function
End If
Dim sellobase64 As String
sellobase64 = rsa.SignStringENC(strCadenaOriginal, "sha1")
pero el RSA.SIGNSTRINGENC no genera nada me da NOTHING, aque se debe, ya hice de todo, cambie sha-1, y algunas otraas cosas y nada , como que no se ejecuta ese metodo..
saludos
gracias por la ayuda

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
.
No genera nada SignStringENC
-
- Mensajes: 372
- Registrado: Mié Ago 11, 2010 1:55 am
- Ubicación: México, D.F.
- Contactar:
Re: No genera nada SignStringENC
Para que puedas comparar, te recomiendo ampliamente aprender a obtener el sello con OpenSSL, ya al final puedes usar la librería que mencionas...
Si publicas el XML con el que estas trabajando, te podemos ayudar paso a paso a verificar tu sello...
Saludos
Si publicas el XML con el que estas trabajando, te podemos ayudar paso a paso a verificar tu sello...
Saludos
Todo lo que no es dado es perdido
-
- Mensajes: 9
- Registrado: Sab Nov 02, 2013 2:03 pm
Re: No genera nada SignStringENC
Que tal Mauricio
te mando el xml del que estoy trabajando y la cadena ya la cheque y la genera bien, parece como que la funcion no hace nada bien extraño, ya quita la referencia y la volvi agregar...
gracias
te mando el xml del que estoy trabajando y la cadena ya la cheque y la genera bien, parece como que la funcion no hace nada bien extraño, ya quita la referencia y la volvi agregar...
gracias
- Adjuntos
-
- Fact_1__500.xml
- (3.64 KiB) Descargado 195 veces
-
- Mensajes: 372
- Registrado: Mié Ago 11, 2010 1:55 am
- Ubicación: México, D.F.
- Contactar:
Re: No genera nada SignStringENC
El primer paso es obtener tu cadena original:
Mira si tienes "exactamente" la misma:
Saludos
Código: Seleccionar todo
xsltproc cadena32.xslt fac_foro.xml
Código: Seleccionar todo
||3.2|2013-11-30T09:13:57|ingreso|PAGO EN UNA SOLA EXHIBICION|727.74|844.17|TARJETA DE CREDITO/DEBITO|HERMOSILLO|DCR1102231X6|DERMATOLOGICOS CR SA DE CV|BENITO JUAREZ #349 LOCAL 12 PLAZA DILA|BUGAMBILIAS|HERMOSILLO|SONORA|MEXICO|83140|BENITO JUAREZ 349|BUGAMBILIAS|SONORA|SONORA|MEXICO|83140|Régimen General de Ley Personas Morales|MEMJ590318MA0|JORGE ALBERTO MENDEZ MORENO|AV. TERRAZAS 20|SANTA LUCIA|HERMOSILLO|SONORA|MEXICO|83148|1.0000|PZA|ANSOLAR LOCION SPORT 65FPS 90ML|297.7700|297.7700|1.0000|PZA|URIAGE HYSEAC GEL 150ML|196.1200|196.1200|1.0000|PZA|HYSEAC A.I CMA 40ML|233.8400|233.8400|IVA|116.43|IVA|16.00|116.43||
Todo lo que no es dado es perdido
-
- Mensajes: 9
- Registrado: Sab Nov 02, 2013 2:03 pm
Re: No genera nada SignStringENC
Mauricio.
asi es, la tengo igualita, de hecho uso tambien la cadenaoriginal_3_2.xslt, yo creo que por ahi no va el error, la cadena ya la habia checado y si me habia quedado bien, como te comente, de hecho ya cambie la funcion puse esta ahora, que tome de aqui del foro pero no pasa la validacion con el validacfd.. tambien hice el sello con el openssl y si me da diferente ha este que genera con la funcion que te doy, estaba pensando si los decimales tienen que ver, yo pongo 4 decimales...
muchas gracias
Dim keyfile As String = "Claveprivada_DCR1102231X6.key"
Dim strSello As String = String.Empty
Dim passwordSeguro As System.Security.SecureString = New System.Security.SecureString
passwordSeguro.Clear()
For Each c As Char In pass.ToCharArray
passwordSeguro.AppendChar(c)
Next
Dim llavePrivadaBytes() As Byte = System.IO.File.ReadAllBytes(keyfile)
Dim rsaO As RSACryptoServiceProvider = opensslkey.DecodeEncryptedPrivateKeyInfo(llavePrivadaBytes, passwordSeguro)
Dim hasher As SHA1CryptoServiceProvider = New SHA1CryptoServiceProvider
Dim bytesFirmados() As Byte = rsaO.SignData(System.Text.Encoding.UTF8.GetBytes(strCadenaOriginal), hasher)
strSello = Convert.ToBase64String(bytesFirmados)
Dim Root As XElement = XDocument.Load(nombredearchivo).Root
Root.@sello = strSello
Root.Save(nombredearchivo)
asi es, la tengo igualita, de hecho uso tambien la cadenaoriginal_3_2.xslt, yo creo que por ahi no va el error, la cadena ya la habia checado y si me habia quedado bien, como te comente, de hecho ya cambie la funcion puse esta ahora, que tome de aqui del foro pero no pasa la validacion con el validacfd.. tambien hice el sello con el openssl y si me da diferente ha este que genera con la funcion que te doy, estaba pensando si los decimales tienen que ver, yo pongo 4 decimales...
muchas gracias
Dim keyfile As String = "Claveprivada_DCR1102231X6.key"
Dim strSello As String = String.Empty
Dim passwordSeguro As System.Security.SecureString = New System.Security.SecureString
passwordSeguro.Clear()
For Each c As Char In pass.ToCharArray
passwordSeguro.AppendChar(c)
Next
Dim llavePrivadaBytes() As Byte = System.IO.File.ReadAllBytes(keyfile)
Dim rsaO As RSACryptoServiceProvider = opensslkey.DecodeEncryptedPrivateKeyInfo(llavePrivadaBytes, passwordSeguro)
Dim hasher As SHA1CryptoServiceProvider = New SHA1CryptoServiceProvider
Dim bytesFirmados() As Byte = rsaO.SignData(System.Text.Encoding.UTF8.GetBytes(strCadenaOriginal), hasher)
strSello = Convert.ToBase64String(bytesFirmados)
Dim Root As XElement = XDocument.Load(nombredearchivo).Root
Root.@sello = strSello
Root.Save(nombredearchivo)
-
- Mensajes: 9
- Registrado: Sab Nov 02, 2013 2:03 pm
Re: No genera nada SignStringENC
Mauricio
Encontre este codigo:
y hice dos xml, y me dan diferente sello, a que se debe, me imagino que a la cadena, pero segun yo deben de estar identicas de hecho les mando la misma variable... no entiendo que esta pasando....
gracias, seguire buscandole...
Dim pathCadenaOriginal As String = "c:\OpenSSL-Win32\certificados\cadena.txt"
Dim pathLlaveFormatoPem As String = "c:\OpenSSL-Win32\certificados\llave.pem"
Dim pathSelloDigital As String = "C:\OpenSSL-Win32\certificados\00001000000301268365.cer"
Dim pathLlaveFormatoKey As String = "C:\OpenSSL-Win32\certificados\Claveprivada_DCR1102231X6.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:benito349", 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)
Dim Root As XElement = XDocument.Load(nombredearchivo).Root
Root.@sello = resultado
Root.Save(nombredearchivo)
Encontre este codigo:
y hice dos xml, y me dan diferente sello, a que se debe, me imagino que a la cadena, pero segun yo deben de estar identicas de hecho les mando la misma variable... no entiendo que esta pasando....
gracias, seguire buscandole...
Dim pathCadenaOriginal As String = "c:\OpenSSL-Win32\certificados\cadena.txt"
Dim pathLlaveFormatoPem As String = "c:\OpenSSL-Win32\certificados\llave.pem"
Dim pathSelloDigital As String = "C:\OpenSSL-Win32\certificados\00001000000301268365.cer"
Dim pathLlaveFormatoKey As String = "C:\OpenSSL-Win32\certificados\Claveprivada_DCR1102231X6.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:benito349", 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)
Dim Root As XElement = XDocument.Load(nombredearchivo).Root
Root.@sello = resultado
Root.Save(nombredearchivo)
-
- Mensajes: 9
- Registrado: Sab Nov 02, 2013 2:03 pm
Re: No genera nada SignStringENC
Mauricio
Ya lo solucione, con las dos rutinas quedo bien, resulta que me confunde con las llaves una de fiel y otra del certificado...
muchas gracias
Ya lo solucione, con las dos rutinas quedo bien, resulta que me confunde con las llaves una de fiel y otra del certificado...
muchas gracias