Pesquisar na Comunidade
Showing results for tags 'referenceuri'.
Encontrado 1 registro
-
Boa tarde, O Site da prefeitura de SJP(São José dos Pinhais), começou a mostrar uma mensagem em seu site: ASSINATURA DIGITAL WEB SERVICE Prezado usuario(a), Caso sua empresa consulte o Sistema de Nota Fiscal Eletronica via Web Service, verifique se os servicos abaixo relacionados estão com a assinatura digital conforme orientações disponiveis na área do desenvolvedor. Servicos utilizados sem a assinatura digital: ConsultarSituacaoLoteRpsEnvio - 03/02/2020 16:40:36 - 191.177.199.99 ConsultarLoteRpsEnvio - 03/02/2020 16:40:36 - 191.177.199.99 Informamos que os arquivos fora dos padrães estabelecidos na documentação serão bloqueados a partir de 31/03/2020. Mais informações sobre como assinar as consultas estão disponiveis em nossa area do desenvolvedor no link https://nfe.sjp.pr.gov.br/servicos/issOnline2/desenvolvedor Revisando a geração do arquivo XML de consulta, constatei que o mesmo já estava com a assinatura. Entrei em contato com a prefeitura para averiguar e me informaram que está faltando referenciar o que está assinando: Reference URI="" Analisando o exemplo que eles passaram esta dessa maneira <Reference URI="#consultar"> E no XML enviado esta -<Reference URI=""> Fiz uma revisão no Acbr, e vi que ele é gerado na ACBrDFeUtil.pas function SignatureElement(const URI: String; AddX509Data: Boolean; const IdSignature: String; const Digest: TSSLDgst): String; var MethodAlgorithm, DigestAlgorithm: String; begin case Digest of dgstSHA256: begin MethodAlgorithm := 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256'; DigestAlgorithm := 'http://www.w3.org/2001/04/xmlenc#sha256'; end; dgstSHA512: begin MethodAlgorithm := 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha512'; DigestAlgorithm := 'http://www.w3.org/2001/04/xmlenc#sha512'; end; else begin MethodAlgorithm := 'http://www.w3.org/2000/09/xmldsig#rsa-sha1'; DigestAlgorithm := 'http://www.w3.org/2000/09/xmldsig#sha1'; end; end; {(*} Result := '<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"' + IdSignature + '>' + '<SignedInfo>' + '<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />' + '<SignatureMethod Algorithm="'+MethodAlgorithm+'" />' + '<Reference URI="' + IfThen(URI = '', '', '#' + URI) + '">' + '<Transforms>' + '<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />' + '<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />' + '</Transforms>' + '<DigestMethod Algorithm="'+DigestAlgorithm+'" />' + '<DigestValue></DigestValue>' + '</Reference>' + '</SignedInfo>' + '<SignatureValue></SignatureValue>' + '<KeyInfo>' + IfThen(AddX509Data, '<X509Data>' + '<X509Certificate></X509Certificate>'+ '</X509Data>', '')+ '</KeyInfo>'+ '</Signature>'; {*)} end; Que é chamada da function AdicionarSignatureElement na ACBrDFeSSL.pas function TDFeSSLXmlSignClass.AdicionarSignatureElement(const ConteudoXML: String; AddX509Data: Boolean; const docElement, IdSignature: String; const IdAttr: String = ''): String; var URI, TagEndDocElement: String; I: Integer; begin URI := ExtraiURI(ConteudoXML, IdAttr); TagEndDocElement := '</' + docElement + '>'; I := PosLast(TagEndDocElement, ConteudoXML); if I = 0 then raise EACBrDFeException.Create('Não encontrei final do elemento: ' + TagEndDocElement); Result := copy(ConteudoXML, 1, I - 1) + SignatureElement(URI, AddX509Data, IdSignature, FpDFeSSL.SSLDgst) + copy(ConteudoXML, I, Length(ConteudoXML)); end; O que ocorre é que esse IdAttr, em determinado momento não é passado o valor para a rotina. Então não consegui identificar uma forma de passar a configuração para alterar esta informação. Alguém sabe como eu poderia gerar a tag Reference URI= com o valor #consultar? Obrigado
- 6 replies
-
- referenceuri
- prosjp
- (e 3 mais)