[ http://issues.apache.org/jira/browse/XMLRPC-88?page=all ] Jochen Wiedmann closed XMLRPC-88: ---------------------------------
Resolution: Invalid I cannot see, why this would be an issue for Apache XML-RPC. I suggest using a forum on java.sun.com, or a mailing list related to encryption. > org.apache.xml.security.encryption.XMLCipher.removeContent > ---------------------------------------------------------- > > Key: XMLRPC-88 > URL: http://issues.apache.org/jira/browse/XMLRPC-88 > Project: XML-RPC > Type: Bug > Components: Releases > Versions: unspecified > Environment: OS:Windows 2000 > J2SE:1.5 > JRE:1.5.0_06 > Hardware: P-4 2.4 Ghz CPU, 2GB RAM. > Reporter: Arpit Doshi > Priority: Blocker > > Hello, > I am trying to encrypt a XML file using XMLCipher class. The size of the file > is almost 35 MB, while encrypting the XML file it throws this error after > around 3 minutes. > The program works perfectly fine for file size of less than 5 MB. This is > very critical for our project and has to work as soon as possible. > Eventually we are going to port the application on AIX5.3 > The piece of code I am using is: > public void encryptData() throws EncryptionException > { > final String methodName = "encryptData"; > > XMLCipher keyCipher,xmlCipher = null; > Document document = null; > String encryptedFileName = null; > Key symmetricKey = null; > Key keyEncryptKey = null; > boolean exceptionOccured = false; > > try > { > System.out.println("now parsing document"); > document=parseFile( fileToBeEncrypted ); > // generate symmetric key > symmetricKey = GenerateSymmetricKey(); > > // Get a key to be used for encrypting the symmetric key > keyEncryptKey = GenerateKeyEncryptionKey(); > > // Write the key to a file > //and pass the key and the name of file in which it has > to store the Key > > storeKeyFile(keyEncryptKey,getKeyFileName(fileToBeEncrypted.toString())); > > > > // initialize cipher and operation mode is to wrap a key > keyCipher > =XMLCipher.getInstance(XMLCipher.TRIPLEDES_KeyWrap); > keyCipher.init(XMLCipher.WRAP_MODE, keyEncryptKey); > > // encrypt symmetric key > EncryptedKey encryptedKey = > keyCipher.encryptKey(document, symmetricKey); > // specify the element to encrypt, ideally it will be > root element > Element rootElement = document.getDocumentElement(); > > Element elementToEncrypt = rootElement; > > if (elementToEncrypt == null) > { > throw new EncryptionException("Element to Encrypt is > null since the filename may not be correct" + > "or the file to be > encrypted may not be well formed" + > "Please check in File" > + "AMLFeederConfiguration.properties"); > } > > > > // initialize cipher for encrypting XML data using > operation mode of ENCRYPT_MODE > xmlCipher = XMLCipher.getInstance(XMLCipher.TRIPLEDES); > > xmlCipher.init(XMLCipher.ENCRYPT_MODE, symmetricKey); > > > // add key info to encrypted data element, so that > within the encrypted data, > // there is also information about the key, that should > be used to decrypt the data > EncryptedData encryptedDataElement = > xmlCipher.getEncryptedData(); > KeyInfo keyInfo = new KeyInfo(document); > keyInfo.add(encryptedKey); > encryptedDataElement.setKeyInfo(keyInfo); > > Problem is caused while calling doFinal() // do the actual encryption > boolean encryptContentsOnly = true; > xmlCipher.doFinal(document, elementToEncrypt, > encryptContentsOnly); > > //this will return xxxxx_e.xml > encryptedFileName = > getEncryptedFileNameToWrite(fileToBeEncrypted.toString()); > // write the results to a file > writeEncryptedDocToFile(document, encryptedFileName); > this.encryptedFileName = encryptedFileName; > } > catch(FileNotFoundException fnfException){ > > } > catch (ContentHandlerAlreadyRegisteredException e) { > } > catch(XMLEncryptionException xeException){ > } > catch( EncryptionException encryptionException ) > { > } > catch(Exception e){ > } > finally{ > > if(exceptionOccured){ > moveToRejectedDir( this.fileToBeEncrypted ); > moveToRejectedDir( this.keyFile ); > } > document = null; > symmetricKey = null; > keyEncryptKey = null; > xmlCipher = null; > > } > > } > The exception I am getting is: > Exception in thread "main" java.lang.StackOverflowError > at org.apache.xerces.dom.ParentNode.internalRemoveChild(Unknown > Source) > at org.apache.xerces.dom.ParentNode.removeChild(Unknown Source) > at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown > So > urce) > at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown > So > urce) > at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown > So > urce) > at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown > So > urce) > at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown > So > urce) > at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown > So > urce) > at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown > So > urce) > at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown > So > urce) > at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown > So -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]