GARANTIR DESCONTO

Fórum Assinatura digital Cades no padrão da icp-Brasil #591534

26/02/2018

0

Bom dia,
Estou desenvolvendo uma solução. E o mesma precisa de assinar um arquivo XML no formato CAdES,
Enviar o certificado do usuário no cabeçalho do pacote SOAP, Converter o conteúdo para base64. Estar no padrão da ICP-Brasil.
E enviar o conteúdo para um web service.

O que consegui fazer.: Assinar o documento utilizando (CAPICOM,secureblackbox,Chilkat). Mais ao enviar o arquivo
por web service o retorno sempre e o mesmo. O certificado não é homologado pela ICP-BRASIL.

Não consegui enviar o certificado do usuário no cabeçalho do pacote SOAP. Alguém teria alguma sugestão?

{$REGION ''''Variáveis''''}
var
CAdESProcessor: TElCAdESSignatureProcessor;
CMS: TElSignedCMSMessage;
Cert: TElX509Certificate;
Sig: TElCMSSignature;
SourceStream, CMSSTream: TFileStream;
{$ENDREGION}
begin
Cert := RetorneCertificadoSelecionado;
if Cert = nil then
begin
raise Exception.Create(''''@Nenhum certificado digital foi informado para assinar'''');
end;

// Criando uma instância do processador de assinatura.
CAdESProcessor := TElCAdESSignatureProcessor.Create();
try
// Criando uma instância da classe de mensagem assinada.
CMS := TElSignedCMSMessage.Create(nil);
SourceStream := TFileStream.Create(vlTextoParaAssinar, fmOpenRead or fmOpenReadWrite);

try
// Criando nova mensagem assinada.
CMS.CreateNew(SourceStream, 0, SourceStream.Size);

// Adicionando uma assinatura.
Sig := CMS.Signatures[CMS.AddSignature()];

// Encadernando a assinatura ao processador CAdES.
CAdESProcessor.Signature := Sig;

// Criando a assinatura.
// CAdESProcessor.CreateEPES(Cert, StrToOID(''''2.16.76.1.7.1.1.2.2''''), SB_ALGORITHM_DGST_SHA1, PolicyHash); // Não sei como calcular o hash!
CAdESProcessor.CreateBES(Cert);

{$REGION ''''Salvando o CMS''''}
CMSStream := TFileStream.Create(vlLocalSaida, fmCreate);
try
CMS.Save(CMSStream);
finally
FreeAndNil(CMSStream);
end;
{$ENDREGION}

TransmitirXML;
finally
FreeAndNil(CMS);
FreeAndNil(SourceStream);
end;
finally
FreeAndNil(CAdESProcessor);
FreeAndNil(Cert);
end;
Junismar Miranda

Junismar Miranda

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar