Cita:
Empezado por sanamarain
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;