Assinatura digital - xmlsec

Bom dia pessoal,

estou com um problema e gostaria de ajuda…

estou assinando meu xml e está acontecendo uma coisa estranha. Eu passo o arquivo xml para ele assinar e quando ele me devolve, ta aparecendo apenas os valores. Ou seja…eu esse xml

</outrastags><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"><XPath></XPath></Transform><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"><XPath></XPath></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue></DigestValue></Reference></SignedInfo><SignatureValue></SignatureValue><KeyInfo><X509Data><X509Certificate></X509Certificate></X509Data></KeyInfo></Signature>

E quando ele assina, ao invés dele colocar o conteudo dentro das tags, to recebendo apenas o valor…

ficando assim o xml

[code]

MIIFkjCCBHqgAwIBAgIQTO0/OTyKBzXN+2eeKzcoLDANBgkqhkiG9w0BAQUFADB0MQswCQYDVQQG
EwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDEtMCsGA1UECxMkQ2VydGlzaWduIENlcnRpZmljYWRv
cmEgRGlnaXRhbCBTLkEuMSEwHwYDVQQDExhBQyBDZXJ0aVNpZ24gTXVsdGlwbGEgVjMwHhcNMDgw
MjE4MDAwMDAwWhcNMDkwMjE3MjM1OTU5WjCCAQMxCzAJBgNVBAYTAkJSMRMwEQYDVQQKFApJQ1At
QnJhc2lsMSMwIQYDVQQLFBpBdXRlbnRpY2FkbyBwb3IgQVIgTmV0IFVubzEbMBkGA1UECxQSQXNz
aW5hdHVyYSBUaXBvIEExMRQwEgYDVQQLFAsoZW0gYnJhbmNvKTEUMBIGA1UECxQLKGVtIGJyYW5j
bykxFDASBgNVBAsUCyhlbSBicmFuY28pMTcwNQYDVQQDEy5TZWNyZXRhcmlhIGRlIEVzdGFkbyBk
ZSBGYXplbmRhIGRlIE1hdG8gR3Jvc3NvMSIwIAYJKoZIhvcNAQkBFhNuZmVAc2VmYXoubXQuZ292
LmJyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDs6EV+EvqtKEWtquwMJZ8rUj6M7+3hRE2P
VA2Y/opmgs4holSSKaXy5ZsBm9GnbYigZ2BEOYqJFmoglBgDdujpunLA5ml3pLSqSyo1CyRx9kZu
noU8EKULLwKWYKQo8//p2ANPzlyZgJgExnxC8rob6bS+LtDY8Cd2eend+YzlcQIDAQABo4ICETCC
Ag0wgbUGA1UdEQSBrTCBqqA8BgVgTAEDBKAzBDEwNjA5MTk3ODg1NjczMDA1MTcyMDAwMDAwMDAw
MDAwMDAwMDAwMTIyNzYzMzJTSk1UoCEGBWBMAQMCoBgEFlJpY2FyZG8gZGUgTHVjY2EgQ3J1ZG+g
GQYFYEwBAwOgEAQOMDM1MDc0MTUwMDA1NzigFwYFYEwBAwegDgQMMDAwMDAwMDAwMDAwgRNuZmVA
c2VmYXoubXQuZ292LmJyMAkGA1UdEwQCMAAwZwYDVR0fBGAwXjBcoFqgWIZWaHR0cDovL2ljcC1i
cmFzaWwuY2VydGlzaWduLmNvbS5ici9yZXBvc2l0b3Jpby9sY3IvQUNDZXJ0aVNpZ25NdWx0aXBs
YVYzL0xhdGVzdENSTC5jcmwwHwYDVR0jBBgwFoAUFKVaa/7kXjJkt2uA3dRjTnjht34wDgYDVR0P
AQH/BAQDAgXgMFUGA1UdIAROMEwwSgYGYEwBAgELMEAwPgYIKwYBBQUHAgEWMmh0dHA6Ly9pY3At
YnJhc2lsLmNlcnRpc2lnbi5jb20uYnIvcmVwb3NpdG9yaW8vZHBjMDgGCCsGAQUFBwEBBCwwKjAo
BggrBgEFBQcwAYYcaHR0cDovL29jc3AuY2VydGlzaWduLmNvbS5icjAdBgNVHSUEFjAUBggrBgEF
BQcDBAYIKwYBBQUHAwIwDQYJKoZIhvcNAQEFBQADggEBAGEAVtAjCsu5tQ3Krj9mf0svvuxP3V3j
r2NXrJAChRk7GYo6JUvWy7MCcDOdNeXRrb9zSXXhZR9gtRgP0Om2llmPNiC0TTJFoci+wvciLo9l
g/RT1PBxgVV6t7g7UkJuJLAALRr2S854yGGic2zp/Ea7jsC37O6ibjGOEqvEpgcq/vnWYv2n6bdo
AXtemj5oAxKkNjUAcnHt9IbmvLoIVNwoqSAecPd6NH6yLxqnTQN0+xE5GuJ9QHFtKS+bXOeru77d
IJy00BoVZ7RpgUeGsXZ2n2Jau1xtJUrZOmon4PMGHxvQOyEMWsxF8kKVTWiJYmWiTiGT0kekzb1k
/7sgcFE=[/code]

