Assinando xml errado

0 respostas
J

eu to assinando o xml porem meu xml ta sendo assinado errado. Ele assina a tag que eu nao quero que ele assina......

como eu posso mudar?

meu codigo pra assinar
/**
    * Assina o elemento referente ao documento
    * @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);

   }

sendo que o primeiro argumento eu to passando a tag principal.....e no segundo, a tag que eu quero que seja assinada....

mas ele ta assinando a principal

alguem sabe como mudar?

Criado 15 de junho de 2009
Respostas 0
Participantes 1