Assinatura Digital JAXB e Unmarshaller

Estou com o seguinte problema :
Tenho que assinar cada RPS e o Lote todo que vou mandar para o WEB Service da Prefeitura de Altamira. Eu faco isso da seguinte forma:

  1. Primeiro dou Marschal no Objeto contendo os Rps`s que serão convertidos em Nota Fiscal Eletronica (gera o arquivo EnviarLoteRpsEnvio.xml em anexo) :

     	contextM = JAXBContext.newInstance(EnviarLoteRpsEnvio.class);
     	Marshaller marshallerEnvio = contextM.createMarshaller();
     	marshallerEnvio.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE);      
     	marshallerEnvio.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
     	File enviarLoteRpsEnvio = new File("EnviarLoteRpsEnvio.xml");
     	marshallerEnvio.marshal(loteEnvioRps, enviarLoteRpsEnvio);
    
  2. Depois chamo o metodo que assina cada RPS do lote e gera o Arquivo RpsAssinado.xml, em anexo:
    Assinador.assinarInfRps(“senhaKeyStore”, “ArqKeyStore”, “EnviarLoteRpsEnvio.xml”, “RpsAssinado.xml”);
    Trecho do RpsAssinado.xml:












    esxNQ3xXnwvXVChdfNifEegC8ho=

  3. Depois chamo metodo que assina o Lote e gera o Arquivo LoteRpsAssinado.xml:
    Assinador.assinarLote(“senhaKeyStore”, “ArqKeyStore”, “RpsAssinado.xml”, “LoteRpsAssinado.xml”);
    Trecho do LoteRpsAssinado.xml:












    hD08vv96lmjqLCC8D7LmThx98OE=


  4. Depois chamao o metodo que validada se o arquivo foi corretamente assinado digitalmente. O resultado para este procedimento retorna true, ou seja, o xml foi assinado coreetamente.:
    Assinador.validarAssinatura(“LoteRpsAssinado.xml”, “ArqKeyStore”, “senhaKeyStore”);

  5. Apos a verificão da validação do Arquivo LoteRpsAssinado.xml é realizao UnMarshaller dele, coforme comando abaixo:
    File enviarLoteRpsAssinado = new File(“LoteRpsAssinado.xml”);
    EnviarLoteRpsEnvio loteEnvioRps = (EnviarLoteRpsEnvio) unMarshallerEnvio.unmarshal( new StreamSource(enviarLoteRpsAssinado), EnviarLoteRpsEnvio.class ).getValue();

  6. e depois enviado para o webService
    WSNfsdV001 servico = new WSNfsdV001Service().getWSNfsdV001Port();
    EnviarLoteRpsResposta r = servico.recepcionarLoteRps(loteEnvioRps );
    O problema é que depois que executo o comando Unmarshaller e mando para o Web Service, o Web Service da um comando Marsheller para validar as assinaturas e tem como resposta que as assinaturas no arquivo xml esta INVALIDA.
    Verifiquei que o arquivo gerado pelo Marshaller sobre objeto loteEnvioRps(enviado para o Web Service) há uma troca do elemento por ns2:Signature, isso ocorre em todos os elementos filhos deste elemento (por exemplo por ns2:KeyInfo).

    Trecho do arquivo gerado pelo Marshaller sobre objeto loteEnvioRps:
    ns2:Signature
    ns2:SignedInfo
    <ns2:CanonicalizationMethod
    Algorithm=“http://www.w3.org/TR/2001/REC-xml-c14n-20010315” />
    <ns2:SignatureMethod Algorithm=“http://www.w3.org/2000/09/xmldsig#rsa-sha1” />
    <ns2:Reference URI="">
    ns2:Transforms
    <ns2:Transform
    Algorithm=“http://www.w3.org/2000/09/xmldsig#enveloped-signature” />
    <ns2:Transform Algorithm=“http://www.w3.org/TR/2001/REC-xml-c14n-20010315” />
    </ns2:Transforms>
    <ns2:DigestMethod Algorithm=“http://www.w3.org/2000/09/xmldsig#sha1” />
    ns2:DigestValuehD08vv96lmjqLCC8D7LmThx98OE=</ns2:DigestValue>
    </ns2:Reference>
    </ns2:SignedInfo>

Por favor, quem tem alguma luz para solucionar este problema me ajudem.

Muito Obrigado.

Faltou os arquivos anexos