Pessoal
Boa tarde
A unica forma que consegui enviar um XML pelo Acbr para a prefeitura de Salvador, foi assinando o XML por uma DLL feita em C#. No caso a DLL disponibilizada pela própria prefeitura de Salvador. Essa dll também faz o envio, mas devido a questões técnicas do meu projeto não será possível utilizar a dll para realizar o envio, somente para a assinatura, e deu certo.
O problema de assinar pelo componente esta diretamente ligado ao atributo id em minusculo, onde o componente hoje realiza a assinatura com Id ( I maiúsculo ) e depois troca o I para minusculo. Se o provedor não validar a assinatura, e sim somente o schema, não dará erros. Agora, se validar a assinatura, como ocorre agora com a prefeitura de salvador, o arquivo será rejeitado por diferença no Hash.
Pelo que pesquisei em outros posts esse é um problema antigo e conhecido aqui no grupo.
Vocês acham que vale a pena estudar assinatura direto pela API do Windows, pelo método CryptSignMessage ? Ou buscar uma outra forma de flexibilizar o uso do OpenSSL ?