La Web del Programador: Comunidad de Programadores
 
    Pregunta:  64202 - GENERAR SELLO DIGITAL
Autor:  jose guerra
buenas estoy tratando de generar el sello digital con la dll de cryptosys
haber si alguien me puede ayudar en que estoy mal.

Primero con la RSA_ReadEncPrivateKeys saco en un string la llave del archivo .key

luego a la cadena original la convierto en utf8
strutp =blob( ls_cadena_original, EncodingUTF8!)

luego creo un bloque de mensaje codificado con la cadena
nlen = RSA_EncodeMsg(abblock,nblocklen, strutp, mLen,32+1)

luego mezclo el bloque con el string de la llave
RSA_RawPrivate(abblock, nBlockLen, ls_Privkey, 0)

luego la convierto a base 64
CNV_B64StrFromBytes(ls_sello, nB64Len, abblock, nlen)

esos son mis pasos me peuden decir porque no me la genera bien
me rellena un pedaso con AAAAAAAAAAAAAA.
aqui esta el sello.

gGr68VEPlG2H4XG4ddUoTnoqU2T4JCWEYwbMfPePoTELn+8TBogWGwgbGRshVa+3rkWShGLSesg1xEPY8mbURwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=

si alguien me podria ayudar seria demasiado amable
gracias ya casi me doy porvencido.

  Respuesta:  Sergio Flores
Estoy tratando de utilizar este mismo codigo, pero me aparece un error al tratar de correr el RSA_EncodeMsg, alguna sugerencia?

  Respuesta:  David Duran Valdes
Espero que sirva
ll_keyprivada= RSA_ReadEncPrivateKeys (ls_aux,0, as_filellave,ls_pass, 0) 

IF ll_keyprivada > 0 THEN
ls_keyprivada=Fill ( " ", ll_keyprivada )
//Encriptacion de cadena_original con llave privada
lb_info=blob(as_cadena_original,EncodingUTF8!)
ll_len_info = len(lb_info)

RSA_ReadEncPrivateKeys (ls_keyprivada,ll_keyprivada, as_filellave,ls_pass, 0)
ll_len_bloque = RSA_KeyBytes(ls_keyprivada)
//Creo bloque de mensaje codificado
ll_tamanio = RSA_EncodeMsg(lb_bloque, ll_len_bloque, lb_info, ll_len_info, 32 + 1)
//Combinacion del bloque con el string de la llave
RSA_RawPrivate(lb_bloque, ll_len_bloque, ls_keyprivada, 0)

//Conversion a base64
ll_tamanio = len(lb_bloque)
nB64Len = CNV_B64StrFromBytes(ls_sello, 0, lb_bloque, ll_tamanio)
ls_Sello = fill(" ",nB64Len)
CNV_B64StrFromBytes(ls_sello, nB64Len, lb_bloque, ll_tamanio)
END IF