Ver Mensaje Individual
  #102  
Antiguo 22-05-2010
ifarias ifarias is offline
Miembro
 
Registrado: sep 2004
Posts: 23
Reputación: 0
ifarias Va por buen camino
Problemas con el Sello

Cita:
Empezado por felipep Ver Mensaje
Anexo una modificación al código enviado en donde puedes obtener varias veces el sello al limpiar bien la memoria y puedes también obtener los datos del certificado.

Ojalá sea de utilidad
Usando las rutinas que amablemente nos proporcionó felipep, Genero la cadena, el archivo xml, etc, con su sello. Solo que al querer validarlo en la pagina del SAT, me marca que el sello no es válido.

Ya revisé la cadena y está correcta, de hecho me genera el mismo MD5 que genera el validador del SAT.

Alguien ha validado los .xml con el Sello?? . Las rutinas que utilizo son las siguientes...

Código:
function SelloDigital(llaveprivada, cadenaoriginal: widestring): String;
var
  Len    : cardinal;
    mdctx  : EVP_MD_CTX;
    inbuf  :  array [0..8192] of char;
  outbuf :  array [0..1023] of char;
    key: pEVP_PKEY;
begin
    cadenaoriginal := AnsiReplaceStr(cadenaoriginal,#13,'');
    cadenaoriginal := AnsiReplaceStr(cadenaoriginal,#10,'');
    cadenaoriginal := AnsiReplaceStr(cadenaoriginal,#8,'');
    cadenaoriginal := AnsiReplaceStr(cadenaoriginal,'  ','');
    cadenaoriginal := AnsiReplaceStr(cadenaoriginal,' |','|');
    cadenaoriginal := AnsiReplaceStr(cadenaoriginal,'| ','|');
    cadenaoriginal := UTF8Encode(cadenaoriginal);

  StrPCopy(inbuf,cadenaoriginal);
    InitOpenSSL;
    key:=LoadPrivateKey(llaveprivada,'');
//  EVP_MD_CTX_init(@mdctx);
    EVP_SignInit(@mdctx,EVP_md5());
    EVP_SignUpdate(@mdctx,@inbuf,Length(inbuf));
    EVP_SignFinal(@mdctx,@outbuf,Len,key);
//  EVP_MD_CTX_cleanup(@mdctx);
    EVP_PKEY_free(key);
    FreeOpenSSL;
    result := bintobase64(@outbuf,Len);
end;
Alguna sugerencia ????
Responder Con Cita