Ver Mensaje Individual
  #29  
Antiguo 30-10-2017
seti.roman seti.roman is offline
Registrado
 
Registrado: may 2017
Posts: 4
Reputación: 0
seti.roman Va por buen camino
Cita:
Empezado por sanamarain Ver Mensaje
Hola también soy nuevo en el foro. Pude implementar una interface de factura electrónica con éxito y rápidamente sobre Delphi 7 gracias al gran aporte de adripugliesso, pero me interesa generar el CMS directamente sin la intervención de openssl como binario externo, es decir con la OpensslUtils que ya conseguí de la web de la universidad de Genoa de Marco Ferrante para la versión .7b de openssl (dll).
La consulta es para seti.roman, hay alguna otra rutina para implementar además de la que ya compartiste? Porque no logro validar el CMS generado.
Llego a crear el smime.p7m que es el archivo firmado con signed-data en formato Email, luego quito la cabecera, codifico en base64 y envío pero algo estoy haciendo mal o está faltando porque me devuelve "CMS inválido".

Saludos
A ver, yo tuve que hacer esto con el token y el sign cuando los recibía después de enviar la solicitud firmada,
dado que venian con etiquetas y algún caractér raro, no me acuerdo muy bien. Te lo paso:

Código:
function Tcomprobante.autenticar: Tstringlist;
var
  autenticar: Tstringlist;
begin
  autenticar := Tstringlist.Create;
  autenticar.Text := (HTautenticar as LoginCms).loginCms(crearfirma);

  result := autenticar;
end;

function Tcomprobante.obteneraut: Tstringlist;
var
  cms: Tstringlist;
  i: Integer;
  token: String;
  sign: String;
begin
  cms := Tstringlist.Create;
  cms := autenticar;

  for i := 0 to cms.Count-1 do
  begin
    cms[i] := Trimleft(cms[i]);

    if StartsText('<token>',cms[i]) then
    begin
      cms[i] := cms[i].Replace('<token>', '');
      cms[i] := cms[i].Replace('</token>', '');
      token := cms[i];

      cms[i+1] := cms[i+1].Replace('<sign>', '');
      cms[i+1] := cms[i+1].Replace('</sign>', '');
      sign := cms[i+1];
    end;
  end;

  cms.Clear;

  cms.Add(Trimleft(token));
  cms.Add(Trimleft(sign));

  guardaraut(cms[0],cms[1]);
end;
Responder Con Cita