Enviei alguns ajustes para o SVN, que podem resolver o problema de assinatura do OpenSSL... é importante informar corretamente, o "InfElement"...
Também implementei uma tentativa de buscar o nó de assinatura, baseado no ultimo nó do documento raiz... Isso permite informar Vazio no "InfElement"...
Apliquei uma modificação para o provedor 4R... onde o ID está dentro de uma sub-tag...
<!DOCTYPE test [<!ATTLIST Rps Id ID #IMPLIED>]>
<Rps xmlns="http://www.abrasf.org.br/nfse.xsd">
<InfDeclaracaoPrestacaoServico>
<Rps Id="rps1NF">
<IdentificacaoRps>
No exemplo acima, o "InfElement" correto é Rps, pois é ele quem tem a propriedade "Id"