Llamada a funcion sgenc32.dll
Publicado por Juan Antonio Macareno Palacios (9 intervenciones) el 22/09/2009 02:12:53
Para los expertos en visual, aqui expongo mi problema, espero me orienten en los errores
que esto cometiendo, gracias.
Me mandaron una libreria (sgenc32.dll) y junto con ella me mandaron el codigo para accesar
via Visual Basic que es el siguiente:
' Definiciones VB
' Estructura anterior
Public Type registro_CURP
curp As String * 19
archivokey As String * 256
password As String * 256
End Type
' Estructura actual (Generica)
Public Type registro_CURPG
curp As String * 19
archivokey As String * 256
archivocer As String * 256
password As String * 256
End Type
' Funciones anteriores
Declare Function BuscaCurps Lib "sgenc32" Alias "_BuscaCurps@8" (ByVal strArchOrig As String, ByRef CURPS() As registro_CURP) As Long
Declare Function GeneraFirmaDigital Lib "sgenc32" Alias "_GeneraFirmaDigital@8" (ByVal strArchOrig As String, ByRef CURPS() As registro_CURP) As Long
' Funciones actuales (Genericas)
Declare Function BuscaCurpsG Lib "sgenc32" Alias "_BuscaCurpsG@12" (ByVal strArchOrig As String, ByVal tipo As Long, ByRef CURPS() As registro_CURPG) As Long
Declare Function GeneraFirmaDigitalG Lib "sgenc32" Alias "_GeneraFirmaDigitalG@12" (ByVal strArchOrig As String, ByVal tipo As Long, ByRef CURPS() As registro_CURPG) As Long
Nuevos Códigos de Error:
10 = Tipo de documento a firmar no valido
11 = No se pudo leer el certificado
12 = Certificado caduco.
13 = El archivo contiene más de un registro 201.
Donde tipo = Tipo de documento a firmar
0 (cero) = PEDIMENTOS
1 = ENCARGOS
2 = AVISOs DE TRANSFERENCIA
Genero una estructura llamada MCURPG de la siguiente manera:
Public MCURPG(0 To 9) As registro_CURPG
luego, cuando hago la llamada a la libreria escribo el siguiente codigo para recibir un resultado de respuesta o de "estado" sobre la llamada (status).
status = BuscaCurpsG(ByVal mstrArchOrig, ByVal mtipo, MCURPG)
Donde status me regresa un 0 y esto se refiere a que hubo exito en la llamada de la libreria, para esto compruebo con un print si en la estructura viene el dato de la cupr
en esta forma:
Print status, MCURPG(0).curp
y la estructura MCURPG(0).curp si trajo un dato o recibio un dato de la libreria sgenc32.dll, Hasta aqui todo esta correcto, el siguiente paso es volver a accesar a la libreria y enviar los siguientes datos:
MCURPG(0).archivocer = "c:\tmp\davs.cer"
MCURPG(0).archivokey = "C:\TMP\DAVS.key"
MCURPG(0).password = "davsh02"
firmadig = GeneraFirmaDigitalG(ByVal mstrArchOrig, ByVal mtipo, MCURPG)
Aqui es donde comienza el problema, porque firmadig es la variable que recibo con el estado de la llamada a la libreria, y siempre me manda el codigo 11 (no se pudo leer el certificado).
Por lo que yo pienso que no estoy enviando bien la estructura a la libreria con la informacion que requiere para generar la firma digital.
Espero poderme explicar cual es mi situacion y gracias por sus prontas respuestas.
Saludos.
que esto cometiendo, gracias.
Me mandaron una libreria (sgenc32.dll) y junto con ella me mandaron el codigo para accesar
via Visual Basic que es el siguiente:
' Definiciones VB
' Estructura anterior
Public Type registro_CURP
curp As String * 19
archivokey As String * 256
password As String * 256
End Type
' Estructura actual (Generica)
Public Type registro_CURPG
curp As String * 19
archivokey As String * 256
archivocer As String * 256
password As String * 256
End Type
' Funciones anteriores
Declare Function BuscaCurps Lib "sgenc32" Alias "_BuscaCurps@8" (ByVal strArchOrig As String, ByRef CURPS() As registro_CURP) As Long
Declare Function GeneraFirmaDigital Lib "sgenc32" Alias "_GeneraFirmaDigital@8" (ByVal strArchOrig As String, ByRef CURPS() As registro_CURP) As Long
' Funciones actuales (Genericas)
Declare Function BuscaCurpsG Lib "sgenc32" Alias "_BuscaCurpsG@12" (ByVal strArchOrig As String, ByVal tipo As Long, ByRef CURPS() As registro_CURPG) As Long
Declare Function GeneraFirmaDigitalG Lib "sgenc32" Alias "_GeneraFirmaDigitalG@12" (ByVal strArchOrig As String, ByVal tipo As Long, ByRef CURPS() As registro_CURPG) As Long
Nuevos Códigos de Error:
10 = Tipo de documento a firmar no valido
11 = No se pudo leer el certificado
12 = Certificado caduco.
13 = El archivo contiene más de un registro 201.
Donde tipo = Tipo de documento a firmar
0 (cero) = PEDIMENTOS
1 = ENCARGOS
2 = AVISOs DE TRANSFERENCIA
Genero una estructura llamada MCURPG de la siguiente manera:
Public MCURPG(0 To 9) As registro_CURPG
luego, cuando hago la llamada a la libreria escribo el siguiente codigo para recibir un resultado de respuesta o de "estado" sobre la llamada (status).
status = BuscaCurpsG(ByVal mstrArchOrig, ByVal mtipo, MCURPG)
Donde status me regresa un 0 y esto se refiere a que hubo exito en la llamada de la libreria, para esto compruebo con un print si en la estructura viene el dato de la cupr
en esta forma:
Print status, MCURPG(0).curp
y la estructura MCURPG(0).curp si trajo un dato o recibio un dato de la libreria sgenc32.dll, Hasta aqui todo esta correcto, el siguiente paso es volver a accesar a la libreria y enviar los siguientes datos:
MCURPG(0).archivocer = "c:\tmp\davs.cer"
MCURPG(0).archivokey = "C:\TMP\DAVS.key"
MCURPG(0).password = "davsh02"
firmadig = GeneraFirmaDigitalG(ByVal mstrArchOrig, ByVal mtipo, MCURPG)
Aqui es donde comienza el problema, porque firmadig es la variable que recibo con el estado de la llamada a la libreria, y siempre me manda el codigo 11 (no se pudo leer el certificado).
Por lo que yo pienso que no estoy enviando bien la estructura a la libreria con la informacion que requiere para generar la firma digital.
Espero poderme explicar cual es mi situacion y gracias por sus prontas respuestas.
Saludos.
Valora esta pregunta


0