Meu codigo ta assim:

 File xml = new File("arquivo.xml");
Document doc = null;
doc = DOMUtil.parse(xml);

AssinaturaXML assinaturaXML = new AssinaturaXML(doc, keyStoreCliente, keyStoreType, null, keyStorePass);
retorno = assinaturaXML.assinar(tagPrincipal, tagSecundaria, true);

Construtor da classe AssinaturaXML

public AssinaturaXML(Document doc, String keyStore, String keyStoreType, String keyAlias, String keyStorePass) { if (doc == null) { throw new IllegalArgumentException("Parametro doc null"); } this.doc = doc; this.keyStore = keyStore; this.keyStoreType = keyStoreType; this.keyStorePass = keyStorePass; this.keyAlias = keyAlias; }

Metodo que assina da classe AssinaturaXML


**
    * Recebe um documento e o retorna assinado
    * @param doc Document
    * @param tag String
    * @param subTag String
    * @throws Exception
    */
public Document assinar(String tag, String subTag, boolean attributeID)  throws Exception {
     
      NodeList tagNodeList = doc.getElementsByTagName(tag);
      

      for (int i = 0; i < tagNodeList.getLength(); i++)
      {
         this.assinar((Element) tagNodeList.item(i), subTag, attributeID);
      }

      return doc;
   }

   /**
    * Assina o elemento referente ao documento
    * @param doc Document
    * @param element Element
    * @param subTag String
    * @param attributeID boolean - Informa se ser� gerado a partir do atributo Id
    * @throws Exception
    */
   private void assinar(Element element, String subTag, boolean attributeID)
   throws Exception
   {

      // Cria um XML-Signature skeleton
      XMLSignature signer = 
         new XMLSignature(doc, baseURI, XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1);

      element.appendChild(signer.getElement());

      Transforms transforms = new Transforms(doc);

      // Define as regras de transforma��o e canonicaliza��o do documento
      // XML, necess�rio para fazer a verifica��o do parsing e da
      // assinatura pelos destinat�rios
      transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE); //, xpath.getElementPlusReturns());

      transforms.addTransform(Transforms.TRANSFORM_C14N_OMIT_COMMENTS); //,xpath.getElementPlusReturns());

      String strDocument = "";

      if (attributeID)
      {
         strDocument = 
               ((Element) element.getElementsByTagName(subTag).item(0)).getAttributeNode("Id").getNodeValue();
      }
      else
      {
         strDocument = 
               ((Element) element.getElementsByTagName(subTag).item(0)).getNodeValue();
      }

       Constants.setSignatureSpecNSprefix("");
      signer.addDocument("#" + strDocument, transforms, 
            Constants.ALGO_ID_DIGEST_SHA1);

      // Inclui o certificado de chave publica associado com a chave
      // privada, usada para criar a assinatura digital
      KeyStore ks = KeyStore.getInstance(keyStoreType);

      FileInputStream fis = new FileInputStream(keyStore);

      ks.load(fis, keyStorePass.toCharArray());

      PrivateKey privateKey;
      X509Certificate cert;
      if ("jks".equalsIgnoreCase(keyStoreType))
      {
         privateKey = 
               (PrivateKey) ks.getKey(keyAlias, keyStorePass.toCharArray());
         cert = (X509Certificate) ks.getCertificate(keyAlias);
      }
      else
      {
         String alias = (String) ks.aliases().nextElement();
         privateKey = 
               (PrivateKey) ks.getKey(alias, keyStorePass.toCharArray());
         cert = (X509Certificate) ks.getCertificate(alias);
      }

      signer.addKeyInfo(cert);

      signer.sign(privateKey);

   }

é o retorno que está tendo problema e devolvendo apenas os valores…e não o XML preenchido.