Mhmm,
looking at the stack trace you have a StackOverflowError in XERCES when
using XMLCipher. IMHO this is totally unrelated to XMLRPC
Cheers,
Siegfried Goeschl
Arpit Doshi (JIRA) wrote:
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
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]